From e82995d03212b1c090a085f105a1f22f4f7effc1 Mon Sep 17 00:00:00 2001 From: Scott Ruoti Date: Tue, 1 Nov 2016 13:24:49 -0400 Subject: [PATCH] Initial commit --- .gitignore | 10 + LICENSE.txt | 10 + README.md | 295 + pace.egg-info/PKG-INFO | 293 + pace.egg-info/SOURCES.txt | 171 + pace.egg-info/dependency_links.txt | 1 + pace.egg-info/requires.txt | 5 + pace.egg-info/top_level.txt | 1 + pace/__init__.py | 0 pace/ads/README.md | 39 + pace/ads/__init__.py | 0 pace/ads/merkle/__init__.py | 0 pace/ads/merkle/benchmark.py | 118 + pace/ads/merkle/empty_node.py | 29 + pace/ads/merkle/eq.py | 11 + pace/ads/merkle/hash_node.py | 28 + pace/ads/merkle/mht.py | 370 + pace/ads/merkle/mht_node.py | 228 + pace/ads/merkle/mht_node_test.py | 119 + pace/ads/merkle/mht_server.py | 213 + pace/ads/merkle/mht_server_test.py | 175 + pace/ads/merkle/mht_test.py | 268 + pace/ads/merkle/mht_utils.py | 44 + pace/ads/merkle/vo.py | 223 + pace/ads/merkle/vo_node.py | 93 + pace/ads/merkle/vo_test.py | 220 + pace/ads/skiplist/.authskiplist.py.swp | Bin 0 -> 16384 bytes pace/ads/skiplist/.skiplist.py.swp | Bin 0 -> 16384 bytes pace/ads/skiplist/README.md | 218 + pace/ads/skiplist/__init__.py | 0 pace/ads/skiplist/accumulo/.demo.py.swp | Bin 0 -> 24576 bytes pace/ads/skiplist/accumulo/__init__.py | 0 pace/ads/skiplist/accumulo/embeddednode.py | 369 + .../ads/skiplist/accumulo/embeddedskiplist.py | 176 + .../accumulo/embeddedskiplist_test.py | 381 + pace/ads/skiplist/authnode.py | 84 + pace/ads/skiplist/authskiplist.py | 557 + pace/ads/skiplist/authskiplist_test.py | 228 + pace/ads/skiplist/coin.py | 116 + pace/ads/skiplist/coin_test.py | 178 + pace/ads/skiplist/elemclass.py | 146 + pace/ads/skiplist/elemclass_test.py | 225 + pace/ads/skiplist/skiplist.py | 162 + pace/ads/skiplist/skiplist_server.py | 346 + pace/ads/skiplist/skiplist_server_test.py | 379 + pace/ads/skiplist/skiplist_test.py | 75 + pace/ads/skiplist/skiplistnode.py | 111 + pace/ads/skiplist/skiplistvo.py | 415 + pace/ads/skiplist/skiplistvo_test.py | 492 + pace/ads/skiplist/vonode.py | 345 + pace/common/__init__.py | 0 pace/common/common_utils.py | 202 + pace/common/fakeconn.py | 186 + pace/common/pacetest.py | 36 + pace/encryption/.demo_commands.txt.swp | Bin 0 -> 12288 bytes pace/encryption/.enc_mutation_test.py.swp | Bin 0 -> 16384 bytes pace/encryption/.encrypt_test.py.swp | Bin 0 -> 16384 bytes pace/encryption/.encryption_pki.py.swp | Bin 0 -> 16384 bytes pace/encryption/AES_encrypt.py | 461 + pace/encryption/AES_encrypt_test.py | 190 + pace/encryption/DEMO.md | 396 + pace/encryption/README.md | 397 + pace/encryption/__init__.py | 11 + pace/encryption/abstract_encrypt.py | 219 + pace/encryption/abstract_encrypt_test.py | 236 + pace/encryption/acc_encrypt.py | 199 + pace/encryption/acc_encrypt_test.py | 372 + pace/encryption/benchmarker.py | 265 + pace/encryption/config/ceabac/VIS_AES_CBC.cfg | 4 + pace/encryption/config/ceabac/VIS_AES_CFB.cfb | 4 + pace/encryption/config/ceabac/VIS_AES_CTR.cfg | 4 + pace/encryption/config/ceabac/VIS_AES_GCM.cfg | 4 + pace/encryption/config/ceabac/VIS_AES_OFB.cfg | 4 + pace/encryption/config/config_examp.cfg | 13 + .../ceabac_cq_value.cfg | 11 + .../ceabac_row_cf_cq_value.cfg | 21 + .../ceabac_row_cfcq_value.cfg | 16 + .../ceabac_row_cfcqvalue.cfg | 11 + .../ceabac_row_value.cfg | 10 + .../different_schemas_ceabac/ceabac_value.cfg | 5 + .../different_schemas_non_ceabac/cq_value.cfg | 11 + .../row_cf_cq_value.cfg | 21 + .../row_cfcq_value.cfg | 16 + .../row_cfcqvalue.cfg | 11 + .../row_value.cfg | 10 + .../different_schemas_non_ceabac/value.cfg | 5 + .../config/mixed_schemas/SSE_auth_VIS.cfg | 13 + .../config/mixed_schemas/det_SSE_VIS.cfg | 13 + .../config/mixed_schemas/det_sse_auth.cfg | 13 + pace/encryption/config/non-ceabac/AES_CBC.cfg | 4 + pace/encryption/config/non-ceabac/AES_CFB.cfg | 4 + pace/encryption/config/non-ceabac/AES_CTR.cfg | 4 + pace/encryption/config/non-ceabac/AES_GCM.cfg | 4 + pace/encryption/config/non-ceabac/AES_OFB.cfg | 4 + pace/encryption/config/non-ceabac/AES_SIV.cfg | 4 + pace/encryption/demo.py | 342 + pace/encryption/enc_classes.py | 63 + pace/encryption/enc_mutation.py | 424 + pace/encryption/enc_mutation_test.py | 203 + pace/encryption/enc_utils.py | 210 + pace/encryption/encrypt_test.py | 187 + pace/encryption/encryption_exceptions.py | 34 + pace/encryption/encryption_pki.py | 474 + pace/encryption/perf_benchmarking.py | 369 + pace/encryption/vars.py | 45 + pace/encryption/visibility/__init__.py | 0 pace/encryption/visibility/secret_vis_tree.py | 604 + .../visibility/secret_vis_tree_test.py | 143 + pace/encryption/visibility/vis_encrypt.py | 227 + pace/encryption/visibility/vis_parser.py | 370 + pace/encryption/visibility/vis_parser_test.py | 77 + pace/pki/.frontend.py.swp | Bin 0 -> 12288 bytes pace/pki/README.md | 461 + pace/pki/__init__.py | 0 pace/pki/abstractpki.py | 64 + pace/pki/accumulo_keystore.py | 488 + pace/pki/attrusermap.py | 110 + pace/pki/attrusermap_test.py | 300 + pace/pki/dictpki.py | 26 + pace/pki/frontend.py | 94 + pace/pki/key_wrap_utils.py | 48 + pace/pki/key_wrap_utils_test.py | 64 + pace/pki/keygen.py | 284 + pace/pki/keygen_test.py | 597 + pace/pki/keystore.py | 456 + pace/pki/keystore_test.py | 937 + pace/pki/user1_privkey.pem | 39 + pace/pki/user1_pubkey.pem | 11 + pace/pki/user2_privkey.pem | 39 + pace/pki/user2_pubkey.pem | 11 + pace/pki/user3_privkey.pem | 39 + pace/pki/user3_pubkey.pem | 11 + pace/pki/user_info.cfg | 31 + pace/pki/userattrmap.py | 91 + pace/signatures/.signaturepki.py.swp | Bin 0 -> 12288 bytes pace/signatures/DEMO.md | 195 + pace/signatures/README.md | 400 + pace/signatures/__init__.py | 0 pace/signatures/acc_sig.py | 257 + pace/signatures/benchmark_results.csv | 37 + pace/signatures/benchmarker.py | 454 + pace/signatures/cfg/batch_test.cfg | 4 + pace/signatures/cfg/stream_test.cfg | 4 + pace/signatures/cfg/value_test.cfg | 2 + pace/signatures/default_file.txt | 10000 ++++ pace/signatures/demo.py | 200 + pace/signatures/full_benchmark_out.csv | 0 pace/signatures/keys/bad_store_1 | 13 + pace/signatures/keys/bad_store_2 | 13 + pace/signatures/keys/bad_store_3 | 13 + pace/signatures/keys/bad_store_4 | 4 + pace/signatures/keys/bad_store_4b | 4 + pace/signatures/keys/test_ecdsa_privkey.pem | 5 + pace/signatures/keys/test_ecdsa_pubkey.pem | 4 + pace/signatures/keys/test_privkey.rsa | 27 + pace/signatures/keys/test_privkey_3072.rsa | 39 + pace/signatures/keys/test_pubkey.rsa | 1 + pace/signatures/keys/test_pubkey_3072.rsa | 1 + pace/signatures/keys/test_store | 31 + pace/signatures/manualtruststore.py | 120 + pace/signatures/noisy_default_file.txt | 50000 ++++++++++++++++ pace/signatures/sign.py | 144 + pace/signatures/sign_test.py | 413 + pace/signatures/sign_utils.py | 199 + pace/signatures/sign_utils_old.py | 217 + pace/signatures/signaturepki.py | 59 + pace/signatures/signconfig.py | 352 + pace/signatures/test.sh | 59 + pace/signatures/test_main.py | 187 + pace/signatures/truststore_test.py | 162 + pace/signatures/vars.py | 40 + pace/signatures/verify.py | 121 + setup.cfg | 5 + setup.py | 53 + 174 files changed, 83193 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 pace.egg-info/PKG-INFO create mode 100644 pace.egg-info/SOURCES.txt create mode 100644 pace.egg-info/dependency_links.txt create mode 100644 pace.egg-info/requires.txt create mode 100644 pace.egg-info/top_level.txt create mode 100644 pace/__init__.py create mode 100644 pace/ads/README.md create mode 100644 pace/ads/__init__.py create mode 100644 pace/ads/merkle/__init__.py create mode 100644 pace/ads/merkle/benchmark.py create mode 100644 pace/ads/merkle/empty_node.py create mode 100644 pace/ads/merkle/eq.py create mode 100644 pace/ads/merkle/hash_node.py create mode 100644 pace/ads/merkle/mht.py create mode 100644 pace/ads/merkle/mht_node.py create mode 100644 pace/ads/merkle/mht_node_test.py create mode 100644 pace/ads/merkle/mht_server.py create mode 100644 pace/ads/merkle/mht_server_test.py create mode 100644 pace/ads/merkle/mht_test.py create mode 100644 pace/ads/merkle/mht_utils.py create mode 100644 pace/ads/merkle/vo.py create mode 100644 pace/ads/merkle/vo_node.py create mode 100644 pace/ads/merkle/vo_test.py create mode 100644 pace/ads/skiplist/.authskiplist.py.swp create mode 100644 pace/ads/skiplist/.skiplist.py.swp create mode 100644 pace/ads/skiplist/README.md create mode 100644 pace/ads/skiplist/__init__.py create mode 100644 pace/ads/skiplist/accumulo/.demo.py.swp create mode 100644 pace/ads/skiplist/accumulo/__init__.py create mode 100644 pace/ads/skiplist/accumulo/embeddednode.py create mode 100644 pace/ads/skiplist/accumulo/embeddedskiplist.py create mode 100644 pace/ads/skiplist/accumulo/embeddedskiplist_test.py create mode 100644 pace/ads/skiplist/authnode.py create mode 100644 pace/ads/skiplist/authskiplist.py create mode 100644 pace/ads/skiplist/authskiplist_test.py create mode 100644 pace/ads/skiplist/coin.py create mode 100644 pace/ads/skiplist/coin_test.py create mode 100644 pace/ads/skiplist/elemclass.py create mode 100644 pace/ads/skiplist/elemclass_test.py create mode 100644 pace/ads/skiplist/skiplist.py create mode 100644 pace/ads/skiplist/skiplist_server.py create mode 100644 pace/ads/skiplist/skiplist_server_test.py create mode 100644 pace/ads/skiplist/skiplist_test.py create mode 100644 pace/ads/skiplist/skiplistnode.py create mode 100644 pace/ads/skiplist/skiplistvo.py create mode 100644 pace/ads/skiplist/skiplistvo_test.py create mode 100644 pace/ads/skiplist/vonode.py create mode 100644 pace/common/__init__.py create mode 100644 pace/common/common_utils.py create mode 100644 pace/common/fakeconn.py create mode 100644 pace/common/pacetest.py create mode 100644 pace/encryption/.demo_commands.txt.swp create mode 100644 pace/encryption/.enc_mutation_test.py.swp create mode 100644 pace/encryption/.encrypt_test.py.swp create mode 100644 pace/encryption/.encryption_pki.py.swp create mode 100644 pace/encryption/AES_encrypt.py create mode 100644 pace/encryption/AES_encrypt_test.py create mode 100644 pace/encryption/DEMO.md create mode 100644 pace/encryption/README.md create mode 100644 pace/encryption/__init__.py create mode 100644 pace/encryption/abstract_encrypt.py create mode 100644 pace/encryption/abstract_encrypt_test.py create mode 100644 pace/encryption/acc_encrypt.py create mode 100644 pace/encryption/acc_encrypt_test.py create mode 100644 pace/encryption/benchmarker.py create mode 100644 pace/encryption/config/ceabac/VIS_AES_CBC.cfg create mode 100644 pace/encryption/config/ceabac/VIS_AES_CFB.cfb create mode 100644 pace/encryption/config/ceabac/VIS_AES_CTR.cfg create mode 100644 pace/encryption/config/ceabac/VIS_AES_GCM.cfg create mode 100644 pace/encryption/config/ceabac/VIS_AES_OFB.cfg create mode 100644 pace/encryption/config/config_examp.cfg create mode 100644 pace/encryption/config/different_schemas_ceabac/ceabac_cq_value.cfg create mode 100644 pace/encryption/config/different_schemas_ceabac/ceabac_row_cf_cq_value.cfg create mode 100644 pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcq_value.cfg create mode 100644 pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcqvalue.cfg create mode 100644 pace/encryption/config/different_schemas_ceabac/ceabac_row_value.cfg create mode 100644 pace/encryption/config/different_schemas_ceabac/ceabac_value.cfg create mode 100644 pace/encryption/config/different_schemas_non_ceabac/cq_value.cfg create mode 100644 pace/encryption/config/different_schemas_non_ceabac/row_cf_cq_value.cfg create mode 100644 pace/encryption/config/different_schemas_non_ceabac/row_cfcq_value.cfg create mode 100644 pace/encryption/config/different_schemas_non_ceabac/row_cfcqvalue.cfg create mode 100644 pace/encryption/config/different_schemas_non_ceabac/row_value.cfg create mode 100644 pace/encryption/config/different_schemas_non_ceabac/value.cfg create mode 100644 pace/encryption/config/mixed_schemas/SSE_auth_VIS.cfg create mode 100644 pace/encryption/config/mixed_schemas/det_SSE_VIS.cfg create mode 100644 pace/encryption/config/mixed_schemas/det_sse_auth.cfg create mode 100644 pace/encryption/config/non-ceabac/AES_CBC.cfg create mode 100644 pace/encryption/config/non-ceabac/AES_CFB.cfg create mode 100644 pace/encryption/config/non-ceabac/AES_CTR.cfg create mode 100644 pace/encryption/config/non-ceabac/AES_GCM.cfg create mode 100644 pace/encryption/config/non-ceabac/AES_OFB.cfg create mode 100644 pace/encryption/config/non-ceabac/AES_SIV.cfg create mode 100644 pace/encryption/demo.py create mode 100644 pace/encryption/enc_classes.py create mode 100644 pace/encryption/enc_mutation.py create mode 100644 pace/encryption/enc_mutation_test.py create mode 100644 pace/encryption/enc_utils.py create mode 100644 pace/encryption/encrypt_test.py create mode 100644 pace/encryption/encryption_exceptions.py create mode 100644 pace/encryption/encryption_pki.py create mode 100644 pace/encryption/perf_benchmarking.py create mode 100644 pace/encryption/vars.py create mode 100644 pace/encryption/visibility/__init__.py create mode 100644 pace/encryption/visibility/secret_vis_tree.py create mode 100644 pace/encryption/visibility/secret_vis_tree_test.py create mode 100644 pace/encryption/visibility/vis_encrypt.py create mode 100644 pace/encryption/visibility/vis_parser.py create mode 100644 pace/encryption/visibility/vis_parser_test.py create mode 100644 pace/pki/.frontend.py.swp create mode 100644 pace/pki/README.md create mode 100644 pace/pki/__init__.py create mode 100644 pace/pki/abstractpki.py create mode 100644 pace/pki/accumulo_keystore.py create mode 100644 pace/pki/attrusermap.py create mode 100644 pace/pki/attrusermap_test.py create mode 100644 pace/pki/dictpki.py create mode 100644 pace/pki/frontend.py create mode 100644 pace/pki/key_wrap_utils.py create mode 100644 pace/pki/key_wrap_utils_test.py create mode 100644 pace/pki/keygen.py create mode 100644 pace/pki/keygen_test.py create mode 100644 pace/pki/keystore.py create mode 100644 pace/pki/keystore_test.py create mode 100644 pace/pki/user1_privkey.pem create mode 100644 pace/pki/user1_pubkey.pem create mode 100644 pace/pki/user2_privkey.pem create mode 100644 pace/pki/user2_pubkey.pem create mode 100644 pace/pki/user3_privkey.pem create mode 100644 pace/pki/user3_pubkey.pem create mode 100644 pace/pki/user_info.cfg create mode 100644 pace/pki/userattrmap.py create mode 100644 pace/signatures/.signaturepki.py.swp create mode 100644 pace/signatures/DEMO.md create mode 100644 pace/signatures/README.md create mode 100644 pace/signatures/__init__.py create mode 100644 pace/signatures/acc_sig.py create mode 100644 pace/signatures/benchmark_results.csv create mode 100644 pace/signatures/benchmarker.py create mode 100644 pace/signatures/cfg/batch_test.cfg create mode 100644 pace/signatures/cfg/stream_test.cfg create mode 100644 pace/signatures/cfg/value_test.cfg create mode 100644 pace/signatures/default_file.txt create mode 100644 pace/signatures/demo.py create mode 100644 pace/signatures/full_benchmark_out.csv create mode 100644 pace/signatures/keys/bad_store_1 create mode 100644 pace/signatures/keys/bad_store_2 create mode 100644 pace/signatures/keys/bad_store_3 create mode 100644 pace/signatures/keys/bad_store_4 create mode 100644 pace/signatures/keys/bad_store_4b create mode 100644 pace/signatures/keys/test_ecdsa_privkey.pem create mode 100644 pace/signatures/keys/test_ecdsa_pubkey.pem create mode 100644 pace/signatures/keys/test_privkey.rsa create mode 100644 pace/signatures/keys/test_privkey_3072.rsa create mode 100644 pace/signatures/keys/test_pubkey.rsa create mode 100644 pace/signatures/keys/test_pubkey_3072.rsa create mode 100644 pace/signatures/keys/test_store create mode 100644 pace/signatures/manualtruststore.py create mode 100644 pace/signatures/noisy_default_file.txt create mode 100644 pace/signatures/sign.py create mode 100644 pace/signatures/sign_test.py create mode 100644 pace/signatures/sign_utils.py create mode 100644 pace/signatures/sign_utils_old.py create mode 100644 pace/signatures/signaturepki.py create mode 100644 pace/signatures/signconfig.py create mode 100755 pace/signatures/test.sh create mode 100644 pace/signatures/test_main.py create mode 100644 pace/signatures/truststore_test.py create mode 100644 pace/signatures/vars.py create mode 100644 pace/signatures/verify.py create mode 100644 setup.cfg create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a11df20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# global IDE, Maven, Python, ignores +target/ +.project +.classpath +.settings +.pydevproject +*.pyc +.idea +*.iml + diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..b7a1c4d --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,10 @@ +Copyright (c) 2016, MIT Lincoln Laboratory +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7d73a9a --- /dev/null +++ b/README.md @@ -0,0 +1,295 @@ +DISTRIBUTION STATEMENT A. Approved for public release: distribution unlimited. + +This material is based upon work supported by the Department of Defense under Air Force Contract +No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or +recommendations expressed in this material are those of the author(s) and do not +necessarily reflect the views of the Department of Defense. + +© 2015 Massachusetts Institute of Technology. + +MIT Proprietary, Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014) + +The software/firmware is provided to you on an As-Is basis + +Delivered to the US Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 +or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this +work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of +this work other than as specifically authorized by the U.S. Government may violate any +copyrights that exist in this work. + +# Proactively-secure Accumulo with Cryptographic Enforcement (PACE) + +The PACE library's goal is to add cryptographic protections to the Accumulo +database. This currently takes the form of a client-side library containing +cryptographic protections against a malicious Accumulo server, such as a +compromised server machine or system administrator. This README serves as +high-level documentation for the entire library; more low-level information can +be found in the documentation for each subpackage. + + +## Installation + +Once you have the [Dependencies](### Dependencies) installed, you can install PACE by running +`python setup.py install` in the main `pace-` directory. You may +need to provide sudo access. + +It is recommended to run `nosetests` in the main folder when the installation +is complete, to ensure that everything installed correctly. They typically run +in 300-500 seconds. If it takes significantly longer, see the section on [Configuring Fastmath](### Configuring Fastmath) below. + +To connect to a live Accumulo instance, you will need to run Accumulo with a proxy. See the section on [Running the Thrift Proxy](### Running the Thrift Proxy) for more details. + +### Dependencies + +PACE depends on the following user installations. These must be installed +manually on your system: + - [python 2.x](https://www.python.org/) + - [GCC with C++ support](https://gcc.gnu.org) + - [MPFR](http://www.mpfr.org/) + - [GMP](https://gmplib.org/) + - [pycryptopp 0.6.0.39+](https://pypi.python.org/pypi/pycryptopp) + - [pycrypto 2.7a1](https://www.dlitz.net/software/pycrypto/) + - [thrift](https://thrift.apache.org/download) + +PACE also depends on the following Python packages. If you have a repository +source that Python can access by default, then the PACE installer will install +these automatically. If not, you will need to install them by hand. + - [nosetests](https://nose.readthedocs.org/en/latest/), version 1.3.3+. + - [pyaccumulo](https://pypi.python.org/pypi/pyaccumulo), version 1.5.0.6+. + - [Beaker](https://pypi.python.org/pypi/Beaker), version 1.7.0+. + - [enum34](https://pypi.python.org/pypi/enum34), version 1.0.4+. + - [distribute](https://pypi.python.org/pypi/distribute), version 0.6.14+. + + +### Configuring Fastmath + +One of the dependencies of PACE can be configured to use "fastmath," which +means that it will use GNU's Multiple Precision arithmetic library (GMP) in +place of Python's standard (slower) arithmetic functions. It is recommended +(though not required) to use fastmath, as it greatly speeds up many of PACE's +operations. + +If the tests are running very slowly (more than 1000 seconds), then fastmath +is not running, and there is +probably a configuration problem with `pycrypto` and `gmp`. To fix it, first +note the location of `gmp.h`. On Ubuntu, it is likely in `/usr/include/gmp.h`. +On CentOS, it is probably in `/opt/gmp/include/gmp.h`. If you can't find it, +do `sudo find / -name "gmp.h"`. Call the location above the include folder +``. For instance, in CentOS, `` is `/opt/gmp`. + +Inside the `pace-` directory, navigate to +`dependencies/shared/src/pycrypto`. Run +```bash +./configure --includedir=/include --with-gmp +``` +Open up src/configure.h and make sure the following definitions are set: +``` +#define HAVE_DECL_MPZ_POWM 0 +#define HAVE_DECL_MPZ_POWM_SEC 0 +#define HAVE_LIBGMP 1 +``` +Warning: Make sure you do this _after_ you run the previous `configure` +command, otherwise fastmath may not work correctly! + +Now, edit the `setup.py` file in the `pycrypto` directory and search for +"`_fastmath`". Make sure the `Extension` declaration looks like this: +``` +# _fastmath (uses GNU mp library) +Extension("Crypto.PublicKey._fastmath", + include_dirs=['/include', 'src/', '/usr/include'], + library_dirs=['/lib'], + libraries=['gmp'], + sources=["src/_fastmath.c"]), +``` + +Finally, rebuild and install pycrypto with +```bash +sudo python setup.py build +sudo python setup.py install +``` +If it worked, then the build command should have printed +``` +building 'Crypto.PublicKey._fastmath' extension +``` +and you can now enter python and try to import fastmath by doing: +```bash +python +>>> from Crypto.PublicKey import _fastmath +``` + +If the build command gives the following warning +``` +warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. +``` +then try completely removing pycrypto by doing the following three steps: +1. Remove the `pycrypto` folder from the pace dependencies folder. +2. Remove the `egg-info` file from python's list of packages by running the + following command. Replace `` with your python version, either + 2.6 or 2.7. + ``` + sudo rm /usr/lib64/python/site-packages/pycrypto-2.7a2-py.egg-info + ``` +3. Remove the `Crypto` folder from the same location: + ``` + sudo rm -r /usr/lib64/python/site-packages/Crypto + ``` +Then try completely reinstalling pycrypto. When running PACE, you may get a +warning about the version of `libgmp`. This is a bug in pycrypto that should +not affect the use of PACE. + +### Common Installation Issues + +If the installer fails, or the tests do not pass, try these steps. + +1. Any of the three following messages +``` +****************************************************************************** +An error occured while trying to compile with the C extension enabled +Attempting to build without the extension now +****************************************************************************** +``` +``` +fatal error: Python.h: No such file or directory +``` +``` +ERROR: Failure: ImportError (No module named Signature) +``` + +mean that your Python installation is broken. Try updating it and +then re-running `./install.sh`. + Using `apt-get`, you can update by doing `apt-get update` then +`apt-get install -f` and then finally `apt-get install python2.7-dev`. +Using `yum`, do `yum clean all` followed by `yum update python-devel`. + +2. If you get a permission denied error, such as +``` +[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-8988.pth' +``` +try rerunning with 'sudo' or as root. + + +3. If, while the installer is running, you see a flood of messages like +``` +[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-8988.pth' +``` +and then when running the tests, you get errors with `pycryptopp` such as +``` +ERROR: Failure: ImportError (No module named pycryptopp.publickey) +``` +then your `g++` installation is likely broken. Try updating it and then +rerunning `./install.sh`. + Using `apt-get`, you can update by doing `apt-get update` then +`apt-get install -f` and then finally `apt-get install g++`. +Using `yum`, do `yum clean all` followed by `yum update g++`. + +4. If you compiled GMP from source, it is recommended that you add the + following line to your `~/.bashrc` file (and use `source ~/.bashrc` to + make the changes take effect). Replace `$GMP_HOME` with your main GMP install location. + ``` + export LD_LIBRARY_PATH=$GMP_HOME/lib:$LD_LIBRARY_PATH + ``` + +## Running the Thrift Proxy + + For PACE to use a live Accumulo instance, you must run Accumulo with a + proxy so that thrift will + function properly. Assuming your main Accumulo folder is $ACCUMULO_HOME, + edit the `$ACCUMULO_HOME/proxy/proxy.properties` file to contain the correct + information. Notably, make sure `instance` is set to the name of your + Accumulo instance, make sure `zookeepers` points to the host and port of + your zookeeper server, and note the port number (the demo PACE code uses + port 42424, but you can set this to any unused port). Make sure your + Accumulo instance is running, then run the Accumulo + proxy in the terminal by running + ```bash + $ACCUMULO_HOME/bin/accumulo proxy -p $ACCUMULO_HOME/proxy/proxy.properties & + disown + ``` + (Disowning the process at the end means that the process will no longer be + halted when your current terminal window closes. If you have other running + jobs in this terminal that you do not want to disown, look up the jobID of + the thrift proxy by typing `jobs -l` and then typing `disown `). + You can check to make sure the proxy is running correctly by opening + python and typing the following, changing your Accumulo settings as + necessary: + ```bash + python + >>> from pyaccumulo import Accumulo + >>> conn = Accumulo(user='root', password='secret', host='pacetest-client', + ... port=42424) + ``` + +## Subpackages + +In this section, we document the subpackages contained within this project. With +the exception of `common`, each of these subpackages also has a +README.md file associated with it, that goes in to more detail about its +capabilities and use. This file aims to provide a preliminary roadmap for users +to determine what to read about in more depth. + +### ads + +The `ads` subpackage contains implementations of Authenticated Data Structures, +or ADSs. These are data structures that contain extra metadata allowing +untrusted servers hosting them to return query results that can be verified by +cross-referencing with a small, verified value from a trusted user. We use these +to implement a prototype of such a scheme in Accumulo, using Authenticated Skip +Lists. + +Note that this is one way of cryptographically verifying the results of queries +received from Accumulo, similar to the `signatures` subpackage described below. +However, this is currenty still prototype-level; while digital signatures can +only provide cell-level, not query-level, integrity checks, our implementation +of them is much more mature and therefore currently recommended over our ADS +library. + +### common + +The `common` subpackage contains several utility files common to all other +subpackages of PACE. In particular, the files in it are as follows: + +- `common_utils`: contains utility functions for generating test data and + interacting with Accumulo instances. +- `fakeconn`: defines a class `FakeConnection` used for testing + Accumulo-dependent code without a live Accumulo instance. +- `pacetest`: defines `PACETestCase`, a subclass of the `TestCase` class from + Python's `unittest` package, with several convenient default fields and a + `generate_elems()` function for randomly generating test data. + +### encryption + +The `encryption` package contains ways to cryptographically enforce the +confidentiality of data stored in Accumulo. We have two main ways of doing this: + +- Field-level encryption: a flexible library for encrypting different fields of + Accumulo cells in different ways, allowing the user to determine what to + encrypt and how based on security and performance needs. +- Cryptographically enforced access control: a means of + cryptographically enforcing Accumulo's cell-level security feature, preventing + a malicious server from leaking data to innocent users who should not have + access to it. + +### pki + +The `pki` package defines an interface for a key management system for the +cryptographically enforced access control mentioned above, and implements this +interface using Accumulo to store keys. + +### signatures + +The `signatures` package contains ways to cryptographically enforce the +integrity of data stored in Accumulo. This uses digital signatures to sign the +entirety of each Accumulo cell, allowing clients performing queries to guarantee +that each result from the query is correct and has not been tampered with. + +## License +Copyright (c) 2016, MIT Lincoln Laboratory +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pace.egg-info/PKG-INFO b/pace.egg-info/PKG-INFO new file mode 100644 index 0000000..ab0b358 --- /dev/null +++ b/pace.egg-info/PKG-INFO @@ -0,0 +1,293 @@ +Metadata-Version: 1.0 +Name: pace +Version: 1.3 +Summary: Proactively-Secure Accumulo with Cryptographic Enforcement +Home-page: UNKNOWN +Author: MIT Lincoln Laboratory +Author-email: pace-contact@ll.mit.edu +License: UNKNOWN +Description: DISTRIBUTION STATEMENT A. Approved for public release: distribution unlimited. + + This material is based upon work supported by the Department of Defense under Air Force Contract + No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or + recommendations expressed in this material are those of the author(s) and do not + necessarily reflect the views of the Department of Defense. + + © 2015 Massachusetts Institute of Technology. + + MIT Proprietary, Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014) + + The software/firmware is provided to you on an As-Is basis + + Delivered to the US Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 + or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this + work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of + this work other than as specifically authorized by the U.S. Government may violate any + copyrights that exist in this work. + + # Proactively-secure Accumulo with Cryptographic Enforcement (PACE) + + The PACE library's goal is to add cryptographic protections to the Accumulo + database. This currently takes the form of a client-side library containing + cryptographic protections against a malicious Accumulo server, such as a + compromised server machine or system administrator. This README serves as + high-level documentation for the entire library; more low-level information can + be found in the documentation for each subpackage. + + + ## Installation + + Once you have the [Dependencies](### Dependencies) installed, you can install PACE by running + `python setup.py install` in the main `pace-` directory. You may + need to provide sudo access. + + It is recommended to run `nosetests` in the main folder when the installation + is complete, to ensure that everything installed correctly. They typically run + in 300-500 seconds. If it takes significantly longer, see the section on [Configuring Fastmath](### Configuring Fastmath) below. + + To connect to a live Accumulo instance, you will need to run Accumulo with a proxy. See the section on [Running the Thrift Proxy](### Running the Thrift Proxy) for more details. + + ### Dependencies + + PACE depends on the following user installations. These must be installed + manually on your system: + - [python 2.x](https://www.python.org/) + - [GCC with C++ support](https://gcc.gnu.org) + - [MPFR](http://www.mpfr.org/) + - [GMP](https://gmplib.org/) + - [pycryptopp 0.6.0.39+](https://pypi.python.org/pypi/pycryptopp) + - [pycrypto 2.7a1](https://www.dlitz.net/software/pycrypto/) + - [thrift](https://thrift.apache.org/download) + + PACE also depends on the following Python packages. If you have a repository + source that Python can access by default, then the PACE installer will install + these automatically. If not, you will need to install them by hand. + - [nosetests](https://nose.readthedocs.org/en/latest/), version 1.3.3+. + - [pyaccumulo](https://pypi.python.org/pypi/pyaccumulo), version 1.5.0.6+. + - [Beaker](https://pypi.python.org/pypi/Beaker), version 1.7.0+. + - [enum34](https://pypi.python.org/pypi/enum34), version 1.0.4+. + - [distribute](https://pypi.python.org/pypi/distribute), version 0.6.14+. + + + ### Configuring Fastmath + + One of the dependencies of PACE can be configured to use "fastmath," which + means that it will use GNU's Multiple Precision arithmetic library (GMP) in + place of Python's standard (slower) arithmetic functions. It is recommended + (though not required) to use fastmath, as it greatly speeds up many of PACE's + operations. + + If the tests are running very slowly (more than 1000 seconds), then fastmath + is not running, and there is + probably a configuration problem with `pycrypto` and `gmp`. To fix it, first + note the location of `gmp.h`. On Ubuntu, it is likely in `/usr/include/gmp.h`. + On CentOS, it is probably in `/opt/gmp/include/gmp.h`. If you can't find it, + do `sudo find / -name "gmp.h"`. Call the location above the include folder + ``. For instance, in CentOS, `` is `/opt/gmp`. + + Inside the `pace-` directory, navigate to + `dependencies/shared/src/pycrypto`. Run + ```bash + ./configure --includedir=/include --with-gmp + ``` + Open up src/configure.h and make sure the following definitions are set: + ``` + #define HAVE_DECL_MPZ_POWM 0 + #define HAVE_DECL_MPZ_POWM_SEC 0 + #define HAVE_LIBGMP 1 + ``` + Warning: Make sure you do this _after_ you run the previous `configure` + command, otherwise fastmath may not work correctly! + + Now, edit the `setup.py` file in the `pycrypto` directory and search for + "`_fastmath`". Make sure the `Extension` declaration looks like this: + ``` + # _fastmath (uses GNU mp library) + Extension("Crypto.PublicKey._fastmath", + include_dirs=['/include', 'src/', '/usr/include'], + library_dirs=['/lib'], + libraries=['gmp'], + sources=["src/_fastmath.c"]), + ``` + + Finally, rebuild and install pycrypto with + ```bash + sudo python setup.py build + sudo python setup.py install + ``` + If it worked, then the build command should have printed + ``` + building 'Crypto.PublicKey._fastmath' extension + ``` + and you can now enter python and try to import fastmath by doing: + ```bash + python + >>> from Crypto.PublicKey import _fastmath + ``` + + If the build command gives the following warning + ``` + warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. + ``` + then try completely removing pycrypto by doing the following three steps: + 1. Remove the `pycrypto` folder from the pace dependencies folder. + 2. Remove the `egg-info` file from python's list of packages by running the + following command. Replace `` with your python version, either + 2.6 or 2.7. + ``` + sudo rm /usr/lib64/python/site-packages/pycrypto-2.7a2-py.egg-info + ``` + 3. Remove the `Crypto` folder from the same location: + ``` + sudo rm -r /usr/lib64/python/site-packages/Crypto + ``` + Then try completely reinstalling pycrypto. When running PACE, you may get a + warning about the version of `libgmp`. This is a bug in pycrypto that should + not affect the use of PACE. + + ### Common Installation Issues + + If the installer fails, or the tests do not pass, try these steps. + + 1. Any of the three following messages + ``` + ****************************************************************************** + An error occured while trying to compile with the C extension enabled + Attempting to build without the extension now + ****************************************************************************** + ``` + ``` + fatal error: Python.h: No such file or directory + ``` + ``` + ERROR: Failure: ImportError (No module named Signature) + ``` + + mean that your Python installation is broken. Try updating it and + then re-running `./install.sh`. + Using `apt-get`, you can update by doing `apt-get update` then + `apt-get install -f` and then finally `apt-get install python2.7-dev`. + Using `yum`, do `yum clean all` followed by `yum update python-devel`. + + 2. If you get a permission denied error, such as + ``` + [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-8988.pth' + ``` + try rerunning with 'sudo' or as root. + + + 3. If, while the installer is running, you see a flood of messages like + ``` + [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-8988.pth' + ``` + and then when running the tests, you get errors with `pycryptopp` such as + ``` + ERROR: Failure: ImportError (No module named pycryptopp.publickey) + ``` + then your `g++` installation is likely broken. Try updating it and then + rerunning `./install.sh`. + Using `apt-get`, you can update by doing `apt-get update` then + `apt-get install -f` and then finally `apt-get install g++`. + Using `yum`, do `yum clean all` followed by `yum update g++`. + + 4. If you compiled GMP from source, it is recommended that you add the + following line to your `~/.bashrc` file (and use `source ~/.bashrc` to + make the changes take effect). Replace `$GMP_HOME` with your main GMP install location. + ``` + export LD_LIBRARY_PATH=$GMP_HOME/lib:$LD_LIBRARY_PATH + ``` + + ## Running the Thrift Proxy + + For PACE to use a live Accumulo instance, you must run Accumulo with a + proxy so that thrift will + function properly. Assuming your main Accumulo folder is $ACCUMULO_HOME, + edit the `$ACCUMULO_HOME/proxy/proxy.properties` file to contain the correct + information. Notably, make sure `instance` is set to the name of your + Accumulo instance, make sure `zookeepers` points to the host and port of + your zookeeper server, and note the port number (the demo PACE code uses + port 42424, but you can set this to any unused port). Make sure your + Accumulo instance is running, then run the Accumulo + proxy in the terminal by running + ```bash + $ACCUMULO_HOME/bin/accumulo proxy -p $ACCUMULO_HOME/proxy/proxy.properties & + disown + ``` + (Disowning the process at the end means that the process will no longer be + halted when your current terminal window closes. If you have other running + jobs in this terminal that you do not want to disown, look up the jobID of + the thrift proxy by typing `jobs -l` and then typing `disown `). + You can check to make sure the proxy is running correctly by opening + python and typing the following, changing your Accumulo settings as + necessary: + ```bash + python + >>> from pyaccumulo import Accumulo + >>> conn = Accumulo(user='root', password='secret', host='pacetest-client', + ... port=42424) + ``` + + ## Subpackages + + In this section, we document the subpackages contained within this project. With + the exception of `common`, each of these subpackages also has a + README.md file associated with it, that goes in to more detail about its + capabilities and use. This file aims to provide a preliminary roadmap for users + to determine what to read about in more depth. + + ### ads + + The `ads` subpackage contains implementations of Authenticated Data Structures, + or ADSs. These are data structures that contain extra metadata allowing + untrusted servers hosting them to return query results that can be verified by + cross-referencing with a small, verified value from a trusted user. We use these + to implement a prototype of such a scheme in Accumulo, using Authenticated Skip + Lists. + + Note that this is one way of cryptographically verifying the results of queries + received from Accumulo, similar to the `signatures` subpackage described below. + However, this is currenty still prototype-level; while digital signatures can + only provide cell-level, not query-level, integrity checks, our implementation + of them is much more mature and therefore currently recommended over our ADS + library. + + ### common + + The `common` subpackage contains several utility files common to all other + subpackages of PACE. In particular, the files in it are as follows: + + - `common_utils`: contains utility functions for generating test data and + interacting with Accumulo instances. + - `fakeconn`: defines a class `FakeConnection` used for testing + Accumulo-dependent code without a live Accumulo instance. + - `pacetest`: defines `PACETestCase`, a subclass of the `TestCase` class from + Python's `unittest` package, with several convenient default fields and a + `generate_elems()` function for randomly generating test data. + + ### encryption + + The `encryption` package contains ways to cryptographically enforce the + confidentiality of data stored in Accumulo. We have two main ways of doing this: + + - Field-level encryption: a flexible library for encrypting different fields of + Accumulo cells in different ways, allowing the user to determine what to + encrypt and how based on security and performance needs. + - Cryptographically enforced access control: a means of + cryptographically enforcing Accumulo's cell-level security feature, preventing + a malicious server from leaking data to innocent users who should not have + access to it. + + ### pki + + The `pki` package defines an interface for a key management system for the + cryptographically enforced access control mentioned above, and implements this + interface using Accumulo to store keys. + + ### signatures + + The `signatures` package contains ways to cryptographically enforce the + integrity of data stored in Accumulo. This uses digital signatures to sign the + entirety of each Accumulo cell, allowing clients performing queries to guarantee + that each result from the query is correct and has not been tampered with. + +Platform: UNKNOWN diff --git a/pace.egg-info/SOURCES.txt b/pace.egg-info/SOURCES.txt new file mode 100644 index 0000000..6092859 --- /dev/null +++ b/pace.egg-info/SOURCES.txt @@ -0,0 +1,171 @@ +README.md +setup.py +pace/__init__.py +pace.egg-info/PKG-INFO +pace.egg-info/SOURCES.txt +pace.egg-info/dependency_links.txt +pace.egg-info/requires.txt +pace.egg-info/top_level.txt +pace/ads/README.md +pace/ads/__init__.py +pace/ads/merkle/__init__.py +pace/ads/merkle/benchmark.py +pace/ads/merkle/empty_node.py +pace/ads/merkle/eq.py +pace/ads/merkle/hash_node.py +pace/ads/merkle/mht.py +pace/ads/merkle/mht_node.py +pace/ads/merkle/mht_node_test.py +pace/ads/merkle/mht_server.py +pace/ads/merkle/mht_server_test.py +pace/ads/merkle/mht_test.py +pace/ads/merkle/mht_utils.py +pace/ads/merkle/vo.py +pace/ads/merkle/vo_node.py +pace/ads/merkle/vo_test.py +pace/ads/skiplist/.authskiplist.py.swp +pace/ads/skiplist/.skiplist.py.swp +pace/ads/skiplist/README.md +pace/ads/skiplist/__init__.py +pace/ads/skiplist/authnode.py +pace/ads/skiplist/authskiplist.py +pace/ads/skiplist/authskiplist_test.py +pace/ads/skiplist/coin.py +pace/ads/skiplist/coin_test.py +pace/ads/skiplist/elemclass.py +pace/ads/skiplist/elemclass_test.py +pace/ads/skiplist/skiplist.py +pace/ads/skiplist/skiplist_server.py +pace/ads/skiplist/skiplist_server_test.py +pace/ads/skiplist/skiplist_test.py +pace/ads/skiplist/skiplistnode.py +pace/ads/skiplist/skiplistvo.py +pace/ads/skiplist/skiplistvo_test.py +pace/ads/skiplist/vonode.py +pace/ads/skiplist/accumulo/.demo.py.swp +pace/ads/skiplist/accumulo/__init__.py +pace/ads/skiplist/accumulo/embeddednode.py +pace/ads/skiplist/accumulo/embeddedskiplist.py +pace/ads/skiplist/accumulo/embeddedskiplist_test.py +pace/common/__init__.py +pace/common/common_utils.py +pace/common/fakeconn.py +pace/common/pacetest.py +pace/encryption/.demo_commands.txt.swp +pace/encryption/.enc_mutation_test.py.swp +pace/encryption/.encrypt_test.py.swp +pace/encryption/.encryption_pki.py.swp +pace/encryption/AES_encrypt.py +pace/encryption/AES_encrypt_test.py +pace/encryption/DEMO.md +pace/encryption/README.md +pace/encryption/__init__.py +pace/encryption/abstract_encrypt.py +pace/encryption/abstract_encrypt_test.py +pace/encryption/acc_encrypt.py +pace/encryption/acc_encrypt_test.py +pace/encryption/benchmarker.py +pace/encryption/demo.py +pace/encryption/enc_classes.py +pace/encryption/enc_mutation.py +pace/encryption/enc_mutation_test.py +pace/encryption/enc_utils.py +pace/encryption/encrypt_test.py +pace/encryption/encryption_exceptions.py +pace/encryption/encryption_pki.py +pace/encryption/perf_benchmarking.py +pace/encryption/vars.py +pace/encryption/config/config_examp.cfg +pace/encryption/config/ceabac/VIS_AES_CBC.cfg +pace/encryption/config/ceabac/VIS_AES_CFB.cfb +pace/encryption/config/ceabac/VIS_AES_CTR.cfg +pace/encryption/config/ceabac/VIS_AES_GCM.cfg +pace/encryption/config/ceabac/VIS_AES_OFB.cfg +pace/encryption/config/different_schemas_ceabac/ceabac_cq_value.cfg +pace/encryption/config/different_schemas_ceabac/ceabac_row_cf_cq_value.cfg +pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcq_value.cfg +pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcqvalue.cfg +pace/encryption/config/different_schemas_ceabac/ceabac_row_value.cfg +pace/encryption/config/different_schemas_ceabac/ceabac_value.cfg +pace/encryption/config/different_schemas_non_ceabac/cq_value.cfg +pace/encryption/config/different_schemas_non_ceabac/row_cf_cq_value.cfg +pace/encryption/config/different_schemas_non_ceabac/row_cfcq_value.cfg +pace/encryption/config/different_schemas_non_ceabac/row_cfcqvalue.cfg +pace/encryption/config/different_schemas_non_ceabac/row_value.cfg +pace/encryption/config/different_schemas_non_ceabac/value.cfg +pace/encryption/config/mixed_schemas/SSE_auth_VIS.cfg +pace/encryption/config/mixed_schemas/det_SSE_VIS.cfg +pace/encryption/config/mixed_schemas/det_sse_auth.cfg +pace/encryption/config/non-ceabac/AES_CBC.cfg +pace/encryption/config/non-ceabac/AES_CFB.cfg +pace/encryption/config/non-ceabac/AES_CTR.cfg +pace/encryption/config/non-ceabac/AES_GCM.cfg +pace/encryption/config/non-ceabac/AES_OFB.cfg +pace/encryption/config/non-ceabac/AES_SIV.cfg +pace/encryption/visibility/__init__.py +pace/encryption/visibility/secret_vis_tree.py +pace/encryption/visibility/secret_vis_tree_test.py +pace/encryption/visibility/vis_encrypt.py +pace/encryption/visibility/vis_parser.py +pace/encryption/visibility/vis_parser_test.py +pace/pki/.frontend.py.swp +pace/pki/README.md +pace/pki/__init__.py +pace/pki/abstractpki.py +pace/pki/accumulo_keystore.py +pace/pki/attrusermap.py +pace/pki/attrusermap_test.py +pace/pki/dictpki.py +pace/pki/frontend.py +pace/pki/key_wrap_utils.py +pace/pki/key_wrap_utils_test.py +pace/pki/keygen.py +pace/pki/keygen_test.py +pace/pki/keystore.py +pace/pki/keystore_test.py +pace/pki/user1_privkey.pem +pace/pki/user1_pubkey.pem +pace/pki/user2_privkey.pem +pace/pki/user2_pubkey.pem +pace/pki/user3_privkey.pem +pace/pki/user3_pubkey.pem +pace/pki/user_info.cfg +pace/pki/userattrmap.py +pace/signatures/.signaturepki.py.swp +pace/signatures/DEMO.md +pace/signatures/README.md +pace/signatures/__init__.py +pace/signatures/acc_sig.py +pace/signatures/benchmark_results.csv +pace/signatures/benchmarker.py +pace/signatures/default_file.txt +pace/signatures/demo.py +pace/signatures/full_benchmark_out.csv +pace/signatures/manualtruststore.py +pace/signatures/noisy_default_file.txt +pace/signatures/sign.py +pace/signatures/sign_test.py +pace/signatures/sign_utils.py +pace/signatures/sign_utils_old.py +pace/signatures/signaturepki.py +pace/signatures/signconfig.py +pace/signatures/test.sh +pace/signatures/test_main.py +pace/signatures/truststore_test.py +pace/signatures/vars.py +pace/signatures/verify.py +pace/signatures/cfg/batch_test.cfg +pace/signatures/cfg/stream_test.cfg +pace/signatures/cfg/value_test.cfg +pace/signatures/keys/bad_store_1 +pace/signatures/keys/bad_store_2 +pace/signatures/keys/bad_store_3 +pace/signatures/keys/bad_store_4 +pace/signatures/keys/bad_store_4b +pace/signatures/keys/test_ecdsa_privkey.pem +pace/signatures/keys/test_ecdsa_pubkey.pem +pace/signatures/keys/test_privkey.rsa +pace/signatures/keys/test_privkey_3072.rsa +pace/signatures/keys/test_pubkey.rsa +pace/signatures/keys/test_pubkey_3072.rsa +pace/signatures/keys/test_store \ No newline at end of file diff --git a/pace.egg-info/dependency_links.txt b/pace.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/pace.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/pace.egg-info/requires.txt b/pace.egg-info/requires.txt new file mode 100644 index 0000000..82cf1e4 --- /dev/null +++ b/pace.egg-info/requires.txt @@ -0,0 +1,5 @@ +Beaker>=1.7.0 +enum34>=1.0.4 +nose>=1.1.2 +pyaccumulo>=1.5.0.6 +distribute>=0.6.14 \ No newline at end of file diff --git a/pace.egg-info/top_level.txt b/pace.egg-info/top_level.txt new file mode 100644 index 0000000..ff58dfd --- /dev/null +++ b/pace.egg-info/top_level.txt @@ -0,0 +1 @@ +pace diff --git a/pace/__init__.py b/pace/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/ads/README.md b/pace/ads/README.md new file mode 100644 index 0000000..f3afd22 --- /dev/null +++ b/pace/ads/README.md @@ -0,0 +1,39 @@ +DISTRIBUTION STATEMENT A. Approved for public release: distribution unlimited. + +This material is based upon work supported by the Department of Defense under Air Force Contract +No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or +recommendations expressed in this material are those of the author(s) and do not +necessarily reflect the views of the Department of Defense. + +© 2015 Massachusetts Institute of Technology. + +MIT Proprietary, Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014) + +The software/firmware is provided to you on an As-Is basis + +Delivered to the US Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 +or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this +work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of +this work other than as specifically authorized by the U.S. Government may violate any +copyrights that exist in this work. + +# Authenticated Data Structures + +Authenticated Data Structures, or ADSs, give users the ability to verify the +correctness of queries from an untrusted server given only a small +(constant-size), signed value from a trusted data owner. In looking to +implement this functionality in Accumulo, we investigated two such data +structures: Merkle Hash Trees, and Authenticated Skip Lists. + +We include implementations of both data structures here. However, Merkle Hash +Trees as implemented here are more suited for static data sets, which is at odds +with Accumulo's typically high ingest rates. We implemented Authenticated Skip +Lists as an efficient option for performing rapid insert operations. For this +reason, there are two directories here: + +- `merkle`: an implementation of Merkle Hash Trees. This is solely a tree + library, and does not interface with Accumulo at all. As such, we include no + README in this directory. +- `skiplist`: an implementation of skip lists, authenticated skip lists, and an + embedding of the latter into Accumulo. More information about this subpackage + can be found in its directory's README. diff --git a/pace/ads/__init__.py b/pace/ads/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/ads/merkle/__init__.py b/pace/ads/merkle/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/ads/merkle/benchmark.py b/pace/ads/merkle/benchmark.py new file mode 100644 index 0000000..5b46517 --- /dev/null +++ b/pace/ads/merkle/benchmark.py @@ -0,0 +1,118 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Benchmarks for the merkle tree library +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 08 Aug 2014 ZS Original file +## ************** + +import random + +from pace.ads.merkle.mht import MHT, MHTInsertionException +from pace.ads.merkle.mht_utils import MHTUtils +from pace.ads.merkle.mht_node import MHTNode +from pace.ads.merkle.vo import VO + + +class MHTBenchmark(object): + + def __init__(self, + mht_sizes=[100,500,1000,5000,100000], #,100000], + vo_size_fractions=[10000,1000,100,50,20,10,5,2], + input_chunks=[1,2,4,8,16]): + self.mht_sizes = mht_sizes + self.vo_size_fractions = vo_size_fractions + self.input_chunks = input_chunks + + + def benchmark(self): + for size in self.mht_sizes: + for num_chunks in self.input_chunks: + elems = [random.randint(1, 99999999) + for i in range(0, size/num_chunks - 2)] + elems.sort() + elems = [0] + elems + [100000000] + + ## mht1 - iterated single-element insert + ## mht2 - gestalt batch insert + mht1 = MHT.new(elems) + mht2 = MHT.new(elems) + + for i in range(1, num_chunks): + elems = [random.randint(1, 99999999) + for i in range(1, size/num_chunks)] + mht1.batch_insert(elems) + mht2._gestalt_batch_insert(min(elems), max(elems), elems) + + this_output = [] + + for frac in self.vo_size_fractions: + if frac >= size: + continue + + vo_size = size / frac + + start = random.choice(range(1, size - vo_size - 1)) + end = start + vo_size + + vo1 = mht1.range_query(start, end) + vo2 = mht2.range_query(start, end) + + svo1 = vo1.serialize() + svo2 = vo2.serialize() + + ser_length1 = len(svo1) + ser_length2 = len(svo2) + + this_output.append((vo_size, ser_length1, ser_length2)) + + ## Output format: (size, num_chunks, this_output) where: + ## + ## size - the (approximate) total number of elements in the MHT + ## actual_size - the length of the MHT's sorted_elems field + ## num_chunks - the number of chunks in which the elements are + ## inserted into the MHT + ## this_output - the output from running range queries on the + ## MHT built with those properties. + yield ((size, len(mht1.sorted_elems), num_chunks, this_output)) + + @staticmethod + def stringify_benchmark_output(output): + lines = [] + for size, actual_size, num_chunks, runs in output: + lines.append('MHT of size %d (%d) split into %d chunks:' %(size, actual_size, num_chunks)) + intermediate = [] + + for vo_size, iter_length, batch_length in runs: + intermediate.append( + 'VO size: %d\n\t\tbits per element (sequential insert): %f\n\t\tbits per element (gestalt insert): %f' + %(vo_size, iter_length/float(vo_size), batch_length/float(vo_size))) + + lines = lines + ['\t' + line for line in intermediate] + + return '\n'.join(lines) + + @staticmethod + def print_benchmark_output(output): + for size, actual_size, num_chunks, runs in output: + print 'MHT of size %d (%d) split into %d chunks:' %(size, actual_size, num_chunks) + intermediate = [] + + for vo_size, iter_length, batch_length in runs: + print '\t%s' %( + 'VO size: %d\n\t\tbits per element (sequential insert): %f\n\t\tbits per element (gestalt insert): %f' + %(vo_size, iter_length/float(vo_size), batch_length/float(vo_size))) + + def run(self): + try: + MHTBenchmark.print_benchmark_output(self.benchmark()) + except MHTInsertionException as e: + print 'ERROR!!!' + print e.msg + raise e + +def go(): + MHTBenchmark().run() diff --git a/pace/ads/merkle/empty_node.py b/pace/ads/merkle/empty_node.py new file mode 100644 index 0000000..1785b79 --- /dev/null +++ b/pace/ads/merkle/empty_node.py @@ -0,0 +1,29 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Empty node class for VOs +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 28 Jul 2014 ZS Original file +## ************** + +from pace.ads.merkle.eq import EqMixin + +class EmptyNode(EqMixin): + def __init__(self): + pass + + def set_parent(self, parent): + pass + + def serialize(self, depth=0): + return 'None' + + @staticmethod + def deserialize(s): + if s == 'None': + return EmptyNode() + else: + raise Error('Error in deserialization:\nExpected "None", got %s' %s) diff --git a/pace/ads/merkle/eq.py b/pace/ads/merkle/eq.py new file mode 100644 index 0000000..907f207 --- /dev/null +++ b/pace/ads/merkle/eq.py @@ -0,0 +1,11 @@ +## Code taken from StackOverflow: +## http://stackoverflow.com/questions/390250/elegant-ways-to-support-equivalence-equality-in-python-classes +## 15 Oct 2014: changed '__neq__' to '__ne__' (CS) + +class EqMixin(object): + def __eq__(self, other): + return (isinstance(other, self.__class__) + and self.__dict__ == other.__dict__) + + def __ne__(self, other): + return not self.__eq__(other) diff --git a/pace/ads/merkle/hash_node.py b/pace/ads/merkle/hash_node.py new file mode 100644 index 0000000..fd49eca --- /dev/null +++ b/pace/ads/merkle/hash_node.py @@ -0,0 +1,28 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Hash node class for VOs +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 28 Jul 2014 ZS Original file +## ************** + +from base64 import b64encode, b64decode + +from pace.ads.merkle.eq import EqMixin + +class HashNode(EqMixin): + def __init__(self, hval): + self.hval = hval + + def set_parent(self, parent): + pass + + def serialize(self, depth=0): + return b64encode(self.hval) + + @staticmethod + def deserialize(s): + return b64decode(s) diff --git a/pace/ads/merkle/mht.py b/pace/ads/merkle/mht.py new file mode 100644 index 0000000..804b98f --- /dev/null +++ b/pace/ads/merkle/mht.py @@ -0,0 +1,370 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Merkle hash tree library +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 17 Jul 2014 ZS Original file +## ************** + +import bisect + +from pace.ads.merkle.mht_utils import MHTUtils +from pace.ads.merkle.mht_node import MHTNode +from pace.ads.merkle.vo import VO + +class MHTInsertionException(Exception): + def __init__(self, msg): + self.msg = msg + +class MHT(object): + """ Binary Merkle hash tree class. Provides a verified data structure + that can prove that an element is (or isn't) contained within it. + + Instance variables: + elems - a dict of elements mapped to their corresponding leaf node + in the hash tree + sorted_elems - the original (sorted) list of elements + root - the top level node of the hash tree, whoseh hash value depends + on all of the elements. + """ + + def __init__(self, elems, sorted_elems, root): + self.elems = elems + self.sorted_elems = sorted_elems + self.root = root + + @staticmethod + def new(elems): + """ Assumes elems is sorted, nonempty, and contains no + repeated elements. + """ + sorted_elems = elems + + work = [MHTNode.leaf(elem) for elem in elems] + elem_dict = dict(zip(elems, work)) + + next_level = [] + + # I am going out of my way not to implement this recursively, + # because python + while work: + for i in range(0, len(work), 2): + + if i+1 >= len(work): + next_level.append(work[i]) + else: + left = work[i] + right = work[i+1] + + new_hash = MHTUtils.merge_hashes(left.hval, right.hval) + new_node = MHTNode.node(new_hash, left, right) + + left.parent = new_node + right.parent = new_node + + next_level.append(new_node) + + if len(next_level) == 1: + return MHT(elems=elem_dict, sorted_elems=elems, + root=next_level[0]) + + work = next_level + next_level = [] + + @staticmethod + def partial_insert(sorted_elems, elem): + """ Insert an element into a list of leaves. Helper function for + both insert() and batch_insert() + Arguments: + sorted_elems - a sorted list of elements in the MHT + elem - the element to insert into leaves + + Returns: + new_leaves - a list of leaves in an MHT that contains elem + inserted into the correct location + i - the index into which elem was inserted. + """ + i = bisect.bisect_left(sorted_elems, elem) + return (sorted_elems[:i] + [elem] + sorted_elems[i:], i) + + def insert(self, elem): + """ Insertion of a single element into a Merkle hash tree. + NB: this function does *not* guarantee anything about the + balancedness of the resulting tree. + + Arguments: + self - the MHT to be modified + elem - the element to be inserted + + Returns: + vo - a verification object that proves that the range into which + elem was inserted was in fact empty before insertion + + Assumes: + - There are at least two 'boundary' elements in the MHT + - One boundary element is less than everything else that will + be inserted (including elem), and the other is greater than + everything else (including elem). + """ + + ## Insertion algorithm: + ## 1) Find where the element belongs in the leaf list. + ## 2) Choose a neighbor to pair it with, and make a new node + ## that is the parent of those two leaves. + ## 3) Replace that leaf's spot in the old tree with that node. + ## 4) Move up the tree and recompute the hash values at each + ## node, constructing a VO on the way up. + + new_elems, i = MHT.partial_insert(self.sorted_elems, elem) + + vo = VO.new(self.sorted_elems[i-1], [], self.sorted_elems[i], self.root) + + self._batch_single_insert(elem, i, new_elems) + + return vo + + def _batch_single_insert(self, elem, i, new_elems): + """ Insertion of a single element into a Merkle hash tree without + a corresponding VO, as part of a batch insert. + NB: this function does *not* guarantee anything about the + balancedness of the resulting tree. + + Arguments: + self - the MHT to be modified + elem - the element to be inserted + i - the index at which to insert elem + new_elems - the new list of elements + + Returns: + i - the index at which elem was inserted into the list + + Assumes: + - There are at least two 'boundary' elements in the MHT + - One boundary element is less than everything else that will + be inserted (including elem), and the other is greater than + everything else (including elem). + + Optimization Opportunities: + - We might be able to get away with waiting to update the tree + until the end of the batch insert, then doing it all at once; + it seems like there's a lot of unnecessary work being done here. + """ + + if i-1 < 0 or i+1 > len(self.sorted_elems): + raise MHTInsertionException( + 'Element to be inserted %d does not occur within range of MHT (from %d to %d)\nGiven index %d in a %d-element list' %(elem, self.sorted_elems[0], self.sorted_elems[-1], i, len(self.sorted_elems))) + + new_leaf = MHTNode.leaf(elem) + + self.sorted_elems = new_elems + self.elems[elem] = new_leaf + + # Sibling choice needs to be deterministic, so we choose the + # left sibling + sibling_leaf = self.elems[self.sorted_elems[i-1]] + + MHTNode.insert(new_leaf, sibling_leaf) + + def batch_insert(self, elems): + """ Insert a series of elements into a tree all at once. + + Arguments: + elems - an iterable sequence of elements to insert + + Optimization opportunities: + - Requiring that the input list be sorted might provide some + interesting ways to optimize insertion? Not sure how realistic + it is in practice, though. + """ + for elem in elems: + new_elems, i = MHT.partial_insert(self.sorted_elems, elem) + self._batch_single_insert(elem, i, new_elems) + + @staticmethod + def batch_list_insert(elem, sorted_elems): + """ Step 1/3 of batch insertion. + + The first precomputing phase of a batch insert. Determines the list + of elements to ultimately insert into the MHT. + + Arguments: + elem - the next element to insert in this phase + sorted_elems - the elements in the range to be inserted into + so far + """ + + bisect.insort_left(sorted_elems, elem) + + @staticmethod + def batch_node_insert(sorted_elems): + """ Step 2/3 of batch insertion. + + Makes the entire new subtree for an insert out of the sorted list + of elements to exist within that range. Currently guaranteed to be + as balanced as possible, since it just makes a new MHT. + + Arguments: + sorted_elems - the list of elements within the insertion range, + in sorted order. + + Returns: + mht - the entire new subtree to be added to the main MHT + """ + + return MHT.new(sorted_elems) + + def batch_update(self, subtree, lca): + """ Step 3/3 of batch insertion. + + Modifies the MHT to reflect the changes made during the previous + two steps. + + Arguments: + subtree - the MHT representing the tree to be placed at the least + common ancestor of the insertion range. + lca - the root of the subtree of the original MHT being modified + """ + + if lca.parent: + # LCA isn't the root, so make sure the new subtree has the + # right parent + subtree.root.parent = lca.parent + + # Set the LCA's parent child to the new subtree instead of + # the LCA + if lca.parent.left is lca: + lca.parent.left = subtree.root + elif lca.parent.right is lca: + lca.parent.right = subtree.root + else: + # if the lca has no parent, it was the root of the tree + self.root = subtree.root + + MHTNode.update_parents(subtree.root.parent) + + self.elems = dict(self.elems.items() + subtree.elems.items()) + self.sorted_elems = self.root.subtree_elems() + + def _gestalt_batch_insert(self, left, right, new_elems): + """ Run all three phases of batch update in a row. Note that this is + mostly for testing/comparison purposes: the three phases are + separated for a reason! In particular, this function + is NOT safe for concurrent access. + + Arguments: + left, right - the left and right bounds of the range to be inserted + into + new_elems - the list of new elements to be inserted + """ + + lefti = bisect.bisect_left(self.sorted_elems, left) + righti = bisect.bisect_right(self.sorted_elems, right) + + ## can't currently handle the case where there are no elements in the + ## given range + assert lefti < righti + + lca = MHTNode.least_common_ancestor( + self.elems[self.sorted_elems[lefti]], + self.elems[self.sorted_elems[righti-1]]) + + range_elems = lca.subtree_elems() + + for elem in new_elems: + MHT.batch_list_insert(elem, range_elems) + + subtree = MHT.batch_node_insert(range_elems) + + self.batch_update(subtree, lca) + + def contains(self, elem): + """ Arguments: + self - the MHT to be queried + elem - the elem whose membership in the MHT is to be determined + + Returns: + If elem is not in the MHT, returns false. + If elem is in the MHT, returns a list of hashes that can be combined + with elem's hash to compute the root hash of the tree for the + client to verify that the item actually is present. + + NB: if self is a singleton MHT, this will return the empty list. + Therefore, `if mht.contains(x)` is an inadequate test, since it + will evaluate to false if None is returned or if x is the singleton + value within mht. + """ + + if elem not in self.elems: + return None + + node = self.elems[elem] + proof = [] + parent = node.parent + + while parent: + if node is parent.left: + proof.append((True, parent.right.hval)) + elif node is parent.right: + proof.append((False, parent.left.hval)) + + node = parent + parent = node.parent + + return proof + + def range_query(self, lower, upper): + """ Return a verification object for all elements between lower + and upper (inclusive) in the tree. + + Arguments: + lower - lower bound for the range query + upper - upper bound for the range query + + Returns: + Verification object for the range (never None) + + Assume the MHT contains at least two elements and that the + least & greatest elements stored are known to the client. + """ + + lbound, li, ri, rbound = MHTNode.find_boundary(self.sorted_elems, + lower, + upper) + + vo_elems = self.sorted_elems[li:ri+1] + + return VO.new(lbound, vo_elems, rbound, self.root) + + def valid(self): + """ Verifies that self is a valid Merkle hash tree + """ + + for elem, leaf in self.elems.items(): + if (leaf.hval != MHTUtils.hash(elem)): + raise InvalidMerkleTree( + "Each leaf's hash value must be its element's hash.") + + if leaf.left or leaf.right: + raise InvalidMerkleTree( + 'Each leaf must have no children') + + if leaf.elem is None: + raise InvalidMerkleTree( + 'Each leaf must have an element') + elif leaf is not self.elems[leaf.elem]: + raise InvalidMerkleTree( + 'Each leaf element must point to itself') + + if leaf._root_of() is not self.root: + raise InvalidMerkleTree( + 'The root of each leaf must be the main root.') + + if self.root.parent: + raise InvalidMerkleTree( + 'The root must have no parent') + + ## Make sure the nodes are well-formed + self.root.valid() diff --git a/pace/ads/merkle/mht_node.py b/pace/ads/merkle/mht_node.py new file mode 100644 index 0000000..1c1c0ed --- /dev/null +++ b/pace/ads/merkle/mht_node.py @@ -0,0 +1,228 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Inner nodes in MHTs +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Jul 2014 ZS Original file +## ************** + +import bisect + +from pace.ads.merkle.mht_utils import MHTUtils +from pace.ads.merkle.eq import EqMixin + +class MHTNode(object): + """ Class for nodes in a (binary) Merkle hash tree. + Instance variables: + + hval - the hash value at this node. always exists. + left, right - the left and right children of this node. + If they are both None, this is a leaf. + They are always either both filled in or both None. + elem - If this is a leaf (i.e. if left & right are None), this + will point to the element the leaf corresponds to. Otherwise, + this is None. + parent - the parent of this node. if None, this is the root. + """ + def __init__(self, hval, left=None, right=None, elem=None): + self.hval = hval + self.left = left + self.right = right + self.parent = None + self.elem = elem + + def __eq__(self, n2): + """ NB: Equality ignores hash functions and only makes sure they + both either have parents or don't + """ + + if (self.hval == n2.hval + and self.left == n2.left + and self.right == n2.right + and self.elem == n2.elem + and ((self.parent and n2.parent) or + ((not self.parent) and (not n2.parent)))): + return True + else: + return False + + @classmethod + def leaf(cls, elem, hval=None): + """ Helper function for creating a leaf MHTNode + Arguments: + elem - the element this leaf points to + hval (optional) - the hash value of elem, if it's already been + computed. + """ + if hval: + h = hval + else: + h = MHTUtils.hash(elem) + + return cls(h, elem=elem) + + @classmethod + def node(cls, hval, left, right): + """ A helper function for defining non-leaf MHTNodes + Arguments: + hval - the hash value of this node + left - the left subtree + right - the right subtree + """ + node = cls(hval, left, right) + + if isinstance(left, cls): + left.parent = node + if isinstance(right, cls): + right.parent = node + + return node + + @classmethod + def insert(cls, new_leaf, sibling_leaf): + old_parent = sibling_leaf.parent + + new_node = cls.node( + MHTUtils.merge_hashes(sibling_leaf.hval, new_leaf.hval), + sibling_leaf, + new_leaf) + new_node.parent = old_parent + + if new_node.parent is None: + return False + + if new_node.parent.left is sibling_leaf: + new_node.parent.left = new_node + elif new_node.parent.right is sibling_leaf: + new_node.parent.right = new_node + + + MHTNode.update_parents(new_node.parent) + return True + + @staticmethod + def update_parents(node): + current_node = node + + while current_node: + current_node.hval = MHTUtils.merge_hashes(current_node.left.hval, + current_node.right.hval) + current_node = current_node.parent + + + @staticmethod + def find_boundary(elems, left_bound, right_bound): + """ Arguments: + elems - list of elements to find the left boundary of + left_bound - the least (according to <=) element that should + be included in the result set. + right_bound - the greatest (according to <=) element that should + be included in the result set. + + Returns: + left_boundary - the rightmost element in elems that is less than + left_bound + left_index - the index of the least element in elems that + is >= left_bound + right_index - the index of the greatest element in elems that + is >= left_bound + right_boundary - the leftmost element in elems that is greater than + right_bound + + """ + + left_i = bisect.bisect_left(elems, left_bound) + right_i = bisect.bisect_right(elems, right_bound) + return elems[left_i-1], left_i, right_i-1, elems[right_i] + + def valid(self): + if self.left and self.right: + if self.elem: + raise InvalidMerkleTree('Only leaves may point to elements') + + if ((self.left.parent is not self) or + (self.right.parent is not self)): + raise InvalidMerkleTree( + 'A node must be the parent of its children.') + + if not self.hval: + raise InvalidMerkleTree( + 'Each node must have a hash value') + + # Children must be valid + self.left.valid() + self.right.valid() + + # Your hash value must be the merge of your childrens' hash values + if (self.hval != + MHTUtils.merge_hashes(self.left.hval, self.right.hval)): + raise InvalidMerkleTree( + "Each node's hash value must be the merge of its children's\ + hash values.") + elif self.left or self.right: + # Children are all-or-nothing + raise InvalidMerkleTree('Each node must have zero or two children') + else: + if self.elem is None: + raise InvalidMerkleTree('Leaves must point to their elements.') + + if (MHTUtils.hash(self.elem) != + self.hval): + raise InvalidMerkleTree('Incorrect hash value stored at leaf') + + if self.parent: + if not ((self.parent.left is self) or (self.parent.right is self)): + raise InvalidMerkleTree("You must be one of your parents' children") + + @staticmethod + def least_common_ancestor(left, right): + current, current_history = left.parent, [left] + other, other_history = right, [right] + + while current.parent or other.parent: + if current in other_history: + return current + + current_history.append(current) + + if other.parent is None: + current = current.parent + else: + tmp = current + current = other.parent + other = tmp + + tmp = other_history + other_history = current_history + current_history = tmp + + if current in other_history: + return current + + return None + + def _root_of(self): + """ Not particularly useful; just in place for debugging. + """ + + current = self + while current.parent: + current = current.parent + return current + + def subtree_elems(self): + """ Return all the elements in this subtree, in order. + """ + + if self.elem is not None: + return [self.elem] + else: + return self.left.subtree_elems() + self.right.subtree_elems() + + +class InvalidMerkleTree(Exception): + def __init__(self, msg): + self.msg = msg diff --git a/pace/ads/merkle/mht_node_test.py b/pace/ads/merkle/mht_node_test.py new file mode 100644 index 0000000..0c580d3 --- /dev/null +++ b/pace/ads/merkle/mht_node_test.py @@ -0,0 +1,119 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for MHT nodes +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 21 Jul 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from hashlib import sha256 +from unittest import TestCase + +import time +import random + +from pace.ads.merkle.mht_node import MHTNode +from pace.ads.merkle.mht import MHT +from pace.common.pacetest import PACETestCase + + +class MerkleTests(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + def test_leaf(self): + for i in range(0, self.num_iters): + elem = random.randint(0, 1000000) + l = MHTNode.leaf(elem) + + self.assertEqual(l.elem, elem, + 'leaf element is not what was expected') + self.assertEqual(l.parent, None, 'new nodes should have no parent') + self.assertEqual(l.left, None, 'leaves have no left child') + self.assertEqual(l.right, None, 'leaves have no right child') + + hval = sha256(bytes(elem)).digest() + l2 = MHTNode.leaf(elem, hval=hval) + + self.assertEqual(l.hval, hval, + 'Wrong hval being written to leaf') + + def test_node(self): + lchild = MHTNode.leaf(5) + rchild = MHTNode.leaf(6) + + for i in range(0, self.num_iters): + elem = random.randint(0, 1000000) + hval = sha256(bytes(elem)).digest() + + n = MHTNode.node(hval, lchild, rchild) + + self.assertEqual(n.hval, hval, + 'Wrong hval written to node') + self.assertEqual(n.left, lchild, 'Wrong left child in node') + self.assertEqual(n.right, rchild, 'Wrong right child in node') + self.assertEqual(n.elem, None, 'Nodes should contain no element') + + def test_find_boundary(self): + elems = [0, 2, 4, 6, 8, 10, 12, 14, 16] + + lower, li, ri, upper = MHTNode.find_boundary(elems, 5, 11) + + self.assertEqual(lower, 4, 'Invalid lower boundary returned') + self.assertEqual(elems[li], 6, + 'Invalid first element of range returned') + self.assertEqual(upper, 12, + 'Invalid upper boundary returned: %d' %upper) + self.assertEqual(elems[ri], 10, + 'Invalid first element of range returned') + + lower, li, ri, upper = MHTNode.find_boundary(elems, 6, 10) + + self.assertEqual(lower, 4, 'Invalid lower boundary returned') + self.assertEqual(elems[li], 6, + 'Invalid first element of range returned') + self.assertEqual(upper, 12, 'Invalid upper boundary returned') + self.assertEqual(elems[ri], 10, + 'Invalid first element of range returned') + + def test_lca(self): + elems = [random.randint(0, 100000000) for i in range(0, self.size)] + elems.sort() + mht = MHT.new(elems) + + for i in range(0, self.num_iters): + leaf1 = mht.elems[random.choice(mht.sorted_elems)] + leaf2 = mht.elems[random.choice(mht.sorted_elems)] + + while leaf2 is leaf1: + leaf2 = mht.elems[random.choice(mht.sorted_elems)] + + lca = MHTNode.least_common_ancestor(leaf1, leaf2) + + current = leaf1 + parents1 = [] + + while current is not lca: + self.assertTrue(current) + parents1.append(current) + current = current.parent + + current = leaf2 + + while current is not lca: + self.assertTrue(current) + self.assertTrue(current not in parents1) + current = current.parent + + + diff --git a/pace/ads/merkle/mht_server.py b/pace/ads/merkle/mht_server.py new file mode 100644 index 0000000..9d89d9e --- /dev/null +++ b/pace/ads/merkle/mht_server.py @@ -0,0 +1,213 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: MHT server/data publisher code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 21 Jul 2014 ZS Original file +## ************** + +import socket +import logging + +from SocketServer import StreamRequestHandler, TCPServer, ThreadingMixIn +from threading import Thread +from base64 import b64encode, b64decode + +from pace.ads.merkle.mht import MHT +from pace.ads.merkle.vo import VO + +def _recv(sfile, loc=''): + return sfile.readline().strip() + +def _recvi(sfile, i, loc=''): + return [_recv(sfile, loc) for x in range(0, i)] + +def _send(wfile, msg, loc=''): + total_msg = msg + '\n' + wfile.write(total_msg) + wfile.flush() + +def _sendi(wfile, msgs, loc=''): + for msg in msgs: + _send(wfile, msg, loc) + +def _batch_iterate(rfile): + while True: + x = _recv(rfile) + + if x == 'FINISHED_BATCH_INSERT': + return + else: + yield int(x) + +def _recv_iterate(rfile, name): + while True: + x = _recv(rfile) + + if x == name: + return + else: + yield x + +class MHTHandler(StreamRequestHandler): + + def handle(self): + + # Initialize the MHT + # Can have a persistent MHT once batch insertion has been + # implemented. + elems = [int(elem) for elem in _recv_iterate(self.rfile, 'END_ELEMS')] + mht = MHT.new(elems) + + while True: + task = self.rfile.readline().strip() + + if task == 'QUERY': + raw_elem = _recv(self.rfile, 'handler') + elem = int(raw_elem) + proof = mht.contains(elem) + sproof = MHTHandler.serialize_query_result(proof) + _send(self.wfile, sproof, 'handler') + + elif task == 'RANGE_QUERY': + raw_lower, raw_upper = _recvi(self.rfile, 2, 'handler') + lower, upper = int(raw_lower), int(raw_upper) + vo = mht.range_query(lower, upper) + _send(self.wfile, vo.serialize(), 'handler') + + elif task == 'BATCH_INSERT': + mht.batch_insert(_batch_iterate(self.rfile)) + + elif task == 'PING': + _send(self.wfile, 'PONG') + + elif task == 'QUIT': + return + + @staticmethod + def serialize_query_result(qr): + """ Serialization protocol for query result lists. + The result of a query is one of the following: + + None - return the string 'None' + list of (flag, hval) pairs - transform each boolean flag into its + string with the str() method, then base 64 encode each hash + value. Put each pair together with the ';' delimiter, then + join the entire list with the ',' delimiter. + """ + if qr is None: + return 'None' + + return ','.join(['%s;%s' %(str(f), b64encode(h)) for f, h in qr]) + +class SocketMHTServer(ThreadingMixIn, TCPServer): + """ An MHT server that serves the MHT over a socket, freeing + the client from having to store anything more than a + handle on the server to send & receive information to & from. + + (this will become more interesting once it starts to serve the same + MHT to multiple clients) + """ + pass + +class SocketMHTClient(object): + + def __init__(self, sock): + self.sock = sock + self.rfile = sock.makefile('r') + self.wfile = sock.makefile('w') + + def __enter__(self): + return self + + def __exit__(self, type, value, tb): + _send(self.wfile, 'QUIT') + self.rfile.close() + self.wfile.close() + self.sock.close() + + @staticmethod + def deserialize_query_result(qr): + if qr == 'None': + return None + + return [(f == 'True', b64decode(h)) + for f, h in [s.split(';') for s in qr.split(',')]] + + @staticmethod + def new(elems, host='localhost', port=9999): + """ Creates a connection to a server and initializes it. Assumes + that the server's MHT has not already been initialized. + """ + s = SocketMHTClient.connect(host, port) + s.initialize(elems) + return s + + def initialize(self, elems): + """ Initialize the server being connected to with the elements + elems. Should be called exactly once per server. + """ + _sendi(self.wfile, [str(elem) for elem in elems]) + _send(self.wfile, 'END_ELEMS') + + @staticmethod + def connect(host='localhost', port=9999): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((host, port)) + + return SocketMHTClient(sock) + + def query(self, elem): + """ Query to see whether an element is in the MHT. + Arguments: + self - the MHT object + elem - the object to query + + Returns: + None if elem was not contained in the MHT, or a proof + that it was contained in the tree. + """ + _send(self.wfile, 'QUERY') + _send(self.wfile, str(elem), 'client') + proof = _recv(self.rfile, 'client') + + return SocketMHTClient.deserialize_query_result(proof) + + def range_query(self, lower, upper): + """ Query a range of elements beteween lower and upper (inclusive) + Arguments: + self - the MHT object + lower - the (inclusive) lower bound of the range + upper - the (inclusive) upper bound of the range + + Returns: + vo - a verification object (as in vo.py) for the given range + """ + _send(self.wfile, 'RANGE_QUERY') + _sendi(self.wfile, [str(lower), str(upper)]) + vo = _recv(self.rfile, 'client') + return VO.deserialize(vo) + + def batch_insert(self, expected_initial_root, elems, least, greatest): + vo = self.range_query(least, greatest) + vo.verify(least, greatest, expected_initial_root) + _send(self.wfile, 'BATCH_INSERT') + + for elem in elems: + _send(self.wfile, str(elem)) + vo.insert(elem) + + _send(self.wfile, 'FINISHED_BATCH_INSERT') + + return vo.root.hval + + def ping(self): + """ Ping a server. Mostly for testing/benchmarking purposes; assumes + it can't respond until it's finished with its previous task. + """ + + _send(self.wfile, 'PING') + _recv(self.rfile) diff --git a/pace/ads/merkle/mht_server_test.py b/pace/ads/merkle/mht_server_test.py new file mode 100644 index 0000000..3d064d1 --- /dev/null +++ b/pace/ads/merkle/mht_server_test.py @@ -0,0 +1,175 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for MHT servers +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 25 Jul 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import random +import socket +import time + +from threading import Thread + +from pace.ads.merkle.mht import MHT +from pace.ads.merkle.mht_utils import MHTUtils +from pace.ads.merkle.mht_server import SocketMHTServer, MHTHandler, SocketMHTClient +from pace.common.pacetest import PACETestCase + +class MHTServerTest(PACETestCase): + + @staticmethod + def run_server(server): + server.serve_forever() + + def setUp(self): + # Need the extra randomness to make sure it doesn't generate the + # same seed on different tests. + random.seed(int(time.time()) + random.randint(0, 1000)) + + self.host = 'localhost' + self.port = random.randint(9000, 9999) + + # Try 10 times to get a valid port; if not, will fail. If this + # fails, check to make sure ports 9000-9999 are not in use. + for _ in xrange(10): + try: + self.server = SocketMHTServer((self.host, self.port), + MHTHandler) + break + except socket.error: + self.port = random.randint(9000, 9999) + + self.thread = Thread(group=None, target=MHTServerTest.run_server, + name=None, args=[self.server], kwargs={}) + self.thread.daemon = True + self.thread.start() + + print 'Starting test', + self.start_time = time.time() + + def tearDown(self): + self.end_time = time.time() + print 'Test finished. Time taken: %s' %str(self.end_time - self.start_time) + self.server.shutdown() + self.thread.join() + + def test_remote_query(self): + print 'single element query' + for i in range(0, self.num_iters): + elems = [random.randint(0, 1000000000) + for i in range(0, self.size)] + elems.sort() + mht = MHT.new(elems) + + with SocketMHTClient.new(elems, self.host, self.port) as client: + for j in range(0, self.num_iters): + elem = random.choice(elems) + good_result = mht.contains(elem) + test_result = client.query(elem) + self.assertEqual(good_result, test_result, + 'Unequal proofs returned') + + def test_remote_range_query(self): + print 'range query' + total_time = 0 + for i in range(0, self.num_iters): + elems = [random.randint(0, 1000000000) + for i in range(0, self.size)] + elems.sort() + mht = MHT.new(elems) + start = time.time() + with SocketMHTClient.new(elems, self.host, self.port) as client: + ## Get valid lower & upper bounds with enough room between + ## them (about a third of the list) for a substantial range + ## query + lower = random.choice(elems[1:self.size/3]) + upper = random.choice(elems[2*self.size/3:-1]) + + self.assertEqual(mht.range_query(lower, upper), + client.range_query(lower, upper)) + end = time.time() + total_time = total_time + (end - start) + + print 'Average time taken: %s' %str(total_time / self.num_iters) + + def test_remote_batch_insert(self): + print 'batch insert' + total_time = 0 + other_time = 0 + complete_time = 0 + loop_time = 0 + init_time = time.time() + for i in range(0, self.num_iters): + loop_start = time.time() + start = time.time() + elems = [random.randint(0, 100000000) for i in range(0, self.size)] + elems.sort() + mht = MHT.new(elems) + old_root = mht.root.hval + + self.assertEqual(len(mht.sorted_elems), self.size) + + ## Generate a small number (in this case, n/10) of random elements + ## between the minimum and maximum elements (not including the + ## boundary elements) to insert. + new_elems = [random.randint(elems[1], elems[-2]) + for i in range(0, self.size/10)] + min_ne = min(new_elems) + max_ne = max(new_elems) + + vo = mht.range_query(min_ne, max_ne) + + for elem in new_elems: + vo.insert(elem) + + mht.batch_insert(new_elems) + end = time.time() + + start = time.time() + with SocketMHTClient.new(elems, self.host, self.port) as client: + end = time.time() + start = time.time() + new_root = client.batch_insert(old_root, new_elems, + min_ne, max_ne) + client.ping() + end = time.time() + total_time = total_time + (end - start) + + start = time.time() + self.assertEqual(new_root, vo.root.hval) + + self.assertEqual(mht.root.hval, new_root) + self.assertEqual(len(mht.sorted_elems), + self.size + (self.size/10)) + + for elem in new_elems: + proof = client.query(elem) + self.assertEqual(proof, mht.contains(elem)) + self.assertTrue(MHTUtils.verify(new_root, elem, proof), + 'Returned proof does not verify that \ + inserted element is in the tree') + end = time.time() + other_time = other_time + (end - start) + loop_end = time.time() + loop_time = loop_time + (loop_end - loop_start) + end_time = time.time() + + print 'Total batch insert time: %s' %str(end_time - init_time) + + print 'Time for batch inserts: %s' %str(total_time) + print 'And time to do test queries: %s' %str(other_time) + print 'Time in loop: %s' %str(loop_time) + print 'Time accounted for: %s' %str(total_time + other_time) diff --git a/pace/ads/merkle/mht_test.py b/pace/ads/merkle/mht_test.py new file mode 100644 index 0000000..0ebe4eb --- /dev/null +++ b/pace/ads/merkle/mht_test.py @@ -0,0 +1,268 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for MHT library +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 17 Jul 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import time +import random + +from pace.ads.merkle.mht import MHT, MHTInsertionException +from pace.ads.merkle.mht_utils import MHTUtils +from pace.common.pacetest import PACETestCase + + +class MerkleTests(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + def test_valid(self): + """ Ensure that we only create valid hash trees. + """ + + for i in range(0, self.num_iters): + elems = [random.randint(0, 1000000000) + for i in range(0, self.size/2)] + elems.sort() + mht = MHT.new(elems) + + try: + mht.valid() + except InvalidMerkleTree as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + def test_membership(self): + """ Ensure that every element of the hash tree is reflected as in it. + """ + + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + mht = MHT.new(elems) + + for elem in elems: + self.assertTrue(mht.contains(elem), + 'MHT claims not to have element %d' %elem) + + def test_non_membership(self): + """ Ensure that non-elements of the MHT are not in it + """ + + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + mht = MHT.new(elems) + + self.assertEqual(mht.contains(-1), None, + "MHT thinks it contains -1 (it doesn't)") + self.assertEqual(mht.contains(100000001), None, + "MHT thinks it contains 100000001 (it doesn't)") + + def test_proofs(self): + """ Ensure that the returned membership proofs are valid. + """ + + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + mht = MHT.new(elems) + + for elem in elems: + proof = mht.contains(elem) + self.assertTrue(MHTUtils.verify(mht.root.hval, elem, proof), + 'Returned proof does not verify that %d is in \ + the tree' %elem) + + def test_partial_insert(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + + index = random.choice(range(1, 99)) + left = elems[index-1] + right = elems[index] + + elem = random.choice(range(left, right)) + + new_elems, i = MHT.partial_insert(elems, elem) + + self.assertEqual(index, i, 'Error: element inserted at wrong index') + self.assertEqual(new_elems, + elems[:index] + [elem] + elems[index:], + 'Error: failure to insert element into list') + + def test_left_insert_fails(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + elems = elems[1:] + + index = random.choice(range(1, 99)) + left = elems[index-1] + right = elems[index] + + mht = MHT.new(elems) + elem = 0 + + try: + mht.insert(elem) + except MHTInsertionException as e: + return + + raise Error('Not supposed to succeed on an out-of-range insert.') + + def test_valid_insert(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + mht = MHT.new(elems) + root = mht.root.hval + + index = random.choice(range(1, 99)) + left = elems[index-1] + right = elems[index] + + elem = random.choice(range(left, right)) + vo = mht.insert(elem) + + mht.valid() + vo.verify(left+1, right-1, root) + + def test_insert_contains(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + mht = MHT.new(elems) + root = mht.root.hval + + index = random.choice(range(1, 99)) + left = elems[index-1] + right = elems[index] + + elem = random.choice(range(left, right)) + vo = mht.insert(elem) + + proof = mht.contains(elem) + + self.assertTrue(MHTUtils.verify(mht.root.hval, elem, proof), + 'Returned proof does not verify that inserted \ + element is in the tree') + + def test_batch_insert(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 300)] + elems.sort() + mht = MHT.new(elems) + root = mht.root.hval + + new_elems = [random.randint(elems[0], elems[-1]) + for i in range(0, 50)] + + mht.batch_insert(new_elems) + + for elem in new_elems: + proof = mht.contains(elem) + + self.assertTrue(MHTUtils.verify(mht.root.hval, elem, proof), + 'Returned proof does not verify that inserted \ + element is in the tree') + + def test_gestalt_batch_insert(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 300)] + elems.sort() + mht = MHT.new(elems) + control_mht = MHT.new(elems) + root = mht.root.hval + + left = random.choice(elems[1:self.size/3]) + right = random.choice(elems[2*self.size/3:-1]) + + new_elems = [random.randint(left, right) + for i in range(0, 50)] + + mht._gestalt_batch_insert(left, right, new_elems) + mht.valid() ## make sure it's valid + control_mht.batch_insert(new_elems) + + self.assertEqual(mht.sorted_elems, control_mht.sorted_elems) + + for elem in new_elems: + proof = mht.contains(elem) + + self.assertTrue(proof is not None, + 'Added element not in tree') + self.assertTrue(MHTUtils.verify(mht.root.hval, elem, proof)) + + def test_gestalt_batch_insert_again(self): + for i in range(0, self.num_iters): + elems = [random.randint(1, 99999999) + for i in range(0, 98)] + elems.sort() + elems = [0] + elems + [100000000] + + mht = MHT.new(elems) + + for i in range(1, 10): + elems = [random.randint(1, 99999999) + for i in range(1, 100)] + mht._gestalt_batch_insert(min(elems), max(elems), elems) + mht.valid() + + + def test_batch_insert_vo(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 300)] + elems.sort() + mht = MHT.new(elems) + root = mht.root.hval + + new_elems = [random.randint(elems[0], elems[-1]) + for i in range(0, 50)] + + vo = mht.range_query(min(new_elems), max(new_elems)) + + mht.batch_insert(new_elems) + + for elem in new_elems: + proof = mht.contains(elem) + vo.insert(elem) + + self.assertTrue(MHTUtils.verify(mht.root.hval, elem, proof), + 'Returned proof does not verify that inserted \ + element is in the tree') + + self.assertEqual(vo.root.hval, mht.root.hval) + + def test_both_inserts(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 300)] + elems.sort() + mht = MHT.new(elems) + root = mht.root.hval + + new_elems = [random.randint(elems[0], elems[-1]) + for i in range(0, 50)] + + vo = mht.range_query(min(new_elems), max(new_elems)) + + mht.batch_insert(new_elems) + + for elem in new_elems: + vo.insert(elem) + + self.assertEqual(vo.root.hval, mht.root.hval) diff --git a/pace/ads/merkle/mht_utils.py b/pace/ads/merkle/mht_utils.py new file mode 100644 index 0000000..f35b112 --- /dev/null +++ b/pace/ads/merkle/mht_utils.py @@ -0,0 +1,44 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Merkle hash tree utility functions +## (that server & client can run) +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Jul 2014 ZS Original file +## ************** + +from hashlib import sha256 + +class MHTUtils(object): + @staticmethod + def hash(elem): + return sha256(bytes(elem)).digest() + + @staticmethod + def merge_hashes(h1, h2): + return sha256(h1 + h2).digest() + + @staticmethod + def verify(root_hval, elem, proof): + """ Arguments: + root_hval - the hash value stored at the root of the MHT + elem - the elem that is (allegedly) in the MHT + proof - the alleged proof that elem is in the MHT + + Returns: + True if proof is a proof that elem is in the MHT with root_hval + False otherwise + """ + hval = MHTUtils.hash(elem) + + for is_left, other_side in proof: + if is_left: + hval = MHTUtils.merge_hashes(hval, other_side) + else: + hval = MHTUtils.merge_hashes(other_side, hval) + + return hval == root_hval + diff --git a/pace/ads/merkle/vo.py b/pace/ads/merkle/vo.py new file mode 100644 index 0000000..4633be0 --- /dev/null +++ b/pace/ads/merkle/vo.py @@ -0,0 +1,223 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Verification objects for MHTs +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Jul 2014 ZS Original file +## ************** + +from base64 import b64encode, b64decode +import bisect + +from pace.ads.merkle.eq import EqMixin +from pace.ads.merkle.vo_node import VONode +from pace.ads.merkle.hash_node import HashNode +from pace.ads.merkle.mht_utils import MHTUtils + +class VO(EqMixin): + """ Verification objects for MHTs. Structure is similar to a MHT, + but may contain hashes to replace subtrees that are not necessary + for the current verification. + """ + + def serialize(self): + """ Create a string out of a VO + + NB: assumes the hash function used is standard to avoid + having to serialize the hash class. + """ + return '%s<=>%s<=>%s' %(str(self.left), str(self.right), + self.root.serialize()) + + @staticmethod + def deserialize(s): + sleft, sright, sroot = s.split('<=>') + left, right = int(sleft), int(sright) + + root, leaves = VONode.deserialize(sroot) + + return VO(left, right, root, leaves) + + def __init__(self, left, right, root, leaves): + """ Defines a verification object for a query on mht that + returns elements elems, with left and right boundaries + as given. + """ + self.left = left + self.right = right + self.root = root + self.leaves = leaves + + @staticmethod + def new(left, elems, right, mht_root): + """ Defines a verification object for a query on mht that + returns elements elems, with left and right boundaries + as given. + """ + all_elems = [left] + elems + [right] + root, leaves = VO.build_node(mht_root, all_elems) + + return VO(left, right, root, leaves) + + @staticmethod + def build_node(mht_node, elems): + if mht_node.left and mht_node.right: + left, l_leaves = VO.build_node(mht_node.left, elems) + right, r_leaves = VO.build_node(mht_node.right, elems) + + # Check if we can collapse this to just a hash value + if not (isinstance(left, VONode) or isinstance(right, VONode)): + return HashNode(mht_node.hval), [] + + new_node = VONode.node(mht_node.hval, left, right) + + return new_node, l_leaves + r_leaves + + else: + # It's a leaf, so see if it's in the set or not + if mht_node.elem in elems: + new_node = VONode.leaf(mht_node.elem, mht_node.hval) + return new_node, [new_node] + else: + return HashNode(mht_node.hval), [] + + def verify_insertion(self, old_root_hval, left, right, elem): + """ Verify that 'self' is a proof that 'elem' was correctly inserted + into an MHT between 'left' and 'right', whose old root value was + old_root_hval. + + Arguments: + old_root_hval - the root hash of the MHT before the insertion + left, right - the elements on the left & right sides of the element + post-insertion + elem - the element that was inserter + + Returns: + root_hval - the new root hash value of the MHT after the insertion + """ + + # MHT.insert() needs to return a VO for the empty range between left & + # right and the new root value; that way, we can check the VO to make + # sure it's consistent with what we expect, then insert it into the VO + # to make sure we get back the correct hash value. + # + # There might even be a way to do both of these at the same time? But + # we should leave optimizations like that for later. + self.verify(left, right, old_root_hval) + + return self.insert(elem) + + def insert(self, elem): + """ Insert an element into a VO, returning the new root hash value. + """ + + if elem <= self.left or elem >= self.right: + raise VerificationObjectException( + "Element given for insertion is not within the given range.") + + just_elems = [leaf.elem for leaf in self.leaves] + + i = bisect.bisect_left(just_elems, elem) + + new_leaf = VONode.leaf(elem) + sibling_leaf = self.leaves[i-1] + + x = VONode.insert(new_leaf, sibling_leaf) + + self.leaves = self.leaves[:i] + [new_leaf] + self.leaves[i:] + + return (x, self.root.hval) + + + def verify(self, left, right, root_hval): + """ Verify that 'self' (the verification object) does in fact + verify the range given. It's sent by the (untrusted) server, + so we must verify everything. + """ + leaves = self.leaves + + if len(leaves) < 2: + raise VerificationObjectException( + 'Leaves length must be at least 2 (actual: %d)' %len(leaves)) + + left_leaf = leaves[0] + right_leaf = leaves[-1] + leaves = leaves[1:-1] + + ## Check boundary conditions---minimum possible check on + ## whether the results are valid + if left_leaf.elem >= left or right_leaf.elem <= right: + raise VerificationObjectException( + 'Left and right boundary objects must be outside of range:\n\ + Range: %s to %s\n\ + Left object: %s, Right object: %s' %(str(left), + str(right), + str(left_leaf.elem), + str(right_leaf.elem))) + if not all(left <= leaf.elem <= right for leaf in leaves): + raise VerificationObjectException( + 'All leaves must be within the left & right bounds') + if not all(leaves[i].elem <= leaves[i+1].elem + for i in range(0, len(leaves)-1)): + raise VerificationObjectException( + 'Leaves must be sorted') + + ## Make sure everything hashes together correctly + + if self.root.hval != root_hval: + raise VerificationObjectException( + 'Root hash value does not match published value') + + VO.verify_node(self.root, self.leaves, len(self.leaves)) + + @staticmethod + def verify_node(node, leaves, num_leaves): + if not isinstance(node, VONode): + # If leaves is neither empty nor full, there's a gap in the + # result set that means the server attempted to omit an element + if leaves and num_leaves != len(leaves): + raise VerificationObjectException( + 'Incomplete VO detected---elements omitted in result set.') + + return leaves + + # need the extra check for non-none False objects + if node.elem is not None: + ## It's a leaf + if node.hval != MHTUtils.hash(node.elem): + raise VerificationObjectException( + 'Node hval must match element hval') + + if node.elem != leaves[0].elem: + raise VerificationObjectException( + 'Node element must be the first of the remaining leaves') + + return leaves[1:] + + elif not (VO.child_node_class(node.left) and + VO.child_node_class(node.right)): + raise VerificationObjectException( + 'Nodes must have exactly zero or one children.') + else: + ## It's an internal node + left_hval = node.left.hval + right_hval = node.right.hval + + if not (MHTUtils.merge_hashes(left_hval, right_hval) == + node.hval): + raise VerificationObjectException( + "Node hash value does not match its childrens' hvals") + + remaining_leaves = VO.verify_node(node.left, leaves, num_leaves) + return VO.verify_node(node.right, remaining_leaves, num_leaves) + + @staticmethod + def child_node_class(maybenode): + return isinstance(maybenode, VONode) or isinstance(maybenode, HashNode) + +class VerificationObjectException(Exception): + def __init__(self, msg): + self.msg = msg diff --git a/pace/ads/merkle/vo_node.py b/pace/ads/merkle/vo_node.py new file mode 100644 index 0000000..178b08e --- /dev/null +++ b/pace/ads/merkle/vo_node.py @@ -0,0 +1,93 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Node class for VOs +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 28 Jul 2014 ZS Original file +## ************** + +from base64 import b64encode, b64decode + +from pace.ads.merkle.mht_node import MHTNode +from pace.ads.merkle.empty_node import EmptyNode +from pace.ads.merkle.hash_node import HashNode + + +class VONode(MHTNode): + + def __init__(self, hval, left=None, right=None, elem=None): + if left is None: + left = EmptyNode() + if right is None: + right = EmptyNode() + + super(VONode, self).__init__(hval, left, right, elem) + + def set_parent(self, parent): + self.parent = parent + + def serialize(node, depth=0): + """ Create a (reversible) string out of a node + + NB: assumes the hash function used is standard to avoid + having to serialize the hash class. + """ + if not isinstance(node, MHTNode): + if node: + return b64encode(node) + else: + return str(node) + + separator = ',' + str(depth) + ',' + + return '(%s)' %(separator.join([b64encode(node.hval), + node.left.serialize(depth+1), + node.right.serialize(depth+1), + str(node.elem)])) + + @staticmethod + def deserialize(s, depth=0): + if s == 'None': + return (EmptyNode(), []) + elif s[0] != '(': + # It's a hash value + return (HashNode(b64decode(s)), []) + + separator = ',' + str(depth) + ',' + + shval, sleft, sright, selem = s[1:-1].split(separator) + + if shval == 'None': + hval = None + else: + hval = b64decode(shval) + + if sleft == 'None': + left = EmptyNode() + else: + (left, left_leaves) = VONode.deserialize(sleft, depth + 1) + + if sright == 'None': + right = EmptyNode() + else: + (right, right_leaves) = VONode.deserialize(sright, depth + 1) + + if selem == 'None': + elem = None + else: + elem = int(selem) + + node = VONode(hval, left, right, elem) + + left.set_parent(node) + right.set_parent(node) + + if elem is not None: + leaves = [node] + else: + leaves = left_leaves + right_leaves + + return node, leaves diff --git a/pace/ads/merkle/vo_test.py b/pace/ads/merkle/vo_test.py new file mode 100644 index 0000000..dcd0cc4 --- /dev/null +++ b/pace/ads/merkle/vo_test.py @@ -0,0 +1,220 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for verification objects +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 21 Jul 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from hashlib import sha256 +from unittest import TestCase + +import time +import random + +from pace.ads.merkle.mht_utils import MHTUtils +from pace.ads.merkle.mht import MHT +from pace.ads.merkle.vo import VO, VerificationObjectException +from pace.ads.merkle.vo_node import VONode +from pace.ads.merkle.empty_node import EmptyNode +from pace.common.pacetest import PACETestCase + +class VOTest(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + # Setup for small, hand-made tests + self.elems = [0, 5, 6, 10] + self.mht = MHT.new(self.elems) + + self.lower = 1 + self.upper = 9 + + self.vo = self.mht.range_query(self.lower, self.upper) + + def test_range(self): + """ Ensure that range queries work correctly + """ + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 1000)] + elems.sort() + mht = MHT.new(elems) + + lower = random.choice(elems[1:200]) + upper = random.choice(elems[500:999]) + + vo = mht.range_query(lower, upper) + + try: + vo.verify(lower, upper, mht.root.hval) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + def test_empty_vo_fails(self): + elems = self.elems + mht = self.mht + lower = self.lower + upper = self.upper + vo = self.vo + + # Make sure it won't verify an empty VO + bad_vo = VO(0, 10, EmptyNode(), []) + passed = False + + try: + bad_vo.verify(lower, upper, mht.root.hval) + except VerificationObjectException as e: + passed = True + + self.assertTrue(passed, 'Should not verify an empty VO') + + def test_bogus_root_hash(self): + elems = self.elems + mht = self.mht + lower = self.lower + upper = self.upper + vo = self.vo + + # Make sure it won't verify a bogus root hash + bad_root_hval = sha256(b'foobar').digest() + passed = False + + try: + vo.verify(lower, upper, bad_root_hval) + except VerificationObjectException as e: + passed = True + + self.assertTrue(passed, 'Should not verify a bogus root hash') + + def test_omitted_element(self): + elems = self.elems + mht = self.mht + lower = self.lower + upper = self.upper + vo = self.vo + + # Make sure it won't let us omit an element + leaf0 = VONode.leaf(0) + leaf5 = VONode.leaf(5) + leaf6 = VONode.leaf(6) + bad_leaf6 = leaf6.hval + leaf10 = VONode.leaf(10) + + node05 = VONode.node(MHTUtils.merge_hashes(leaf0.hval, leaf5.hval), + leaf0, leaf5) + node610 = VONode.node(MHTUtils.merge_hashes(bad_leaf6, leaf10.hval), + bad_leaf6, leaf10) + bad_node610 = VONode.node( + MHTUtils.merge_hashes(bad_leaf6, leaf10.hval), bad_leaf6, leaf10) + + root = VONode.node( + MHTUtils.merge_hashes(node05.hval, bad_node610.hval), + node05, + bad_node610) + bad_vo = VO(0, 10, root, [leaf0, leaf5, leaf10]) + + passed = False + + assert root.hval == mht.root.hval + + try: + bad_vo.verify(lower, upper, mht.root.hval) + except VerificationObjectException as e: + passed = True + + self.assertTrue(passed, 'Should not verify an incomplete tree') + + def test_too_long_range(self): + elems = self.elems + mht = self.mht + lower = self.lower + upper = self.upper + vo = self.vo + + # Make sure it won't let us return too many elements + passed = False + + try: + vo.verify(1, 5, mht.root.hval) + except VerificationObjectException as e: + passed = True + + self.assertTrue(passed, 'Should not verify an overextended range') + + def test_stringify_leaf(self): + for i in range(0, self.num_iters): + elem = random.randint(0, 1000) + l = VONode.leaf(elem) + s = l.serialize() + new_l, leaves = VONode.deserialize(s) + + self.assertEqual(l, new_l, + 'Taking a leaf to string and back must return an equivalent \ + object') + + def test_stringify_node(self): + for i in range(0, self.num_iters): + elem1 = random.randint(0, 1000) + elem2 = random.randint(0, 1000) + + l1, l2 = VONode.leaf(elem1), VONode.leaf(elem2) + + n = VONode.node(MHTUtils.merge_hashes(l1.hval, l2.hval), l1, l2) + s = n.serialize() + new_n, leaves = VONode.deserialize(s) + + self.assertEqual(n, new_n, + 'Taking a node to string and back must return an equivalent \ + object') + + def test_stringify(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 1000)] + elems.sort() + mht = MHT.new(elems) + + lower = random.choice(elems[1:200]) + upper = random.choice(elems[500:-1]) + + vo = mht.range_query(lower, upper) + + assert isinstance(vo, VO) + + serialized = vo.serialize() + new_vo = VO.deserialize(serialized) + + self.assertEqual(vo, new_vo, + 'Error: to_string & from_string should return an \ + equivalent object') + + def test_vo_insert(self): + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, 100)] + elems.sort() + mht = MHT.new(elems) + root = mht.root.hval + + index = random.choice(range(1, 99)) + left = elems[index-1] + right = elems[index] + + elem = random.choice(range(left, right)) + vo = mht.insert(elem) + + mht.valid() + vo.verify(left+1, right-1, root) + + x, new_root = vo.insert(elem) + vo.verify(left+1, right-1, new_root) + + self.assertEqual(vo.root.hval, mht.root.hval) diff --git a/pace/ads/skiplist/.authskiplist.py.swp b/pace/ads/skiplist/.authskiplist.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..bb9cb7ee164ee416a6c2dc7dbc9d14e63f1bfabe GIT binary patch literal 16384 zcmeHNO^h5z6)yg41F;E2pdgTVcu{u7%+BuG=0_VF6zmPGWP7b-aR6sEs+q2tX>U*0 zxT||-7Z5q2@N>!mAp+qLfw;f{Bsd_EfZ!M@$G`yr5(rL+BT*9Id-XHjy|LF4$_cu) z-^^^)>#Fy@_v&@m>+Y{y+qg_0>7Efd?iS+42i|$@GpA38t;<4;qr#|+I}SgJev#(I z;WFI&B{$&m)dw!DFJF}d)tm0;W1TKf@q1ZDX4&k-(*{?SA73NzWqIZf-uj^zJJU2PY(3I zNvb0?NTe}c^zc8eJ5AHgVoc#a zJ9I^-D(GOR>(EwKs9Q{mlMb1*HmgpeURIH3CaTlcgcoRINHawvur*eh;@_!K5#^d> z6p>7Ij&@4au1ZJ`=|*94T8h(QzTcq_+VA;*@sJ=+Cf9IJv{rH+cr&o!I!bI*IR-_R zsnq#uFYnojY681XdF#x%Kuv;&SBaWb;vxthq%ySMo=g`PUaJoI**nA&bil(fKfhZa zbzy;m5wP4*)vYNAiHmB;G|Ik8;&eoK<0ww>Z?3Wq#VHM>VeS{|QfVU*b*qDaqDED>D|OrtQE4O_<* zNnX6KHgBN8a(ci77)T5Bh;orUHgV1?fhXkyfl#`a6Nd4T!2Ebx2s(_A7|IaBS+Ea4?&xC%p2eDs zFdLmRe9KS2E(oJ<=R@mX3A@frseh z8CWApQ=NmXSSHn>g3dba(z+asDUT;MiFnglPdh@&aZGt8cU5L&f}m#yR)@N%uoxzB zs%WfdGy&-@d<<*GCx;j6I5&C6b92r0^HhN7t!A26uZwccunk?TIhYoIUbWhl6%$C~ zWzWfLWv+0!NFJ1lDGdpkz+HOS_A)MclwR;+C9BPPRxV7&HdxYbdzEoH%3VEfF=#DW z)%wfCg_yF*$TG{b-S7N8;r!mm`a=Y|{4_Tir#u*E1{cT*`yl}06kcI>@cWNTOG~&A zz}*}{SULv7A=IyI;_*nZGE=!r+8vtW5;bIh@P#|ly_I^J7>^3PqB)Q@!KxvaQkjPq=u-$!4lgWvtF{{?MLhNu zMA@QB9F7!%qL@a=;!$bXt@RG(*{iWpG8>Fr%w1{8$&)AN0KUW|q7<6tBE`tnmoW!An+YuO`|1BHJNYBph>ZkQ4WAH6XCUrcotXeC9(c zFS68BuJqi>kz>ZXNFu@uxIS2Vvp663qIig#E^cCXlo^gsvk@mLlj%s2BVN175g$`r zJZ(?=e&UgI;R6eIAUd1CojUCZ9wr<*i*OG3!rAOp7m7h0nn?~yXgbii{}|-SKDA5% z8qq$My9cwqyUhATlxGTA_ewp&aTi!j5adQ90lJ%}if%Aj1kLz6x^1$9#vp$eF~!&a zKJK#M8?elo*{3@wXvXv55I3}8?-}eB1T$d>mhAIA#r(#NTS9Vr81E@x!aC&~ubg6$ z8hTH)Tz0X+={?J#W$$wl#Sh@s<|{U>xfcFEjMoZ3+Bi`RGd&@GH@b^=qq`w{clq6D z9+2Y66sxZs@HX<{#2_E$@Dnf>N!$;;?mkEevv0annUBL(fyqGlWo;3D!4~ahZs5At z;swtV9a`*mm+jwTTZGn%G-OgaQLS*c>>Hk`)$0x8MD=>@w(zDwiSSb!ytKMNr)mec z(CHOWFv8dBS)$K9%+axlOK_aZgm^$Jgp9hxJ@#<_@Mk!z%telwa9n|gM3*&IoXvJR zwKCNPtXrPHcC--wSn{9LI?7_KhWltsP7vC$gn}!pZ8woJgDjr%np?B(b`}PEm5uKSem}mdLn&}%@b8Ez}(%Y5`db;m!!z>S%H@4_foDOu7(j|#| z9+_)5R*k5l7ch&>Wt_H^yd-n_4+8>5ht*JOS0|C`JC99sQgCr4cMmu)A3s}~j{%V_uF_gk?K4Mg(z$XY{}Zys PA+BM$Fh!(sp;`O~ssz>O literal 0 HcmV?d00001 diff --git a/pace/ads/skiplist/.skiplist.py.swp b/pace/ads/skiplist/.skiplist.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..dfe09185423739add508206b9ecaf5e0ea5ec456 GIT binary patch literal 16384 zcmeHNON<;x8Lk+@E5tz{h{OSvcO!Pjo}Kk>2#AdqWn-@sOMZzgIS`?tce;9~oSv?s zyL!eG#pJ*Va|FeJkdQbaKq7~PK)5DI1PKU-a0nm*QUV-!C?Fva0`vX#=*RAOcaeOE zP?z*gPj^-Q^}p(`s=s^d_=Bg<@(*?IWGL@o?BX5oe(>`vhuP*?#s*=YiIgh#F8NlT z=zQ-sRQqX5aOuMOiH)TTL0|MnQ$0}0(g^>Tf-qak9+sn6X1e&(9ZmPA+q7sj&}iTw z8n~6+xw3qmTF%cM;qQ9q#}3k|Y13$+(LketMgxro8VxiWXf)7hpwYnpi3arO5PJ-= z9CGrE-1Vj%*EhKP6?gsAj(T_7TpA5D8fY}oXrR$Rqk%>PjRqPGG#Y3$&}g91K%;@z zp$3AGvA2S+SLwiy_y7L<|L5Bn`vLGI@HOBuAO`LS?f|YGX6#SEAAw&3&jHT@Bj6-( z0yqX71#SlZa4TcK2c81H3|t023ET&q0`3C-^>)U70sI8`E}(%0;H6ve4EQndRp24u zc7Orb-p1G~!1KTlfv17*0AB>o0k;FU06&6|&ja5EazF!{z}>(ca0K|37iN1{U*kK1H2480Z3o~+z)Wz+Rcpp2lxhX0XPpZ;H5V* z_6+bn;41Jqa0%!FbHEYcuSmGO2K)?o0eBinfED2Vz#-r!;I~NJd;z!&JPIrWWXo54 z0tZ7fUMZ>E9%#O$@+8c7Yi>~{k)F=+APM>0F?-YQm|Hy%JPtC=MJ$FQ(R?D~xJGLe zEh3p#ny83Vw^U?#Y&-CaIqLf=(Sb}%Wh^311JwD_3QTFOhTUR_xw$$1QK9oR$!te_ z8R99)WSfhiKj5(#i|hmMDT%{7&0VN1_6y69b=;z(vbbS#1LOw zGi^$F$1;=Psbg)tW(7}`(%no1X@B5Euku{|Usz@{%^_xFsB=le8e@?uIBDEE)2SfN z1Xpm5bRsiRh~ON|IJh4UEZ%^P)+l8CCeA;t>5J-L=kN zCFGmXwIB~VhGwEd(T57NE~@CpDcf<>;Y8Tbbez}uvh?8W`;hbObqoiNo_}bpS9+l5 z(@U}^pB47bsYF!xbyOLV^Tm(o*(HrKUrE=3T(yPOX|3HnUk^hwH$-aZXI58?(_e28 zWP{!~h~Yp`(I8m4>w~S`b?t5_w?(E~r4}Xw84I4k;zoWm4`y_%%jM?Gi(Y zmN>^D8EN=4g#@G!+l((76Bu@e zshkx7Hr-M`Z~kf{jhM+qLhWG*})w(Qqc8?naxXum<>U7V#W@h77Y%!pl4X{ zvFTHMlxz5a^B(UbjM(sHJ>AYt^K#-*74!Avi}&U-Mqs4%wb)jf2IOLR*n(=Ud*L!m zxoh{raZf`JL0R&ZPA zJGRu;MbXzp+w8UJ8}2T?;qGS6jm##R%i&0+ntSzKudVMyL-{^_Bx13HaDt734E@86 zOMNlYQYCJ9+DgQ7%lEaL3Fbz(n`(UYI?s>R3O(V=ALi@%HeWfu`~l8C{s1ZCJSK@u zf*7ZpSeQnOC{$yLy`f)UOq-K*1n}itFvQJS70O8V1H&l|R(*i@Lyu01te;9F%&M`A z**4>6D-F`AX|kTf&C+ZY?3w!usUqdCa{83sJUO98QyXZE9A{5&@-s5&t2p6j0>uA7 zD@&^;|4~Ng|1aTudl~0nI{*9k`*iOAI&cM;0ArvBYye$g5qJ;q7o6>10DcNQ0elX) z0_1=OdcgYt2E2$f{uLksR)N=Wwto(|3Y-EqfWPBR|1$7>;2Gd6z!ab}|2@EA;CDFB zzY07BdPjRqPGG#Y3$&}iUwqXEBHw1)#akefYj zCDDcb;eC04{i_y&kAqaIJmVvgE}D&UUm-Kv*NMpRFjaW2CGFHbUAp=lgFngIWU5Vv zhH6rtP^j@J72}>glHvT~nwtAMQEE$NVWUjJ4=K+-2*!d38b^G3aS&uSU0@CnbVn%w z8pDWT(f|wf;~)`D10;yAyWejyYU7K`yA)YN%lk*xDw6oqkMBZPpL8gMoRP(>w41FG zevB_OYUPW~N;=y0(`ZeXIDQ>xz7t({v180rG^x=wRh7hrr|j%ox>C)!HN&nHlxyx) zd7XmO6kaZ*vajPQkHiGo#PU!+2yBKQ8D$538h=qt*Q_*-Amnx)B}#WmrnhprKB1ej7CFd NM^A(>QyA}B{|kYjsAvEH literal 0 HcmV?d00001 diff --git a/pace/ads/skiplist/README.md b/pace/ads/skiplist/README.md new file mode 100644 index 0000000..3d7f759 --- /dev/null +++ b/pace/ads/skiplist/README.md @@ -0,0 +1,218 @@ +# Authenticated Skip Lists + +This is a Python Authenticated Data Structure (ADS) library for Accumulo, +specifically implementing authenticated skip lists. ADSs allow users to verify +the correctness of entire queries from an untrusted database. To compare, +digital signatures only allow verification of one element of the query at a +time, and do not provide a mechanism for determining whether elements were +omitted from a query. + +This library includes three primary components: + +- An implementation of skip lists, a random, balanced tree-like data structure + with expected `O(log(n))` insert and lookup operations. + +- An implementation of authenticated skip lists, a Merkle tree-like data + structure that is implemented over a skip list rather than a binary tree. + +- A prototype embedding of our authenticated skip list implementation into + Accumulo. The two goals behind this prototype were to determine a schema to + use to store an ADS computed over an Accumulo table, and to implement that + schema reusing as much of our existing authenticated skip list code as + possible. + +In this document, we focus on how a user would install, run, configure, and use +the authenticated skip list embedding to verify queries from an untrusted +Accumulo server. + +## Installation + +### Dependencies + +This project uses the [pyaccumulo](https://pypi.python.org/pypi/pyaccumulo) +library in order to interface with Accumulo. Our code has been written and +tested using pyaccumulo version 1.5.0.6. + +## Use + +In addition to the authenticated skip list code, there are several classes that +support our skip list definition. We now describe these support classes, their +roles, and how to use them, before going on to explain how to use our skip list +embedding. + +### Elements + +In `pace.ads.skiplist.elemclass`, we define an abstract interface, +`BaseElem`, for the type of elements stored by a skip list, along with several +useful implementations oft his interface. The definition of `BaseElem`, +including its abstract methods that implementing classes must define, is as +follows: + +```python +class BaseElem: + + __metaclass__ = ABCMeta + + def __init__(self, key): + self.key = key + + def __cmp__(self, other): + ... + + @abstractmethod + def serialize(self): + pass + + @abstractmethod + def deserialize(s): + pass +``` + +This interface requires two capabilities: comparison of different elements of +the same class, and (de)serialization of elements within a class. By default, a +`__cmp__()` method and a `serialize()` method are implemented using the `key` +field's comparison and to-string methods, respectively, but these default +implementations can be overridden. + +The `elemclass` package also contains several useful implementations of the +`BaseElem` interface. Two of them, `IntElem` and `StrElem`, are simple wrappers +around Python's string and integer types, allowing them to be stored in skip +lists. The other two, `AccumuloKey` and `AccumuloEntry`, are for constructive +skip lists over Accumulo cells. + + +### Coins + +In `pace.ads.skiplist.coin`, we define an abstraction, `BaseCoin`, for +simulating coin flips, i.e. generating `True` and `False` values randomly or +pseudorandomly. This class's interface has one function, as follows: + +```python +def flip(self, *args): + return random.randint(0,1) == 1 +``` + +This uses Python's `random` module to return either `True` or `False`, each with +probability 0.5. A `BaseCoin` can be used as follows: + +```python +>>> from pace.ads.skiplist.coin import BaseCoin +>>> coin = BaseCoin() +>>> flips = [coin.flip() for _ in xrange(100)] +>>> flips[:10] +[False, False, True, False, False, False, False, False, True, False] +``` + +In addition to this basic interface, we provide several extensions with +different capabilities, and in some cases, extra methods, for different use +cases: + +- `RecordedCoin`: records the result of each flip into a list that can be + accessed with the `read()` method, which will then reset the record to the + empty list. +- `PrefixCoin`: takes as input to its constructor a prefix of coin flip results + that will be drawn from before switching to randomly generating coin flips as + in `BaseCoin`. The stored prefix can be extended by calling the `extend()` + method with the suffix to extend it with. +- `RecordedPrefixCoin`: combines the functionalities of `RecordedCoin` and + `PrefixCoin`. +- `SeededCoin`: generates its random numbers based on a given seed value, + keeping track of the resulting state to make sure it will always generate the + same sequence of values as another coin with the same seed. +- `HashCoin`: deterministically generates coin flips based on iterative + application of a hash function to the element being inserted into the skip + list. This adds an extra argument to the hash function: one now calls + `hashcoin.flip(hash)`, where `hash` is the hash value of the element being + inserted into the skip list. + +A primary motivation behind these subclasses is the ability to generate the same +coin flips on a client and server. We support three ways to do this: + +- The client uses `RecordedCoin` and sends the results to the server, which + appends them on to its `PrefixCoin`. This can also work if one or both parties + uses a `RecordedPrefixCoin`. +- Both parties use a `SeededCoin` and agree on the seed to use beforehand. +- Both parties use a `HashCoin`. This can be done with no additional + communication, since the flips are randomly generated from each element in the + skip list in isolation. + +We recommend using `HashCoin`, the third of these options. In situations where +this option's determinism is undesirable, there is a tradeoff: `SeededCoin` +requires no communication, but the cost of storing and restoring the RNG's state +adds considerable overhead; conversely, recording and pulling from a prefix is a +relatively fast operation, but the communication cost of sending the recorded +values across a network connection may be prohibitive. + +### Embedded Skip Lists + +To create an authenticated skip list embedded in Accumulo, one calls the `new()` +method from the `EmbeddedSkipList` class, located in the +`pace.ads.skiplist.accumulo.embeddedskiplist` package: + +```python +from pace.ads.skiplist.accumulo.embeddedskiplist import EmbeddedSkipList +ads = EmbeddedSkipList.new(elems, lbound, rbound, coin, + conn_info, table, elemclass) +``` + +This method's first four arguments are common to all of our skip list classes: + +- `elems`: the list of elements to add to the skip list. +- `lbound`, `rbound`: the left and right boundaries of the skip list's range. + These should have the property that for all elements `e` in `elems`, + `lbound < e < rbound`, and that each element inserted into the list in the + future is also between `lbound` and `rbound`. +- `coin`: the coin class (as defined above) to use to generate the coin flips + for insertion into the skip list. We recommend using `HashCoin` for this, as + it automatically computes a skip list of the same structure for both server + and client without any extra input from the user. + +The next two arguments are embedding-specific: + +- `conn_info`: a named tuple object, called `ConnInfo`, containing the + information needed to connect to the Accumulo server in which the skip list is + being embedded. This tuple class is also defined in `embeddedskiplist.py`. The + fields of this named tuple are, in order, `hostname`, `port`, `username`, and + `password`. +- `table`: the name of the table in which to store the skip list. This field + should be different for each authenticated skip list stored in the Accumulo + server. + +Finally, the last argument is the class of elements stored in the skip list. + +In order to perform a range query over the skip list, one uses the `SkipListVO` +class, defined in `pace.ads.skiplist.skiplistvo`. This computes a +verification object for the given range client-side using the information +embedded in the server. In particular, the syntax for a range query over the +skip list `ads` works as follows: + +```python +from pace.ads.skiplist.skiplistvo import SkipListVO +vo = SkipListVO.range_query(ads, lbound, rbound, coin) +``` + +The four arguments for `range_query()` are as follows: + +- `ads`: the skip list over which the range query is being performed. +- `lbound`: the lower bound (inclusive) of the range query. +- `rbound`: the upper bound (inclusive) of the range query. +- `coin`: the coin class to use to generate the coin flips for insertion into + the VO. This is used primarily in the `insert()` method, described below, and + _must_ be synchronized with the coin used for `ads`. As above, we recommend + using `HashCoin` for this, as it simplifies synchronization. + +The verification object returned by a range query also supports insertion +operations, in order to allow data owners to update their local root hash value +when inserting data. This means inserts should have three steps: + +- Perform and verify a range query over the range of data to be inserted, from + the minimum element to the maximum element. +- Insert into the remote skip list. +- Insert into the range query object. + +## Testing the code + +We use nosetests to run unit tests over the skip list code. These can by run by +invoking `nosetests` from the shell in either the `pace/ads/skiplist/` +directory, which will run all of the unit tests, or from its `accumulo/` +subdirectory, which will run only the embedded skip list tests. diff --git a/pace/ads/skiplist/__init__.py b/pace/ads/skiplist/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/ads/skiplist/accumulo/.demo.py.swp b/pace/ads/skiplist/accumulo/.demo.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..aa09e32ff46c8834f22871afbd11679093567e90 GIT binary patch literal 24576 zcmeHPeT*Gd6(8h7TR!9?@elatwzbY%eLK5t0dehP=DvN?&YO8} zX5MZWio`^en5Z#C5+%W)M!`f{{6hutD^dAO42XY-iGYH}KLi7YLCSH}OBv46Uc?k@%_V^X&TAMa*n507M)~*p3U3kOt<*S@Z0+j?R2~-lO zBv479l0YSaN&=Mx{_iA^_0F(vL$BVYdv=Syo;GqlQ~#dU*CQkOXXxK+_4Vf?`KRmO zhR*XN`TA#dsU%QIpprl(fl30E1S$zs5~w6lNuZKIC4ou;l?46=5^#OX`UvPw(+dE6 z|2O;pSKez`zXpB?d<*b_J-|4y3V7)}%X$WQ8h8|V1o%8~0|55{YYM0VHt^E9mh}@r z0zPmJumxBTtOi~^$FiOU9s+(0{0O)YxC^))$N&#;flmV)fWMz@S(dzz$#y@aih$0lx%}0=EJKAOp4lufNB#9tIu)ZUe3d_5oXf z(||v`+p@k5+yqPkZ=7XWuK@o99s|Ayd>6PCI0DQ9mjjmo7XxPltAW4bg~+|YVPGEc zfi1w5fCIdO7b|}QUIu;-JOexkd;|D8up1Z$>cAPm>v+-f8t@$OGvFTJc3>+o155%h zVXPkjGJwW?3vkkh&`0LBLMg^Y){!D|yHdn$zE|m4EP@EmB$>!!%T)2*%+)o>=>u7& zP!QpsC{1fW5W!^fnwo+uyf})amj!Vo=7X#weA#vfVFo(wIO)2S;pDZbux>A>TOxoa z;qT&z?QIc&LMrU*;z-(cP!2=kCDP4gPHQ@u9du=srBfECtzElTY>$F0aKqqc$-K`7 zb21v~f#Q;SrgBLH1%uozcaU`&*CzuxHkG%=87zW^4L_MCdBxcE;cOz+piCLcZd$h> z3Xu$=W&o~g)XfHUr>@vdWHv}5fes`KOos17BWHIT<nb(9BfCQMiDUWJNGcHM!?as?;=9NQTfgi`bb@ z950MhSu2e;(p=v!6<4E7#k)$#+)YLF&|EVc^g>y~xi02p(gHPA0Z*hrD#?{}HE$6# zNIf0(gf&}k=5?C$Ns!5;#yVf(rCgBnObOy9Xp1P$6fw?h%EPcLsV-AIsTP%{L-U7` zo9{@-9Sp{zm%#i8c{oelAv+?rD&sOG=;^eWKygyfih5G0o1skeBGlaxL&yE2)@Zbu z*}70BD}(Am3thoBF>dEnxRfTdq=hv!^BQR|8=+4_dcIGk!5U|7n5|^q~12OxXBr8uj)oFB)(jijA_g}DR7W# zNm4AmV!nDl1egEpnDnlTALxDybJVD26$vi{Cd=f4Y7z@2Qd(Z zMlCi#psaO+?$8zsg|v(NE&2ngO+5*WdD7+8{X5ktYoEG@xaT{8*C8zqeC9j!{# zc1eS1iZ;c2G9hJWKJfbLGRGIFMI%=YGLR*$*r}%k znh*;sstk_3ofk+!G%NVIr<#c&A)VOi}h+Q%^QHt(?(3K7C@NGqg@ywBOP-k z6Nb5M_$fE@fSF2$ELmZb*rur`*3>wT$^g>;RVC+@qSkGe}cf{B7f+8z#A|z)@svrL4(KOJ&V)t;wab zK2BL1H!hVm%>;E8FSeMcb!L7Ll!iw-C1u5m(z00f$jKQKY3dj!XU9y+j_kIi?@Qn0 zh@jhxu~y!u)AzwGdI#)dUCh8DZ^znpIg(zCr&8Cx+D$t%_`O`&d}U)Ql+0g!*#20S zrdjB+Wu*&P6S-N(aeF;Hj68jnE%DH;r&1M^8rBne{4DVco4sj0Y`va0M6HW z)uoa^C4ou;l>{mYR1&BpP)VSYKqY}n0+j?R2~-kTS_1saK)*ulC2`!wn+o$9LBIdo zH}E`}rtLw94>x$JM_GGD+2o zy(o^xhp9Sv^FsUoYw3G9K>Po-n*FD-=f4*?1RMmWfi1wl@jd_h!2Q5Yz(v4?zzg_} ze+)>0t-uAqIlvqER{s~^cfe8LE5Mh50O$ZafpdYU@xA_Qzzx6!!1)04w6r*@)Jg)C z1S$zs5~w6lNuZKIC4ou;E0KU%a^thPJlw-4G_0`KG_bt(B)s)}{i&Zy<=OawnoeK;WB8_j5zQ)cJvdp)8swG zLX*8pv{2NBM%9O8RX511joh)wUq;JSl>^l@bcP6^anUy(hI%{Hhv!N>KZTF&g=m>W zlb`1K`7m(4_73c)Vl%1^B}pXVQ}s|{WeE(0e*MAteANUl|08R(q!e0MP;AP+#@L6CFa0zfR za5k_ScpH2Fr+}{lUEoUKOyG~$>wgot2j~M=0RO^X{};gLfW5%wz-7QH;Lmt3@i_1p z@Br{7AOUU!HUqD(vaCM=&jF7D3&1tNCBU=r)4v1Q47>&({bRsU;2vNP&;T|Ab>JW9 z|BJv2z>@&U!v}T&?+4ZaZ$eK00e%2@Knr*u@D%*+p9IJsKLE%V|LxN)>j~gDz)|3C z;0~YzTn&5zSPQHH&H{c5AN(%@*8%4NPv8$QJPzCk90SbgRTGzygt=A|7b^#!j7*lh zRudOT3{(@>n6fCRHgTQkY(@fD+kZx_Gzl&-(%T~!(pIirP z&(gZH>}#!Fkt=7tUF=nzzdwgRG|Vfx;ju%oXuCnkPMm7Vn?GTD>9u<~_=DNyIz=qc zT&&%z)jN09p!Va&euKhqu=i*!D7QZo=7gCX<&Eoh(c+?b6C)u_imB}1#o1}1ML4%5 z;jUbSG!#DEdMJ+1m-3T`&+f=bsx{qlBHOsUHN?4q*hvwogGMmuo5) zVwSv7>=Ow~Bc^h)+!57s$zvX&CKxECrHDarwerWLhprA&Q=)-uF~UO-%n*2k&`m~r ztaON@%tk}kunoY{yE&`!ZFsuiln?1Mhbsy% zQG1o#5nspgu~#m~HLgz`$AR}fvsA3c&=L$9cC)njc0#u$!%?YV07egD4Pklhm^Xwg z**~7bc2EfsXWFY4`^TmCgpr)D>0lIu&gi%m+Ru?+dBZrA*R+Q|^-GIv+V@FV 1: + elems.remove(x) + + sl = EmbeddedSkipList.new(elems, IntElem(lower_bound-1), + IntElem(upper_bound+1), conn_info=None) + + for j in xrange(0, self.num_iters): + lower = IntElem(random.randint(lower_bound/5, upper_bound/100)) + upper = IntElem(random.randint(lower.key+10, upper_bound/2)) + + proofs = sl._range_query(lower, upper) + received = EmbeddedSkipList._verify_range_query( + proofs, lower, upper, sl.root.label) + + bottom = sl.root + while bottom.down: + bottom = bottom.down + + expected = [] + while bottom.right and bottom.elem <= upper: + assert bottom.elem != bottom.right.elem + if bottom.elem >= lower: + expected.append(bottom.elem) + bottom = bottom.right + + self.assertTrue(all([lower <= x <= upper for x in expected])) + self.assertTrue(sorted(expected) == expected) + + self.assertEqual(expected, received) + def test_smaller_range_query(self): + """ Check that range queries work + """ + + lower_bound = -100 + upper_bound = 100 + num_elems = 5 + + for i in xrange(0, self.num_iters): + elems = map(IntElem, + self.generate_elems( + lower_bound, upper_bound, num_elems)) + for x in elems: + if elems.count(x) > 1: + elems.remove(x) + + sl = EmbeddedSkipList.new(elems, IntElem(lower_bound-1), + IntElem(upper_bound+1), conn_info=None) + + for j in xrange(0, self.num_iters): + lower = IntElem(random.randint(lower_bound/5, upper_bound/100)) + upper = IntElem(random.randint(lower.key+10, upper_bound/2)) + + proofs = sl._range_query(lower, upper) + received = EmbeddedSkipList._verify_range_query( + proofs, lower, upper, sl.root.label) + + bottom = sl.root + while bottom.down: + bottom = bottom.down + + expected = [] + while bottom.right and bottom.elem <= upper: + assert bottom.elem != bottom.right.elem + if bottom.elem >= lower: + expected.append(bottom.elem) + bottom = bottom.right + + self.assertTrue(all([lower <= x <= upper for x in expected])) + self.assertTrue(sorted(expected) == expected) + + self.assertEqual(expected, received) + + def test_verified_insert(self): + """ Test that verified insert actually allows the client to compute + the new root label. + """ + lower_bound = -1000 + upper_bound = 1000 + num_elems = 10 + num_new_elems = 150 + + for i in xrange(0, self.num_iters): + elems = map(IntElem, + self.generate_elems( + lower_bound, upper_bound, num_elems)) + sl = EmbeddedSkipList.new(elems, IntElem(lower_bound-1), + IntElem(upper_bound+1), conn_info=None) + + old_label = sl.root.label + + new_elems = map(IntElem, + self.generate_elems( + lower_bound, upper_bound, num_new_elems)) + new_elems = [elem for elem in new_elems if elem not in elems] + + for elem in new_elems: + ret_elems, proof, proof_diff = sl.insert_with_diff(elem) + + self.assertEqual( + EmbeddedSkipList.verify( + [EmbeddedNode._hash(e.serialize()) + for e in reversed(ret_elems)] + proof), + old_label) + + new_proof = EmbeddedSkipList.update_query( + ret_elems, proof, proof_diff, elem) + + x, qproof = sl.contains(elem) + self.assertTrue(x, + 'Claims just-inserted element is not in list') + self.assertEqual(EmbeddedSkipList.verify(qproof), sl.root.label) + + np = EmbeddedSkipList.verify(new_proof) + self.assertEqual(np, sl.root.label) + + old_label = sl.root.label + + def test_small_verified_insert(self): + """ Test that verified insert actually allows the client to compute + the new root label. + """ + lower_bound = -100 + upper_bound = 100 + num_elems = 5 + num_new_elems = 10 + + for i in xrange(0, self.num_iters): + elems = map(IntElem, + self.generate_elems( + lower_bound, upper_bound, num_elems)) + sl = EmbeddedSkipList.new(elems, IntElem(lower_bound-1), + IntElem(upper_bound+1), conn_info=None, + coin=HashCoin()) + + old_label = sl.root.label + + new_elems = map(IntElem, + self.generate_elems( + lower_bound, upper_bound, num_new_elems)) + new_elems = [elem for elem in new_elems if elem not in elems] + + for elem in new_elems: + ret_elems, proof, proof_diff = sl.insert_with_diff(elem) + + self.assertEqual( + EmbeddedSkipList.verify( + [EmbeddedNode._hash(e.serialize()) + for e in reversed(ret_elems)] + proof), + old_label) + + new_proof = EmbeddedSkipList.update_query( + ret_elems, proof, proof_diff, elem) + + x, qproof = sl.contains(elem) + self.assertTrue(x, + 'Claims just-inserted element is not in list') + self.assertEqual(EmbeddedSkipList.verify(qproof), sl.root.label) + + np = EmbeddedSkipList.verify(new_proof) + self.assertEqual(np, sl.root.label) + + old_label = sl.root.label + + def test_comparison_to_auth(self): + """ Test embedded list and authenticated list side-by-side to see where + the former goes wrong. Mostly here for debugging. + """ + + for i in xrange(0, self.num_iters): + elems = map(IntElem, self.generate_elems(0, 50, 10)) + esl = EmbeddedSkipList.new(elems, IntElem(-1), IntElem(101), coin=HashCoin(), conn_info=None) + asl = AuthSkipList.new(elems, IntElem(-1), IntElem(101), coin=HashCoin()) + + for elem in elems: + evisited, eclosest = esl.root.search(elem) + avisited, aclosest = asl.root.search(elem) + + new = [] + for n, f in evisited: + new.append((n, f)) + evisited = new + + eelems, eproof = esl.do_query(evisited, eclosest, elem) + aelems, aproof = asl.do_query(avisited, aclosest, elem) + + efound = eelems[0] == elem + afound = aelems[0] == elem + + eproof = [AuthNode._hash(x.serialize()) + for x in reversed(eelems)] + eproof + aproof = [AuthNode._hash(x.serialize()) + for x in reversed(aelems)] + aproof + + # Make sure the embedded one isn't cheating somehow + self.assertEqual(esl.root.label, asl.root.label) + + self.assertEqual(AuthSkipList.verify(aproof), + asl.root.label) + self.assertEqual(EmbeddedSkipList.verify(eproof), + esl.root.label) + + # Make sure the embedded one isn't cheating somehow + self.assertEqual(esl.root.label, asl.root.label) + + def test_non_membership_comp(self): + """ Ensure that non-elements of the skip list are not in it, + comparing the results to the authenticated skip list. + """ + + for i in xrange(0, 10 * self.num_iters): + elems = map(IntElem, self.generate_elems(0, 25, 5)) + esl = EmbeddedSkipList.new(elems, IntElem(-201), IntElem(201), coin=HashCoin(), conn_info=None) + asl = AuthSkipList.new(elems, IntElem(-201), IntElem(201), coin=HashCoin()) + + bad_elem = IntElem(random.randint(-100, 100)) + while bad_elem in elems: + bad_elem = IntElem(random.randint(-100, 100)) + + bad_elems = [IntElem(-150), IntElem(150), bad_elem] + + for elem in bad_elems: + + evisited, eclosest = esl.root.search(elem) + avisited, aclosest = asl.root.search(elem) + + new = [] + for n, f in evisited: + new.append((n, f)) + evisited = new + + eelems, eproof = esl.do_query(evisited, eclosest, elem) + aelems, aproof = asl.do_query(avisited, aclosest, elem) + + efound = eelems[0] == elem + afound = aelems[0] == elem + + eproof = [AuthNode._hash(x.serialize()) + for x in reversed(eelems)] + eproof + aproof = [AuthNode._hash(x.serialize()) + for x in reversed(aelems)] + aproof + + self.assertEqual(efound, afound) + self.assertTrue(not efound) + + self.assertEqual(AuthSkipList.verify(aproof), + asl.root.label) + self.assertEqual(EmbeddedSkipList.verify(eproof), + esl.root.label) + + # Make sure the embedded one isn't cheating somehow + self.assertEqual(esl.root.label, asl.root.label) + diff --git a/pace/ads/skiplist/authnode.py b/pace/ads/skiplist/authnode.py new file mode 100644 index 0000000..6e1ece3 --- /dev/null +++ b/pace/ads/skiplist/authnode.py @@ -0,0 +1,84 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Authenticated skip list nodes +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 21 Aug 2014 ZS Original file +## ************** + +# This is the python library implementation of SHA256, which is faster than +# the PyCrypto version in PyCrypto.Hash.SHA256 +from hashlib import sha256 + +from pace.ads.skiplist.skiplist import SkipList +from pace.ads.skiplist.skiplistnode import SkipListNode + +class AuthNode(SkipListNode): + + @staticmethod + def _hash(x): + return sha256(x).digest() + + @staticmethod + def chash(x, y): + """ A commutative hash function, defined in terms of the local _hash + function (in this case, sha256). Hashes the concatenation of the + minimum of its two arguments with the maximum of its two arguments. + """ + return sha256(min(x, y) + max(x, y)).digest() + + @classmethod + def newnode(cls, sl, down, right, elem, assign_label=False, *args, **kwargs): + """ Create a new node. Can be overridden by subclasses. + + Arguments: + sl - the skiplist this node is a part of. + down - the bottom neighbor of the new node + right - the right neighbor of the new node + elem - the element to be stored in the new node. + assign_label - whether to assign a hash label to this node + upon creation (alternative is to defer it to + be called manually by whoever is using this + code). Default: False (do not assign a label + yet) + *args, **kwargs - any more arguments that a subclass + might want to use + + Returns: + A new SkipListNode with fields as given. + """ + new_node = cls(sl, down, right, elem) + new_node.tower = False + + if assign_label: + new_node.assign_label() + + if down: + down.tower = True + + return new_node + + def assign_label(self): + node = self + + if node.right is None: + node.label = str(0) + return + + if node.down is None: + if node.right.tower: + node.label = AuthNode.chash( + AuthNode._hash(node.elem.serialize()), + AuthNode._hash(node.right.elem.serialize())) + else: + node.label = AuthNode.chash( + AuthNode._hash(node.elem.serialize()), + node.right.label) + else: + if node.right.tower: + node.label = node.down.label + else: + node.label = AuthNode.chash(node.down.label, node.right.label) diff --git a/pace/ads/skiplist/authskiplist.py b/pace/ads/skiplist/authskiplist.py new file mode 100644 index 0000000..856844a --- /dev/null +++ b/pace/ads/skiplist/authskiplist.py @@ -0,0 +1,557 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Authenticated skip list library +## (as in Goodrich & Tamassia 2001) +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 20 Aug 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from hashlib import sha256 + +from pace.ads.skiplist.skiplist import SkipList +from pace.ads.skiplist.authnode import AuthNode + + +class AuthSkipList(SkipList): + + nodeclass = AuthNode + + def insert(self, elem): + """ Insert elem into the base level of the current SkipList, then + determine how many levels to elevate it by, returning the new hash + value of the tree. Note that this assumes some other information in + order to prove that the insert was done correctly (such as having + done a range query on the proper range); without this information, + one should use insert_with_diff, instead. + + Returns: + ret_elems - the elements in the query set + label - the updated root label + + Override: also needs to update metadata of each node + """ + visited, left_neighbor = self.root.search(elem) + + # Have to do this query now before the skiplist gets updated + # TODO: can maybe do the query inline instead of duplicating effort + ret_elems, proof = self.do_query(visited, left_neighbor, elem) + + ## First, insert the element into the list---note that this does NOT + ## label the node; that must be done later + new_node = self.nodeclass.newnode(self, None, left_neighbor.right, elem, left=left_neighbor) + left_neighbor.right = new_node + + current = new_node + stopped = False + lefts = 0 + current_hash_value = sha256(elem.serialize()).digest() + + new_elems = [] + + ## Determine how many levels of the skiplist to insert the new + ## element on. Each time we visited a node in the traversal, if we + ## dropped down (instead of going right), that node is a potential + ## new neighbor for a new node. We look at these bottom-up, and keep + ## inserting nodes until the element is gone. + for v, flag in visited: + if not flag: + # We just went right at this step, so don't do anything + continue + + # Otherwise, we dropped down, so we need to see if we insert a new + # level of the inserted element + if self.stop(current_hash_value): + stopped = True + break + + current_hash_value = sha256(current_hash_value).digest() + + ## Defer labeling until later, in case we're inserting it at the + ## current top level. + next_level = self.nodeclass.newnode(self, current, v.right, elem, left=v) + new_elems.append(next_level) + + v.right = next_level + current = next_level + + new_roots = [] + + if not stopped: + # If we got here we need to add another level of just -infty, +infty + old_rght = self.root.right.right + + new_rght = self.nodeclass.newnode( + self, self.root.right.right, None, self.rbound, True) + new_root = self.nodeclass.newnode( + self, self.root, new_rght, self.lbound) + + self.root = new_root + new_roots.append(new_root) + + # At this point, we can safely assign labels to all the new nodes + # created up until now. + new_node.assign_label() + for n in new_elems: + n.assign_label() + + while not self.stop(current_hash_value): + current_hash_value = sha256(current_hash_value).digest() + + # Add higher levels + old_right = self.root.right + old_left = self.root + + new_right = self.nodeclass.newnode( + self, old_right, None, old_right.elem, True) + new_left = self.nodeclass.newnode( + self, old_left, new_right, old_left.elem) + new_roots.append(new_left) + + + # It's safe to label this one because the new level has + # already been inserted + new_level = self.nodeclass.newnode( + self, current, old_right, elem, True, left=old_left) + old_left.right = new_level + self.root = new_left + + current = new_level + + else: + # Need to update the nodes visited up until now + new_node.assign_label() + for n in new_elems: + n.assign_label() + + # Now we have to update all the visited nodes' labels + left_neighbor.assign_label() + modified = [v for v, _ in visited] + new_roots + + for v in modified: + v.assign_label() + + return ret_elems, self.root.label + + def insert_with_diff(self, elem): + """ Insert elem into the base level of the current SkipList, then + determine how many levels to elevate it by, returning a proof + that the spot used to be empty and a proof that the element was + actually inserted so the client can update its root label. + + Returns three values: + - ret_elems: The elements returned by a query for `elem` + in the old skip list. + - proof: A proof that `elem` was not in the old skip list + - proof_diff: A diff that the client can use to insert + `elem` into `proof` and receive a new root + hash value. + """ + visited, left_neighbor = self.root.search(elem) + + # Have to do this query now before the skiplist gets updated + # TODO: can maybe do the query inline instead of duplicating effort + ret_elems, proof = self.do_query(visited, left_neighbor, elem) + + ## First, insert the element into the list---note that this does NOT + ## label the node; that must be done later + new_node = self.nodeclass.newnode(self, None, left_neighbor.right, elem, left=left_neighbor) + left_neighbor.right = new_node + + current = new_node + stopped = False + lefts = 0 + current_hash_value = sha256(elem.serialize()).digest() + + new_elems = [] + proof_diff = [] + pre_proof_diff = [] + + ## Determine how many levels of the skiplist to insert the new + ## element on. Each time we visited a node in the traversal, if we + ## dropped down (instead of going right), that node is a potential + ## new neighbor for a new node. We look at these bottom-up, and keep + ## inserting nodes until the element is gone. + for v, flag in visited: + if not flag: + # We just went right at this step, so don't do anything, but + # remember that we have to accumulate one more level if we + # end up going up again + lefts = lefts + 1 + # If we're still on the base level, need to signal that this + # element was added from the base level, for bookkeeping + # purposes. + if not v.down: + pre_proof_diff.append('MEET') + continue + + # Otherwise, we dropped down, so we need to see if we insert a new + # level of the inserted element + if self.stop(current_hash_value): + stopped = True + break + + current_hash_value = sha256(current_hash_value).digest() + + if not proof_diff: + proof_diff = pre_proof_diff + proof_diff.append('UP') + lefts = 0 # UP subsumes PASS + + ## Defer labeling until later, in case we're inserting it at the + ## current top level. + next_level = self.nodeclass.newnode(self, current, v.right, elem, left=v) + new_elems.append(next_level) + + ## If this level was "interesting", we need to add to the returned + ## value that tells the client how to modify the query to get the + ## new root value. + ## + ## An "interesting" level is defined as the following: + ## + ## - The first new level (after the base level) is always + ## interesting. + ## - Any level that has just gone up after going left some nonzero + ## number of times is interesting. + ## - Any level with a plateau node on the right (other than +infty) + ## is interesting. + + if lefts: + # The tower of new elements just passed a plateau node on the + # left, so we need to accumulate all the labels from that chain + # of plateau nodes + proof_diff.append(str(lefts)) + lefts = 0 + + vright = v.right + + if (not vright.tower) and vright.right: + # The tower of new elements just met a plateau node on the right + proof_diff.append('MEET') + + v.right = next_level + current = next_level + + new_roots = [] + + if not stopped: + # If we got here we need to add another level of just -infty, +infty + old_rght = self.root.right.right + + new_rght = self.nodeclass.newnode( + self, old_rght, None, self.rbound, True) + new_root = self.nodeclass.newnode( + self, self.root, new_rght, self.lbound) + + self.root = new_root + new_roots.append(new_root) + + # At this point, we can safely assign labels to all the new nodes + # created up until now. + new_node.assign_label() + for n in new_elems: + n.assign_label() + + while not self.stop(current_hash_value): + current_hash_value = sha256(current_hash_value).digest() + + # Add higher levels + old_right = self.root.right + old_left = self.root + + #TODO: can cache min/max elems for fewer lookups + new_right = self.nodeclass.newnode( + self, old_right, None, old_right.elem, True) + new_left = self.nodeclass.newnode( + self, old_left, new_right, old_left.elem) + new_roots.append(new_left) + + + # It's safe to label this one because the new level has + # already been inserted + new_level = self.nodeclass.newnode( + self, current, old_right, elem, True, left=old_left) + old_left.right = new_level + self.root = new_left + + current = new_level + + else: + # Need to update the nodes visited up until now + new_node.assign_label() + for n in new_elems: + n.assign_label() + + # Now we have to update all the visited nodes' labels + + left_neighbor.assign_label() + modified = [v for v, _ in visited] + new_roots + + for v in modified: + v.assign_label() + + return ret_elems, proof, proof_diff + + @staticmethod + def update_query(base_elems, old_proof, proof_diff, elem): + """ Updates a query of an element from an old skiplist without + that element in it to a query of that element in the skiplist + resulting from inserting it into the old one. Used to update + the root label after an insert. + """ + + # No matter what, we're going to insert elem into the proof, so do it + # first + elem_loc = 1 # will always be immediately after the left neighbor + base_elems.insert(elem_loc, elem) + + i = 0 + current = None + + # Recall that a proof is just a path from a base level node to the root + # of the skip list. This partitions the path into three parts: + # + # - Everything from the base of the new path to the top of the new tower + # created by adding elem + # - The label of the node below the node to the left of the new plateau + # node, if such a node exists (i.e. if at least one new non-base node + # was added). This is calculated from elements in the old proof. + # - Everything further up in the proof than the new tower reached, whose + # order is unchanged. + # + # The element i keeps track of the difference between these locations: + # everything to the left of i (not including i) is in the first group, + # everything to the right of i (including i) is in the third group, and + # the variable 'current' is the second group. + + for action in proof_diff: + if action == 'MEET': + # If we meet a plateau node on the right, we need to make sure + # it occurs in the proof before the values we're accumulating + # (since they need to get hashed into the overall value only + # after the new tower stops & starts going left) + i = i + 1 + elif action == 'UP': + # This action should only occur once per insert, if the inserted + # element's tower ends up going above the base list. + + # First, we accumulate all the elements in the base list to + # the left of the new element (and including the new element + # itself) that occur in the proof. + current = AuthNode.chash(AuthNode._hash(base_elems[0].serialize()), + AuthNode._hash(elem.serialize())) + current = reduce(AuthNode.chash, old_proof[:i], current) + + # Next, we update the proof we're modifying. The first element + # in it now needs to be the label of the bottom node in the + # new tower. + old_proof = old_proof[i:] + i = 1 + + # To compute this label, hash the elements from the inserted + # element to the next base-level tower node, then accumulate + # them together in order with the commutative hash. + proof_order_hashes = [AuthNode._hash(e.serialize()) + for e in reversed(base_elems[elem_loc:])] + new_elem_node_label = reduce(AuthNode.chash, proof_order_hashes) + old_proof = [new_elem_node_label] + old_proof + + # base_elems has been folded into old_proof, so we can set it + # to the empty list. + base_elems = [] + else: # passed a plateau node + # Accumulate the next 'acc_levels' elements of the old proof + # into the current value. + acc_levels = int(action) + for z in range(acc_levels): + passed = old_proof.pop(i) + current = AuthNode.chash(passed, current) + + if current is not None: + old_proof.insert(i, current) + + # Return the single list to feed in to verify() + return ([AuthNode._hash(e.serialize()) for e in reversed(base_elems)] + + old_proof) + + + def contains(self, elem): + """ Override of super method. Now returns a proof that elem either is + or is not in the skip list. + + NB: I have no idea what this algorithm is trying to do, why + it's right, or how to verify it, I'm just transcribing it + from the paper's pseudocode into Python. + """ + visited, closest = self.root.search(elem) + elems, proof = self.do_query(visited, closest, elem) + + return elems[0] == elem, [AuthNode._hash(x.serialize()) + for x in reversed(elems)] + proof + + def do_query(self, visited, closest, elem): + """ Given the input to a search for an element and that element, return + a proof that either that element is in the skiplist or that it is + not (so a proof that the elements on either side of it are adjacent + in the skiplist. + + Arguments: + visited - the nodes visited in the skiplist stored in reverse order, + paired with a flag indicating whether the next step was + to go right or down. + closest - the node of the base list containing either the element + being queried or the greatest element in the skiplist + less than the element being queried. + elem - the element being queried + + Returns: + ret_elems - The elements in the base list starting from 'closest' + and going to (and including) the next tower node in the + base list. + proof - A list of hash values that, when combined with ret_elems, + proves whether or not elem is in the skiplist. + """ + proof = [] + + last = closest + found = (last.elem == elem) + + ret_elems = [] + + ## First, return the elements of each node to the right of the node + ## where the search ended until a tower node is reached. This provides + ## enough information to verify a query in either the positive or + ## negative direction, as well as enough information for a range + ## query to be able to search for the next tower node in the base + ## list. + nxt = last + ret_elems.append(nxt.elem) + while (not nxt.right.tower) and nxt.right.right: + ret_elems.append(nxt.right.elem) + nxt = nxt.right + ret_elems.append(nxt.right.elem) + + for v, flag in visited: + if not v.right.tower: + # its right neighbor is a plateau node, so add things + if v.right is not last: + proof.append(v.right.label) + elif v.down is None: + proof.append(AuthNode._hash(v.elem.serialize())) + else: + proof.append(v.down.label) + + last = v + + # Return the elements from the end node in the base list to the next + # tower node; this provides enough information for proof of membership + # and proof of lack of membership, plus some extra information for + # other functions that use do_query() + return ret_elems, proof + + def _range_query(self, lower, upper): + """ Perform a range query on the skip list, returning all elements + between lower and upper (inclusive). + + Deprecated code, useful mostly for benchmarking/regression tests + """ + + ## General algorithm overview: + ## - First, search for 'lower' in the list. This will return either the + ## "leaf" node that contains 'lower' (if it is in the list) or the + ## first node with an element less than 'lower' (if it is not). Either + ## way, this will provide the evidence that the first element of the + ## result is in fact the first element in the list that is in the + ## range. + ## + ## - Keeping track of the current element, move right along the list + ## until finding an element greater than or equal to 'upper'. Each + ## time a node is reached where the last node searched for does not + ## depend on its element's value, perform a new search for that + ## element. That will guarantee that the client can verify that the + ## returned range is both sound and complete. + ## + ## - Return to the client the sequence of verification sequences + ## generated by this process. + ## + ## TODO: We can almost certainly optimize this process, perhaps by + ## only returning the paths to a least common ancestor (like in MHTs), + ## or even more cleverly, tracing the previous visited sequence up until + ## we find the place where the next search would branch off from it, + ## then return a sequence (with possible subsequences) based on these + ## traversals. + + visited, left_bound = self.root.search(lower) + elems, proof = self.do_query(visited, left_bound, lower) + + proofs = [(elems, proof)] + + elem = elems[-1] + while elem < upper: + visited, left_bound = self.root.search(elem) + elems, proof = self.do_query(visited, left_bound, elem) + proofs.append((elems, proof)) + elem = elems[-1] + + return proofs + + @staticmethod + def verify(proof): + # TODO: does this actually verify anything? + return reduce(AuthNode.chash, proof) + + @staticmethod + def _verify_range_query(proofs, lower, upper, root_label): + """ Verifies a range query done with (the deprecated function) + _range_query(). Also deprecated. + """ + labels = [AuthSkipList.verify([AuthNode._hash(x.serialize()) + for x in reversed(elems)] + proof) + for elems, proof in proofs] + + if not labels: + raise InvalidVerificationObjectException( + 'Empty list of proofs returned') + + all_elems = proofs[0][0] + + for elems, proof in proofs[1:]: + all_elems.extend(elems[1:]) + + ## Check to make sure the original list of elements is sorted + if not (sorted(all_elems) == all_elems): + raise InvalidVerificationObjectException( + 'Returned list of elements not sorted') + + ## There might be more than one upper boundary that got included, so + ## make sure to get rid of all of them from the returned list + while all_elems[-1] > upper: + all_elems.pop() + + ## The lower boundary may or may not have been needed, so make sure to + ## include it just in case + if all_elems[0] < lower: + all_elems = all_elems[1:] + + if not all([label == root_label for label in labels]): + raise InvalidVerificationObjectException( + 'Invalid path exists in VO') + + if not all([lower <= elem <= upper for elem in all_elems]): + raise InvalidVerificationObjectException( + 'Elements returned not in requested range') + + return all_elems + +class InvalidVerificationObjectException(Exception): + def __init__(self, msg): + self.msg = msg diff --git a/pace/ads/skiplist/authskiplist_test.py b/pace/ads/skiplist/authskiplist_test.py new file mode 100644 index 0000000..4b82e6f --- /dev/null +++ b/pace/ads/skiplist/authskiplist_test.py @@ -0,0 +1,228 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for authenticated skip lists +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 21 Aug 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import time +import random + +from pace.ads.skiplist.skiplistnode import InvalidSkipListException +from pace.ads.skiplist.authnode import AuthNode +from pace.ads.skiplist.authskiplist import AuthSkipList +from pace.ads.skiplist.elemclass import IntElem +from pace.common.pacetest import PACETestCase + +def gen_elems(lower, upper, num): + return [IntElem(random.randint(lower, upper)) for i in range(num)] + +class AuthSkipListTests(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + def test_valid(self): + """ Ensure that we only create valid skip lists + """ + + for i in range(0, self.num_iters): + elems = gen_elems(0, 1000000000, self.size) + sl = AuthSkipList.new(elems, IntElem(-1), IntElem(1000000001)) + + try: + sl.valid() + except InvalidSkipListException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + def test_membership(self): + """ Ensure that every element of the skip list is reflected as in it. + """ + + for i in range(0, self.num_iters): + elems = gen_elems(0, 100000000, self.size) + sl = AuthSkipList.new(elems, IntElem(-1), IntElem(1000000001)) + + for elem in elems: + found, proof = sl.contains(elem) + self.assertTrue(found, + 'skip list claims not to have element %d' %elem.key) + + def test_verify_in(self): + """ Ensure that proofs of membership validate. + """ + + for i in range(0, self.num_iters): + elems = gen_elems(-100, 100, 50) + sl = AuthSkipList.new(elems, IntElem(-101), IntElem(101)) + + for elem in elems: + found, proof = sl.contains(elem) + self.assertEqual(AuthSkipList.verify(proof), sl.root.label) + + def test_non_membership(self): + """ Ensure that non-elements of the skip list are not in it + """ + + for i in range(0, 10 * self.num_iters): + elems = gen_elems(0, 25, 5) + sl = AuthSkipList.new(elems, IntElem(-201), IntElem(201)) + + found, proof = sl.contains(IntElem(-150)) + verification = AuthSkipList.verify(proof) + + self.assertEqual(verification, sl.root.label) + + found, proof = sl.contains(IntElem(150)) + self.assertEqual(AuthSkipList.verify(proof), sl.root.label) + + bad_elem = IntElem(random.randint(-100, 100)) + while bad_elem in elems: + bad_elem = IntElem(random.randint(-100, 100)) + + found, proof = sl.contains(bad_elem) + self.assertEqual(AuthSkipList.verify(proof), sl.root.label, + 'proof of absence of %d fails to verify' %bad_elem.key) + + def test_range_query(self): + """ Check that range queries work + """ + + lower_bound = -100000 + upper_bound = 100000 + num_elems = 1000 + + for i in range(0, self.num_iters): + elems = gen_elems(lower_bound, upper_bound, num_elems) + for x in elems: + if elems.count(x) > 1: + elems.remove(x) + sl = AuthSkipList.new(elems, IntElem(lower_bound-1), + IntElem(upper_bound+1)) + + for j in range(0, self.num_iters): + lower = IntElem(random.randint(lower_bound/5, upper_bound/100)) + upper = IntElem(random.randint(lower.key+1000, upper_bound/5)) + + proofs = sl._range_query(lower, upper) + received = AuthSkipList._verify_range_query( + proofs, lower, upper, sl.root.label) + + bottom = sl.root + while bottom.down: + bottom = bottom.down + + expected = [] + while bottom.right and bottom.elem <= upper: + if bottom.elem >= lower: + expected.append(bottom.elem) + bottom = bottom.right + + self.assertTrue(all([lower <= x <= upper for x in expected])) + self.assertTrue(sorted(expected) == expected) + + print 'Range query from %d to %d' %(lower.key, upper.key) + print "Expected length: %d" %len(expected) + print "Received length: %d" %len(received) + + self.assertEqual(expected, received) + + def test_smaller_range_query(self): + """ Check that range queries work + """ + + lower_bound = -100 + upper_bound = 100 + num_elems = 5 + + for i in range(0, self.num_iters): + elems = gen_elems(lower_bound, upper_bound, num_elems) + for x in elems: + if elems.count(x) > 1: + elems.remove(x) + + sl = AuthSkipList.new(elems, IntElem(lower_bound-1), + IntElem(upper_bound+1)) + + for j in range(0, self.num_iters): + lower = IntElem(random.randint(lower_bound/5, upper_bound/100)) + upper = IntElem(random.randint(lower.key+10, upper_bound/2)) + + proofs = sl._range_query(lower, upper) + received = AuthSkipList._verify_range_query( + proofs, lower, upper, sl.root.label) + + bottom = sl.root + while bottom.down: + bottom = bottom.down + + expected = [] + while bottom.right and bottom.elem <= upper: + assert bottom.elem != bottom.right.elem + if bottom.elem >= lower: + expected.append(bottom.elem) + bottom = bottom.right + + self.assertTrue(all([lower <= x <= upper for x in expected])) + self.assertTrue(sorted(expected) == expected) + + self.assertEqual(expected, received) + + def test_verified_insert(self): + """ Test that verified insert actually allows the client to compute + the new root label. + """ + lower_bound = -1000 + upper_bound = 1000 + num_elems = 10 + num_new_elems = 150 + + for i in range(0, self.num_iters): + elems = gen_elems(lower_bound, upper_bound, num_elems) + elems = set(elems) + sl = AuthSkipList.new(elems, IntElem(lower_bound-1), + IntElem(upper_bound+1)) + + old_label = sl.root.label + + new_elems = gen_elems(lower_bound, upper_bound, num_new_elems) + new_elems = [elem for elem in new_elems if elem not in elems] + + for elem in new_elems: + print 'inserting elem %d' %elem.key + print 'into list %s' %str(sl.to_list_of_lists()) + ret_elems, proof, proof_diff = sl.insert_with_diff(elem) + print 'result list: %s' %str(sl.to_list_of_lists()) + + self.assertEqual( + AuthSkipList.verify( + [AuthNode._hash(e.serialize()) + for e in reversed(ret_elems)] + proof), + old_label) + + new_proof = AuthSkipList.update_query( + ret_elems, proof, proof_diff, elem) + + x, qproof = sl.contains(elem) + self.assertTrue(x, + 'Claims just-inserted element is not in list') + self.assertEqual(AuthSkipList.verify(qproof), sl.root.label) + + np = AuthSkipList.verify(new_proof) + print 'Root label: %s' %str(sl.root.label) + print 'Recv label: %s' %str(np) + self.assertEqual(np, sl.root.label) + + old_label = sl.root.label diff --git a/pace/ads/skiplist/coin.py b/pace/ads/skiplist/coin.py new file mode 100644 index 0000000..c611e41 --- /dev/null +++ b/pace/ads/skiplist/coin.py @@ -0,0 +1,116 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Coin toss classes with various extra functionalities +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Aug 2014 CS Original file +## ************** + +import random +from collections import deque + +class BaseCoin(object): + """ Provides basic coin-toss functionality: uses the random module to + 'flip' a 'coin', returning either True or False with equal probability. + + NB: I believe the entropy used by the random module is low-quality, so + this should only be used for non-security-required operations, such + as determining the structure of a random skip list. + """ + def flip(self, *args): + return random.randint(0,1) == 1 + +class RecordedPrefixCoin(BaseCoin): + def __init__(self, prefix): + self.record = [] + self.prefix = deque(prefix) + + def flip(self, *args): + if self.prefix: + bit = self.prefix.popleft() + self.record.append(bit) + return bit + else: + bit = super(RecordedPrefixCoin, self).flip() + self.record.append(toss) + return bit + +# Actually, we just need the client to record, and the server to be able to +# access a prefix, so we can split up these functionalities + +class RecordedCoin(BaseCoin): + """ Acts like a BaseCoin, but also records the outputs it produced, to be + used later if needed. + """ + def __init__(self): + self.record = [] + + def flip(self, *args): + bit = super(RecordedCoin, self).flip() + self.record.append(bit) + return bit + + def read(self): + """ Read the record of the flips so far, then reset it to be empty. + """ + tmp = self.record + self.record = [] + return tmp + +class PrefixCoin(BaseCoin): + """ Acts like a base coin, but first uses the provided list of boolean + values, switching to the random module once it runs out of values from + the list to use. + """ + def __init__(self, prefix): + self.prefix = deque(prefix) + + def flip(self, *args): + if self.prefix: + bit = self.prefix.popleft() + return bit + else: + bit = super(PrefixCoin, self).flip() + return bit + + def extend(self, suffix): + """ Extend 'self' with the elements in 'suffix', to be used after + the ones already contained in the prefix. + """ + self.prefix.extend(suffix) + +# Also useful for benchmarking---coins that start from a specific seed + +class SeededCoin(BaseCoin): + """ Acts like a base coin, but first seeds the random module with a given + seed. Each call to flip() then restores the previous random state, + computes the next bit, and stores the resulting state. + """ + def __init__(self, seed): + random.seed(seed) + self.state = random.getstate() + + def flip(self, *args): + random.setstate(self.state) + bit = super(SeededCoin, self).flip() + self.state = random.getstate() + return bit + + def reseed(self, seed): + random.seed(seed) + self.state = random.getstate() + +class HashCoin(BaseCoin): + """ Iteratively computes the hash of each base element to compute the coin + flip of each node. Inherently stateful & dependent on how skiplists + are structured. + + The value returned is False if the least-significant bit of the hash + value is 0, and True if the least-significant bit is 1. + """ + + def flip(self, elem_hash, *args): + return (ord(elem_hash[-1]) % 2) == 1 diff --git a/pace/ads/skiplist/coin_test.py b/pace/ads/skiplist/coin_test.py new file mode 100644 index 0000000..4479d93 --- /dev/null +++ b/pace/ads/skiplist/coin_test.py @@ -0,0 +1,178 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Unit tests for coin library +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 08 Aug 2014 CS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import time +import random + +from pace.ads.skiplist.coin import BaseCoin, PrefixCoin, SeededCoin, RecordedPrefixCoin, RecordedCoin, HashCoin +from pace.ads.skiplist.authskiplist import AuthSkipList +from pace.ads.skiplist.elemclass import IntElem +from pace.common.pacetest import PACETestCase + +class SkipListTests(PACETestCase): + + def setUp(self): + self.sizes = [10, 100, 1000, 10000] + random.seed(time.time()) + + def hash_coin_test(self): + for n in self.sizes: + for iters in range(self.num_iters): + + elems = [str(random.randint(-10000000, 10000000)) + for i in range(1000)] + + hc = HashCoin() + hash_elems1 = [hc.flip(e) for e in elems] + hash_elems2 = [hc.flip(e) for e in elems] + + self.assertEqual(hash_elems1, hash_elems2) + + def prefix_coin_test(self): + for n in self.sizes: + for iters in range(self.num_iters): + + bc = BaseCoin() + elems = [bc.flip() for i in range(n)] + + pc = PrefixCoin(elems) + prefix_elems = [pc.flip() for i in range(n)] + + self.assertEqual(elems, prefix_elems) + + def seeded_coin_test(self): + for n in self.sizes: + for iters in range(self.num_iters): + rand = random.randint(0,1000) + random.seed(rand) + + bc = BaseCoin() + elems = [bc.flip() for i in range(n)] + + sc = SeededCoin(rand) + seeded_elems = [sc.flip() for i in range(n)] + + self.assertEqual(elems, seeded_elems) + + def record_coin_test(self): + for n in self.sizes: + for iters in range(self.num_iters): + rand = random.randint(0,1000) + random.seed(rand) + + bc = BaseCoin() + elems = [bc.flip() for i in range(n)] + + random.seed(rand) + rc = RecordedCoin() + more_elems = [rc.flip() for i in range(n)] + rec_elems = rc.record + + self.assertEqual(elems, rec_elems) + self.assertEqual(elems, more_elems) + + def record_prefix_coin_test(self): + for n in self.sizes: + for iters in range(self.num_iters): + rand = random.randint(0,1000) + random.seed(rand) + + bc = BaseCoin() + elems = [bc.flip() for i in range(n)] + + random.seed(rand) + rpc = RecordedPrefixCoin(elems) + more_elems = [rpc.flip() for i in range(n)] + rec_elems = rpc.record + + self.assertEqual(elems, rec_elems) + self.assertEqual(elems, more_elems) + + def base_coin_test(self): + for n in self.sizes: + for iters in range(self.num_iters): + rand = random.randint(0,1000) + random.seed(rand) + + elems = [random.randint(0,1) == 1 for i in range(n)] + + random.seed(rand) + bc = BaseCoin() + flipped_elems = [bc.flip() for i in range(n)] + + self.assertEqual(elems, flipped_elems) + + def skiplist_test(self): + """ Make sure the different coins can be used to guarantee the same + skiplist. + """ + for n in self.sizes[:-1]: + for iters in range(self.num_iters): + max_elem = n * 100 + min_elem = -1 * max_elem + + lower = IntElem(min_elem-1) + upper = IntElem(max_elem+1) + + elems = [IntElem(random.randint(min_elem, max_elem)) + for i in range(n)] + + rand = random.randint(0,1000) + random.seed(rand) + + prefix = [random.randint(0,1) == 1 for i in range(10 * n)] + + random.seed(rand) + sl_base = AuthSkipList.new( + elems, lower, upper, BaseCoin()) + + random.seed(rand) + sl_recd = AuthSkipList.new( + elems, lower, upper, RecordedCoin()) + + sl_pref = AuthSkipList.new( + elems, lower, upper, PrefixCoin(prefix)) + + sl_rpre = AuthSkipList.new( + elems, lower, upper, RecordedPrefixCoin(prefix)) + + sl_seed = AuthSkipList.new( + elems, lower, upper, SeededCoin(rand)) + + self.assertEqual(sl_seed.to_list_of_lists(), + sl_rpre.to_list_of_lists()) + self.assertEqual(sl_rpre.to_list_of_lists(), + sl_pref.to_list_of_lists()) + self.assertEqual(sl_pref.to_list_of_lists(), + sl_recd.to_list_of_lists()) + self.assertEqual(sl_recd.to_list_of_lists(), + sl_base.to_list_of_lists()) + + self.assertEqual(sl_seed.root.label, + sl_rpre.root.label) + self.assertEqual(sl_rpre.root.label, + sl_pref.root.label) + self.assertEqual(sl_pref.root.label, + sl_recd.root.label) + self.assertEqual(sl_recd.root.label, + sl_base.root.label) + + + + diff --git a/pace/ads/skiplist/elemclass.py b/pace/ads/skiplist/elemclass.py new file mode 100644 index 0000000..6cca3a9 --- /dev/null +++ b/pace/ads/skiplist/elemclass.py @@ -0,0 +1,146 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Interface for skiplist elements & some specific implemetations +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 03 Oct 2014 CS Original file +## ************** + + +from abc import ABCMeta, abstractmethod + + +class BaseElem(object): + """ Abstract superclass for wrapping base Python types into elements + suitable for insertion into SkipLists. Must be abstract since it + can't generically define the deserialize method. + """ + + __metaclass__ = ABCMeta + + def __init__(self, key): + """ This class is a wrapper around the type of keys being stored. + """ + self.key = key + + def __str__(self): + return str(self.key) + + def __cmp__(self, other): + """ Default method for comparing two objects. Assumes + the key's __cmp__ method is the desired method for + ordering. + """ + if self.key < other.key: + return -1 + elif self.key == other.key: + return 0 + else: + assert self.key > other.key + return 1 + + @abstractmethod + def serialize(self): + """ Turn the element into a string to transportation over + a network. Needs to be convertable back into an equivalent + object with deserialize() + """ + + @abstractmethod + def deserialize(s): + """ Turn a string into an element of the implementation class. + Resulting element needs to serialize to the same original + string. + """ + pass + +class IntElem(BaseElem): + def serialize(self): + return str(self.key) + + @staticmethod + def deserialize(s): + return IntElem(int(s)) + +class StrElem(BaseElem): + # Elements are strings, so serialize and deserialize operations are + # the identity. + def serialize(self): + return self.key + + @staticmethod + def deserialize(s): + return StrElem(s) + +class AccumuloKey(object): + """ Class to use for Accumulo keys to fit Accumulo entries + into a subclass of BaseElem. + """ + def __init__(self, row, cf, cq, cv, ts): + self.row = row + self.cf = cf + self.cq = cq + self.cv = cv + self.ts = ts + + def __cmp__(self, other): + if self.row == other.row: + if self.cf == other.cf: + if self.cq == other.cq: + if self.cv == other.cv: + if self.ts == other.ts: + return 0 + else: + # timestamps are ordered in the other direction + return -1 if self.ts > other.ts else 1 + else: + return -1 if self.cv < other.cv else 1 + else: + return -1 if self.cq < other.cq else 1 + else: + return -1 if self.cf < other.cf else 1 + else: + return -1 if self.row < other.row else 1 + + def serialize(self): + return ','.join([self.row, self.cf, self.cq, self.cv, self.ts]) + +class AccumuloEntry(BaseElem): + + keyclass = AccumuloKey + + def __init__(self, key, val): + self.key = key + self.val = val + + def serialize(self): + return ','.join([self.key.serialize(), self.val]) + + @classmethod + def deserialize(cls, s): + i = 0 + j = s.find(',', i) + row = s[i:j] + + i = j+1 + j = s.find(',', i) + cf = s[i:j] + + i = j+1 + j = s.find(',', i) + cq = s[i:j] + + i = j+1 + j = s.find(',', i) + cv = s[i:j] + + i = j+1 + j = s.find(',', i) + ts = s[i:j] + + val = s[j+1:] + + return AccumuloEntry(cls.keyclass(row, cf, cq, cv, ts), val) diff --git a/pace/ads/skiplist/elemclass_test.py b/pace/ads/skiplist/elemclass_test.py new file mode 100644 index 0000000..0fcd502 --- /dev/null +++ b/pace/ads/skiplist/elemclass_test.py @@ -0,0 +1,225 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Tests for skiplist element classes +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 04 Oct 2014 CS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import time +import random + +from pace.ads.skiplist.elemclass import IntElem, StrElem, AccumuloKey, AccumuloEntry +from pace.common.pacetest import PACETestCase + +def _fix_tup_sign(tup): + a, b, c, d, e = tup + return (a, b, c, d, -e) + +class ElemClassTests(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + def test_ord(self): + for i in range(self.num_iters): + + epairs = [(random.randint(-100000, 100000), + random.randint(-100000, 100000)) + for _ in range(self.size)] + epairs.append((0,0)) + epairs.append((10000,10000)) + epairs.append((-10000,-10000)) + + for x, y in epairs: + self.assertEqual(x < y, IntElem(x) < IntElem(y)) + self.assertEqual(str(x) < str(y), + StrElem(str(x)) < StrElem(str(y))) + + self.assertEqual(x > y, IntElem(x) > IntElem(y)) + self.assertEqual(str(x) > str(y), + StrElem(str(x)) > StrElem(str(y))) + + self.assertEqual(x >= y, IntElem(x) >= IntElem(y)) + self.assertEqual(str(x) >= str(y), + StrElem(str(x)) >= StrElem(str(y))) + + self.assertEqual(x <= y, IntElem(x) <= IntElem(y)) + self.assertEqual(str(x) <= str(y), + StrElem(str(x)) <= StrElem(str(y))) + + self.assertEqual(x == y, IntElem(x) == IntElem(y)) + self.assertEqual(str(x) == str(y), + StrElem(str(x)) == StrElem(str(y))) + + self.assertEqual(x != y, IntElem(x) != IntElem(y)) + self.assertEqual(str(x) != str(y), + StrElem(str(x)) != StrElem(str(y))) + + def test_serialize(self): + for i in range(self.num_iters): + + elems = [random.randint(-100000, 100000) + for _ in range(self.size)] + + for elem in elems: + ie = IntElem(elem) + se = StrElem(str(elem)) + + self.assertEqual(ie, IntElem.deserialize(ie.serialize())) + self.assertEqual(se, StrElem.deserialize(se.serialize())) + + self.assertEqual(ie.serialize(), + IntElem.deserialize( + ie.serialize()).serialize()) + self.assertEqual(se.serialize(), + StrElem.deserialize(se.serialize()).serialize()) + + def test_accumulo_serialize(self): + for i in range(self.num_iters): + for row, cf, cq, cv, ts, val in [[str(random.randint(-10000, 10000)) + for i in range(6)] + for _ in range(self.size)]: + key = AccumuloKey(row, cf, cq, cv, ts) + entry = AccumuloEntry(key, val) + + self.assertEqual(entry, AccumuloEntry.deserialize(entry.serialize())) + self.assertEqual(entry.val, + AccumuloEntry.deserialize( + entry.serialize()).val) + + self.assertEqual(entry.serialize(), + AccumuloEntry.deserialize( + entry.serialize()).serialize()) + + def test_accumulo_ord(self): + for i in range(self.num_iters): + for tup1, tup2 in [([random.randint(-10000, 10000) * (-1 if i == 4 else 0) + for i in range(5)], + [random.randint(-10000, 10000) * (-1 if i == 4 else 0) + for i in range(5)]) + for _ in range(self.size)]: + + tup1 = tuple(tup1) + tup2 = tuple(tup2) + tk1 = _fix_tup_sign(tup1) + tk2 = _fix_tup_sign(tup2) + print 'tup1:', tup1 + print 'tup2:', tup2 + self.assertEqual(tup1 < tup2, + AccumuloKey(*tk1) < AccumuloKey(*tk2)) + self.assertEqual(tup1 <= tup2, + AccumuloKey(*tk1) <= AccumuloKey(*tk2)) + self.assertEqual(tup1 >= tup2, + AccumuloKey(*tk1) >= AccumuloKey(*tk2)) + self.assertEqual(tup1 > tup2, + AccumuloKey(*tk1) > AccumuloKey(*tk2)) + self.assertEqual(tup1 == tup2, + AccumuloKey(*tk1) == AccumuloKey(*tk2)) + self.assertEqual(tup1 != tup2, + AccumuloKey(*tk1) != AccumuloKey(*tk2)) + + for tup1, tup2 in [([random.randint(-10000, 10000) * (0 if i < 1 else 1) + for i in range(5)], + [random.randint(-10000, 10000) * (0 if i < 1 else 1) + for i in range(5)]) + for _ in range(self.size)]: + + tup1 = tuple(tup1) + tup2 = tuple(tup2) + tk1 = _fix_tup_sign(tup1) + tk2 = _fix_tup_sign(tup2) + self.assertEqual(tup1 < tup2, + AccumuloKey(*tk1) < AccumuloKey(*tk2)) + self.assertEqual(tup1 <= tup2, + AccumuloKey(*tk1) <= AccumuloKey(*tk2)) + self.assertEqual(tup1 >= tup2, + AccumuloKey(*tk1) >= AccumuloKey(*tk2)) + self.assertEqual(tup1 > tup2, + AccumuloKey(*tk1) > AccumuloKey(*tk2)) + self.assertEqual(tup1 == tup2, + AccumuloKey(*tk1) == AccumuloKey(*tk2)) + self.assertEqual(tup1 != tup2, + AccumuloKey(*tk1) != AccumuloKey(*tk2)) + + for tup1, tup2 in [([random.randint(-10000, 10000) * (0 if i < 2 else 1) + for i in range(5)], + [random.randint(-10000, 10000) * (0 if i < 2 else 1) + for i in range(5)]) + for _ in range(self.size)]: + + tup1 = tuple(tup1) + tup2 = tuple(tup2) + tk1 = _fix_tup_sign(tup1) + tk2 = _fix_tup_sign(tup2) + self.assertEqual(tup1 < tup2, + AccumuloKey(*tk1) < AccumuloKey(*tk2)) + self.assertEqual(tup1 <= tup2, + AccumuloKey(*tk1) <= AccumuloKey(*tk2)) + self.assertEqual(tup1 >= tup2, + AccumuloKey(*tk1) >= AccumuloKey(*tk2)) + self.assertEqual(tup1 > tup2, + AccumuloKey(*tk1) > AccumuloKey(*tk2)) + self.assertEqual(tup1 == tup2, + AccumuloKey(*tk1) == AccumuloKey(*tk2)) + self.assertEqual(tup1 != tup2, + AccumuloKey(*tk1) != AccumuloKey(*tk2)) + + for tup1, tup2 in [([random.randint(-10000, 10000) * (0 if i < 3 else 1) + for i in range(5)], + [random.randint(-10000, 10000) * (0 if i < 3 else 1) + for i in range(5)]) + for _ in range(self.size)]: + + tup1 = tuple(tup1) + tup2 = tuple(tup2) + tk1 = _fix_tup_sign(tup1) + tk2 = _fix_tup_sign(tup2) + self.assertEqual(tup1 < tup2, + AccumuloKey(*tk1) < AccumuloKey(*tk2)) + self.assertEqual(tup1 <= tup2, + AccumuloKey(*tk1) <= AccumuloKey(*tk2)) + self.assertEqual(tup1 >= tup2, + AccumuloKey(*tk1) >= AccumuloKey(*tk2)) + self.assertEqual(tup1 > tup2, + AccumuloKey(*tk1) > AccumuloKey(*tk2)) + self.assertEqual(tup1 == tup2, + AccumuloKey(*tk1) == AccumuloKey(*tk2)) + self.assertEqual(tup1 != tup2, + AccumuloKey(*tk1) != AccumuloKey(*tk2)) + + for tup1, tup2 in [([random.randint(-10000, 10000) * (0 if i < 4 else 1) + for i in range(5)], + [random.randint(-10000, 10000) * (0 if i < 4 else 1) + for i in range(5)]) + for _ in range(self.size)]: + + tup1 = tuple(tup1) + tup2 = tuple(tup2) + tk1 = _fix_tup_sign(tup1) + tk2 = _fix_tup_sign(tup2) + print 'tup1:', tup1 + print 'tup2:', tup2 + self.assertEqual(tup1 < tup2, + AccumuloKey(*tk1) < AccumuloKey(*tk2)) + self.assertEqual(tup1 <= tup2, + AccumuloKey(*tk1) <= AccumuloKey(*tk2)) + self.assertEqual(tup1 >= tup2, + AccumuloKey(*tk1) >= AccumuloKey(*tk2)) + self.assertEqual(tup1 > tup2, + AccumuloKey(*tk1) > AccumuloKey(*tk2)) + self.assertEqual(tup1 == tup2, + AccumuloKey(*tk1) == AccumuloKey(*tk2)) + self.assertEqual(tup1 != tup2, + AccumuloKey(*tk1) != AccumuloKey(*tk2)) diff --git a/pace/ads/skiplist/skiplist.py b/pace/ads/skiplist/skiplist.py new file mode 100644 index 0000000..460cc83 --- /dev/null +++ b/pace/ads/skiplist/skiplist.py @@ -0,0 +1,162 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Skip list library +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Aug 2014 ZS Original file +## ************** + +import random +from hashlib import sha256 + +from pace.ads.skiplist.skiplistnode import SkipListNode, InvalidSkipListException +from pace.ads.skiplist.coin import BaseCoin + +class SkipList(object): + + # the class to be used for nodes + nodeclass = SkipListNode + + def __init__(self, root, lbound, rbound, coin): + self.root = root + self.lbound = lbound + self.rbound = rbound + self.coin = coin + + @classmethod + def new(cls, elems, lbound, rbound, coin=BaseCoin()): + """ Build a new SkipList + + Arguments: + elems - the list of elements to put into the SkipList + lbound - the leftmost element in the SkipList (acts like -infty) + rbound - the rightmost element in the Skiplist (acts like +infty) + """ + + sl = cls(None, lbound, rbound, coin) + right = cls.nodeclass.newnode(sl, None, None, rbound, True) + left = cls.nodeclass.newnode(sl, None, right, lbound, True) + sl.root = left + + for elem in elems: + sl.insert(elem) + + return sl + + def insert(self, elem): + """ Insert elem into the base level of the current SkipList, then + determine how many levels to elevate it by + """ + new_node, left_neighbor, visited = self.root.insert(elem) + + current = new_node + current_hash_value = sha256(str(elem)).digest() + + for v, flag in visited: + if not flag: + continue + + if self.stop(current_hash_value): + return + + current_hash_value = sha256(current_hash_value).digest() + + next_level = self.nodeclass.newnode(self, current, v.right, elem) + v.right = next_level + current = next_level + + # If we got here, we need to add another level of just -infty, +infty + + new_rght = self.nodeclass.newnode(self, self.root.right.right, None, self.rbound) + new_root = self.nodeclass.newnode(self, self.root, new_rght, self.lbound) + self.root = new_root + + while not self.stop(current_hash_value): + current_hash_value = sha256(current_hash_value).digest() + + # Add higher levels + old_right = self.root.right + old_left = self.root + + new_right = self.nodeclass.newnode(self, old_right, None, old_right.elem) + new_left = self.nodeclass.newnode(self, old_left, new_right, old_left.elem) + + new_level = self.nodeclass.newnode(self, current, old_right, elem) + old_left.right = new_level + self.root = new_left + + current = new_level + + def contains(self, elem): + """ Returns True if elem is in the skip list, and False otherwise + """ + + visited, last = self.root.search(elem) + + return last.elem == elem + + def stop(self, elem): + """ The 'coin flip' for a randomized SkipList to determine how + high to elevate each element once it's inserted + """ + return self.coin.flip(elem) + + def to_list_of_lists(self): + """ Returns the list containing each level in the skiplist, from top + to bottom. + + The first element of the result will just contain the left and + right bounds ("-infty" and "+infty"), and the last element will + contain those bounds with every element of the list between them. + """ + current = self.root + lists = [] + + while current: + row = current + rlist = [] + + while row: + rlist.append(row.elem) + row = row.right + + lists.append(rlist) + current = current.down + + return lists + + def valid(self): + ## Guarantee that the top level has exactly two elements + if self.root is None: + raise InvalidSkipListException( + 'Top level must have exactly two elements (found: zero)') + if self.root.right is None: + raise InvalidSkipListException( + 'Top level must have exactly two elements (found: one)') + if self.root.right.right is not None: + raise InvalidSkipListException( + 'Top level must have exactly two elements (found: more than 2)') + + ## Guarantee each level has strictly fewer elements than the one after + prev_elems = 2 + current_left = self.root.down + + while current_left: + current = current_left + current_elems = 0 + while current: + current_elems = current_elems + 1 + current = current.right + + if not (current_elems >= prev_elems): + raise InvalidSkipListException( + 'Each level must have at least as many nodes as the previous level') + + prev_elems = current_elems + current_left = current_left.down + + ## Guarantee various per-node correctness properties + self.root.valid() diff --git a/pace/ads/skiplist/skiplist_server.py b/pace/ads/skiplist/skiplist_server.py new file mode 100644 index 0000000..4949360 --- /dev/null +++ b/pace/ads/skiplist/skiplist_server.py @@ -0,0 +1,346 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Skiplist server/data publisher code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 10 Oct 2014 CS Original file (copied from ../merkle/mht_server.py) +## ************** + +import socket +import logging +from abc import abstractmethod, ABCMeta + +from SocketServer import StreamRequestHandler, TCPServer, ThreadingMixIn +from threading import Thread +from base64 import b64encode, b64decode + +from pace.ads.skiplist.authskiplist import AuthSkipList +from pace.ads.skiplist.skiplistvo import SkipListVO +from pace.ads.skiplist.coin import SeededCoin, PrefixCoin, HashCoin + +def _recv(sfile, loc=''): + return sfile.readline().strip() + +def _recvi(sfile, i, loc=''): + return [_recv(sfile, loc) for x in range(0, i)] + +def _send(wfile, msg, loc=''): + total_msg = msg + '\n' + wfile.write(total_msg) + wfile.flush() + +def _sendi(wfile, msgs, loc=''): + for msg in msgs: + _send(wfile, msg, loc) + +def _recv_iterate(rfile, name): + while True: + x = _recv(rfile) + + if x == name: + return + else: + yield x + +class SkipListServerException(Exception): + def __init__(self, msg): + self.msg = msg + +class SLHandler(StreamRequestHandler): + + def handle(self): + # Initialize the skiplist + # Can have a persistent skiplist once batch insertion has been + # implemented. + + coin_type = _recv(self.rfile, 'handler') + + if coin_type == 'SEED': + raw_seed = _recv(self.rfile, 'handler') + try: + seed = int(raw_seed) + except ValueError: + raise SkipListServerException( + 'Non-number %s passed in for seed value' %raw_seed) + coin = SeededCoin(seed) + elif coin_type == 'PREFIX': + prefix = [p == 'True' for p in _recv_iterate(self.rfile, 'ELEMS')] + coin = PrefixCoin(prefix) + elif coin_type == 'HASH': + coin = HashCoin() + else: + raise SkipListServerException('Invalid coin type %s' %coin_type) + + elems = [self.server.elemClass.deserialize(elem) + for elem in _recv_iterate(self.rfile, 'END_ELEMS')] + + # Protocol: send the lower bound, then the upper bound, then the entire + # list of elements to insert at first + sl = AuthSkipList.new(elems[2:], elems[0], elems[1], coin) + + while True: + task = self.rfile.readline().strip() + + if task == 'QUERY': + raw_elem = _recv(self.rfile, 'handler') + elem = self.server.elemClass.deserialize(raw_elem) + proof = sl.contains(elem) + sproof = SLHandler.serialize_query_result(proof) + _send(self.wfile, sproof, 'handler') + + elif task == 'RANGE_QUERY': + raw_lower, raw_upper = _recvi(self.rfile, 2, 'handler') + lower, upper = (self.server.elemClass.deserialize(raw_lower), + self.server.elemClass.deserialize(raw_upper)) + vo = SkipListVO.range_query(sl, lower, upper) + _send(self.wfile, vo.serialize(), 'handler') + + elif task == 'INSERT': + for elem in _recv_iterate(self.rfile, 'END_INSERT'): + sl.insert(self.server.elemClass.deserialize(elem)) + + elif task == 'REPREFIX': + prefix = [int(y) + for y in _recv_iterate(self.rfile, 'END_REPREFIX')] + sl.coin.extend(prefix) + + elif task == 'RESEED': + seed = int(_recv(self.rfile)) + sl.coin.reseed(seed) + + elif task == 'PING': + _send(self.wfile, 'PONG') + + elif task == 'QUIT': + return + + else: + raise Exception('Unknown task %s' %task) + + @staticmethod + def serialize_query_result(qr): + """ Serialization protocol for query result lists. + The result of a query is the result of joining the proof list + together with the ';' delimiter, then pairing that with the boolean + telling whether or not the element was found with the ',' delimiter + """ + found, proof = qr + + inner = ';'.join([b64encode(hval) for hval in proof]) + + return ','.join([str(found), inner]) + +class SocketSLServer(ThreadingMixIn, TCPServer): + """ A skiplist server that serves the skiplist over a socket, freeing + the client from having to store anything more than a + handle on the server to send & receive information to & from. + + (this will become more interesting once it starts to serve the same + skiplist to multiple clients) + """ + def __init__(self, elemClass, *args, **kwargs): + self.elemClass = elemClass + TCPServer.__init__(self, *args, **kwargs) + +class AbstractSocketSLClient(object): + + __metaclass__ = ABCMeta + + def __init__(self, sock): + self.sock = sock + self.rfile = sock.makefile('r') + self.wfile = sock.makefile('w') + + def __enter__(self): + return self + + def __exit__(self, type, value, tb): + _send(self.wfile, 'QUIT') + self.rfile.close() + self.wfile.close() + self.sock.close() + + @staticmethod + def deserialize_query_result(qr): + found, proof = qr.split(',') + + return found == 'True', [b64decode(s) for s in proof.split(';')] + + @abstractmethod + def new(elems, min_elem, max_elem, seed, elemClass, host='localhost', port=9999): + """ Creates a connection to a server and initializes it. Assumes + that the server's SkipList has not already been initialized. + """ + pass + + @abstractmethod + def initialize(self, elems): + """ Initialize the server being connected to. Should be called exactly + once per server. + + Arguments may vary depending on the child class. + """ + pass + + @classmethod + def connect(cls, host='localhost', port=9999): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((host, port)) + + return cls(sock) + + def query(self, elem): + """ Query to see whether an element is in the skiplist. + Arguments: + self - the skiplist object + elem - the object to query + + Returns: + None if elem was not contained in the skiplist, or a proof + that it was contained in the tree. + """ + _send(self.wfile, 'QUERY') + _send(self.wfile, elem.serialize(), 'client') + proof = _recv(self.rfile, 'client') + + return AbstractSocketSLClient.deserialize_query_result(proof) + + def range_query(self, lower, upper): + """ Query a range of elements beteween lower and upper (inclusive) + Arguments: + self - the skiplist object + lower - the (inclusive) lower bound of the range + upper - the (inclusive) upper bound of the range + + Returns: + vo - a verification object (as in vo.py) for the given range + """ + _send(self.wfile, 'RANGE_QUERY') + _sendi(self.wfile, [lower.serialize(), upper.serialize()]) + vo = _recv(self.rfile, 'client') + return SkipListVO.deserialize(vo, self.elemClass) + + def ping(self): + """ Ping a server. Mostly for testing/benchmarking purposes; assumes + it can't respond until it's finished with its previous task. + """ + + _send(self.wfile, 'PING') + _recv(self.rfile) + + +class SeededSocketSLClient(AbstractSocketSLClient): + + @staticmethod + def new(elems, min_elem, max_elem, seed, elemClass, host='localhost', port=9999): + """ Creates a connection to a server and initializes it. Assumes + that the server's SkipList has not already been initialized. + """ + s = SeededSocketSLClient.connect(host, port) + s.initialize(seed, [min_elem, max_elem] + elems) + s.elemClass = elemClass + return s + + def initialize(self, seed, elems): + _send(self.wfile, 'SEED', 'client') + _send(self.wfile, str(seed), 'client') + for elem in elems: + _send(self.wfile, elem.serialize(), 'client') + _send(self.wfile, 'END_ELEMS', 'client') + + def batch_insert(self, expected_initial_root, elems, least, greatest, seed): + vo = self.range_query(least, greatest) + vo.verify(least, greatest, expected_initial_root) + _send(self.wfile, 'RESEED') + _send(self.wfile, str(seed)) + _send(self.wfile, 'INSERT') + + vo.coin = SeededCoin(seed) + + for elem in elems: + _send(self.wfile, elem.serialize()) + vo.insert(elem) + + _send(self.wfile, 'END_INSERT') + + return vo.root.label + +class PrefixSocketSLClient(AbstractSocketSLClient): + + @staticmethod + def new(elems, min_elem, max_elem, prefix, elemClass, host='localhost', port=9999): + """ Creates a connection to a server and initializes it. Assumes + that the server's SkipList has not already been initialized. + """ + s = PrefixSocketSLClient.connect(host, port) + s.initialize(prefix, [min_elem, max_elem] + elems) + s.elemClass = elemClass + return s + + def initialize(self, prefix, elems): + _send(self.wfile, 'PREFIX', 'client') + for p in prefix: + _send(self.wfile, str(p), 'client') + _send(self.wfile, 'ELEMS', 'client') + for elem in elems: + _send(self.wfile, elem.serialize(), 'client') + _send(self.wfile, 'END_ELEMS', 'client') + + # TODO: might be a way to make sure we only have to go through elems once + def batch_insert(self, expected_initial_root, elems, least, greatest): + vo = self.range_query(least, greatest) + vo.verify(least, greatest, expected_initial_root) + vo.coin = RecordedCoin() + + for elem in elems: + vo.insert(elem) + + _send(self.wfile, 'REPREFIX') + for p in vo.coin.read(): + _send(self.wfile, str(p)) + _send(self.wfile, 'END_REPREFIX') + + _send(self.wfile, 'INSERT') + vo.coin = PrefixCoin(seed) + + for elem in elems: + _send(self.wfile, elem.serialize()) + + _send(self.wfile, 'END_INSERT') + return vo.root.label + +class HashSocketSLClient(AbstractSocketSLClient): + + @staticmethod + def new(elems, min_elem, max_elem, elemClass, host='localhost', port=9999): + """ Creates a connection to a server and initializes it. Assumes + that the server's SkipList has not already been initialized. + """ + s = HashSocketSLClient.connect(host, port) + s.initialize([min_elem, max_elem] + elems) + s.elemClass = elemClass + return s + + def initialize(self, elems): + _send(self.wfile, 'HASH', 'client') + for elem in elems: + _send(self.wfile, elem.serialize(), 'client') + _send(self.wfile, 'END_ELEMS', 'client') + + # TODO: might be a way to make sure we only have to go through elems once + def batch_insert(self, expected_initial_root, elems, least, greatest): + vo = self.range_query(least, greatest) + vo.coin = HashCoin() + vo.verify(least, greatest, expected_initial_root) + + _send(self.wfile, 'INSERT') + + for elem in elems: + _send(self.wfile, elem.serialize()) + vo.insert(elem) + + _send(self.wfile, 'END_INSERT') + return vo.root.label diff --git a/pace/ads/skiplist/skiplist_server_test.py b/pace/ads/skiplist/skiplist_server_test.py new file mode 100644 index 0000000..6c8999b --- /dev/null +++ b/pace/ads/skiplist/skiplist_server_test.py @@ -0,0 +1,379 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Unit tests for SkipList servers +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 10 Oct 2014 CS Original file (copied from ../merkle/mht_server_test.py +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import random +import socket +import time + +from threading import Thread + +from pace.ads.skiplist.authskiplist import AuthSkipList +from pace.ads.skiplist.skiplist_server import SocketSLServer, SLHandler, SeededSocketSLClient, PrefixSocketSLClient, HashSocketSLClient +from pace.ads.skiplist.skiplistvo import SkipListVO, VerificationObjectException +from pace.ads.skiplist.coin import SeededCoin, RecordedCoin, HashCoin +from pace.ads.skiplist.elemclass import IntElem +from pace.common.pacetest import PACETestCase + +class SLServerTest(PACETestCase): + + @staticmethod + def run_server(server): + server.serve_forever() + + def setUp(self): + # Need the extra randomness to make sure it doesn't generate the + # same seed on different tests. + random.seed(int(time.time()) + random.randint(0, 1000)) + + self.host = 'localhost' + self.port = random.randint(9000, 9999) + + # Try 10 times to get a valid port; if not, will fail. If this + # fails, check to make sure ports 9000-9999 are not in use. + for _ in xrange(10): + try: + self.server = SocketSLServer(IntElem, (self.host, self.port), + SLHandler) + break + except socket.error: + self.port = random.randint(9000, 9999) + + self.thread = Thread(group=None, target=SLServerTest.run_server, + name=None, args=[self.server], kwargs={}) + self.thread.daemon = True + self.thread.start() + + print 'Starting test', + self.start_time = time.time() + + def tearDown(self): + self.end_time = time.time() + print 'Test finished. Time taken: %s' %str(self.end_time - self.start_time) + self.server.shutdown() + self.thread.join() + + def test_remote_prefix_query(self): + for i in range(0, self.num_iters): + elems = map(IntElem, self.generate_elems()) + elems.sort() + coin = RecordedCoin() + sl = AuthSkipList.new(elems, IntElem(-1), IntElem(1000000001), coin) + + with PrefixSocketSLClient.new( + elems, IntElem(-1), IntElem(1000000001), coin.record, + IntElem, self.host, self.port) as client: + for j in range(0, self.num_iters): + elem = random.choice(elems) + good_result = sl.contains(elem) + test_result = client.query(elem) + self.assertEqual(good_result, test_result) + + def test_remote_seed_query(self): + for i in range(0, self.num_iters): + elems = map(IntElem, self.generate_elems()) + elems.sort() + seed = random.randint(0, 100000) + sl = AuthSkipList.new(elems, IntElem(-1), IntElem(1000000001), SeededCoin(seed)) + + with SeededSocketSLClient.new( + elems, IntElem(-1), IntElem(1000000001), seed, IntElem, self.host, self.port) as client: + for j in range(0, self.num_iters): + elem = random.choice(elems) + good_result = sl.contains(elem) + test_result = client.query(elem) + self.assertEqual(good_result, test_result) + + def test_remote_hash_query(self): + for i in range(0, self.num_iters): + elems = map(IntElem, self.generate_elems()) + elems.sort() + sl = AuthSkipList.new(elems, IntElem(-1), IntElem(1000000001), HashCoin()) + + with HashSocketSLClient.new( + elems, IntElem(-1), IntElem(1000000001), IntElem, self.host, self.port) as client: + for j in range(0, self.num_iters): + elem = random.choice(elems) + good_result = sl.contains(elem) + test_result = client.query(elem) + self.assertEqual(good_result, test_result) + + def test_remote_range_query(self): + total_time = 0 + for i in range(0, self.num_iters): + elems = map(IntElem, self.generate_elems()) + elems.sort() + seed = random.randint(0, 100000) + sl = AuthSkipList.new(elems, IntElem(-1), IntElem(1000000001), SeededCoin(seed)) + start = time.time() + with SeededSocketSLClient.new( + elems, IntElem(-1), IntElem(1000000001), seed, IntElem, self.host, self.port) as client: + ## Get valid lower & upper bounds with enough room between + ## them (about a third of the list) for a substantial range + ## query + lower = random.choice(elems[1:self.size/3]) + upper = random.choice(elems[2*self.size/3:-1]) + + self.assertEqual(SkipListVO.range_query(sl, lower, upper), + client.range_query(lower, upper)) + end = time.time() + total_time = total_time + (end - start) + + print 'Average time taken: %s' %str(total_time / self.num_iters) + + def test_remote_range_query_2(self): + for i in range(0, self.num_iters): + orig_seed = random.randint(0, 10000000) + elems = map(IntElem, self.generate_elems()) + elems.sort() + sl = AuthSkipList.new(elems, IntElem(elems[0].key-1), + IntElem(elems[-1].key+1), + SeededCoin(orig_seed)) + + with SeededSocketSLClient.new( + elems, IntElem(elems[0].key-1), IntElem(elems[-1].key+1), + orig_seed, IntElem, self.host, self.port) as client: + + lower = random.choice(elems[1:self.size/3]) + upper = random.choice(elems[2*self.size/3:-1]) + + localvo = SkipListVO.range_query(sl, lower, upper) + othervo = client.range_query(lower, upper) + + try: + ret_elems = localvo.verify(lower, upper, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(ret_elems, [x for x in elems + if lower <= x <= upper]) + + try: + ret_elems = othervo.verify(lower, upper, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(ret_elems, [x for x in elems + if lower <= x <= upper]) + + self.assertEqual(localvo, othervo) + + def test_remote_batch_insert(self): + for i in range(0, self.num_iters): + orig_seed = random.randint(0, 10000000) + elems = map(IntElem, self.generate_elems()) + elems.sort() + sl = AuthSkipList.new(elems, IntElem(elems[0].key-1), + IntElem(elems[-1].key+1), + SeededCoin(orig_seed)) + old_root = sl.root.label + + self.assertEqual(len(sl.to_list_of_lists()[-1])-2, self.size) + + ## Generate a small number (in this case, n/10) of random elements + ## between the minimum and maximum elements (not including the + ## boundary elements) to insert. + new_elems = map(IntElem, + self.generate_elems( + elems[1].key, elems[-2].key, self.size/10)) + min_ne = min(new_elems) + max_ne = max(new_elems) + + vo = SkipListVO.range_query(sl, min_ne, max_ne) + + try: + ret_elems = vo.verify(min_ne, max_ne, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(ret_elems, [x for x in elems + if min_ne <= x <= max_ne]) + + seed = random.randint(0, 1000000) + vo.coin = SeededCoin(seed) + sl.coin = SeededCoin(seed) + + self.assertEqual(vo.root.label, sl.root.label) + + with SeededSocketSLClient.new( + elems, IntElem(elems[0].key-1), IntElem(elems[-1].key+1), + orig_seed, IntElem, self.host, self.port) as client: + lower = random.choice(elems[1:self.size/3]) + upper = random.choice(elems[2*self.size/3:-1]) + + self.assertEqual(SkipListVO.range_query(sl, lower, upper), + client.range_query(lower, upper)) + + self.assertEqual(SkipListVO.range_query(sl, min_ne, max_ne), + client.range_query(min_ne, max_ne)) + + for elem in new_elems: + vo.insert(elem) + for elem in new_elems: + sl.insert(elem) + + self.assertEqual(sl.root.label, vo.root.label) + + try: + new_root = client.batch_insert(old_root, new_elems, + min_ne, max_ne, seed) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(new_root, vo.root.label) + + self.assertEqual(sl.root.label, new_root) + self.assertEqual(len(sl.to_list_of_lists()[-1])-2, + self.size + (self.size/10)) + + for elem in new_elems: + proof = client.query(elem) + self.assertEqual(proof, sl.contains(elem)) + self.assertEqual(AuthSkipList.verify(proof[1]), sl.root.label) + + def test_remote_batch_insert_helper(self): + for i in range(0, self.num_iters): + orig_seed = random.randint(0, 10000000) + elems = map(IntElem, self.generate_elems()) + elems.sort() + sl = AuthSkipList.new(elems, IntElem(elems[0].key-1), + IntElem(elems[-1].key+1), + SeededCoin(orig_seed)) + + new_elems = [IntElem(random.randint(elems[1].key, elems[-2].key)) + for i in range(0, 2)] + min_ne = min(new_elems) + max_ne = max(new_elems) + + while min_ne == max_ne: + new_elems = [IntElem(random.randint(elems[1].key, elems[-2].key)) + for i in range(0, 2)] + min_ne = min(new_elems) + max_ne = max(new_elems) + + vo = SkipListVO.range_query(sl, min_ne, max_ne) + + try: + ret_elems = vo.verify(min_ne, max_ne, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + seed = random.randint(0, 1000000) + vo.coin = SeededCoin(seed) + sl.coin = SeededCoin(seed) + + self.assertEqual(vo.root.label, sl.root.label) + + orig_label = sl.root.label + + for elem in new_elems: + vo.insert(elem) + sl.insert(elem) + self.assertEqual(sl.root.label, vo.root.label, 'failed on index %d' %new_elems.index(elem)) + + self.assertEqual(sl.root.label, vo.root.label) + + with SeededSocketSLClient.new( + elems, IntElem(elems[0].key-1), IntElem(elems[-1].key+1), + orig_seed, IntElem, self.host, self.port) as client: + + try: + new_root = client.batch_insert(orig_label, new_elems, + min_ne, max_ne, seed) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(new_root, vo.root.label) + + self.assertEqual(sl.root.label, new_root) + self.assertEqual(len(sl.to_list_of_lists()[-1])-2, + len(elems) + len(new_elems)) + + for elem in new_elems: + proof = client.query(elem) + self.assertEqual(proof, sl.contains(elem)) + self.assertEqual(AuthSkipList.verify(proof[1]), sl.root.label) + + def test_remote_batch_insert_hash_coin(self): + for i in range(0, self.num_iters): + elems = map(IntElem, self.generate_elems()) + elems.sort() + sl = AuthSkipList.new(elems, IntElem(elems[0].key-1), + IntElem(elems[-1].key+1), HashCoin()) + old_root = sl.root.label + + self.assertEqual(len(sl.to_list_of_lists()[-1])-2, self.size) + + ## Generate a small number (in this case, n/10) of random elements + ## between the minimum and maximum elements (not including the + ## boundary elements) to insert. + new_elems = [IntElem(random.randint(elems[1].key, elems[-2].key)) + for i in range(0, self.size/10)] + new_elems = map(IntElem, + self.generate_elems( + elems[1].key, elems[-2].key, self.size/10)) + min_ne = min(new_elems) + max_ne = max(new_elems) + + vo = SkipListVO.range_query(sl, min_ne, max_ne, HashCoin()) + + try: + ret_elems = vo.verify(min_ne, max_ne, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(ret_elems, [x for x in elems + if min_ne <= x <= max_ne]) + + self.assertEqual(vo.root.label, sl.root.label) + + with HashSocketSLClient.new( + elems, IntElem(elems[0].key-1), IntElem(elems[-1].key+1), + IntElem, self.host, self.port) as client: + lower = random.choice(elems[1:self.size/3]) + upper = random.choice(elems[2*self.size/3:-1]) + + self.assertEqual(SkipListVO.range_query(sl, lower, upper), + client.range_query(lower, upper)) + + self.assertEqual(SkipListVO.range_query(sl, min_ne, max_ne), + client.range_query(min_ne, max_ne)) + + for elem in new_elems: + vo.insert(elem) + for elem in new_elems: + sl.insert(elem) + + self.assertEqual(sl.root.label, vo.root.label) + + try: + new_root = client.batch_insert(old_root, new_elems, + min_ne, max_ne) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(new_root, vo.root.label) + + self.assertEqual(sl.root.label, new_root) + self.assertEqual(len(sl.to_list_of_lists()[-1])-2, + self.size + (self.size/10)) + + for elem in new_elems: + proof = client.query(elem) + self.assertEqual(proof, sl.contains(elem)) + self.assertEqual(AuthSkipList.verify(proof[1]), sl.root.label) diff --git a/pace/ads/skiplist/skiplist_test.py b/pace/ads/skiplist/skiplist_test.py new file mode 100644 index 0000000..91f7129 --- /dev/null +++ b/pace/ads/skiplist/skiplist_test.py @@ -0,0 +1,75 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for skip list library +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Aug 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import time +import random + +from pace.ads.skiplist.skiplist import SkipList +from pace.common.pacetest import PACETestCase + +class SkipListTests(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + def test_valid(self): + """ Ensure that we only create valid skip lists + """ + + for i in range(0, self.num_iters): + elems = [random.randint(0, 1000000000) + for i in range(0, self.size)] + sl = SkipList.new(elems, -1, 1000000001) + + try: + sl.valid() + except InvalidSkipListException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + def test_membership(self): + """ Ensure that every element of the skip list is reflected as in it. + """ + + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, self.size)] + sl = SkipList.new(elems, -1, 1000000001) + + for elem in elems: + self.assertTrue(sl.contains(elem), + 'skip list claims not to have element %d' %elem) + + def test_non_membership(self): + """ Ensure that non-elements of the skip list are not in it + """ + + for i in range(0, self.num_iters): + elems = [random.randint(0, 100000000) for i in range(0, self.size)] + sl = SkipList.new(elems, -1, 1000000001) + + self.assertEqual(sl.contains(-2), False, + "skip list thinks it contains -2 (it doesn't)") + self.assertEqual(sl.contains(100000002), False, + "skip list thinks it contains 100000002 (it doesn't)") + + bad_elem = random.randint(0, 100000000) + while bad_elem in elems: + bad_elem = random.randint(0, 100000000) + + self.assertEqual(sl.contains(bad_elem), False, + "skip list thinks it contains %d (it doesn't)" %bad_elem) diff --git a/pace/ads/skiplist/skiplistnode.py b/pace/ads/skiplist/skiplistnode.py new file mode 100644 index 0000000..0f32212 --- /dev/null +++ b/pace/ads/skiplist/skiplistnode.py @@ -0,0 +1,111 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Skip list node library +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Aug 2014 ZS Original file +## ************** + +from collections import deque + +class SkipListNode(object): + + def __init__(self, sl, down, right, elem): + self.sl = sl + self.down = down + self.right = right + self.elem = elem + + @staticmethod + def newnode(sl, down, right, elem, *args, **kwargs): + """ Create a new node. Can be overridden by subclasses. + + Arguments: + sl - the skiplist this node is a part of. + down - the bottom neighbor of the new node + right - the right neighbor of the new node + elem - the element to be stored in the new node. + *args, **kwargs - any more arguments that a subclass + might want to use + + Returns: + A new SkipListNode with fields as given. + """ + new_node = SkipListNode(sl, down, right, elem) + return new_node + + def search(self, elem): + """ Search the SkipList for node containing an element that is + either equal to elem (if elem is in the list) or the closest + element in the list that is less than elem (if elem is not in the + list) + + Argument: + elem - the element to be searched for + + Returns: + visited - a collection of nodes visited, stored in reverse order + current - the closest node in the base list that is less than or + equal to elem + """ + + current = self + visited = deque([]) + + while (isinstance(current.right, type(self)) and + current.right.elem <= elem): + visited.appendleft((current, False)) + current = current.right + + while current.down: + visited.appendleft((current, True)) + current = current.down + while (isinstance(current.right, type(self)) and + current.right.elem <= elem): + visited.appendleft((current, False)) + current = current.right + + return visited, current + + def insert(self, elem): + """ Insert an element into the base list. + NB: this does NOT perform the 'coin flips' to determine which + other lists the element being inserted will go in; it only + adds it to the base lists. Elevation is the job of + SkipList.insert. + """ + visited, left_neighbor = self.search(elem) + + new_node = self.newnode(self.sl, None, left_neighbor.right, elem) + left_neighbor.right = new_node + + return new_node, left_neighbor, visited + + def valid(self, recur=True): + current = self + + while current: + crow = current + + while crow: + # Nodes must appear in sorted order + if crow.right: + if not (crow.elem <= crow.right.elem): + raise InvalidSkipListException( + 'Nodes must appear in sorted order') + + # The node beneath a node must have the same element + if crow.down: + if not (crow.elem == crow.down.elem): + raise InvalidSkipListException( + 'The node beneath a node must have the same element') + crow = crow.right + + current = current.down + +class InvalidSkipListException(Exception): + def __init__(self, msg): + self.msg = msg diff --git a/pace/ads/skiplist/skiplistvo.py b/pace/ads/skiplist/skiplistvo.py new file mode 100644 index 0000000..d0f56d0 --- /dev/null +++ b/pace/ads/skiplist/skiplistvo.py @@ -0,0 +1,415 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Verification objects for skiplists +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 4 Sep 2014 ZS Copied from python/merkle/ to use with skiplists +## 18 Jul 2014 ZS Original file (python/merkle/vo.py) +## ************** + +from hashlib import sha256 +from base64 import b64encode, b64decode +import bisect + +from pace.ads.skiplist.authskiplist import AuthSkipList +from pace.ads.skiplist.vonode import VONode, VerificationObjectException +from pace.ads.skiplist.coin import BaseCoin + +class SkipListVO(AuthSkipList): + """ Verification objects for skiplists. + + Note that while this is built on skiplists as a base class, a + skip list VO is _not_ necessarily a valid skip list. There are + two major distinctions for the current, unoptimized case: + + 1) The VO has a tree-like structure. In particular, if the right + neighbor of a node in a skiplist is irrelevant to the root + label contribution of the current path, its corresponding node + in the VO will have an empty entry for its right neighbor. + + 2) If a branch has no elements in the query's range on it, it will + get collapsed to its label value, which will be inserted at the + appropriate point in the VO in lieu of the branch itself. + """ + + nodeclass = VONode + + def __eq__(self, other): + if self.lbound != other.lbound: + return False + + if self.rbound != other.rbound: + return False + + if not (self.root == other.root): + return False + + return True + + def __neq__(self, other): + return not self.__eq__(other) + + + @classmethod + def new(cls, auth_skiplist, lbound, rbound, coin=BaseCoin()): + """ Create a new VO from an AuthSkipList for a given range. + + The new VO has a tree-like structure. Notably, it does NOT have + the usual grid-like structure of a skiplist; that is, there is + not a horizontal connection between each element of each row. + """ + + vo = cls(None, lbound, rbound, coin) + vo_root = vo.build_node(auth_skiplist.root) + vo.root = vo_root + return vo + + @classmethod + def range_query(cls, auth_skiplist, lbound, rbound, coin=BaseCoin()): + """ Do a range query on a skiplist with a given range. Same as new() + """ + + return cls.new(auth_skiplist, lbound, rbound, coin) + + def serialize(self): + return ';'.join( + [self.lbound.serialize(), self.rbound.serialize(), + self.root.serialize()]) + + @staticmethod + def deserialize(node, elemClass): + lbound, rbound, tree = node.split(';') + + vo = SkipListVO(None, + elemClass.deserialize(lbound), + elemClass.deserialize(rbound), + None) + + vo.root = VONode.deserialize(vo, tree, elemClass) + return vo + + def insert(self, elem): + """ Insert the element 'elem' into 'self'. The result of this should + be the result of inserting 'elem' into the skiplist that generated + the VO, then performing the same range query on it (assuming both + coins produce the same flips). 'elem' must be within the VO's + range. + """ + + visited, left_neighbor, index = self.root.search(elem) + + ## First, insert the element into the list---note that this does NOT + ## label the node; that must be done later + + ## NB: if the node doesn't move up, 'elem' just gets inserted into the + ## list of elements in left_neighbor. if it does go up, it gets + ## the elements after a certain point in its own leaf list, and + ## left_neighbor replaces those elements with 'elem' + elem_leaf = None + + current = elem_leaf + stopped = False + current_hash_value = sha256(elem.serialize()).digest() + + new_elems = [] + + ## Determine how many levels of the skiplist to insert the new + ## element on. Each time we visited a node in the traversal, if we + ## dropped down (instead of going right), that node is a potential + ## new neighbor for a new node. We look at these bottom-up, and keep + ## inserting nodes until the element is gone. + for v, flag in visited: + if not flag: + # We just went right at this step, so don't do anything. + continue + + # Otherwise, we dropped down, so we need to see if we insert a new + # level of the inserted element + if self.stop(current_hash_value): + stopped = True + break + + current_hash_value = sha256(current_hash_value).digest() + + if current is None: + elem_leaf = self.nodeclass.newnode(self, None, None, + [elem] + left_neighbor.elem[index:]) + + assert all([y >= elem for y in elem_leaf.elem]) + + del(left_neighbor.elem[index:]) + left_neighbor.elem.append(elem) + + left_neighbor.assign_label() + + next_level = self.nodeclass.newnode(self, elem_leaf, v.right, elem) + new_elems.append(next_level) + current = next_level + + left_neighbor.right = None + v.right = next_level + left_neighbor = v + + else: + ## Defer labeling until later, in case we're inserting it at the + ## current top level. + next_level = self.nodeclass.newnode(self, current, v.right, elem) + new_elems.append(next_level) + + left_neighbor.right = None + left_neighbor = v + v.right = next_level + current = next_level + + new_roots = [] + + if not stopped: + # If we got here we need to add another level of just -infty, +infty + self.root.right.right = None + left_neighbor = self.root + + new_rght = '0' + new_root = self.nodeclass.newnode( + self, self.root, new_rght, self.root.elem) + + self.root = new_root + new_roots.append(new_root) + + # At this point, we can safely assign labels to all the new nodes + # created up until now. + elem_leaf.assign_label() + for n in new_elems: + n.assign_label() + + while not self.stop(current_hash_value): + current_hash_value = sha256(current_hash_value).digest() + + # Add higher levels + old_right = self.root.right + old_left = self.root + + if isinstance(old_right, VONode): + new_right = self.nodeclass.newnode( + self, None, None, old_right.elem, True) + else: + new_right = old_right + old_right = None + + new_left = self.nodeclass.newnode( + self, old_left, new_right, old_left.elem) + new_roots.append(new_left) + + # It's safe to label this one because the new level has + # already been inserted + new_level = self.nodeclass.newnode(self, current, None, elem, True) + old_left.right = new_level + self.root = new_left + + left_neighbor.right = None + left_neighbor = old_left + + current = new_level + + else: + if current is None: + assert not new_elems + left_neighbor.elem.insert(index, elem) + left_neighbor.assign_label() + else: + # Need to update the nodes visited up until now + elem_leaf.assign_label() + for n in new_elems: + n.assign_label() + + # Now we have to update all the visited nodes' labels + modified = [v for v, _ in visited] + new_roots + + for v, f in visited: + v.assign_label() + + for v in new_roots: + v.assign_label() + + return + + def build_node(self, skiplist_node): + """ Builds a VO node for a skip list within a range. + + Returns: + One value, depending on what it found: + + If the node is on a path from something needed in the range query + to the root, return the VONode of that node. + + If not, return the hash value of that node. + """ + # two cases: base level & not-base level + # + # base level: if nothing between here & the next tower node (not + # including the next tower node) is in range, return + # nothing; otherwise return those elements + # + # not-base level: two more cases + # right-hand neighbor is a tower node: just make a new node & figure + # out what to put under it + # right-hand neighbor is a plateau node: two *more* cases + # if it's not in range: put its label there + # if it is in range: recur! + # + # TODO: how do we list the elements returned, exactly? was thinking a + # list of lists, but actually that might not be necessary if we + # just always check for being out-of-range and keep track of the + # last element we saw in the last 'branch' of the VO during + # verification + # Potential answer: don't list them at all! + # TODO: can probably "unroll" at least some of this recursion into loops + lower = self.lbound + upper = self.rbound + + if skiplist_node.down is None: + # we're in the base level + # need to find out if we're including this branch by going to the + # rightmost non-tower element & seeing if it's >= the + # lower bound of the range. + # If it is, we include each element of the base level here. + # + # For now, we achieve this inclusion by returning a list of all + # the base elements in this branch, up to and including the next + # tower node. + + current = skiplist_node + elems = [current.elem] + + # current.right should exist---if it fails because + # of that, it's a bug & should be investigated! + assert current.right + + while not current.right.tower: + current = current.right + elems.append(current.elem) + + if current.right.elem >= lower: + elems.append(current.right.elem) + leaf = VONode.newnode(self, None, None, elems) + return leaf + else: + return skiplist_node.label + + else: + # We're not in the base level. Need to check if the element to + # the right is a plateau node. If it's not, we just make a node here + # and continue. + + if skiplist_node.right.tower: + # TODO: this is the recursion we can probably eliminate + lower_node = self.build_node(skiplist_node.down) + + if isinstance(lower_node, VONode): + current_node = VONode.newnode(self, lower_node, None, + skiplist_node.elem) + return current_node + else: + return lower_node + else: + # Othwerwise, the thing on the right is a plateau node, so we + # need to take it into account when constructing this branch + # of the path. + + lower_node = self.build_node(skiplist_node.down) + + if skiplist_node.right.elem <= upper: + right_node = self.build_node(skiplist_node.right) + else: + right_node = skiplist_node.right.label + + if not (isinstance(lower_node, VONode) or + isinstance(right_node, VONode)): + return VONode.chash(lower_node, right_node) + else: + current_node = VONode.newnode(self, lower_node, + right_node, + skiplist_node.elem) + return current_node + + def verify(self, lbound, rbound, root_label): + """ Verifies that the range query is in fact a valid range query over + the expected bounds and on a skiplist with the given root label. + """ + if lbound != self.lbound or rbound != self.rbound: + raise VerificationObjectException( + 'Malformed VO: unexpected bound(s)') + + elems = self.root.verify(self.lbound, self.rbound) + + + if self.root.label != root_label: + raise VerificationObjectException( + 'Malformed VO: root hash does not match expected root hash\nreceived: %s\nexpected: %s' %(self.root.label, root_label)) + + + # If the root labels matched, then the elements in the list must all + # be the right elements in the hash tree, in order, so make sure they + # include the necessary boundaries. Note that this cannot possibly + # succeed if there are fewer than 2 elements returned. + + leftmost = bisect.bisect_left(elems, lbound) + + if not (leftmost > 0): + raise VerificationObjectException( + 'Malformed VO: left boundary for range query not included in VO') + + rightmost = bisect.bisect_right(elems, rbound) + + if not (rightmost < len(elems)): + raise VerificationObjectException( + 'Malformed VO: right boundary for range query not included in VO') + + for i in range(len(elems)-1): + if elems[i] <= self.lbound and elems[i+1] > self.lbound: + if elems[i] == self.lbound: + leftmost = i + else: + leftmost = i + 1 + + for j in range(i+1, len(elems)): + if elems[j-1] < self.rbound: + if elems[j] == self.rbound: + # If it gets here, it found both a left and a right + # bound + return elems[leftmost:j+1] + elif elems[j] > self.rbound: + return elems[leftmost:j] + + # ...and if it gets here, it didn't + raise VerificationObjectException( + 'Malformed VO: boundaries for range query not included in VO') + + def to_list_of_lists(self): + """ Attempts to turn the current object into a list of lists, similar + to SkipList.to_list_of_lists(). Due to the structure of skiplist + VOs, this is mostly only useful for rudimentary debugging. + """ + current = self.root + rows = [] + + while isinstance(current, VONode): + row = [] + crow = current + + while isinstance(crow, VONode): + row.append(crow.elem) + crow = crow.right + + if crow: + row.append(crow) + + rows.append(row) + current = current.down + + if current: + rows.append(current) + + return rows diff --git a/pace/ads/skiplist/skiplistvo_test.py b/pace/ads/skiplist/skiplistvo_test.py new file mode 100644 index 0000000..ef413a5 --- /dev/null +++ b/pace/ads/skiplist/skiplistvo_test.py @@ -0,0 +1,492 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for verification objects +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 21 Jul 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase +from hashlib import sha256 + +import time +import random +import bisect + +from pace.ads.skiplist.authskiplist import AuthSkipList +from pace.ads.skiplist.skiplistvo import SkipListVO +from pace.ads.skiplist.vonode import VONode, VerificationObjectException +from pace.ads.skiplist.coin import RecordedCoin, PrefixCoin, SeededCoin +from pace.ads.skiplist.elemclass import IntElem +from pace.common.pacetest import PACETestCase + +class SkipListVOTest(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + # Setup for small, hand-made tests + self.elems = map(IntElem, [0, 5, 6, 10]) + self.sl = AuthSkipList.new(self.elems, + IntElem(self.elems[0].key-1), + IntElem(self.elems[-1].key+1)) + + self.lower = IntElem(1) + self.upper = IntElem(9) + + self.vo = SkipListVO.range_query(self.sl, self.lower, self.upper) + + def test_range(self): + """ Ensure that range queries work correctly + """ + for i in range(0, self.num_iters): + elems = [] + + # hacked up to avoid repeated elements in elems + i = 0 + while i < 5: + x = IntElem(random.randint(-50, 50)) + if x not in elems: + i = i + 1 + elems.append(x) + + sl = AuthSkipList.new(elems, IntElem(-101), IntElem(101)) + + lower = random.choice(sorted(elems)[0:2]) + upper = random.choice(sorted(elems)[3:5]) + + vo = SkipListVO.range_query(sl, lower, upper) + + try: + elems = vo.verify(lower, upper, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(elems, + [e for e in sl.to_list_of_lists()[-1] + if lower <= e <= upper]) + + def test_big_range_query(self): + """ Check that range queries work + """ + + lower_bound = -100000 + upper_bound = 100000 + num_elems = 1000 + + for i in range(0, self.num_iters): + elems = [random.randint(lower_bound, upper_bound) + for i in range(num_elems)] + elems = map(IntElem, set(elems)) + sl = AuthSkipList.new(elems, IntElem(lower_bound-1), IntElem(upper_bound+1)) + + for j in range(0, self.num_iters): + lower = IntElem(random.randint(lower_bound/5, upper_bound/100)) + upper = IntElem(random.randint(lower.key + 1000, + upper_bound/5)) + + vo = SkipListVO.range_query(sl, lower, upper) + + try: + elems = vo.verify(lower, upper, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + expected = [e for e in sl.to_list_of_lists()[-1] + if lower <= e <= upper] + if len(elems) != len(expected): + print 'num returned elems:', len(elems) + print 'num expected elems:', len(expected) + + for x, y in zip(elems, expected): + print x, + print '---', + print y + + self.assertEqual(elems, expected) + + def test_empty_vo_fails(self): + elems = self.elems + sl = self.sl + lower = self.lower + upper = self.upper + vo = self.vo + + # Make sure it won't verify an empty VO + bad_vo = SkipListVO(IntElem(0), + IntElem(10), + VONode(None, sl.root.down.label, sl.root.right.label, -1), + None) + passed = False + + try: + bad_vo.verify(lower, upper, sl.root.label) + except VerificationObjectException as e: + passed = True + + self.assertTrue(passed, 'Should not verify an empty VO') + + def test_bogus_root_hash(self): + elems = self.elems + sl = self.sl + lower = self.lower + upper = self.upper + vo = self.vo + + # Make sure it won't verify a bogus root hash + bad_root_hval = sha256(b'foobar').digest() + passed = False + + try: + vo.verify(lower, upper, bad_root_hval) + except VerificationObjectException as e: + passed = True + + self.assertTrue(passed, 'Should not verify a bogus root hash') + + def test_too_long_range(self): + elems = self.elems + sl = self.sl + lower = self.lower + upper = self.upper + vo = self.vo + + # Make sure it won't let us return too many elements + passed = False + + try: + vo.verify(IntElem(1), IntElem(5), sl.root.label) + except VerificationObjectException as e: + passed = True + + self.assertTrue(passed, 'Should not verify an overextended range') + + def test_stringify(self): + for i in range(0, self.num_iters): + elems = [IntElem(random.randint(0, 100000000)) + for i in range(0, 1000)] + elems.sort() + sl = AuthSkipList.new(elems, IntElem(-1), IntElem(100000001)) + + lower = random.choice(elems[1:200]) + upper = random.choice(elems[500:-1]) + + vo = SkipListVO.range_query(sl, lower, upper) + + self.assertTrue(isinstance(vo, SkipListVO)) + + serialized = vo.serialize() + new_vo = SkipListVO.deserialize(serialized, IntElem) + + print 'vo:' + for l in vo.to_list_of_lists(): + print l + + print + print new_vo.root + print 'new_vo:' + for l in new_vo.to_list_of_lists(): + print l + + self.assertEqual(vo, new_vo) + + def test_vo_insert(self): + seed = str(time.time()) + random.seed(seed) + for i in range(0, self.num_iters): + elems = [IntElem(random.randint(0, 100000000)) + for i in range(0, self.size)] + num_elems = self.size + elems.sort() + + for i in range(len(elems)-1): + if elems[i] == elems[i+1]: + elems[i+1] = elems[i+1] + 1 + + orig_elems = elems + + min_elem = IntElem(-1) + max_elem = IntElem(100000001) + + sl = AuthSkipList.new(elems, min_elem, max_elem, RecordedCoin()) + + left = IntElem(random.randint(5, 6000)) + right = IntElem(random.randint(left.key+100, 9000)) + + vo = SkipListVO.range_query( + sl, left, right, PrefixCoin([])) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(elems, [e for e in orig_elems if left<=e<=right]) + + elem = IntElem(random.randint(left.key+1, right.key-1)) + + while elem in orig_elems: + elem = IntElem(random.randint(left.key+1, right.key-1)) + + bisect.insort(orig_elems, elem) + + sl.coin.read() + sl.insert(elem) + + vo.coin.extend(sl.coin.read()) + vo.insert(elem) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(sl.root.label, vo.root.label) + self.assertEqual(elems, [e for e in orig_elems if left<=e<=right]) + + def test_vo_insert_many_seeded(self): + seed = str(time.time()) + random.seed(seed) + for i in range(0, self.num_iters): + seed = random.randint(0, 1000000) + + elems = [IntElem(random.randint(0, 100000000)) + for i in range(0, self.size)] + num_elems = self.size + elems.sort() + + for i in range(len(elems)-1): + if elems[i] == elems[i+1]: + elems[i+1] = elems[i+1] + 1 + + orig_elems = elems + + min_elem = IntElem(-1) + max_elem = IntElem(100000001) + + sl = AuthSkipList.new(elems, min_elem, max_elem) + + left = IntElem(random.randint(5, 6000000)) + right = IntElem(random.randint(left.key+100, 9000000)) + + vo = SkipListVO.range_query(sl, left, right) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(elems, [e for e in orig_elems if left<=e<=right]) + + new_elems = [IntElem(random.randint(left.key+1, right.key-1)) + for i in range(20)] + + sl.coin = SeededCoin(seed) + vo.coin = SeededCoin(seed) + + for elem in new_elems: + sl.insert(elem) + + for elem in new_elems: + vo.insert(elem) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(sl.root.label, vo.root.label) + + def test_vo_insert_many(self): + seed = str(time.time()) + random.seed(seed) + for i in range(0, self.num_iters): + elems = [IntElem(random.randint(0, 100000000)) + for i in range(0, self.size)] + num_elems = self.size + elems.sort() + + for i in range(len(elems)-1): + if elems[i] == elems[i+1]: + elems[i+1] = elems[i+1] + 1 + + orig_elems = elems + + min_elem = IntElem(-1) + max_elem = IntElem(100000001) + + sl = AuthSkipList.new(elems, min_elem, max_elem, RecordedCoin()) + + left = IntElem(random.randint(5, 6000000)) + right = IntElem(random.randint(left.key+100, 9000000)) + + vo = SkipListVO.range_query( + sl, left, right, PrefixCoin([])) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(elems, [e for e in orig_elems if left<=e<=right]) + + new_elems = [IntElem(random.randint(left.key+1, right.key-1)) + for i in range(20)] + + sl.coin.read() + + for elem in new_elems: + sl.insert(elem) + + vo.coin.extend(sl.coin.read()) + + for elem in new_elems: + vo.insert(elem) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(sl.root.label, vo.root.label) + + def test_vo_insert_commutes(self): + seed = str(time.time()) + random.seed(seed) + for i in range(0, self.num_iters): + elems = [IntElem(random.randint(0, 100000000)) + for i in range(0, self.size)] + num_elems = self.size + elems.sort() + + for i in range(len(elems)-1): + if elems[i] == elems[i+1]: + elems[i+1] = elems[i+1] + 1 + + orig_elems = elems + + min_elem = IntElem(-1) + max_elem = IntElem(100000001) + + sl = AuthSkipList.new(elems, min_elem, max_elem, RecordedCoin()) + + left = IntElem(random.randint(5, 6000)) + right = IntElem(random.randint(left.key+100, 9000)) + + vo = SkipListVO.range_query( + sl, left, right, PrefixCoin([])) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + elem = IntElem(random.randint(left.key+1, right.key-1)) + + while elem in orig_elems: + elem = IntElem(random.randint(left.key+1, right.key-1)) + + bisect.insort(orig_elems, elem) + + sl.coin.read() + sl.insert(elem) + + new_vo = SkipListVO.range_query(sl, left, right, PrefixCoin([])) + + vo.coin.extend(sl.coin.read()) + vo.insert(elem) + + try: + elems = vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(sl.root.label, vo.root.label) + self.assertEqual(elems, [e for e in orig_elems if left<=e<=right]) + + try: + elems = new_vo.verify(left, right, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + self.assertEqual(sl.root.label, vo.root.label) + self.assertEqual(elems, [e for e in orig_elems if left<=e<=right]) + + self.assertEqual(vo, new_vo) + + def test_different_single_insert(self): + for i in range(0, self.num_iters): + print + print i + orig_seed = random.randint(0, 10000000) + elems = [IntElem(random.randint(0, 100)) for i in range(0, 5)] + elems.sort() + sl = AuthSkipList.new(elems, IntElem(elems[0].key-1), + IntElem(elems[-1].key+1), + SeededCoin(orig_seed)) + + new_elem = IntElem(random.randint(elems[1].key, elems[-2].key)) + min_ne = elems[1] + max_ne = elems[-2] + + vo = SkipListVO.range_query(sl, min_ne, max_ne) + + try: + ret_elems = vo.verify(min_ne, max_ne, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + seed = random.randint(0, 1000000) + vo.coin = SeededCoin(seed) + sl.coin = SeededCoin(seed) + + self.assertEqual(vo.root.label, sl.root.label) + + vo.insert(new_elem) + sl.insert(new_elem) + + self.assertEqual(sl.root.label, vo.root.label) + + def test_multiple_inserts(self): + for i in range(0, self.num_iters): + orig_seed = random.randint(0, 10000000) + elems = [IntElem(random.randint(0, 100000000)) + for i in range(0, 100)] + elems.sort() + sl = AuthSkipList.new(elems, IntElem(elems[0].key-1), + IntElem(elems[-1].key+1), + SeededCoin(orig_seed)) + + new_elems = [IntElem(random.randint(elems[1].key, elems[-2].key)) + for i in range(0, 10)] + min_ne = min(new_elems) + max_ne = max(new_elems) + + vo = SkipListVO.range_query(sl, min_ne, max_ne) + + try: + ret_elems = vo.verify(min_ne, max_ne, sl.root.label) + except VerificationObjectException as e: + self.assertTrue(False, 'Error: %s' %e.msg) + + seed = random.randint(0, 1000000) + vo.coin = SeededCoin(seed) + sl.coin = SeededCoin(seed) + + self.assertEqual(vo.root.label, sl.root.label) + + for elem in new_elems: + vo.insert(elem) + sl.insert(elem) + self.assertEqual(sl.root.label, vo.root.label, 'failed on index %d' %new_elems.index(elem)) + + self.assertEqual(sl.root.label, vo.root.label) diff --git a/pace/ads/skiplist/vonode.py b/pace/ads/skiplist/vonode.py new file mode 100644 index 0000000..9230ee0 --- /dev/null +++ b/pace/ads/skiplist/vonode.py @@ -0,0 +1,345 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Node class for VOs +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 28 Jul 2014 ZS Original file +## ************** + +from base64 import b64encode, b64decode +from collections import deque +import bisect + +from pace.ads.skiplist.authnode import AuthNode + +class VONode(AuthNode): + + def __eq__(self, other): + + if not isinstance(other, VONode): + return False + + if self.right != other.right: + return False + + if self.down != other.down: + return False + + if self.elem != other.elem: + return False + + return True + + def __ne__(self, other): + return not self.__eq__(other) + + def search(self, elem): + """ Search the SkipList for node containing an element that is + either equal to elem (if elem is in the list) or the closest + element in the list that is less than elem (if elem is not in the + list) + + Argument: + elem - the element to be searched for + + Returns: + visited - a collection of nodes visited, stored in reverse order + current - the closest node in the base list that is less than or + equal to elem + """ + + current = self + visited = deque([]) + + while (isinstance(current.right, type(self)) and + current.right.elem <= elem): + visited.appendleft((current, False)) + current = current.right + + while current.down: + visited.appendleft((current, True)) + current = current.down + while (isinstance(current.right, type(self)) and + current.right.elem <= elem): + visited.appendleft((current, False)) + current = current.right + + return visited, current, bisect.bisect(current.elem, elem) + + def serialize(self): + """ Return the current VO node as a string that can be sent over the + network and reconstructed on the other side. + + Should obey the property that VONode.deserialize(n.serialize) == n + and (VONode.deserialize(s)).serialize == s (for all n and s) + """ + + if self.down is None: + s_down = '{}' + elif not isinstance(self.down, VONode): + s_down = b64encode(self.down) + else: + s_down = self.down.serialize() + + if self.right is None: + s_right = '{}' + elif not isinstance(self.right, VONode): + s_right = b64encode(self.right) + else: + s_right = self.right.serialize() + + if isinstance(self.elem, list): + ser_elem = '[%s]' %('~'.join([elem.serialize() for elem in self.elem])) + else: + ser_elem = self.elem.serialize() + + serialization = '(%s)' %(','.join([str(self.tower), + s_down, + s_right, + ser_elem])) + return serialization + + @staticmethod + def deserialize(vo, node, elemClass): + """ Return the current VO node as a string that can be sent over the + network and reconstructed on the other side. + + Should obey the property that + VONode.deserialize(n.sl, n.serialize) == n + and + (VONode.deserialize(sl, s)).serialize == s (for all n and s) + """ + here, _ = VONode.deserialize_helper(vo, node, 0, elemClass) + return here + + @staticmethod + def deserialize_helper(vo, node, k, elemClass): + # TODO: remove the recursion (probably by making dummy nodes & + # backpatching them in with a loop?) + + if node[k:k+2] == '{}': + return None, k+2 + + elif node[k] != '(': + # Must be a base64 encoding, so look for the ',' that delimits it + i = node.find(',', k) + return b64decode(node[k:i]), i + + # Otherwise, it's a full node + i = k+1 + + if node[i:i+4] == 'True': + tower = True + i = i + 4 + elif node[i:i+5] == 'False': + tower = False + i = i + 5 + else: + raise VerificationObjectException( + 'first element of serialized node must be True or False') + + if node[i] != ',': + raise VerificationObjectException( + 'commas must separate serialized node elements (1 & 2)') + + i = i + 1 + + down, i = VONode.deserialize_helper(vo, node, i, elemClass) + + if node[i] != ',': + raise VerificationObjectException( + 'commas must separate serialized node elements (2 & 3)\nfound "%s" instead' %node[i]) + + i = i + 1 + + right, i = VONode.deserialize_helper(vo, node, i, elemClass) + + if node[i] != ',': + raise VerificationObjectException( + 'commas must separate serialized node elements (3 & 4)\nfound "%s" instead' %node[i]) + + i = i + 1 + + if node[i] == '[': + # it's a leaf list + i = i + 1 + j = node.find('])', i) + elem = [elemClass.deserialize(x) for x in node[i:j].split('~')] + i = j+2 + + else: + j = node.find(')', i) + elem = elemClass.deserialize(node[i:j]) + i = j+1 + + here = VONode(vo, down, right, elem) + here.tower = tower + + return here, i + + @staticmethod + def newnode(vo, down, right, elem, assign_label=False): + if isinstance(down, str) and isinstance(right, str): + return AuthNode.chash(down, right) + elif isinstance(down, str) and right is None: + return down + elif isinstance(right, str) and down is None: + return right + elif down is None and right is None: + return super(VONode, VONode).newnode( + vo, None, None, elem, assign_label) + + if not isinstance(down, VONode): + node = super(VONode, VONode).newnode( + vo, None, right, elem, assign_label) + node.down = down + else: + node = super(VONode, VONode).newnode( + vo, down, right, elem, assign_label) + down.tower = True + + return node + + def verify(self, lower, upper): + """ Verify that a node (including its subtree) is correct, recursively + assigning labels along the way + """ + # TODO: recursion won't work for nontrivial cases in python; + # rewrite iteratively at some point + node = self + + if node.down is None: + if node.right is not None: + raise VerificationObjectException( + 'Malformed VO: base VO nodes have no children') + if len(node.elem) < 2: + raise VerificationObjectException( + 'Malformed VO: base element list must have at least 2 elements') + + for i in range(len(node.elem)-1): + if node.elem[i] > node.elem[i+1]: + raise VerificationObjectException( + 'Malformed VO: elements in base must be in order') + + if node.elem[-1] < lower: + raise VerificationObjectException( + 'Malformed VO: element out of range (less than minimum)') + + # Don't want to check if right end is greater than maximum---might + # have returned a base list whose first element is in the range, + # but whose next element is the right boundary element + if node.elem[0] > upper: + raise VerificationObjectException( + 'Malformed VO: element out of range (greater than maximum)') + + node.label = reduce(AuthNode.chash, + [AuthNode._hash(x.serialize()) + for x in reversed(node.elem)]) + + return node.elem + + # If it's not a base element (and therefore has a lower neighbor) + else: + if node.right is None: + + if isinstance(node.down, VONode): + if node.down.down and node.elem != node.down.elem: + raise VerificationObjectException( + 'Malformed VO: element of lower node must be same as parent') + elif (node.down.down is None and + node.elem != node.down.elem[0]): + raise VerificationObjectException( + 'Malformed VO: first element of leaf list must be same as parent') + down_elems = node.down.verify(lower, upper) + node.label = node.down.label + + return down_elems + else: + raise VerificationObjectException( + 'Malformed VO: Branch not collapsed when it should have been (right neighbor None)') + + else: + if not (isinstance(node.down, VONode) or + isinstance(node.right, VONode)): + raise VerificationObjectException( + 'Malformed VO: Branch not collapsed when it should have been (neither neighbor VOnode)') + + down_elems = [] + right_elems = [] + + down_label = node.down + right_label = node.right + + if isinstance(node.down, VONode): + if node.down.down and node.elem != node.down.elem: + raise VerificationObjectException( + 'Malformed VO: element of lower node must be same as parent') + elif (node.down.down is None and + node.elem != node.down.elem[0]): + raise VerificationObjectException( + 'Malformed VO: element of lower node must be same as parent') + + down_elems = node.down.verify(lower, upper) + down_label = node.down.label + elif lower <= node.elem <= upper: + # This branch definitely should have been returned! + # This check keeps a malicious server from omitting + # branches in the middle of a range. + raise VerificationObjectException( + 'Malformed VO: branch omitted that should not have been') + + + if isinstance(node.right, VONode): + if node.right.elem < node.elem: + raise VerificationObjectException( + 'Malformed VO: elements on right must be >= elements on left') + + right_elems = node.right.verify(lower, upper) + right_label = node.right.label + + # Cut off the overlap, if it exists + if down_elems: + down_elems = down_elems[:-1] + + node.label = AuthNode.chash(down_label, right_label) + + return down_elems + right_elems + + def assign_label(self): + """ VOs have a different structure than skiplists, so their label + assignment algorithm is completely different. If a node has a + right neighbor, then that node must have been a plateau node; if + not, then its right neighbor must have been a tower node. + """ + + if self.down is None: + self.label = reduce(AuthNode.chash, + [AuthNode._hash(x.serialize()) + for x in reversed(self.elem)]) + return + + if isinstance(self.down, VONode): + down_hash = self.down.label + else: + down_hash = self.down + + if self.right is None: + # Just assign the bottom hash, since the right neighbor was a + # tower node + self.label = down_hash + return + + if isinstance(self.right, VONode): + right_hash = self.right.label + else: + right_hash = self.right + + self.label = AuthNode.chash(down_hash, right_hash) + return + +class VerificationObjectException(Exception): + def __init__(self, msg): + self.msg = msg diff --git a/pace/common/__init__.py b/pace/common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/common/common_utils.py b/pace/common/common_utils.py new file mode 100644 index 0000000..d3a66f8 --- /dev/null +++ b/pace/common/common_utils.py @@ -0,0 +1,202 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH, SS +## Description: Common utility functions for testing the code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 20 Jan 2015 ATLH Original file - based on sign_utils +## 15 Dec 2015 SS Added functionality of data generation +## ************** +""" Utility functions for testing PACE software with rows written to + Accumulo. + Any randomized test should use the same seed so that they are equivalent. +""" + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import copy +import time, datetime +import string + +from pyaccumulo import Range + +class Timer(object): + """ + Timer that works with python's 'with' syntax + measures the time taken in seconds and milliseconds + """ + #modified from http://www.huyng.com/posts/python-performance-analysis/ + def __enter__(self): + self.start = time.clock() + return self + + def __exit__(self, *args): + self.end = time.clock() + self.secs = self.end - self.start + self.msecs = self.secs * 1000 # millisecs + +def generate_data(filename, + seed, + vis=False, + default_vis="default", + vis_in_value=False, + num_entries=50000, + num_rows=1000, + vis_length=9, + row_length=9): + """ Generate a tab-delimited text file with five columns: + row, col fam, col qual, col vis, value + + keyword arguments: + filename - name of file to which the data will be written + seed - a string to be used as the seed for the random number generator + visibility - if True, random column visibilities are added. If False, + the default visibility string is added. (default False) + default_vis - the default visibility string to use if 'visibiilty' is + set to False. (default "default") + vis_in_value - if True, a random "column visibility" is generated, but + this is appended to the value rather than column visibility. If + True, the param vis is treated as False. + num_entries - Number of entries written. + num_rows - Number of rows in the data written. + vis_length - The length (in chars) of the random col visibility added + (true length will be this + 2) + row_length - Number of chars in each row ID. Numbers are zero padded to + reach this length. + """ + + # seed RNG + random.seed(seed) + + rows = map(lambda x: str(x).zfill(row_length), \ + random.sample(xrange(10 ** row_length), num_rows)) + unused_rows = copy.deepcopy(rows) + + def generate_entry(): + """ Helper function for generate_data that returns a single entry + which will form a single line of the data file + """ + + def generate_field(length=row_length): + """ Generates a single field (row, col fam, or col qual) randomly + """ + return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(length)) + + def generate_row(): + """ Generates a single rowID from the list of rows. On successive + calls, ensures each rowID is used at least once, but makes no + other guarantees about how many times each rowID is used + """ + return unused_rows.pop() if unused_rows else random.choice(rows) + + def generate_colvis(): + """ Generates a single column visibility (either the default or a + random value) + """ + return default_vis if (vis_in_value or not vis) \ + else generate_field(vis_length).zfill(vis_length) + + def generate_value(): + """ Generates a random value, accounting for vis_in_value """ + val = generate_field() + return val + generate_field(vis_length).zfill(vis_length) if vis_in_value else val + + return generate_row() + "\t" + \ + generate_field() + "\t" + \ + generate_field() + "\t" + \ + generate_colvis() + "\t" + \ + generate_value() + "\n" + + # Open file and generate data + with open(filename, "w") as f: + for i in range(num_entries): + f.write(generate_entry()) + +def sanitize(string): + """ Turns '-' into '_' for accumulo table names + """ + return string.replace('-', '_') + +def get_single_entry(conn, table, row=None, cf=None, cq=None): + """ Get the single entry with the given key fields (row, column + family, and column qualifier) from an Accumulo database. + + Returns: + + None if no entries were found + The found entry if exactly one was found + Raises an assertion error if more than one entry was found + """ + + if cf is None: + assert cq is None + cols = None + elif cq is None: + cols = [[cf]] + else: + cols = [[cf, cq]] + + candidates = conn.scan(table, Range(srow=row, erow=row), cols=cols) + + try: + first = next(candidates) + except StopIteration: + # No candidates; return None + return None + + try: + more = next(candidates) + assert False # only supposed to have one result + except StopIteration: + return first + +def entry_exists(conn, table, row, cf=None, cq=None): + """ Check to see if at least one entry with the given information + exists in the given Accumulo table. Takes at least a row, + and possibly a column family & qualifier as well. + + Arguments: + + conn : Accumulo - a connection to the Accumulo instance to check + table : string - the name of the table to check + row : string - the name of the row to look for within the given table + cf : optional string - the column family to look for, if desired + cq : optional string - the column qualifier to look for, if desired + + Returns: + + bool - whether there is at least one entry in the given connection with + the given fields + + Assumptions: + + - The given table exists on the connection + - If cf is not specified/None, then neither is cq + """ + + if cf is None: + assert cq is None + cols = None + elif cq is None: + cols = [[cf]] + else: + cols = [[cf, cq]] + + candidates = conn.scan(table, Range(srow=row, erow=row), cols=cols) + + try: + first = next(candidates) + except StopIteration: + # Nothing found + return False + else: + # Something found + return True + diff --git a/pace/common/fakeconn.py b/pace/common/fakeconn.py new file mode 100644 index 0000000..10f2e8b --- /dev/null +++ b/pace/common/fakeconn.py @@ -0,0 +1,186 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Code to simulate an Accumulo connection, for testing +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 25 Nov 2014 CS Original file +## 7 Jan 2015 ATLH Changed FakeEntry to Cell +## ************** + +from collections import namedtuple + +Cell = namedtuple("Cell", "row cf cq cv ts val") + + +class FakeWriter(object): + def __init__(self, table, conn): + self.table = table + self.conn = conn + self.mutations = [] + + def close(self): + for m in self.mutations: + self.conn.write(self.table, m) + self.mutations = [] + + def add_mutation(self, m): + self.mutations.append(m) + +class FakeConnection(object): + """ Something that acts like an Accumulo connection, for testing. + """ + + def __init__(self): + self.db = {} + + def write(self, table, mut): + try: + tdict = self.db[table] + except KeyError: + raise Exception('Table %s not in database' %table) + + row = mut.row + + try: + rdict = tdict[row] + except KeyError: + rdict = {} + tdict[row] = rdict + + for u in mut.updates: + col = u.colFamily, u.colQualifier, u.colVisibility, u.timestamp + + if u.deleteCell: + del rdict[col] + else: + rdict[col] = u.value + + def table_exists(self, table): + return table in self.db + + def create_table(self, table): + if table not in self.db: + self.db[table] = {} + else: + raise Exception('Table %s already in database' %table) + + #TODO: table deletion + + def aggregate_db(self): + out = {} + + for table_name, table_contents in self.db.iteritems(): + tmp = [(row, rdb.items()) + for row, rdb in table_contents.iteritems()] + for row, relems in tmp: + contents = [Cell(row, cf, cq, cv, ts, val) + for (cf, cq, cv, ts), val in relems] + out[table_name] = contents + + return out + + def create_batch_writer(self, table): + return FakeWriter(table, self) + + @staticmethod + def in_range(row, cf, cq, cv, scanrange): + if scanrange.srow is not None and scanrange.erow is not None: + if not scanrange.srow <= str(row) <= scanrange.erow: + return False + + if scanrange.scf is not None and scanrange.ecf is not None: + if not scanrange.scf <= str(cf) <= scanrange.ecf: + return False + + if scanrange.scq is not None and scanrange.ecq is not None: + if not scanrange.scq <= str(cq) <= scanrange.ecq: + return False + + if scanrange.scv is not None and scanrange.ecv is not None: + if not scanrange.scv <= str(cv) <= scanrange.ecv: + return False + + return True + + @staticmethod + def _matches_cols(cf, cq, cols): + """ See if the given column family & qualifier are in the + given set of columns. Written to match pyaccumulo + functionality as closely as possible. + """ + if not cols: + # Nothing specified (either None or []), so just return True + return True + + for col in cols: + assert len(col) > 0 + if col[0] == cf: + if len(col) > 1: + if col[1] == cq: + return True + else: + continue + else: + return True + + # No matches found + return False + + + def scan(self, table, scanrange=None, cols=None): + """ Scan a table, either in its entirety or over a given range. + + Arguments: + + table : string - the name of the table to scan + scanrange : pyaccumulo.Range - the range of rows to scan. + It is important to note that, while the pyaccumulo Range + object can contain start & end column fields, as well, it + seems to ignore those, so we also ignore them. + cols : optional [[string]] - a list of column family/qualifier + lists. This does not seem to be formally documented in + pyaccumulo, but seems to work as follows: + - If it is None or [], return all entries in `table` + matching `range` + - If it is nonempty, treat each element as a specification + of which column to return. Each element should be + a nonempty list, where the first element is treated + as the column family and the second element, if any, + is treated as the column qualifier, further refining + its paired column family. + + For example, the `cols` value [['foo', 'bar']] would + match a cell with the column family 'foo' and column + qualifier 'bar', but not one with column family 'foo' + and column qualifier 'baz', nor would it match one + with column family 'qux' and column qualifier 'bar'. + The `cols` value [['foo', 'bar'], ['baz']], however, + would match a cell with column family 'foo' and + column qualifier 'bar', as well as a cell with column + family 'baz' and any column qualifier. + """ + if scanrange is not None: + for row, rdb in self.db[table].iteritems(): + for (cf, cq, cv, ts), val in rdb.iteritems(): + if FakeConnection.in_range(row, cf, cq, cv, scanrange): + if self._matches_cols(cf, cq, cols): + yield Cell(row, cf, cq, cv, ts, val) + else: + for row, rdb in self.db[table].iteritems(): + for (cf, cq, cv, ts), val in rdb.iteritems(): + if self._matches_cols(cf, cq, cols): + yield Cell(row, cf, cq, cv, ts, val) + + def _scan(self, table, scanrange=None): + """ Helper function for scan() that returns a generator + NB: deprecated, since scan() is supposed to return a generator + after all + """ + return self.scan(table, scanrange) + + + def list_tables(self): + return self.db.keys() diff --git a/pace/common/pacetest.py b/pace/common/pacetest.py new file mode 100644 index 0000000..4aabca8 --- /dev/null +++ b/pace/common/pacetest.py @@ -0,0 +1,36 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: test case class for PACE project tests +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 13 Jan 2015 CS Original file +## ************** + +import random +from unittest import TestCase + +DEFAULT_NUM_ITERS = 5 +DEFAULT_SIZE = 100 + +class PACETestCase(TestCase): + """ Subclass of TestCase with some convenient constants built-in. + """ + + def __init__(self, *args): + super(PACETestCase, self).__init__(*args) + + self.num_iters = DEFAULT_NUM_ITERS + self.size = DEFAULT_SIZE + + def generate_elems(self, min_elem=0, max_elem=1000000000, size=None): + """ Generate up to size unique integers between + min_elem and max_elem. + """ + if size is None: + size = self.size + ints = (random.randint(min_elem, max_elem) + for _ in range(size)) + return set(ints) diff --git a/pace/encryption/.demo_commands.txt.swp b/pace/encryption/.demo_commands.txt.swp new file mode 100644 index 0000000000000000000000000000000000000000..19229e994f19d73b0e74ad0b9cab327a48d87d83 GIT binary patch literal 12288 zcmeI2v2Pqj6voFCflEk0A?YYyFw)s#Z3kZvO5}@Vn@Cu(6AKbkq1D{(-0j4BGpCtZ zpN|4kP=aUxk%oqXjxv7$5~NBKQ6WSTMWUmlhHv)HKHEC`h*N>)tl!=3?#!F_zIpGh zPTt1Fjg>Wed$z{#dYQ31ub!xTJ||RSdL1WmoQk%N6WwlemD*Xi?Z(>R{DDWRtfTxTtpJ42R=ixm5|G)G5|F@SI`w@Hv zGSC8RU>;0?Kh7}rJ9r4b1NT4&w7>>f1ry-!(~SKEo`7G$58!L?8CV6Uz=IbV`x$%> zz69660(b*l08dUa_6U3mVsHXHJjvL7un8LACYS@Sg0tX3g|VN&eb5CTg3I8~7a02- z+yLjnIq(Rve*wG(8(xR-3JL@Tf&xK-puq7I=*m1Np==>21x}O81WDzD;fa67jk?lh z^iI)k_tvkkkZ#-&iJN6TT~Nli${9vTC7tBC{0PUG-r1Bp1L-DCn69)UBI^uSEkVK< zZ7jR7bcI%$ zqKiBw*`%%@Oid}_NhVcmIwEaKncjl14UuqMCFvliB_+DFDSCbXq{52ssIXG*cpYygQGI5iu8SVM2fGRPxx^~R z7QW_%kB}Hj)%{xyt}XPR%Dl=dNFH9e%+gHZwKg?Yu?J7lj3pj5q9jTqF>=a+%|xEV z+%dAMTy=zxEu_4QOXqes@_4HD6R(V&>eT7+Bq`cOu4fkqU#2o`UA>w^?A(8?MjdTj z{n9-CBJW?l+}aw>b8EZWr1dJ27UhF|zO8)m_zFyM3XivzwWkY5Mz%8NlhTe9=JDNc z9^bvUujFvb=VQm9jo@84*YiUT*5I=2pfxzL?WmFKZqfO-_75rPVLDh}oimOW%8q~y z-M6#*%IZ+}y~kyF9Z^~rx$L0uYX;~|0bUx@I(`?aMmbt}Udl=A{n8qgIHYszm_$|VHhiczF7t*fR-Qgp4tIYi z9m+dqDw|DV{GDL)fY*|XVY)hY0{Epm6rQ%U6iQn}4+yvn4amFg*6D6iA%cPkNeU578=9sZ(#rCBXA`Gh+wo7x zLMazGQV9tT+$si**slk_2dfFRsS$S2Qz_RPfK4np1_WWE-MEZ_y*LtKsBDDE!9OV1<* z`=>@m$NQ&Diy3}1n)lp(AMt+XT0zr~Y@`u28gXRugb}eY(*0&{^GZT7pcv@Nz;-fF zDevbZeY@|cyY8ClDy<3?1BwB~fMP%~pcqgLC|Dl&4AcPz)#r6a$I@#eiZ!F`yVw3@8Q^1BwB~fMVc3V8Fye zp0EAi@2z&sX17e^GJPOij<{I-RVUx6#Y`@q|P1?&Va zZ6@Sn;4R=K;1S>f;6C8mErfgvoCWH@0I&=AeG?%+13v=a0q22bU>Z08Tm|tLfH#3< zzyY2Bb_4eS-=I%Kzld=`(;zQKP&=g2Jfor6VAM?FUSQAJuIUgde3V6T;D*$$3t7hw zBkI+uv=LH2@M^KeYP8ycYZD=KE%fuM$t zSXSJK9dA6jexe(e=hp2xBl3*&Mv4~{(mdY`a3Q9YnP{1%!!%@0UH4DfS!tV+9x$_3 z_ftzPFWQ7)WmMEYB`VVMi9(_yIJ00ZVlDrSnr%e|?m&qq28%=BCiA3AM0hQ3+n{ps z%!EZs_v5IrWI8C-@EFu`uJgVV5LG;6(8Kg zTqw(KXW<51O-xU&>FD|#%toyk6-JG5e}(JD>f+S=A?92 zo9i;wvXD_O+{3#D{js>wXr?bOu8U1QHIcq46rqpKg!nk}mm_7aXBeEhn4?8aY0)O@paV<#g${K~rXAL^~yt=(V1zG?j7#6E5R^B}x)`P?OB z(Tp#qDwx_4%Q3@{;_HnUIkqrWWyf&aw-CE_B(DAP)TkLUE=%fx*P#5Wu-^J6<)Q{# zwwSm-jOlK}_kxHUPOlV?%d!$3V=FRyn&y8ssm+!DH>+!#mL(@>Qnh2Mxw;~=wZGXqmy0@fA^NSzb<6*8R1Z(#zHHw z#dsZ}GZ^rckNA+*y@2w6Y0MyMj0(|_7|Wg@91@O-oT0$hVn8vV7*Gr-1{4E|0mXn~Krx^gPz>D64Dj_UNf)v5nVcD5 ze})CoxHy^%eaDUr9M#0EG>Zctt%SoK?PP0zJ|}>sd%97f=W>l|(@3_U#daV+Sc+Lo zf90w+LbZ>LUP4;q&?wRCFXluJ`cKWub zd+hGHy@6a5Q7*nHXcPn=5+W!$QBm-eLkNipK?sR?2qE|oi29%*f-gs+kbJAUs%Ls; zyJptAhtqV+=lb8TdVck-Use68w_VwB=fXaEW9@o^?NUMxU30p3z$CeT*UlZnZtK)F^zzFNj4o1IlnRszlnRszlnRszlnRszlnRszd~Os- z+FQuIsLd8tqgAy(XJG#Yb-t|j&4K&swA_^nlnRszlnRszlnRszlnRszlnRszlnRsz zlnR`M3NV+DN%-|!vEaww|MmL+UzZT_26zel3^c(3uoFyz_wb3pTi{RNci<#=5F7-z zfSbV#px|oo0e<9FZ~`0$N5D2v1ry-yiwJoh90LxhfUV$@3kmr%cp4l9-v?KLuYglu z!taA;!F}K+@bLwNJO_@0W8iM^bua;b^F>1L1&iR@pb93y+vgMV7?=MwS_MA=O^HQ&qCP!uCcs-0<+6W^mF3dSj zr`7R8>IHGa0>|XO%NwlY!?Tz>5l;*i*jz=mQ|7AnS&dQAW*8>{YjGMjK7Bp?&|$uK z(iy9&cFSDVKC3aRDn3b)RZT(>jsbTPio*?Cm#%wB(-5Iq6Gvfq=4vfGG}l;Jj8WTm z7|H65tZ5h+>X~%gyzT{wsSm1PzhM{tJ7WPL+&4?1EDEKdazg_{GeZs2J|DNa<2AZ6 z7!tPPbM$k0!gRlP8LqRK(;pQ6V#M$1coBE&%Tb3HE4H~#FTF7*8n3o-2z&$7K`Jit25%bZ+k*_WZ4TssKf4A*MT&4 znjAx&s(EokI?d2?cwC=b{O11K7nX0^cSmiFcQN7BSi8*ww=y-ixHwfUZsKfsSnA48 z6GK~he#ZJoT9py%%Id;qY<<@wFX37-#E1xb`ZduJ0_tKi!&jE0wRd^Kqm~zNy53|7 zO=Cumv~11PeYEO#rRm2swN%qtI8?uGO)E9wF0cp}!PoMHtDE?wH3G9eB4gKOT1ovgLyfk(s7hnb&3!2F*rj z(T+lq41T7RP(GV==ow`SSj(cRMZVEDCOM&tj)H81G8%P)zzbG;$tLoF!#v7z&YD$C z!z0adk(49HmB+O?mFzCbEFB|e>_ndYCc0iBhziT}x`fo9u~P`L&V^kEod(YTdv%WafW zagpxYLBGWU>~`*^bZ&X^Hr$~5BX89Um`}x1rP+3D;*Q+X6Y;O!q|G-N##g<4N95gf zU+8)b&yfowY14lpo=uDOnsb(lD2it?`6*jP(;~2Z?=Z(`tJW#9+*}7=$wx6JPIxV^ zEJfiVB)+p$d`d5`%!lnR>e5Wo3hrB2ri)(SgnmF5*-D5NTNrhPWlo!IM6CZG#}e@z ztTV;>U;lmoMXd230Bc}BxB~nQ>-cBD5wHLz!ADrT{}sFmehO@`3tRyHj`jO-@Jk@p z^*4eG!ADrT{{=h+7^s2&V(tD%@E8cd-C!D=!n*xU@N=*Z_JG~sGVp7x-JbwQ0RtBJ zC)Vw+frr3B@Kx|{tk*vPC&2yS0Jsip0b&jRd+;py9+(D~gHu?qzYgvP`@z-VL#)$Z z1`mV#z#_O3ybtYu1)cy5d>2%J1ugklG6->@}aU#dAv`l)T zS7u|eR{d}VIY6a4P37twM@Dg^xS5WFvKo>DSrGr^)h*7gwS8XW(e^`1k1m3r*jVr3 zqSlzI=S!-&O*EF19H|gpH~mIU-8Y7^T#Tt`z`V!|6>mfcP`kVB7SapH@d3 z*?n?BU~*%q`Ax>B+t1SX261h?OtLtA?B$pyZ>89UGH)WY9J43oG#}lIhLj&&q)`9i JqMzg0?tf=xuY3Ri literal 0 HcmV?d00001 diff --git a/pace/encryption/.encryption_pki.py.swp b/pace/encryption/.encryption_pki.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..4329c113847b0a3a7e98b24c76c3dee27e9d5ddd GIT binary patch literal 16384 zcmeHNTZklA89o|a*Th`BEO8-i$h7622nVH=TyR$pYjGJAPrE#VS&N|g#`)=6c#8fP*|X_!2gj2bax;7 z6!dv>tdolGZyLD&GrnY8etw|-T3ml7F8}F3{cCakW?Wv1J4pI@HLhQX>w5$Bx5VX1 z{pErBxVpF%7AP!GSfH>#VS&N|g#`)=6c#8fP*|X_Kw*Kx0z)hy>WqCD<=1FGjsO3X z{r_L?Wb8-4v%pt?9pDTw58MU(@eam*30whw47>nb0&HLvSOF%1eZb4NGxlxZDZm5P zfOi5fzk{)tfXhG|*a7Ya4gi0@jj_K1mw{)2OTeSRL%suLn0+2uzCc9l>+x^f1I19`IGr(=Yt-zn&#@JQhSHSbYw}3AIr-1{&m3@po13U?Q9{Tz4^cma4ExCHD1hk;k$!r1qL$AQlR9|w*Ahky?PFX3S0dElGC6Ts(y z$AHfO8^8)M1H6I*nx}yda11w_sdmKbnmhj2my#_zMwq-A!ICg4tZTtT9Ek2ZNfk>%An8x5HAO) zcAFJ`QgkGT*!{|k1)#S18YWS3$!~@o7$I0lnNCbhnCH4|@TSyuYE>JCDhIONsP=i| zF)?%{Vqw~*%(^1zi<@xf@s(21dzs`?^$hO{*I~CUt-QsDTbg|62$xJ;lkjHf*2$;j zg|wGVp#qsvG_5e*uX}+W42jV~Rrv)t0$=%5QZAcPhrTSG$rc z*J+1!$!nf&foHcZluOf#VWV5Z<(@0ed=qtz3CZzXS2~&!e?NZ(VYln~8uIL7_V7X- zG4MD9XkZ4zq(#{>06R0!1eEfFUZ7=%L#(K7x8?Dcz&z4{mazoL8#DtcCu|EJ9R?Ea z-X$rz3bPNCril?I;$H2%5vwIMCQWo|I4C#J!gVCSAbcfiZHZ}ZSGC*JWnU6->m|I5 zT`j)m^27+x6+I@L(oPK_q@fNwq8Evt>T4RGyl;VT!xNIj?13irF^dm&X7av-JGt?s zg(gtDBZV6f7sJUnxf=F`f7(ihX1>JaL2i~8r4y2m6BRlVKBz~rK>p|}8c1zgCX*59UFFNgxg*ol6;Pzq#cVtE5zmyYL)B%l{S%M2sF$d}1l>%tXS*_00+giL|7 zO{I;o(NIm>GoRB2<){#EK_!}XKM|$alBuwCuPaLnyws5hct{uZK&=CG^9Y-Ce2KB^ zHX|dD(P{LV6`D#M6A4~9kUU0-x<#9kX>1e7PDmu#Po*XbbrG{g=}>bgm1NAbQKr4owV zjF7}zI8N9J+aArnQRYcxj4O`I-WDapfp&xBAX{@A-T;+|Gb?&Z#K|PvDy5Um+BjCG zCLytJk+Mmn(XNj=jGGv5CvBE9(Gyc4sU4Y5>T5^l;To?VYqm_^W_#8~SZgZ>+9YI~ zTT6@~fm&UmTbAf{rCTr8z{##FzrvCy#E}=%ocEMlrcp-}RbH~JDa$HVSW=WB1%ZnM zT~3-N@3!4gZE4$x=GYyOAbIoxhVjG?<}NDXd}f-jNQci(&&+eaw0+`!l<`y88z>iX zN<0nSAzV~ruIPn+lgrSoU`!??(Z+$VXJ$D=lP$pNmPA;Qf#WMPEEo8)nQ$qi^v8pl z<2q(g)9%7FS_+Xy{b0d}Y)UqKk0zM~PM^}7l4T@wDALlAcI#`~`~)UdukG>^qDCnM zV~{9wW;w`c|Nqb}j6ICKDDD4~|JQ$TCu5HQ_X2;z9{xEX0A_$!uy?2Z{0>kC{($}Z z*MJ(pfveb;e+l>)@Lu2w_T;|+o&*Bm81Mn${lK5GKmRW981OLg0B|qx9^fa~pT7uv z184z9f&IYGurL22@Br`+?7_bWd=>aKpnwu^4SVn30N()~1#Dmn_&xM|4tNS6oo%4F z3JVk#czrC8ne}L_5(p;SB4*SCA_iP6?LJ- zVtU$eeR?_vS)`xQWXGdrLz#|>7U^d=DP+qSDw%~@B3N?A*&6XMt6u4MG6yb1VOF-( zg*l)x)+b8h-9O?YqH@bIb#vQN8s}2jSq0^IKT6%? zWyNIw;5kO+bWMsnc9f7II*TMyW-9jnj4IztX-dFqjHuYl1nvK0ak7{DxRJA$LlR5F z<6|%V@oZp~u;d>k88Ti+kJMai3K57iZUAkaUB9XLF)N+x9CG6;D(at0%4@&SuNt{a*14ixXNp#Ep<^#93#}= z6LMgwaxUH<4{4VvDwpbDF`r{mCl>Qyv3EpeS|*PXhuOUxX2;_&vzNon&2w;|#axbq zLt4y@$04tU;V_04Btu>c!(j|9YT%HUp_aIFm@g*Ge^dBB;n?!}1Yh6}mP=xf47A5H z0Wpk2;>7emGNcZ}lIO-?k#~lP$}yZlL76wD2}+9Vo0Nf^kvFAr#uyyP8F?*?Gse(j zggeLNkhg=8VT_QXfXEMT6A)tzZ{m=*gW)hri!>;gw>PgJlw)W?c`k2Q', init_ctr[:AES.block_size//2])[0] + int2 = struct.unpack('>Q', init_ctr[AES.block_size//2:])[0] + init_ctr_int = int1 * 2**(AES.block_size*4) + int2 + + if init_ctr is None: + #Generate 64-bit nonce randomly + nonce = Random.new().read(AES.block_size//2) + #Set remaining 64 bits to be a block counter starting at 1 + init_ctr = struct.pack('15s', nonce) + '\x01' + #Compute integer version of initial counter by scaling nonce by + #64 bits and adding 1 + init_ctr_int = struct.unpack('>Q', nonce)[0]*2**(AES.block_size*4)+1 + + ctr = Counter.new(AES.block_size*8, initial_value = init_ctr_int) + cipher = AES.new(key, AES.MODE_CTR, counter = ctr) + return init_ctr + cipher.encrypt(plaintext) + + @staticmethod + def _decrypt(ciphertext, key): + #error handling + Pycrypto_AES_Base._has_iv_material(ciphertext) + try: + nonce = struct.unpack('>Q', ciphertext[:AES.block_size//2])[0] + block_ctr = struct.unpack( + '>Q', + ciphertext[AES.block_size//2 : AES.block_size])[0] + init_ctr = nonce * 2**(AES.block_size*4) + block_ctr + except ValueError: + raise DecryptionException("Value for the start counter value is not an integer.") + + ctr = Counter.new(AES.block_size*8, initial_value = init_ctr) + cipher = AES.new(key, AES.MODE_CTR, counter = ctr) + return cipher.decrypt(str(ciphertext[AES.block_size:])) + + +class Pycrypto_AES_GCM(Pycrypto_AES_Base): + ''' + Galois Counter Mode + Wrapper for pycrypto's AES implementation. + Keys must be 16, 24, or 32 bytes long. + + Nonce is needed, should not be used again + with the same key but does not need to be + random. + + Authenticated mode of encryption, generates + a digest and raises a ValueError if the + ciphertext and digest to do not verify. + ''' + + name = 'Pycrypto_AES_GCM' + + @staticmethod + def _encrypt(plaintext, key, iv=None): + #Deal with the case when field is empty + if plaintext is None: + plaintext = '' + if iv is not None and len(nonce) != AES.block_size: + raise EncryptionException('IV size must equal cipher block size') + if iv is None: + iv = Random.new().read(AES.block_size) + cipher = AES.new(key, AES.MODE_GCM, nonce = iv) + (cipher_text, digest) = cipher.encrypt_and_digest(plaintext) + return iv + cipher_text + digest + + @staticmethod + def _decrypt(ciphertext, key): + #error handling + Pycrypto_AES_Base._has_iv_material(ciphertext) + + nonce = ciphertext[:AES.block_size] + digest = ciphertext[-AES.block_size:] + cipher = AES.new(key, AES.MODE_GCM, nonce = nonce) + cipher_text = str(ciphertext[AES.block_size:-AES.block_size]) + return cipher.decrypt_and_verify(cipher_text, digest) + +class Pycrypto_AES_SIV(Pycrypto_AES_Base): + ''' + Synthetic IV + + Wrapper for pycrypto's AES SIV implementation. + Deterministic mode of encryption, so no nonce + used. + + Keys must be either 32 bytes or 64 bytes long. + The message does not need to be padded to a + multiple of 16 bytes. + + Authenticated mode of encryption, generates + a digest and raises a ValueError if the + ciphertext and digest do not verify. + ''' + + name = "Pycrypto_AES_SIV" + + @staticmethod + def _encrypt(plaintext, key): + if plaintext is None: + plaintext = '' + cipher = AES.new(key, AES.MODE_SIV) + cipher_text, digest = cipher.encrypt_and_digest(plaintext) + return cipher_text + digest + + @staticmethod + def _decrypt(ciphertext, key): + #error handling + Pycrypto_AES_Base._has_iv_material(ciphertext) + + digest = ciphertext[-AES.block_size:] + ciphertext = str(ciphertext[:-AES.block_size]) + + cipher = AES.new(key, AES.MODE_SIV) + return cipher.decrypt_and_verify(ciphertext, digest) + + diff --git a/pace/encryption/AES_encrypt_test.py b/pace/encryption/AES_encrypt_test.py new file mode 100644 index 0000000..99d00d1 --- /dev/null +++ b/pace/encryption/AES_encrypt_test.py @@ -0,0 +1,190 @@ +## ************** +## Copyright 2016 MIT Lincoln Laboratory +## Project: PACE +## Authors: ES +## Description: Test vectors for PACE pycrypto implementation of AES modes of +## operation: CBC, CFB, OFB, and CTR. Test vectors are from NIST SP 800-38A. +## CBC tests do not test the padding scheme; test plaintexts are whole blocks. +## Test vectors for GCM and SIV are not included. For GCM, the test vectors +## available in NIST's ``The Galois/Counter Mode of Operation'' document are +## not applicable because their IVs are not 128 bits, while pycrypto +## requires IVs to be 128 bits. For SIV, the test vectors available in RFC 5297 +## include ``associated data'' input, which is not supported by pycrypto's +## implementation. +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 25 Jan 2016 ES Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from binascii import unhexlify + +from pace.common.pacetest import PACETestCase +from pace.encryption.AES_encrypt import Pycrypto_AES_CFB, Pycrypto_AES_CBC, \ + Pycrypto_AES_OFB, Pycrypto_AES_CTR + +KEY_128 = unhexlify('2b7e151628aed2a6abf7158809cf4f3c') +KEY_192 = unhexlify('8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b') +KEY_256 = unhexlify('603deb1015ca71be2b73aef0857d7781'+ + '1f352c073b6108d72d9810a30914dff4') +PLAINTEXT = unhexlify('6bc1bee22e409f96e93d7e117393172a' + + 'ae2d8a571e03ac9c9eb76fac45af8e51' + + '30c81c46a35ce411e5fbc1191a0a52ef' + + 'f69f2445df4f9b17ad2b417be66c3710') +IV = unhexlify('000102030405060708090a0b0c0d0e0f') +INIT_COUNTER = unhexlify('f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff') + +class AESTests(PACETestCase): + + def test_CBC_AES128(self): + expected_ct = unhexlify('7649abac8119b246cee98e9b12e9197d' + + '5086cb9b507219ee95db113a917678b2' + + '73bed6b8e3c1743b7116e69e22229516' + + '3ff1caa1681fac09120eca307586e1a7') + actual_ct = Pycrypto_AES_CBC._encrypt(PLAINTEXT, KEY_128, IV) + self.assertEqual(IV + expected_ct, actual_ct[:-16]) + + #test decrypt + actual_pt = Pycrypto_AES_CBC._decrypt(actual_ct, KEY_128) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_CBC_AES192(self): + expected_ct = unhexlify('4f021db243bc633d7178183a9fa071e8' + + 'b4d9ada9ad7dedf4e5e738763f69145a' + + '571b242012fb7ae07fa9baac3df102e0' + + '08b0e27988598881d920a9e64f5615cd') + actual_ct = Pycrypto_AES_CBC._encrypt(PLAINTEXT, KEY_192, IV) + self.assertEqual(IV + expected_ct, actual_ct[:-16]) + + #test decrypt + actual_pt = Pycrypto_AES_CBC._decrypt(actual_ct, KEY_192) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_CBC_AES256(self): + expected_ct = unhexlify('f58c4c04d6e5f1ba779eabfb5f7bfbd6' + + '9cfc4e967edb808d679f777bc6702c7d' + + '39f23369a9d9bacfa530e26304231461' + + 'b2eb05e2c39be9fcda6c19078c6a9d1b') + actual_ct = Pycrypto_AES_CBC._encrypt(PLAINTEXT, KEY_256, IV) + self.assertEqual(IV + expected_ct, actual_ct[:-16]) + + #test decrypt + actual_pt = Pycrypto_AES_CBC._decrypt(actual_ct, KEY_256) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_OFB_AES128(self): + #test encrypt + expected_ct = unhexlify('3b3fd92eb72dad20333449f8e83cfb4a'+ + '7789508d16918f03f53c52dac54ed825'+ + '9740051e9c5fecf64344f7a82260edcc'+ + '304c6528f659c77866a510d9c1d6ae5e') + actual_ct = Pycrypto_AES_OFB._encrypt(PLAINTEXT, KEY_128, IV) + self.assertEqual(IV + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_OFB._decrypt(actual_ct, KEY_128) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_OFB_AES192(self): + #test encrypt + expected_ct = unhexlify('cdc80d6fddf18cab34c25909c99a4174'+ + 'fcc28b8d4c63837c09e81700c1100401'+ + '8d9a9aeac0f6596f559c6d4daf59a5f2'+ + '6d9f200857ca6c3e9cac524bd9acc92a') + actual_ct = Pycrypto_AES_OFB._encrypt(PLAINTEXT, KEY_192, IV) + self.assertEqual(IV + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_OFB._decrypt(actual_ct, KEY_192) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_OFB_AES256(self): + #test encrypt + expected_ct = unhexlify('dc7e84bfda79164b7ecd8486985d3860'+ + '4febdc6740d20b3ac88f6ad82a4fb08d'+ + '71ab47a086e86eedf39d1c5bba97c408'+ + '0126141d67f37be8538f5a8be740e484') + actual_ct = Pycrypto_AES_OFB._encrypt(PLAINTEXT, KEY_256, IV) + self.assertEqual(IV + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_OFB._decrypt(actual_ct, KEY_256) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_CTR_AES128(self): + #test encrypt + expected_ct = unhexlify('874d6191b620e3261bef6864990db6ce'+ + '9806f66b7970fdff8617187bb9fffdff'+ + '5ae4df3edbd5d35e5b4f09020db03eab'+ + '1e031dda2fbe03d1792170a0f3009cee') + actual_ct = Pycrypto_AES_CTR._encrypt(PLAINTEXT, KEY_128, INIT_COUNTER) + self.assertEqual(str(INIT_COUNTER) + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_CTR._decrypt(actual_ct, KEY_128) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_CTR_AES192(self): + #test encrypt + expected_ct = unhexlify('1abc932417521ca24f2b0459fe7e6e0b'+ + '090339ec0aa6faefd5ccc2c6f4ce8e94'+ + '1e36b26bd1ebc670d1bd1d665620abf7'+ + '4f78a7f6d29809585a97daec58c6b050') + actual_ct = Pycrypto_AES_CTR._encrypt(PLAINTEXT, KEY_192, INIT_COUNTER) + self.assertEqual(str(INIT_COUNTER) + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_CTR._decrypt(actual_ct, KEY_192) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_CTR_AES256(self): + #test encrypt + expected_ct = unhexlify('601ec313775789a5b7a7f504bbf3d228'+ + 'f443e3ca4d62b59aca84e990cacaf5c5'+ + '2b0930daa23de94ce87017ba2d84988d'+ + 'dfc9c58db67aada613c2dd08457941a6') + actual_ct = Pycrypto_AES_CTR._encrypt(PLAINTEXT, KEY_256, INIT_COUNTER) + self.assertEqual(str(INIT_COUNTER) + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_CTR._decrypt(actual_ct, KEY_256) + self.assertEqual(PLAINTEXT, actual_pt) + + def test_CFB8_AES128(self): + #test encrypt + plaintext = PLAINTEXT[:18] + expected_ct = unhexlify('3b79424c9c0dd436bace9e0ed4586a4f32b9') + actual_ct = Pycrypto_AES_CFB._encrypt(plaintext, KEY_128, IV) + self.assertEqual(IV + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_CFB._decrypt(actual_ct, KEY_128) + self.assertEqual(plaintext, actual_pt) + + def test_CFB8_AES192(self): + #test encrypt + plaintext = PLAINTEXT[:18] + expected_ct = unhexlify('cda2521ef0a905ca44cd057cbf0d47a0678a') + actual_ct = Pycrypto_AES_CFB._encrypt(plaintext, KEY_192, IV) + self.assertEqual(IV + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_CFB._decrypt(actual_ct, KEY_192) + self.assertEqual(plaintext, actual_pt) + + def test_CFB8_AES256(self): + #test encrypt + plaintext = PLAINTEXT[:18] + expected_ct = unhexlify('dc1f1a8520a64db55fcc8ac554844e889700') + actual_ct = Pycrypto_AES_CFB._encrypt(plaintext, KEY_256, IV) + self.assertEqual(IV + expected_ct, actual_ct) + + #test decrypt + actual_pt = Pycrypto_AES_CFB._decrypt(actual_ct, KEY_256) + self.assertEqual(plaintext, actual_pt) diff --git a/pace/encryption/DEMO.md b/pace/encryption/DEMO.md new file mode 100644 index 0000000..c0e8514 --- /dev/null +++ b/pace/encryption/DEMO.md @@ -0,0 +1,396 @@ +# Confidentiality Demo Commands + +This document contains documentation for the commands, primarily in `demo.py`, +for quickly getting up to speed on and running our client-side encryption code +for Accumulo users. This includes field-level encryption, Cryptographically +Enforced Attribute Based Access Control (CEABAC), and the key management +infrastructure that supports CEABAC. Users should read this file if they want a +tour of what our encryption code can accomplish and a look at how this code +works behind the scenes. + +## Setup + +When trying out our functionality, it is useful to be able to see both the +output shown to the user and the information stored on the server. This is +particularly useful when demonstrating the protections PACE adds, in this case +in terms of how little the server can learn about the users' information it +stores. + +For this demo, we will denote the client's view as a Python interpreter shell, +and the server's view as the Accumulo shell. The client view will look as +follows: + +``` +$ python -i demo.py +>>> run_insert + +>>> +``` + +We will represent the server view as follows: + +``` +$ $ACCUMULO_HOME/bin/accumulo shell -u root +Password: +root@server> create_table test_table +root@server test_table> scan +... +root@server test_table> +``` + +Note that throughout this demo, we provide sample table names for each of these +commands. When running the commands multiple times, it is useful to either vary +the table names or delete the old versions of the tables, to avoid collisions. + +## demo.py commands + +To simplify the insertion process into Accumulo, we have defined a function +`run_insert()` in demo.py, with arguments as follows: + +```python +def run_insert(conn, data, table, config_name, PKI_object): + ... +``` + +- `conn`: the connection to use to connect to Accumulo. Default: `None`, which + will set the connection to `Accumulo(host='localhost', port=42424, + user='root', password='secret')`. +- `data`: a list of five-tuples, where each field in order represents the row, + visibility, column family, column qualifier, and value. This list is the data + to be inserted into `conn`; we provide several sample values for this at the + top of `demo.py`. The default value is `expressive_elems`, one of these sample + values. +- `table`: the name of the table into which to insert `data`. Default: `'demo'`. +- `config_name`: the name of the schema to use to encrypt the data, to look up + in the `schema` dictionary at the top of the file. Default: `'expressive'`. +- `PKI_object`: the PKI object to connect to in order to fetch encryption and + decryption keys. Default is `None`, which defaults to `DummyEncryptionPKI`, + from `encryption_pki.py`. Note that this has hardcoded values stored in it, + and as such will suffice for most of this demo, but a live PKI instance will + also work. + +Dual to this, we also define `run_retrieve()`, which retrieves and decrypts +all values from a given Accumulo table: + +```python +def run_retrieve(conn, table, config_name, PKI_object): + ... +``` + +These arguments are the same as above, with the exception of `data`, which is +not present as an argument to `run_retrieve()`. + +To perform more specific searches, we also provide `run_search()`, which +performs a targeted search for a specific deterministically encrypted row in a +table: + +```python +def run_search(conn, table, config_name, PKI_object, row_range): + ... +``` + +Again, the arguments are the same as above, except for the new argument, +`row_range`, which is the name of the row to search for. The default value for +this argument is `'Analytics'`, which works well with some of our default data. + +For testing our PKI infrastructure, we provide two more functions, +`run_pki_insert()` and `run_revoke()`: + +```python +def run_pki_insert(genpath, user, conn): + ... + +def run_revoke(user, attr, genpath, conn): + ... +``` + +Each of these functions takes an argument `conn`, as previously defined, and +`genpath`, which denotes a path to a file containing a list of user information. +This defaults to `'../pki/user_info.cfg'` for both functions. + +The `user` argument for `run_pki_insert()` does not change the information +inserted into the PKI, but denotes the user to connect to the PKI as in the +return value. This function returns two values: `pki`, an encryption PKI that +can be used as an argument to any of the functions above that take a +`PKI_object` argument, and `fe`, a PKI front-end object that can be used to show +the contents of the PKI, and is documented in the section on using the PKI. + +`run_revoke()` is responsible for revoking a user's access to a given attribute +in the key store hosted at `conn`. It takes `user` and `attr` arguments, and +revokes that user's access to that attribute in the key store. + +When running the demo, it is important not to interleave calls using a live PKI +and calls using the dummy PKI, as they will interact destructively with one +another. If this happens, it is necessary to reinitialize the PKI object with +`run_pki_insert()`. + +## Field-level encryption + +To insert elements into an Accumulo table with no encryption, run an insert +using `'none'` as the `config_name` argument: + +``` +>>> run_insert(table='demo_table_none', config_name='none') +Enrypting with the following schema: + +Currently using no encryption scheme +Inserting entry: + Row - MITLL, + Column_Visibility - (a&b)|c, + Column_Family - Analytics, + Column_Qualifier - Rooms, + Value - 1200 +... +>>> +``` + +The server can then read this data as follows: + +``` +root@server> scan -t demo_table_none +Boston Analytics:Population [(a&b)|c] 3000000 +Cambridge Analytics:Population [(a&b)|c] 400000 +MITLL Analytics:Employees [(a&b)|c] 4000 +MITLL Analytics:Rooms [(a&b)|c] 1200 +root@server> +``` + +In order to hide data from the server, we can encrypt it with a scheme. For +example, the default scheme: + +``` +>>> run_insert(table='demo_table_default') +Enrypting with the following schema: + +Row contains: Row encrypted with Pycrypto_AES_SIV +ColFamily contains: ColFamily & ColQualifier encrypted with Pycrypto_AES_CFB +ColQualifier contains: Nothing +Value contains: Value encrypted with AES_GCM + +Inserting entry: + Row - MITLL, + Column_Visibility - (a&b)|c, + Column_Family - Analytics, + Column_Qualifier - Rooms, + Value - 1200 +... +>>> +``` + +Running this server-side, all the server can see beyond the visibility field is +that several of the rows (which are encrypted with deterministic encryption) +have the same value; the rest will have different values each time, as they are +randomized: + +``` +root@server> scan -t demo_table_default +I\xB3\x82\xF1\xC1\xB3y\x8C\xED\xB6\xD9-\x1B\xD9\x855\xBD\x1D\x9B\x97[+ver1 +\x06\xF9\xC8\xDD(w\x98\xECp\xE6\xE70)\x08\x10\xB7\xE3\xFD_r\xD9\x98\xBE\xB9lI^\x91\xF5\x95\x80\x8B\xB4M\x05\x0Aver3: +[(a&b)|c] +"\xF9\xFFE\xE4\x05\xC4\x09\\\x02\xB5\x87\xEE\xA5\xE8d\xCCV\xF7t\xBD$),f=\x98\x0E~\xB8\x8B\xEF\x8C-\xD7\xFAz\xB9\x9A\xA2\x0A\xDC\xA0\xCFxJ:\x92ver3 +... +root@server> +``` + +We can also get a more legible view of the server's state client-side with the +`'print_pretty'` config: + +``` +>>> run_retrieve(table='demo_table_default', config_name='print_pretty') +Entry: + Row - SbOC8cGzeYztttktG9mFNb0dm5dbK3ZlcjE=, + Column_Visibility - (a&b)|c, + Column_Family - BvnI3Sh3mOxw5ucwKQgQt+P9X3LZmL65bElekfWVgIu0TQUKdmVyMw==, + Column_Qualifier - , + Value - Ivn/ReQFxAlcArWH7qXoZMxW93S9JCksZj2YDn64i++MLdf6ermaogrcoM94SjqSdmVyMw== +... +>>> +``` + +This formats the cell by field and base 64 encodes encrypted values for +legibility, but does not decrypt anything. We can also decrypt the values +client-side: + +``` +>>> run_retrieve(table='demo_table_default') +Entry: + Row - Boston, + Column_Visibility - (a&b)|c, + Column_Family - Analytics, + Column_Qualifier - Population, + Value - 3000000 +... +>>> +``` + +As discussed previously, since the row in this data is encrypted +deterministically, we can also perform a targetted query on specific rows of +data by encrypting the row and searching on the ciphertext, using +`run_search()`: + +``` +>>> run_search(table='demo_table_default', row_range='Boston') +Entry: (Boston, Analytics, Population, 3000000) +Finished, decrypted 1 total entries. +>>> run_search(table='demo_table_default', row_range='MITLL') +Entry: (MITLL, Analytics, Rooms, 1200) +Entry: (MITLL, Analytics, Employees, 4000) +Finished, decrypted 2 total entries. +>>> +``` + +## Cryptographically enforced access control + +In addition to field-level encryption, as shown above, we also support +cryptographic enforcement of Accumulo's visibility expression-based access +control. This involves two components: a key management system to generate a +different AES key for each attribute that can occur in the Accumulo +installation, and protocol that uses these keys to encrypt data in such a way +that no user without permissions that satisfy a cell's visibility field can +decrypt the value stored in that cell, since they will also not have access to a +set of keys that can decrypt it. + +To generate a PKI object, one uses `run_pki_insert()`, as described earlier in +this document: + +``` +>>> pki, fe = run_pki_insert() +... +>>> pki + +>>> fe + +>>> +``` + +This function has two return values. The first, `pki`, is what we will pass in +as an argument to functions that need to access the keys stored here. Note that +this _cannot_ be used in conjunction with the default PKI generated when no +`PKI_object` argument is provided; if these are accidentally mixed up, the PKI +object must be regenerated with `run_pki_insert()`. + +The other object is `fe`, a front end to the key store from which the user +retrieves their keys. It can show all of the attributes that a user has access +to, and a base 64 encoding of their keywraps, for readability. This is done with +the `view()` method: + +``` +>>> fe.view() +No metadata specified +Using default metadata VIS_AES_CFB + +No username specified +Using default username user1 + +No attribute specified +Showing all attributes + +Showing key information for user: user1 +Metadata being used: VIS_AES_CFB +======================================== + +Key attribute: a +Key version : 1 +Keywrap: +KelcP0WWpXZkIkcN... +``` + +Note that this uses certain default values for the metadata, username, and +attribute to view. This is because it has three arguments, as follows: + +- `metadata`: the metadata to view in the key store. Defaults to `None`, which + shows keys corresponding to all metadata values. +- `user`: the user whose keys to view. Defaults to `None`, which prints a + message and sets `user` to `'user1'`. +- `attr`: the attribute to view in the key store. Defaults to `None`, which + shows keys corresponding to all attributes. + +By default, we generate a key store with three users, `user1`, `user2`, and +`user3`. Users 1 and 2 have access to attributes a, b, c, and d; user 3 only has +access to a, c, and d. + +Once this PKI is generated, it can be used when encrypting cells based on their +visibility field, using what we call Cryptographically Enforced Attribute Based +Access Control (CEABAC). The config name `'vis'` uses this scheme to encrypt +values in its table: + +``` +>>> run_insert(table='ceabac', config_name='vis', data=vis_elems, PKI_object=pki) +... +>>> +``` + +Note that this protects data from being disclosed to users without permissions +to access it. For example, suppose the server removes the requirement for the +attribute `b` from one of the cells: + +``` +root@server ceabac> insert Analytics '' '' -l a&a +root@server ceabac> getauths -u user3 +a,c,d +root@server ceabac> +``` + +If user `user3` attempts to scan this table, they will not receive meaningful +output when attempting to decrypt this element: + +``` +>>> grant_auths(table='ceabac') +>>> run_retrieve(table='ceabac', config_name='vis', PKI_object=user3_pki) +... +Entry: + Row - Analytics, + Column_Visibility - a&a, + Column_Family - , + Column_Qualifier - , + Value - ,C� +... +>>> +``` + +## Key revocation + +We also support the ability to revoke a user's access to certain attributes and +keys. We support forward security (a user can still decrypt old information, but +no new information encrypted under that attribute) by assigning versions to +keys. Each time an attribute is revoked, a new version is generated for its +associated key and distributed to users. Suppose we have a user `user2` whose +permission to the attribute `b` we wish to revoke: + +``` +>>> user2_pki, user2_fe = run_pki_insert(user='user2') +>>> +``` + +If we insert elements into a table as root, revoke the key, and perform a query +as `user2`, the data will still be decryptable if `user2` cashed their keys: + +``` +>>> run_insert(table='revoke', config_name='vis', data=vis_elems, PKI_object=pki) +... +>>> run_revoke('user2', 'b') +>>> run_retrieve(table='revoke', config_name='vis', PKI_object=user2_pki) +... +Entry: + Row - Analytics, + Column_Visibility - a&b, + Column_Family - , + Column_Qualifier - , + Value - 200 +... +>>> +``` + +However, if we re-insert the data as root, we use a new key version, thus making +it invisible to `user2`: + +``` +>>> run_insert(table='revoke', config_name='vis', data=vis_elems, PKI_object=pki) +>>> run_retrieve(table='revoke', config_name='vis', PKI_object=user2_pki) +... +Error: Entry failed to decrypt. +Error message: The key object does not contain keys for the necessary attributes +to decrypt this cell +... +>>> +``` diff --git a/pace/encryption/README.md b/pace/encryption/README.md new file mode 100644 index 0000000..db5bd48 --- /dev/null +++ b/pace/encryption/README.md @@ -0,0 +1,397 @@ +DISTRIBUTION STATEMENT A. Approved for public release: distribution unlimited. + +This material is based upon work supported by the Department of Defense under Air Force Contract +No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or +recommendations expressed in this material are those of the author(s) and do not +necessarily reflect the views of the Department of Defense. + +© 2015 Massachusetts Institute of Technology. + +MIT Proprietary, Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014) + +The software/firmware is provided to you on an As-Is basis + +Delivered to the US Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 +or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this +work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of +this work other than as specifically authorized by the U.S. Government may violate any +copyrights that exist in this work. + +# Field Level Encryption and Cryptographic Enforced Attribute Based Access Control + +This is a Python library for client-side encryption of Accumulo database entries. +It provides the functionality to encrypt every entry in a pyaccumulo +mutation according to a user defined configuration. Field Level Encryption provides a solution +to the problem of providing confidentiality guarantees against a malicious server. +The extended Cryptographic Enforced Attribute Based Access (CEABAC) library +extends that protection against curious clients in the case the malicious server does +not correctly enforce visibility labels. + +## Installation + +Installation instructions for the pace module as a whole can be found in the README in the +top level directory. + +### Dependencies + +This project depends on several other Python libraries and utilities. They are +listed below with links to their project pages. In addition to these packages, +it also requires a running Accumulo instance to run anything beyond the unit tests. + +- [nosetests](https://nose.readthedocs.org/en/latest/), version 1.3.3+. +- [pyaccumulo](https://pypi.python.org/pypi/pyaccumulo), version 1.5.0.6+. +- [pycrypto](https://www.dlitz.net/software/pycrypto/). This represents latest experimental release, + 2.7a1, as it implements Galios/Counter Mode. +- [Beaker](https://pypi.python.org/pypi/Beaker), version 1.7.0+. +- [enum34](https://pypi.python.org/pypi/enum34), version 1.0.4+. + +## Use + +The primary interface for the confidentiality library is defined in +`acc_encrypt.py`. This is a high level interface for the encryption of +mutations and the decryption of cells. Our confidentiality library uses +pyaccumulo, a Python wrapper around Accumulo's Thrift interface, to interact with Accumulo +instances. + +To encrypt or decrypt, users import the `AccumuloEncrypt` +class: + +```python + import pace.encryption.acc_encrypt.AccumuloEncrypt + encrypter = AccumuloEncrypt(config_file, PKI_object) +``` + +Arguments for the class include a file pointer to a configuration file, +described in the section describing the [configuration file](#configuration-file), +and a handle on a key management object +described in the following [section](#pki-objects). In short, the configuration file specifies +the types of encryption and what portions of the cell are to be encrypted +together, and where the ciphertext will be stored. The key management object +connects with the keystore where the user's encryption and decryption keys are +stored. Note that one configuration file represents the configuration of only +one Accumulo table. If the user wishes to use a different configuration +for another table, another `AccumuloEncrypt` object must be created with +that configuration file as a parameter. + +### Configuration File + +The configuration files input into the client-side encryption library +specify both the type of encryption desired as well as the formatting +of the cells. It is possible to individually encrypt each field in +the cell or to encrypt subsets of the cell in one ciphertext. In addition to +encryption scheme and configuration information, the config file also +specifies the information needed to be given to the key object in order +to obtain encryption and decryption keys. + +This section presents the various options available in the configuration +file as well as several examples of such. More examples can be found in the +`config` directory. + +#### Basic syntax + +The files follow the basic format expected in Windows INI files and are +parsed with Python’s [configparser](https://docs.python.org/2/library/configparser.html) +tool. The basic syntax takes the form of: + + [section] + key_word = some_value + + +Each entry (a section and corresponding key words) specifies the encryption +algorithm, key information and the parts of the cell to encrypt. The +section title itself denotes the part of the cell where +the encrypted information will end up - the target location. For +example: + + [row] + key_id = keyid1234 + encryption = Pycrypto_AES_CFB + cell_sections = row + cell_key_length = 16 + + +In this case the row of the cell is to be encrypted with AES in +CFB mode and placed back in the row. + +Each entry must have a `key_id` and `encryption` keyword specified, +`cell_sections` and `cell_key_length` is optional. + +####Section +The section headers are: +* row +* colFamily +* colQualifier +* colVisibility +* value + +At this time it is not possible to encrypt either the `timestamp` or the +`to_delete` portion of an Accumulo cell - it would break functionality +of Accumulo in a significant way. + +####Key_id +The `key_id` is the identifying information needed to obtain the keys +needed for encryption/decryption and is handed to the +`key_object` to use (see `pki/abstract_pki.py` for more information). +The `key_id` is treated as a string before it is handed to the `key_object`. + +This may be some combination of user information, the algorithm being +used, or whether it is an encryption or decryption query. Note, if the +user wishes to have different keys for each table, this would where it +would be specified i.e. `key_id = table_A`. This value +is what is specified in the metadata in the configuration files used in key generation, see the +[Readme](pki/README.md) under Configuration File Format for more information. + + + + +####Encryption +The confidentiality library uses +[Pycrypto](https://www.dlitz.net/software/pycrypto/) to implement +the different modes of AES. For semantically secure encryption we offer several +modes: Cipher Feedback Mode, Cipher Block Chaining Mode, Output Feedback Mode, +and Counter Mode. Of the four of these modes, we recommend Pycrypto's +implementation of Output Feedback Mode, as it is the fastest of the four. For +authenticated semantically secure encryption, we support Galois Counter Mode. +Finally, for deterministic encryption we use Synthentic IV mode +(SIV), which, when used without a nonce, is deterministic. + +We also support an `identity` mode, which exercises the confidentiality library's logic for +parsing mutations, but does not actually encrypt the plaintext values. + +The names in the configuration files are as follows: + +* Identity - Useful for testing, it is simply the identity function +* Pycrypto_AES_CFB - The Pycrypto implementation of AES in CFB mode +* Pycrypto_AES_CBC - The Pycrypto implementation of AES in CBC mode +* Pycrypto_AES_OFB - The Pycrypto implementation of AES in OFB mode +* Pycrypto_AES_CTR - The Pycrypto implementation of AES in CTR mode +* VIS_Identity - Constructs the shares of the cell_key but does not + encrypt them, used primarily for demo purposes +* VIS_AES_CFB - Cryptographically Enforced ABAC that uses AES in CFB mode + to encrypt the shares and value +* VIS_AES_CBC - Cryptographically Enforced ABAC that uses AES in CBC mode + to encrypt the shares and value +* VIS_AES_OFB - Cryptographically Enforced ABAC that uses AES in OFB mode + to encrypt the shares and value +* VIS_AES_CTR - Cryptographically Enforced ABAC that uses AES in CTR mode + to encrypt the shares and value +* VIS_AES_GCM - Cryptographically Enforced ABAC that uses AES in GCM mode + to encrypt the shares and value + +####Cell_sections + +`cell_sections` specifies the portions of the cell that are to be encrypted +together and placed in the target location. As stated above, it is an +optional field, and if not specified, it is assumed that +the portion of the cell to be encrypted is the one specified in the +section header. + +If one wishes to encrypt more than one portion of the cell, the format +is a comma separated list of cell locations, as demonstrated in the +example below: + + [colFamily] + key_id = keyid234 + encryption = Pycrypto_AES_CFB + cell_sections = colFamily,colQualifier + +Possible values for `cell_sections` are the same as those listed in +section headers in any combination: +* row +* colFamily +* colQualifier +* colVisibility +* value + + +####Cell_key_length + +`cell_key_length` specifies the length (in bytes) of the cell key +that is generated to be shared amongst the different attributes. +It is only used for encryption schemes that use Cryptographically +Enforced ABAC - if not specified for these schemes it defaults to +16 bytes. Currently allowed values include 16, 24, and 32 bytes. +If it is present for a non-CEABAC algorithm, the value +will be ignored. + + +### PKI Objects + +The key management object passed into the `AccumuloEncrypt` represents the +interface to acquire keys for encryption and decryption from the keystore. We +provide an abstract interface that it must meet and an instantiation that +communicates with an Accumulo keystore. More information can be found in the +README in the `pki` directory. + +At a high-level, there are two types of key: attribute keys used for CEABAC, +and non-attribute keys strictly used for standard AES encryption modes. Symmetric key +cryptography is used throughout the confidentiality library, thus the same key +is used for encryption and decryption. The interface that all encryption key +objects meet inherits from `AbstractPKI`, which both the signature +and encryption key infrastructures are based on. The +abstract class, `EncryptionPKIBase`, is found in +`encryption_pki.py`. Instantiations of this class must implement four +methods: + +* `get_current_key(algorithm)`: retrieves the most recent version of +the non-attribute key for the associated algorithm, to be used when new records +are being encrypted and inserted into Accumulo. It is used for non-CEABAC +algorithms. + +* `get_key(algorithm, version)`: retrieves that particular version of the non-attribute key for the +associated algorithm. In this case, the algorithms that use this method are non-CEABAC schemes. This method +is used during decryption when the version information is extracted from the ciphertext to obtain the +key to decrypt the rest of the message. + +* `get_current_attribute_key(algorithm, attribute)`: retrieves the current version of the +attribute key for the algorithm. Used to acquire the most recent key, which is used to encrypt new + records to insert. This is used for CEABAC schemes, and the `attribute` parameter corresponds to the attributes found in +visibility fields in Accumulo. +* `get_attribute_key(algorithm, attribute, version)`: retrieves that version of the attribute key +for a particular attribute-algorithm pairing. The `attribute` parameter corresponds to the attributes found in +visibility fields in Accumulo. This method is used during decryption in CEABAC algorithms to obtain +the attribute key to decrypt the shares of the cell key. + +Algorithms specified as arguments for all these functions are the same name +defined in the configuration file as the `key_id`, such as +`Pycrypto_AES_CBC` or `VIS_AES_CTR`. + +We provide an implementation of the interface that communicates with the +Accumulo keystore. Users +can declare a `pki` instance by: + +```python + pki = EncryptionPKIAccumulo(conn, user_id, private_rsa_key) +``` + +The class takes in three arguments. The first, `conn`, is the connection, +as defined in Pyaccumulo, to the Accumulo instances that is storing the keys. +The second, `user_id`, is the string that represents the user currently +encrypting or decrypting records. This value must be synchronized with the key +generation process, as it used during key lookup. Note that in +this implementation a particular instance of `EncryptionPKIAccumulo` +corresponds to one particular user. The final argument is the user's +private RSA key corresponding to the public key used during keywrapping in key +generation. Again, see the README in the `pki` for more information. + +There exist two other implementations of the `EncryptionPKIBase` interface. +The first is an extension of `EncryptionPKIAccumulo`, called +`CachingEncryptionPKIAccumulo`, which uses +[beaker](http://beaker.readthedocs.org/en/latest/) to cache the +results of querying the keystore for an hour. This improves performance and +reduces hits on the keystore. The second is `DummyEncryptionPKI`, which +contains hardcoded keys and is useful for unit tests and other demos. Both are +defined in `encryption_pki.py`. + + +### Encrypting Entries + +Once the `encrypter` is created, users can construct encrypted mutations +by passing in a plaintext mutation: + +```python + encrypted_mutations = encrypter.encrypt(mutation) +``` + +The mutation passed in is not changed; instead, it is used to construct a +list of encrypted mutations according to the configuration file passed in at +initialization. A list of mutations is constructed instead of a single mutation +because the row must be encrypted separately for each column/value in the mutation. +The generated mutations only contain a single update. This list +of encrypted mutation can now be written to Accumulo using a +writer as one would with a normal mutation. + +### Decrypting Entries + +Decrypting the results retrieved from Accumulo also requires an +`AccumuloEncrypt` object. The structure received from a scan is a cell, +which can be directly passed into the decrypt method of the encrypter object: + +```python + cell = encrypter.decrypt(encrypted_cell) +``` + +As with the mutation, the encrypted cell is not changed, but is used to +construct a decrypted version of the cell. The returned cell has its fields that +were encrypted together placed back in their original fields. + +### Searching for Entries + +The confidentiality library supports several types of scans, depending how the +leading portion of the cell (the row and column) is encrypted. For configurations +that encrypt the row with semantically secure encryption, the only scan supported is +a full-table scan, where individual +records are pulled back all at once and decrypted until the information the user +wants is found: + +```python + for entry in conn.scan(table): + cell = encrypter.decrypt(entry) +``` + +For configuration files that use deterministic +encryption on the cell's row or column values, it is possible +to do a targeted equality scan. For example, if the `row` is +encrypted using deterministic encryption, one can search for all instances of +the row 'a' by doing the following: + +```python + enc_row, _ = encrypter.encrypt_search('a') + range = pyaccumulo.Range(srow = enc_row, erow = enc_row) + entries = conn.scan(table, scanrange = range) +``` +If the column is encrypted using deterministic encryption as well +it is possible to search over the columns as well. This includes +encrypting both the colFamily and colQualifier as part of the same +ciphertext. An example is shown below: + +```python + enc_row, enc_cols = encrypter.encrypt_search('a',[['colFam1','colQual1'],['colFam2',colQual2']]) + range = pyaccumulo.Range(srow = enc_row, erow = enc_row) + entries = conn.scan(table, scanrange = range, cols = enc_cols) +``` + +Finally, when the row in a cell, or leading portion of the cell remains unencrypted, +normal Accumulo range queries can be used. + +### Use Example + +```python +# Imports +import pyaccumulo +from pace.encryption.acc_encrypt import AccumuloEncrypt +from pace.encryption.encryption_pki import EncryptionPKIAccumulo + +# Connection setup +pki_conn = pyaccumulo.Accumulo(host='localhost', port='42424', user='root', password='secret') +conn = pyaccumulo.Accumulo(host='localhost', port='42424', user='root', password='secret') + + +# Create the key object, encrypter and mutation +# NB: rsa_key must be the key used to wrap keys in the keystore, and user1 must exist with the proper keys +pki = EncryptionPKIAccumulo(pki_conn, 'user1', rsa_key) +encrypter = AccumuloEncrypt('config_file.cfg', pki) +mutation = pyaccumulo.Mutation('test_row') +mutation.put(cf='test_column_family', cq='test_cq', cv='default', val='this is a test value') + +# Encrypt the mutation and write it to a table +encrypted_mutations = encrypter.encrypt(mutation) +conn.create_table('demo_table') +wr = conn.create_batch_writer('demo_table') +for mutation in encrypted_mutations + wr.add_mutation(mutation) +wr.close() + +# Search for and decrypt the mutation +range = pyaccumulo.Range(srow = 'test_row', erow = 'test_row') +encrypted_range = encrypter.encrypt_search(range) + +for entry in conn.scan('demo_table', scanrange = encrypted_range): + cell = encrypter.decrypt(entry) + +``` + +## Testing Code + + The unit tests can be run just by running `nosetests` from the +shell in the `pace/encryption/` directory with nosetests installed. diff --git a/pace/encryption/__init__.py b/pace/encryption/__init__.py new file mode 100644 index 0000000..ef056d9 --- /dev/null +++ b/pace/encryption/__init__.py @@ -0,0 +1,11 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: EHS +## Description: Init File for Encryption folder +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 17 May 2015 EHS Original file +## ************** +## diff --git a/pace/encryption/abstract_encrypt.py b/pace/encryption/abstract_encrypt.py new file mode 100644 index 0000000..ee06d5d --- /dev/null +++ b/pace/encryption/abstract_encrypt.py @@ -0,0 +1,219 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Abstract class for encryption modules +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 17 Dec 2014 ATLH Original file +## 12 Mar 2015 ATLH Removed AES into own file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import fractions +from abc import ABCMeta, abstractmethod +from Crypto.Cipher import AES +from Crypto.Util import Counter, number +from Crypto import Random +from pyaccumulo import Cell + +from pace.encryption.enc_mutation import EncMutation, EncCell +from pace.encryption.vars import CELL_MUT_MAPPING +from pace.encryption.encryption_exceptions import EncryptionException, DecryptionException + + +class AbstractEncrypt(object): + """Abstract interface for all encryption modules + that (may) interact with the Accumulo Encryption module. + Key management is assumed to be seperate and keys must be + an input into this class. + """ + __metaclass__ = ABCMeta + + """ + Name of algorithm as accepted in the configuration file + """ + name = '' + + @abstractmethod + def encrypt_mutation(mutation, key, cell_sections): + ''' + Arguments: + mutation - mutation as defined in encmutation (based on + pyaccumulo interface + key - key in whatever format is used for particular + encryption scheme + cell_sections - the list of part of the cell to be encrypted. + Options are defined in VALID_KEYS in vars.py. + + + Returns: The ciphertext. For example if + cell_sections was [colFamily, colQualifier] and + cell_location is 'colFamily'. Let the first update + be cf = 'cf1', and cq = 'cq1', the resulting update + would become cf = 'cf1|cq1' (encrypted) and cq = ''. + This is done for each update in the list of updates. + ''' + pass + + @abstractmethod + def decrypt_mutation(mutation, dec_mutation, key, cell_location, cell_sections): + ''' + Arguments: + mutation - mutation as defined in encmutation (based on + pyaccumulo interface + dec_mutation - the location where the decrypted information + in mutation is stored upon decryption + key - key in whatever format is used for particular + encryption scheme + cell_location - the part of the cell where encrypted data is + to be stored + cell_sections - the target locations for decrypted data that + contained at the cell_location. + + Effect: The dec_mutation is modified. The encrypted data + cell_location is decrypted and seperated into + the values associated with each of the cell_sections. + These values are then placed in the cell as + specified by cell_sections. + + For example, cell_location = 'cq' and cell_sections = + [colFamily, colQualifier, value] and the cq for + the first update is 'cf1|cq1|val1' the three + values are separated out and the update becomes + cf = 'cf1', cq = 'cq1', and val = 'val1'. + ''' + pass + + @abstractmethod + def encrypt_row(row, key): + """ + Arguments: + row - (string) row to be encrypted + key - key in whatever format is used for particular + encryption scheme + + Returns: encrypted row used to scan the database + for deterministically encrypted row. + """ + pass + + @abstractmethod + def encrypt_cols(cols, key_container, cell_sections): + """ + Arugments: + cols: dictionary keyed by 'colFamily' and 'colQualifier' + containing the respective values (defined in the + nested list passed into acc_encrypt) that are + to be encrypted. If colQualifier is not specified + in the input list, the value defaults to '' + key_container - key container to obtain the encryption key + cell_sections - the target locations for decrypted data that + contained at the cell_location. + + Returns: encrypted portion of the column as specified + by cell_sections + """ + pass + + + @abstractmethod + def encrypt_cell(cell, key, cell_sections): + ''' + Arguments: + cell - DecCell as defined in enc_mutation (based on + pyaccumulo interface + key - key in whatever format is used for particular + encryption scheme + cell_sections - the list of part of the cell to be encrypted. + Options are defined in VALID_KEYS in vars.py. + + Returns: encrypted portion of the cell + ''' + pass + + @abstractmethod + def decrypt_cell(cell_dict, dec_cell, key, cell_location, cell_sections): + ''' + Arguments: + cell_dict - dictionary containing field names as + keys, and the values to be decrypted + dec_cell - dictionary where the decrypted values + are placed + key - key in whatever format is used for particular + encryption scheme + cell_location - the part of the cell where encrypted data is + to be stored + cell_sections - the target locations for decrypted data that + contained at the cell_location. + + Returns: The dec_cell is modified. The encrypted data + cell_location is decrypted and seperated into + the values associated with each of the cell_sections. + These values are then placed in the cell as + specified by cell_sections. + ''' + pass + + +class Identity_AccEncrypt(AbstractEncrypt): + ''' + Identity function as encryption algorithm, used for + testing + ''' + name = 'Identity' + + @staticmethod + def encrypt_mutation(mutation, key, cell_sections): + ctexts = EncMutation.concatenate_cell_section_values(mutation, cell_sections) + return ctexts + + @staticmethod + def decrypt_mutation(mutation, dec_mutation, key, cell_location, cell_sections): + ptexts = mutation[cell_location] + split_values = EncMutation.split_values(ptexts) + for sec, values in zip(cell_sections, split_values): + dec_mutation[sec] = list(values) + + @staticmethod + def encrypt_row(row, key_container): + return row + + @staticmethod + def encrypt_cols(cols, key_container, cell_sections): + return cols + + @staticmethod + def encrypt_cell(cell, key, cell_sections): + return EncCell.get_value_by_cell_string(cell,cell_sections) + + @staticmethod + def decrypt_cell(cell, dec_cell, key, cell_location, cell_sections): + split_value = EncCell.split_value_by_cell_string(cell[CELL_MUT_MAPPING[cell_location]]) + for (sec, value) in zip(cell_sections, split_value): + dec_cell[CELL_MUT_MAPPING[sec]] = value + + @staticmethod + def _encrypt(plaintext, key): + return plaintext + + @staticmethod + def _decrypt(ciphertext, key): + return ciphertext + + @staticmethod + def encrypt(plaintext, key): + return plaintext + + @staticmethod + def decrypt(ciphertext, key): + return ciphertext + + + diff --git a/pace/encryption/abstract_encrypt_test.py b/pace/encryption/abstract_encrypt_test.py new file mode 100644 index 0000000..ee78c5c --- /dev/null +++ b/pace/encryption/abstract_encrypt_test.py @@ -0,0 +1,236 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Unit tests for cell code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 7 Jan 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import string +import logging +import unittest +import ConfigParser +import StringIO as stringio +from nose.tools import eq_, assert_raises, assert_equal, assert_not_equal, assert_true +from pyaccumulo import Mutation, Cell + +from pace.encryption.encryption_pki import DummyEncryptionPKI +from pace.encryption.acc_encrypt import AccumuloEncrypt +from pace.encryption.enc_mutation import EncMutation, EncCell +from pace.encryption.enc_classes import ALGORITHMS, AES_ALGORITHMS, IV_AES_ALGORITHMS,\ + LENGTHBOUND_AES_ALGORITHMS, AUTH_ALGORITHMS, DET_ALGORITHMS +from pace.encryption.encryption_exceptions import DecryptionException +from pace.encryption.AES_encrypt import Pycrypto_AES_Base + +def _create_encryptor_dict(config): + ''' + Helper function that parses a config file and creates a key + object before creating an encryptor dict that can be passed + into and EncMutation. + ''' + config_parser = ConfigParser.ConfigParser() + config_parser.readfp(config) + key_object = DummyEncryptionPKI() + return AccumuloEncrypt._config_to_encryptor(config_parser, + key_object) + +def _mutations_equal(mut1, mut2): + return mut1.row == mut2.row and mut2.updates == mut1.updates + +def _decrypt_mutations_equal(list_mut, mut2): + ''' + list_mut - list of mutations + mut2 - the original mutation + + Returns if the list of mutations produced by a plaintext + mutation is the same as the original + ''' + equal = True + equal &= len(list_mut) == len(mut2.updates) + for (mut, update) in zip(list_mut, mut2.updates): + equal &= mut.row == mut2.row + equal &= mut.updates[0] == update + return equal + +def _check_versioning(encClass): + """ + Test the encryptions classes are properly dealing with versions. + Versions are pulled from the DummyEncryptionPKI in encryption_pki.py + """ + groundtruth = {"Pycrypto_AES_CFB": '3', + "Pycrypto_AES_CBC": '1', + "Pycrypto_AES_OFB": '3', + "Pycrypto_AES_CTR": '1', + "Pycrypto_AES_GCM": '2', + "Pycrypto_AES_CFB": '3', + "Pycrypto_AES_SIV": '1'} + config = stringio.StringIO( + '[value]\n'+\ + 'key_id = '+ encClass.name +'\n'+\ + 'cell_sections = value\n'+\ + 'encryption = ' + encClass.name) + encryptor_dict = _create_encryptor_dict(config) + mut = Mutation('abcdefghijklmnopqrstuvwxyz') + mut.put(val='val2') + enc_muts = EncMutation(mut, encryptor_dict).encrypt() + assert_true(len(enc_muts) == 1) + enc_mut = enc_muts[0] + assert_true(enc_mut.updates[0].value.rsplit('ver',1)[-1] == groundtruth[encClass.name], + 'Not grabbing the most recent version of the key') + +def _check_malformed_ciphertext_version(encClass): + """ + Tests error handling in the case where the ciphertext does + not contain 'ver' + """ + config = stringio.StringIO( + '[colFamily]\n'+\ + 'key_id = '+ encClass.name +'\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = ' + encClass.name) + encryptor_dict = _create_encryptor_dict(config) + + mut = Mutation('abcdefghijklmnopqrstuvwxyz') + mut.put(cf='cf1',cq='cq1', cv='a&b', ts = '12345', val = 'val1') + mut.put(cv='c|d',cf='cf2',val='val2') + enc_mut = EncMutation(mut, encryptor_dict) + assert_raises(DecryptionException, enc_mut.decrypt) + + +def _check_encrypt_decrypt_mutation(encClass): + ''' + Tests the encrypt then decrypt functionality of the various algorithms + on mutations + ''' + config = stringio.StringIO( + '[colFamily]\n'+\ + 'key_id = '+ encClass.name +'\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = ' + encClass.name) + encryptor_dict = _create_encryptor_dict(config) + + mut = Mutation('abcdefghijklmnopqrstuvwxyz') + mut.put(cf='cf1',cq='cq1', cv='a&b', ts = '12345', val = 'val1') + mut.put(cf='cf2',cq='cq2', cv='a&b', ts = '12345', val = 'val2') + + enc_muts = EncMutation(mut, encryptor_dict).encrypt() + dec_muts = [] + for enc_mut in enc_muts: + dec_muts.append(EncMutation(enc_mut, encryptor_dict).decrypt()) + assert_true(_decrypt_mutations_equal(dec_muts, mut), + "Mutation is not correctly handled during encryption and decryption process") + + assert_true(not _mutations_equal(enc_mut, mut), + "Encryption algorithm was identity function.") + +def _check_encrypt_decrypt_cell(encClass): + ''' + Tests the encrypt then decryption functionality of the various algorithms + on cells + ''' + config = stringio.StringIO( + '[colFamily]\n'+\ + 'key_id = '+ encClass.name +'\n'+\ + 'encryption = ' + encClass.name) + encryptor_dict = _create_encryptor_dict(config) + + cell = Cell('row','cf','cq','(a&b)|c',1234,'val') + + enc_cell = EncCell.encrypt(cell, encryptor_dict) + dec_cell = EncCell.decrypt(enc_cell, encryptor_dict) + eq_(cell, dec_cell, + str(dec_cell) + " was not correctly encrypted and decrypted " +\ + "should be " + str(cell)) + +def _check_ciphertext_length(encClass): + key = b'Sixteen byte key' + ciphertext = ''.join(random.choice(string.ascii_uppercase + string.digits) + for _ in range(25)) + assert_raises(DecryptionException, encClass._decrypt, ciphertext, key) + +def _check_iv_material(encClass): + key = b'Sixteen byte key' + ciphertext = ''.join(random.choice(string.ascii_uppercase + string.digits) + for _ in range(15)) + assert_raises(DecryptionException, encClass._decrypt, ciphertext, key) + +def _check_key_length(encClass): + k_short = b'ShortKey' + ciphertext = '1'+''.join(random.choice(string.ascii_uppercase + string.digits) + for _ in range(31)) + assert_raises(ValueError, encClass._encrypt, ciphertext, k_short) + +def _check_authentication(encClass): + key_one = b"Sixteen Byte keySixteen Byte Key" + key_two = b"sIXTEEN BYTE KEYSixteen Byte Key" + plaintext = "This is the sample plaintext" + ciphertext = encClass._encrypt(plaintext, key_one) + assert_raises(ValueError, encClass._decrypt, ciphertext, key_two) + +def _check_determinism(encClass): + key = b"Sixteen Byte keySixteen Byte Key" + plaintext_one = "This is a sample, shall we test?" + plaintext_two = "this is a different sample" + + ciphertext_one = encClass._encrypt(plaintext_one, key) + ciphertext_two = encClass._encrypt(plaintext_one, key) + ciphertext_three = encClass._encrypt(plaintext_two, key) + + assert_equal(ciphertext_one, ciphertext_two) + assert_not_equal(ciphertext_one, ciphertext_three) + + +def test_all_encryption_algorithms(): + + for encClass in ALGORITHMS.values(): + yield _check_encrypt_decrypt_mutation, encClass + yield _check_encrypt_decrypt_cell, encClass + +def test_aes_encryption_algorithms(): + + #test error handling aes alogirthms + for encClass in LENGTHBOUND_AES_ALGORITHMS.values(): + yield _check_ciphertext_length, encClass + + for encClass in IV_AES_ALGORITHMS.values(): + yield _check_iv_material, encClass + + for encClass in AES_ALGORITHMS.values(): + yield _check_key_length, encClass + yield _check_versioning, encClass + yield _check_malformed_ciphertext_version, encClass + +def test_authenticated_algorithms(): + + for encClass in AUTH_ALGORITHMS.values(): + yield _check_authentication, encClass + +def test_deterministic_algorithms(): + + for encClass in DET_ALGORITHMS.values(): + yield _check_determinism, encClass + + +def test_aes_padding(): + ''' + Tests the padding and unpadding functions of AES class + ''' + for n in xrange(1,100): + s = ''.join(random.choice(string.ascii_uppercase + string.digits) + for _ in range(n)) + padded_string = Pycrypto_AES_Base._pad(s) + eq_(len(padded_string) % 16, 0, + 'Padded string %s of length %d is not a multiple of 16.' % (padded_string, len(padded_string))) + eq_(s, Pycrypto_AES_Base._strip_pad(padded_string), + "Padding is not correctly stripped from padded string") + diff --git a/pace/encryption/acc_encrypt.py b/pace/encryption/acc_encrypt.py new file mode 100644 index 0000000..7faca14 --- /dev/null +++ b/pace/encryption/acc_encrypt.py @@ -0,0 +1,199 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: High level module for encrypting records +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Dec 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import ConfigParser +from StringIO import StringIO +from collections import namedtuple +from pace.encryption.vars import VALID_KEYS +from pace.encryption.enc_classes import ALGORITHMS +from pace.encryption.enc_mutation import EncMutation, EncCell, EncRange + +Keytor = namedtuple('Keytor',['key_id','key_object','cell_key_length']) +""" +Key container object, used to encapsulate the information needed to obtain a key for a +particular user and algorithm and/or generate a cell_key if the algorithm is a VIS_* + key_id - the identifier passed into the key object, usually the algorithm name + key_object - a handle on an instance of an EncryptionPKI object + cell_key_length - (int) for VIS_* algorithm, length in bytes + (not bits) of the cell_key to be generated. +""" + +Encryptor = namedtuple('Encryptor', ['encryption', 'cell_sections', 'key_container']) +""" +Container object that is used to contain all the information to encrypt a portion of the +cell. + encryption - class instance to be used for that particular portion of the cell + cell_sections - the portions of the cell to encrypt, can be multiple portions + of the cell + key_container - contains a (Keytor) object which is used to extract the necessary + key material +""" + +class ConfigurationException(Exception): + """ Exception raised when unable to process configuration file + + Attributes: + msg - error message for situation + """ + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + + +class AccumuloEncrypt(object): + """High level interface for encrypting/decrypting accumulo cells. + Parametrized by a configuration file and a separate + key management object. + """ + def __init__(self, config, key_object): + """ + Arguments: + config - configuration file in the format specified + by INI files, see README for more details. + key_object - key management object that meets the + interface outlined in encryption_pki.py + """ + self.config_parser = ConfigParser.ConfigParser() + + #support for StringIO for testing + if isinstance(config, StringIO): + self.config_parser.readfp(config) + else: + self.config_parser.read(config) + + self.key_object = key_object + self.encrypt_dict = self._config_to_encryptor(self.config_parser, + self.key_object) + + @staticmethod + def _config_to_encryptor(config_parser, key_object): + ''' + Converts configuration file into associated encryptor + objects for each part of key + ''' + for sec in config_parser.sections(): + #make sure all sections correspond to part of key + if sec not in VALID_KEYS: + raise ConfigurationException( + "%s is not a valid part of the key" % sec) + #check to see if encryption specified + if not config_parser.has_option(sec, 'encryption'): + raise ConfigurationException( + "No encryption set for %s" % sec) + #make sure identifier information for key_object + if not config_parser.has_option(sec, 'key_id'): + raise ConfigurationException( + "There is no key idenfier information for"+ + "key_object") + #make sure algorithm is supported + algorithm = config_parser.get(sec,'encryption') + if algorithm not in ALGORITHMS.keys(): + raise ConfigurationException( + "%s is not a supported encryption algorithm" % algorithm) + + + keys = config_parser.sections() + encryptors = [] + for sec in config_parser.sections(): + #check if cell_sections exists, if not, just use the current section + if config_parser.has_option(sec,'cell_sections'): + cell_sections = config_parser.get(sec,'cell_sections').split(',') + else: + cell_sections = [sec] + + #check if cell_key_length has been specified, if not, use 16 bytes + if config_parser.has_option(sec, 'cell_key_length'): + cell_key_length = config_parser.get(sec,'cell_key_length') + try: + cell_key_length = int(cell_key_length) + except ValueError: + raise ConfigurationException('%s is not an valid integer for key_length' % cell_key_length) + if cell_key_length not in [16,24,32]: + raise ConfigurationException('Key_length must be 16,24,or 32 bytes long') + else: + cell_key_length=16 + + if not all([cell_sec in VALID_KEYS for cell_sec in cell_sections]): + raise ConfigurationException("At least one of cell_sections ("+\ + str(cell_sections)+\ + ") are not a valid part of a cell") + encryptors.append(Encryptor(ALGORITHMS[config_parser.get(sec,'encryption')], + cell_sections, + Keytor(config_parser.get(sec,'key_id'), + key_object, + cell_key_length))) + if keys == [] or encryptors == []: + raise ConfigurationException("Configuration was not properly parsed") + + return dict(zip(keys, encryptors)) + + + def encrypt(self, mutation): + """ + Arugments: + mutation - an plaintext mutation as defined in the + pyaccumulo interface + + Returns: A list of new mutations containing the encrypted data + as specified in the configuration file + """ + enc_mut = EncMutation(mutation, self.encrypt_dict) + return enc_mut.encrypt() + + def encrypt_search(self, row, columns = None): + ''' + Functionality to help users to search over + deterministically encrypted data. Can only + be used to retrieve one row at a time. + Because order is not guarenteed in the supported + deterministic modes + + Arguments: + row - the row to search for, this will be passed in as both + the start and end row into 'scan' + columns - double nested list of what columns + to look for, where the first element in the nested list is + the column_family, the second is the column_qualifier. + It is possible to just specify the column_family. + Defaults to None. Example: + [['cf1','cq1'],['cf2']] + + + Returns: A tuple containing two things: + 1) the encrypted row value if is deterministically encrypted + 2) A similarly formatted list of columns if they + are deterministically encrypted and the value + passed in is not None. If the columns parameter + is None (as in the default case) None is returned + as the second part of the tuple. + ''' + return EncRange.encrypt(row, columns, self.encrypt_dict) + + + def decrypt(self, cell): + """ + Arugments: + mutation - an cell as defined in pyaccumulo + + Returns: New cell containing the decrypted data + as specified in the configuration file + """ + return EncCell.decrypt(cell, self.encrypt_dict) + + diff --git a/pace/encryption/acc_encrypt_test.py b/pace/encryption/acc_encrypt_test.py new file mode 100644 index 0000000..f7f821f --- /dev/null +++ b/pace/encryption/acc_encrypt_test.py @@ -0,0 +1,372 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Unit tests for acc_encrypt +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 23 Dec 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import logging +import unittest +from StringIO import StringIO +from pyaccumulo import Mutation, Cell, Range +from pace.encryption.encryption_exceptions import EncryptionException, DecryptionException +from pace.encryption.acc_encrypt import AccumuloEncrypt, ConfigurationException +from pace.encryption.encryption_pki import DummyEncryptionPKI +from pace.pki.accumulo_keystore import AccumuloKeyStore +from pace.encryption.AES_encrypt import Pycrypto_AES_CFB +from pace.common.fakeconn import FakeConnection + +class AccumuloCryptTest(unittest.TestCase): + + def setUp(self): + # Keep the same PKI around, since it generates a new RSA key + # for key wraps each time + self.pki = DummyEncryptionPKI() + + def test_error_handling(self): + ''' + Tests error handling of configuration sections + ''' + not_valid_section = StringIO('[row]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colSection]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB' + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB') + self.assertRaises(ConfigurationException, AccumuloEncrypt, not_valid_section, self.pki) + + no_encryption = StringIO('[row]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + '[colFamily]\n'+\ + 'key_id = Identity\n'+\ + 'encryption = Identity') + self.assertRaises(ConfigurationException, AccumuloEncrypt, no_encryption, self.pki) + + + no_key_id = StringIO('[row]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colFamily]\n'+\ + 'encryption = Pycrypto_AES_CFB') + self.assertRaises(ConfigurationException, AccumuloEncrypt, no_key_id, self.pki) + + algorithm_not_supported = StringIO('[row]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_RSA\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB') + self.assertRaises(ConfigurationException, AccumuloEncrypt, algorithm_not_supported, self.pki) + + + def test_encryptor_dict(self): + ''' + Tests the format of the created encryptor_dict + ''' + all_sections = StringIO('[row]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colQualifier]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colVisibility]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[value]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB') + + ac = AccumuloEncrypt(all_sections, self.pki) + encryptor_dict = ac.encrypt_dict + keys = ['row','colQualifier','colFamily','colVisibility', + 'value'] + for k in keys: + self.assertTrue(k in encryptor_dict, '%s is not in dictionary' % k) + encryptor = encryptor_dict[k] + self.assertEqual(encryptor.encryption, Pycrypto_AES_CFB ) + self.assertEqual(encryptor.cell_sections, [k]) + + def test_with_accumulo_conn(self): + ''' + Tests the interplay with a fake accumulo connection + ''' + all_sections = '[row]\n'+\ + 'key_id = table1\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colQualifier]\n'+\ + 'key_id = table1\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[colVisibility]\n'+\ + 'key_id = table1\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[value]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB' + #create mutation + mut = Mutation('row1') + mut.put(cf='cf1',cq='cq1', cv='cv1', ts = 12345, val = 'val1') + mut.put(cf='cf2',cq='cq2', cv='', ts = 67890, val = 'val2') + ae = AccumuloEncrypt(StringIO(all_sections), self.pki) + enc_muts = ae.encrypt(mut) + + #write mutation along fake connection + conn = FakeConnection() + conn.create_table('enc_test') + conn.write('enc_test', enc_muts[0]) + conn.write('enc_test', enc_muts[1]) + + #create ground truth + conn.create_table('ground') + conn.write('ground', mut) + + #retrieve encrypted mutation + dec_cells = [] + for c in conn.scan('enc_test'): + dec_cells.append(ae.decrypt(c)) + + gt_cells = [] + for c in conn.scan('ground'): + gt_cells.append(c) + + self.assertEqual(sorted(gt_cells), sorted(dec_cells)) + + def _run_search(self, config, row, cols, correct_cells): + ''' + Tests the encrypting search functionality + ''' + #create range & mutation to search for + mut1 = Mutation('arow') + mut1.put(cf='cf1',cq='cq1', cv='', ts = 1, val = 'val1') + mut1.put(cf='cf2',cq='cq2', cv='', ts = 2, val = 'val2') + mut1.put(cf='cf1',cq='cq1', cv='', ts = 3, val = 'val3') + mut1.put(cf='cf2',cq='cq3', cv='', ts = 4, val = 'val4') + mut1.put(cf='cf3',cq='cq4', cv='', ts = 5, val = 'val5') + mut2 = Mutation('brow') + mut2.put(cf='cf1',cq='cq1', cv='', ts = 6, val = 'val1') + mut2.put(cf='cf2',cq='cq2', cv='', ts = 7, val = 'val2') + ae = AccumuloEncrypt(StringIO(config), self.pki) + enc_muts1 = ae.encrypt(mut1) + enc_muts2 = ae.encrypt(mut2) + enc_row, enc_cols = ae.encrypt_search(row, cols) + + #write mutation along fake connection + conn = FakeConnection() + conn.create_table('enc_test') + for mut in enc_muts1 + enc_muts2: + conn.write('enc_test', mut) + + #retrieve encrypted mutation with search + dec_cells = [] + for c in conn.scan('enc_test', + scanrange=Range(srow=enc_row, erow=enc_row, + sinclude=True, einclude=True), + cols=enc_cols): + dec_cells.append(ae.decrypt(c)) + + self.assertEqual(sorted(dec_cells), sorted(correct_cells)) + + def test_det_row_search(self): + config = '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + self._run_search(config, + 'brow', + None, + [Cell('brow','cf1','cq1','',6,'val1'), + Cell('brow','cf2','cq2','',7,'val2')]) + + def test_unencrypted_search(self): + config = '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CBC\n'+\ + 'cell_sections = colFamily\n'+\ + 'encryption = Pycrypto_AES_CBC\n' + + self._run_search(config, + 'brow', + None, + [Cell('brow','cf1','cq1','',6,'val1'), + Cell('brow','cf2','cq2','',7,'val2')]) + + def test_det_row_cf_search(self): + config = '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colFamily\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + + self._run_search(config, + 'brow', + [['cf1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + self._run_search(config, + 'arow', + [['cf1'],['cf3']], + [Cell('arow','cf1','cq1','',1,'val1'), + Cell('arow','cf1','cq1','',3,'val3'), + Cell('arow','cf3','cq4','',5,'val5')]) + + def test_det_cf_search(self): + config = '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colFamily\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + + self._run_search(config, + 'brow', + [['cf1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + + self._run_search(config, + 'brow', + [['cf1','cq1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + + self._run_search(config, + 'arow', + [['cf1'],['cf3']], + [Cell('arow','cf1','cq1','',1,'val1'), + Cell('arow','cf1','cq1','',3,'val3'), + Cell('arow','cf3','cq4','',5,'val5')]) + + def test_det_cq_search(self): + config = '[colQualifier]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colQualifier\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + + + self._run_search(config, + 'brow', + [['cf1','cq1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + + def test_det_row_cf_cq_search(self): + config = '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colFamily\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colQualifier]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colQualifier\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + + + self._run_search(config, + 'brow', + [['cf1','cq1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + + def test_det_cf_cq_search(self): + config = '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + + self._run_search(config, + 'brow', + [['cf1','cq1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + + def test_det_cq_cf_search(self): + config = '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colQualifier]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + + self._run_search(config, + 'brow', + [['cf1','cq1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + + def test_det_cf_cq_switch_search(self): + config = '[colQualifier]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colFamily\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colQualifier\n'+\ + 'encryption = Pycrypto_AES_SIV\n' + + self._run_search(config, + 'brow', + [['cf1','cq1']], + [Cell('brow','cf1','cq1','',6,'val1')]) + + def test_non_det_row(self): + config = '[row]\n'+\ + 'key_id = Pycrypto_AES_CBC\n'+\ + 'encryption = Pycrypto_AES_CBC\n' + ae = AccumuloEncrypt(StringIO(config), self.pki) + self.assertRaises(EncryptionException, ae.encrypt_search, 'arow', [['cf1']]) + + def test_det_non_det_search(self): + config = '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CBC\n'+\ + 'cell_sections = colFamily\n'+\ + 'encryption = Pycrypto_AES_CBC\n'+\ + '[colQualifier]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colQualifier\n'+\ + 'encryption = Pycrypto_AES_CBC\n' + + self._run_search(config, + 'brow', + None, + [Cell('brow','cf1','cq1','',6,'val1'), + Cell('brow','cf2','cq2','',7,'val2')]) + + + + + + + + + + + + + + + + + + + + + diff --git a/pace/encryption/benchmarker.py b/pace/encryption/benchmarker.py new file mode 100644 index 0000000..3ce0dfd --- /dev/null +++ b/pace/encryption/benchmarker.py @@ -0,0 +1,265 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Benchmark framework for encryption code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 20 Jan 2015 ATLH Original file - Based on signature benchmarker +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +from pyaccumulo import Accumulo, Mutation, Range +import time, datetime +import string +import cProfile +import StringIO +import pstats + +from pace.encryption.acc_encrypt import AccumuloEncrypt +from pace.encryption.enc_classes import ALGORITHMS +from pace.encryption.encryption_pki import DummyEncryptionPKI +from pace.common.common_utils import generate_data, sanitize, Timer + +class Benchmarker(object): + """ + Class that contains logic for benchmarking PACE encryption code + """ + + def __init__(self, + conn=None, + pki=None, + logger=None): + """ + Arguments: + conn - connection to the Accumulo instance, defaults to localhost + pki - pki object used, default is DummyEncryptionPKI + logger - the output of the benchmarking is logged here + """ + if conn is None: + self.conn = Accumulo(host='localhost', + port=42424, + user='root', + password='secret') + else: + self.conn = conn + + if pki is None: + self.pki = DummyEncryptionPKI(conn=self.conn) + else: + self.pki = pki + self.logger = logger + + def _process_profile(self, profiler): + buffer_for_results = StringIO.StringIO() + stats = pstats.Stats(profiler, stream=buffer_for_results) + stats.strip_dirs().sort_stats('time').print_stats(10) + + msg = buffer_for_results.getvalue() + return msg + + def _random_string(self, length=10): + """ + Generates a random string of length lengths + """ + return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(length)) + + def _generate_data(self, vis, num_entries, num_rows): + """ + Arguments: + vis - Visibility label used for the cells + num_entries - the number of total cells generated + num_rows - the number of rows that num_entries are broken up into + + Returns: a list of num_rows mutations with total number of cells + of num_entries + """ + mutations = [] + #row size + rsize = num_entries/num_rows + for r in range(num_rows): + mutation = Mutation(self._random_string()) + for r in range(rsize): + mutation.put(cf=self._random_string(), + cq=self._random_string(), + cv=vis, + val=self._random_string(20)) + mutations.append(mutation) + return mutations + + def _write_and_encrypt_data(self, + table, + encryptor, + vis, + encrypt=True, + num_entries=50000, + num_rows=1000, + profile = False): + """ + Arguments: + table - the table to write the data to + encryptor - the encryption object used to encrypt the mutations + vis - the visibility label used in the mutations + encrypt - to encrypt the data or not, if False it represents the baseline + num_entries - the total number of cells generated + num_rows - the number of rows that num_entries that are broken up into + profile - to profile the code or not + + Results: + Logs the timing into the output file + """ + #delete table if it exists and recreate it + if self.conn.table_exists(table): + self.conn.delete_table(table) + + self.conn.create_table(table) + + mutations = self._generate_data(vis, num_entries, num_rows) + wr = self.conn.create_batch_writer(table) + + encryption_time = 0 + communication_time = 0 + profiler_string = '' + + if encrypt: + if profile: + pr = cProfile.Profile() + pr.enable() + enc_mutations = [] + for m in mutations: + with Timer() as t: + enc_mut = encryptor.encrypt(m) + enc_mutations += enc_mut + encryption_time += t.msecs + if profile: + pr.disable() + profiler_string = self._process_profile(pr) + else: + enc_mutations = mutations + for mut in enc_mutations: + with Timer() as t: + wr.add_mutation(mut) + communication_time += t.msecs + + wr.close() + + return (encryption_time, communication_time, profiler_string) + + + def _decrypt_data(self, table, decryptor, decrypt=True, profile=False): + """ + Arguments: + table - the table to read from + decryptor - the decryption object used to encrypt the mutations + decrypt - to decrypt the data or not, if False it represents the baseline + profile - to profile code or not + + Results: + Logs the timing into the output file + """ + if not self.conn.table_exists(table): + return (False, 0, 0) + + cells = [] + with Timer() as t: + for entry in self.conn.scan(table, auths=['a','b','c','d','e']): + cells.append(entry) + communication_time = t.msecs + + decryption_time = 0 + dec_error = 0 + profiler_string = '' + + if decrypt: + if profile: + pr = cProfile.Profile() + pr.enable() + for cell in cells: + with Timer() as t: + try: + dec_entry = decryptor.decrypt(entry) + except DecryptionException as ve: + dec_error += 1 + decryption_time += t.msecs + if profile: + pr.disable() + profiler_string = self._process_profile(pr) + + success = dec_error < 1 and len(cells) > 0 + + return (success, decryption_time, communication_time, profiler_string) + + def run_test(self, + config_file, + table="encrypt_test", + vis='a&b', + num_entries=1000, + num_rows=100, + encrypt=True, + decrypt=True, + profile=False): + """ + Arguments: + config_file - configuration file to be used + table - the table to write the data to + vis - the visibility label used in the mutations + decrypt - to decrypt the data or not, if False it represents the baseline + encrypt - to encrypt the data or not, if False it represents the baseline + num_entries - the total number of cells generated + num_rows - the number of rows that num_entries that are broken up into + profile - whether to profile the code + + Results: + Logs the timing into the output file + """ + + table = sanitize(table) + + self.logger.info("Running with %d cells and %d rows" % (num_entries, num_rows)) + + if encrypt: + encryptor = AccumuloEncrypt(config_file, self.pki) + (encryption_time, communication_time, profile_string) = self._write_and_encrypt_data(table, + encryptor, + vis, + True, + num_entries, + num_rows, + profile) + + self.logger.info('Encryption & communication timing for %s: %d, %d' % + (config_file, encryption_time, communication_time)) + if profile: + self.logger.info("Profile for %s is : %s" % (config_file, profile_string)) + if decrypt: + decryptor = AccumuloEncrypt(config_file, self.pki) + (sucess, decryption_time, communication_time, profile_string) = self._decrypt_data(table, decryptor, True, + profile) + if sucess: + self.logger.info('Decryption & communication timing for %s: %d, %d' % + (config_file, decryption_time, communication_time)) + if profile: + self.logger.info("Profile for %s is : %s" % (config_file, profile_string)) + else: + self.logger.info("Was not able to sucessfully decrypt for %s" % (config_file)) + + if not encrypt and not decrypt: + (encryption_time, communication_time, _) = self._write_and_encrypt_data(table, + None, + vis, + False, + num_entries, + num_rows) + self.logger.info('Communication timing for writing to baseline: %d' % (communication_time)) + + (sucess, decryption_time, communication_time, _) = self._decrypt_data(table, None, False) + self.logger.info('Communication timing for reading from baseline: %d' % (communication_time)) + + diff --git a/pace/encryption/config/ceabac/VIS_AES_CBC.cfg b/pace/encryption/config/ceabac/VIS_AES_CBC.cfg new file mode 100644 index 0000000..cf1ee35 --- /dev/null +++ b/pace/encryption/config/ceabac/VIS_AES_CBC.cfg @@ -0,0 +1,4 @@ +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value diff --git a/pace/encryption/config/ceabac/VIS_AES_CFB.cfb b/pace/encryption/config/ceabac/VIS_AES_CFB.cfb new file mode 100644 index 0000000..0e79d99 --- /dev/null +++ b/pace/encryption/config/ceabac/VIS_AES_CFB.cfb @@ -0,0 +1,4 @@ +[value] +key_id = VIS_AES_CFB +encryption = VIS_AES_CFB +cell_sections = value diff --git a/pace/encryption/config/ceabac/VIS_AES_CTR.cfg b/pace/encryption/config/ceabac/VIS_AES_CTR.cfg new file mode 100644 index 0000000..716f56c --- /dev/null +++ b/pace/encryption/config/ceabac/VIS_AES_CTR.cfg @@ -0,0 +1,4 @@ +[value] +key_id = VIS_AES_CTR +encryption = VIS_AES_CTR +cell_sections = value diff --git a/pace/encryption/config/ceabac/VIS_AES_GCM.cfg b/pace/encryption/config/ceabac/VIS_AES_GCM.cfg new file mode 100644 index 0000000..87804d8 --- /dev/null +++ b/pace/encryption/config/ceabac/VIS_AES_GCM.cfg @@ -0,0 +1,4 @@ +[value] +key_id = VIS_AES_GCM +encryption = VIS_AES_GCM +cell_sections = value \ No newline at end of file diff --git a/pace/encryption/config/ceabac/VIS_AES_OFB.cfg b/pace/encryption/config/ceabac/VIS_AES_OFB.cfg new file mode 100644 index 0000000..1225747 --- /dev/null +++ b/pace/encryption/config/ceabac/VIS_AES_OFB.cfg @@ -0,0 +1,4 @@ +[value] +key_id = VIS_AES_OFB +encryption = VIS_AES_OFB +cell_sections = value diff --git a/pace/encryption/config/config_examp.cfg b/pace/encryption/config/config_examp.cfg new file mode 100644 index 0000000..fc411ba --- /dev/null +++ b/pace/encryption/config/config_examp.cfg @@ -0,0 +1,13 @@ +[row] +key_id = Pycrypto_AES_GCM +encryption = Pycrypto_AES_GCM +cell_sections = row +[colFamily] +key_id = VIS_AES_CFB +encryption = VIS_AES_CFB +cell_sections = colFamily,colQualifier +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 \ No newline at end of file diff --git a/pace/encryption/config/different_schemas_ceabac/ceabac_cq_value.cfg b/pace/encryption/config/different_schemas_ceabac/ceabac_cq_value.cfg new file mode 100644 index 0000000..650917a --- /dev/null +++ b/pace/encryption/config/different_schemas_ceabac/ceabac_cq_value.cfg @@ -0,0 +1,11 @@ +[colFamily] +key_id= VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = colFamily +cell_key_length=16 +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_ceabac/ceabac_row_cf_cq_value.cfg b/pace/encryption/config/different_schemas_ceabac/ceabac_row_cf_cq_value.cfg new file mode 100644 index 0000000..98d95c3 --- /dev/null +++ b/pace/encryption/config/different_schemas_ceabac/ceabac_row_cf_cq_value.cfg @@ -0,0 +1,21 @@ +[row] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = row +cell_key_length=16 +[colFamily] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = colFamily +cell_key_length=16 +[colQualifier] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = colQualifier +cell_key_length=16 +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcq_value.cfg b/pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcq_value.cfg new file mode 100644 index 0000000..efc727f --- /dev/null +++ b/pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcq_value.cfg @@ -0,0 +1,16 @@ +[row] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = row +cell_key_length=16 +[colFamily] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = colFamily,colQualifier +cell_key_length=16 +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcqvalue.cfg b/pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcqvalue.cfg new file mode 100644 index 0000000..2e5ba19 --- /dev/null +++ b/pace/encryption/config/different_schemas_ceabac/ceabac_row_cfcqvalue.cfg @@ -0,0 +1,11 @@ +[row] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = row +cell_key_length=16 +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = colFamily,colQualifier,value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_ceabac/ceabac_row_value.cfg b/pace/encryption/config/different_schemas_ceabac/ceabac_row_value.cfg new file mode 100644 index 0000000..121b77a --- /dev/null +++ b/pace/encryption/config/different_schemas_ceabac/ceabac_row_value.cfg @@ -0,0 +1,10 @@ +[row] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = row +cell_key_length=16 +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 diff --git a/pace/encryption/config/different_schemas_ceabac/ceabac_value.cfg b/pace/encryption/config/different_schemas_ceabac/ceabac_value.cfg new file mode 100644 index 0000000..c9de229 --- /dev/null +++ b/pace/encryption/config/different_schemas_ceabac/ceabac_value.cfg @@ -0,0 +1,5 @@ +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 diff --git a/pace/encryption/config/different_schemas_non_ceabac/cq_value.cfg b/pace/encryption/config/different_schemas_non_ceabac/cq_value.cfg new file mode 100644 index 0000000..e63a8b9 --- /dev/null +++ b/pace/encryption/config/different_schemas_non_ceabac/cq_value.cfg @@ -0,0 +1,11 @@ +[colFamily] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = colFamily +cell_key_length=16 +[value] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_non_ceabac/row_cf_cq_value.cfg b/pace/encryption/config/different_schemas_non_ceabac/row_cf_cq_value.cfg new file mode 100644 index 0000000..b650860 --- /dev/null +++ b/pace/encryption/config/different_schemas_non_ceabac/row_cf_cq_value.cfg @@ -0,0 +1,21 @@ +[row] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = row +cell_key_length=16 +[colFamily] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = colFamily +cell_key_length=16 +[colQualifier] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = colQualifier +cell_key_length=16 +[value] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_non_ceabac/row_cfcq_value.cfg b/pace/encryption/config/different_schemas_non_ceabac/row_cfcq_value.cfg new file mode 100644 index 0000000..46a7f0d --- /dev/null +++ b/pace/encryption/config/different_schemas_non_ceabac/row_cfcq_value.cfg @@ -0,0 +1,16 @@ +[row] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = row +cell_key_length=16 +[colFamily] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = colFamily,colQualifier +cell_key_length=16 +[value] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_non_ceabac/row_cfcqvalue.cfg b/pace/encryption/config/different_schemas_non_ceabac/row_cfcqvalue.cfg new file mode 100644 index 0000000..f8aee54 --- /dev/null +++ b/pace/encryption/config/different_schemas_non_ceabac/row_cfcqvalue.cfg @@ -0,0 +1,11 @@ +[row] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = row +cell_key_length=16 +[value] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = colFamily,colQualifier,value +cell_key_length=16 + diff --git a/pace/encryption/config/different_schemas_non_ceabac/row_value.cfg b/pace/encryption/config/different_schemas_non_ceabac/row_value.cfg new file mode 100644 index 0000000..029a935 --- /dev/null +++ b/pace/encryption/config/different_schemas_non_ceabac/row_value.cfg @@ -0,0 +1,10 @@ +[row] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = row +cell_key_length=16 +[value] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = value +cell_key_length=16 diff --git a/pace/encryption/config/different_schemas_non_ceabac/value.cfg b/pace/encryption/config/different_schemas_non_ceabac/value.cfg new file mode 100644 index 0000000..a16a0a4 --- /dev/null +++ b/pace/encryption/config/different_schemas_non_ceabac/value.cfg @@ -0,0 +1,5 @@ +[value] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = value +cell_key_length=16 diff --git a/pace/encryption/config/mixed_schemas/SSE_auth_VIS.cfg b/pace/encryption/config/mixed_schemas/SSE_auth_VIS.cfg new file mode 100644 index 0000000..1218265 --- /dev/null +++ b/pace/encryption/config/mixed_schemas/SSE_auth_VIS.cfg @@ -0,0 +1,13 @@ +[row] +key_id = Pycrypto_AES_CBC +encryption = Pycrypto_AES_CBC +cell_sections = row +[colFamily] +key_id = Pycrypto_AES_GCM +encryption = Pycrypto_AES_GCM +cell_sections = colFamily,colQualifier +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 diff --git a/pace/encryption/config/mixed_schemas/det_SSE_VIS.cfg b/pace/encryption/config/mixed_schemas/det_SSE_VIS.cfg new file mode 100644 index 0000000..00b1f0f --- /dev/null +++ b/pace/encryption/config/mixed_schemas/det_SSE_VIS.cfg @@ -0,0 +1,13 @@ +[row] +key_id = Pycrypto_AES_SIV +encryption = Pycrypto_AES_SIV +cell_sections = row +[colFamily] +key_id = Pycrypto_AES_GCM +encryption = Pycrypto_AES_GCM +cell_sections = colFamily,colQualifier +[value] +key_id = VIS_AES_CBC +encryption = VIS_AES_CBC +cell_sections = value +cell_key_length=16 diff --git a/pace/encryption/config/mixed_schemas/det_sse_auth.cfg b/pace/encryption/config/mixed_schemas/det_sse_auth.cfg new file mode 100644 index 0000000..3e73cda --- /dev/null +++ b/pace/encryption/config/mixed_schemas/det_sse_auth.cfg @@ -0,0 +1,13 @@ +[row] +key_id = Pycrypto_AES_SIV +encryption = Pycrypto_AES_SIV +cell_sections = row +[colFamily] +key_id = Pycrypto_AES_CFB +encryption = Pycrypto_AES_CFB +cell_sections = colFamily,colQualifier +[value] +key_id = Pycrypto_AES_GCM +encryption = Pycrypto_AES_GCM +cell_sections = value +cell_key_length=16 diff --git a/pace/encryption/config/non-ceabac/AES_CBC.cfg b/pace/encryption/config/non-ceabac/AES_CBC.cfg new file mode 100644 index 0000000..74d5b48 --- /dev/null +++ b/pace/encryption/config/non-ceabac/AES_CBC.cfg @@ -0,0 +1,4 @@ +[value] +key_id = Pycrypto_AES_CFB +encryption = Pycrypto_AES_CFB +cell_sections = value diff --git a/pace/encryption/config/non-ceabac/AES_CFB.cfg b/pace/encryption/config/non-ceabac/AES_CFB.cfg new file mode 100644 index 0000000..74d5b48 --- /dev/null +++ b/pace/encryption/config/non-ceabac/AES_CFB.cfg @@ -0,0 +1,4 @@ +[value] +key_id = Pycrypto_AES_CFB +encryption = Pycrypto_AES_CFB +cell_sections = value diff --git a/pace/encryption/config/non-ceabac/AES_CTR.cfg b/pace/encryption/config/non-ceabac/AES_CTR.cfg new file mode 100644 index 0000000..6fa6fe1 --- /dev/null +++ b/pace/encryption/config/non-ceabac/AES_CTR.cfg @@ -0,0 +1,4 @@ +[value] +key_id = Pycrypto_AES_OFB +encryption = Pycrypto_AES_OFB +cell_sections = value diff --git a/pace/encryption/config/non-ceabac/AES_GCM.cfg b/pace/encryption/config/non-ceabac/AES_GCM.cfg new file mode 100644 index 0000000..b522545 --- /dev/null +++ b/pace/encryption/config/non-ceabac/AES_GCM.cfg @@ -0,0 +1,4 @@ +[value] +key_id = Pycrypto_AES_GCM +encryption = Pycrypto_AES_GCM +cell_sections = value diff --git a/pace/encryption/config/non-ceabac/AES_OFB.cfg b/pace/encryption/config/non-ceabac/AES_OFB.cfg new file mode 100644 index 0000000..b1fb9c0 --- /dev/null +++ b/pace/encryption/config/non-ceabac/AES_OFB.cfg @@ -0,0 +1,4 @@ +[value] +key_id = Pycrypto_AES_CTR +encryption = Pycrypto_AES_CTR +cell_sections = value diff --git a/pace/encryption/config/non-ceabac/AES_SIV.cfg b/pace/encryption/config/non-ceabac/AES_SIV.cfg new file mode 100644 index 0000000..68c7dbe --- /dev/null +++ b/pace/encryption/config/non-ceabac/AES_SIV.cfg @@ -0,0 +1,4 @@ +[value] +key_id = Pycrypto_AES_SIV +encryption = Pycrypto_AES_SIV +cell_sections = value diff --git a/pace/encryption/demo.py b/pace/encryption/demo.py new file mode 100644 index 0000000..f112558 --- /dev/null +++ b/pace/encryption/demo.py @@ -0,0 +1,342 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Framework for demoing the encryption code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 09 Apr 2015 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import pyaccumulo +from StringIO import StringIO +import base64 +from Crypto.PublicKey import RSA +import subprocess + +from pace.encryption.acc_encrypt import AccumuloEncrypt, Encryptor +from pace.encryption.encryption_pki import DummyEncryptionPKI, EncryptionPKIAccumulo +from pace.encryption.AES_encrypt import Pycrypto_AES_CFB +from pace.encryption.encryption_exceptions import DecryptionException + +from pace.pki.keygen import KeyGen +from pace.pki.accumulo_keystore import AccumuloKeyStore, AccumuloAttrKeyStore +from pace.pki.frontend import KeyStoreFrontEnd + +ABS_PATH = os.path.dirname(__file__) +DEMO_USERS = ABS_PATH + '../pki/user_info.cfg' +PRIV_KEYS = ABS_PATH + '../pki/' + +# Default elements to use +expressive_elems = [('MITLL', '(a&b)|c','Analytics','Rooms','1200'), + ('MITLL', '(a&b)|c','Analytics','Employees','4000'), + ('Boston', '(a&b)|c','Analytics','Population','3000000'), + ('Cambridge', '(a&b)|c','Analytics','Population','400000')] + +#Tuples of accumulo elements: row, vis, colFam, colQual, and value +vis_elems = [('Analytics', 'a','','','120'), + ('Average', 'a&b','','','200'), + ('Median', '(a&b)|c','','','160'), + ('Total', '(a&b)|(c&d)|(b&d)|(b&c)','','','320')] + +new_vis_elems = [('Sum', 'c&d','','','1200'), + ('Minimum', 'b','','','120')] + +empty_vis = [('Sum', '','','','1200')] +descriptions = {'expressive' : "Row contains: Row encrypted with Pycrypto_AES_SIV\n"+\ + "ColFamily contains: ColFamily & ColQualifier encrypted with Pycrypto_AES_CFB\n"+\ + "ColQualifier contains: Nothing\n"+\ + "Value contains: Value encrypted with AES_GCM\n", + 'identity' : "Row contains: Row unecrypted\n"+\ + "ColFamily contains: ColFamily & ColQualifier concatentated\n"+\ + "ColQualifier contains: Nothing\n"+\ + "Value contains: Value unencrypted \n", + 'vis' : "Value contains: Value encrypted with VIS_AES_CFB", + 'print' : "", + 'vis_print':'', + 'none': "Currently using no encryption scheme"} + +schema = { 'expressive' : '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + '[value]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_GCM', + 'identity': '[row]\n'+\ + 'key_id = Identity\n'+\ + 'encryption = Identity\n'+\ + '[colFamily]\n'+\ + 'key_id = Identity\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = Identity\n'+\ + '[value]\n'+\ + 'key_id = Identity\n'+\ + 'encryption = Identity', + 'vis' : '[value]\n'+\ + 'key_id = VIS_AES_CFB\n'+\ + 'cell_key_length = 32\n'+\ + 'encryption = VIS_AES_CFB', + 'none': '[row]\n'+\ + 'key_id = Identity\n'+\ + 'encryption = Identity\n', + 'print':'[row]\n'+\ + 'key_id = Identity\n'+\ + 'encryption = Identity\n', + 'vis_print':'[row]\n'+\ + 'key_id = Identity\n'+\ + 'encryption = Identity\n'} + + +def mutation_from_kv_tuple(tup): + """ Define a pyaccumulo mutation from a (key, value) formatted tuple. + """ + row, cv, cf, cq, val = tup + print 'Inserting entry: \n Row - %s,\n Column_Visibility - %s,\n Column_Family - %s,\n Column_Qualifier - %s,\n Value - %s' % (row,cv,cf,cq,val) + m = pyaccumulo.Mutation(row) + m.put(cf=cf, cq=cq, cv=cv, val=val) + return m + +def grant_auths(table='demo', user='user3'): + """ + Grants read/write priviledges for the user + for the necessary tables in the demo, also sets + user's attributes to a,c,d,e + """ + print "Setting ", user, "'s attributes to a,c,d,e" + _ = subprocess.call("/usr/local/accumulo-1.7.0/bin/accumulo shell -u root -p secret -e 'setauths -u "+user+" -s a,c,d,e'", stdout=subprocess.PIPE, shell=True) + + tables = ['__VERSION_METADATA__','__KEYWRAP_METADATA__',"VIS_AES_CFB"] + tables.append(table) + + print "Granting read/write access to tables:" + for tab in tables: + print " Table ", tab + _ = subprocess.call("/usr/local/accumulo-1.7.0/bin/accumulo shell -u root -p secret -e 'grant Table.READ -t "+tab+" -u "+user+"'", stdout=subprocess.PIPE, shell=True) + _ = subprocess.call("/usr/local/accumulo-1.7.0/bin/accumulo shell -u root -p secret -e 'grant Table.WRITE -t "+tab+" -u "+user+"'", stdout=subprocess.PIPE, shell=True) + +def write_list_to_table(conn, encrypter, table, data): + """ Write a list to an Accumulo table. + Arguments: + conn - a pyaccumulo connection to an Accumulo instance + encrypter - an AccumuloEncrypt instance + table - the name of the table to write to + data - the list to write to the table, formatted as a list of + (key, cf, cq, value) tuples + """ + + if not conn.table_exists(table): + conn.create_table(table) + + wr = conn.create_batch_writer(table) + + for tup in data: + m = mutation_from_kv_tuple(tup) + enc_mut = encrypter.encrypt(m) + for mut in enc_mut: + wr.add_mutation(mut) + + wr.close() + +def run_insert(conn=None, + data=expressive_elems, + table='demo', + config_name = 'expressive', + PKI_object=None): + """ Insert a list into the accumulo table specified. + Arguments: + conn - the Accumulo connection to use + data - the list to insert into the Accumulo table + table - the name of the table to insert to + default_vis - the default visibility label to use. default: '(a&b)|c' + config_filept - file pointer to the configuration file for encryption + PKI_object - matches the interface on encryption PKI OBJECT, default is + DummyEncryptionPKI + """ + if conn is None: + conn = pyaccumulo.Accumulo(host='localhost', + port=42424, + user='root', + password='secret') + if PKI_object is None: + PKI_object = DummyEncryptionPKI(conn=conn) + + config_filept = StringIO(schema[config_name]) + encrypter = AccumuloEncrypt(config_filept, PKI_object) + print "\nEnrypting with the following schema: \n\n" + descriptions[config_name] + write_list_to_table(conn, encrypter, table, data) + +def run_retrieve(conn=None, + table='demo', + config_name = 'expressive', + PKI_object=None): + """ Retrieves and decrypts values from the specified table, + outputting the appropriate error messages if not. + Arguments: + conn - the Accumulo connection to use + data - the list to insert into the Accumulo table + table - the name of the table to insert to + config_filept - file pointer to the configuration file for encryption + PKI_object - matches the interface on encryption PKI OBJECT, default is + DummyEncryptionPKI + """ + if conn is None: + conn = pyaccumulo.Accumulo(host='localhost', + port=42424, + user='root', + password='secret') + if PKI_object is None: + PKI_object = DummyEncryptionPKI(conn=conn) + total = 0 + config_filept = StringIO(schema[config_name]) + decrypter = AccumuloEncrypt(config_filept, PKI_object) + + for entry in conn.scan(table): + total = total + 1 + try: + cell = decrypter.decrypt(entry) + if config_name == 'print': + print 'Entry: \n Row - %s,\n Column_Visibility - %s,\n Column_Family - %s,\n Column_Qualifier - %s,\n Value - %s\n' %(base64.b64encode(cell.row), + cell.cv, + base64.b64encode(cell.cf), + base64.b64encode(cell.cq), + base64.b64encode(cell.val)) + elif config_name == 'vis_print': + print 'Entry: \n Row - %s,\n Column_Visibility - %s,\n Column_Family - %s,\n Column_Qualifier - %s,\n Value - %s\n' %(cell.row, + cell.cv, + cell.cf, + cell.cq, + base64.b64encode(cell.val)) + else: + print 'Entry: \n Row - %s,\n Column_Visibility - %s,\n Column_Family - %s,\n Column_Qualifier - %s,\n Value - %s\n' % (cell.row, cell.cv,cell.cf,cell.cq,cell.val) + except DecryptionException as ve: + print 'Error: Entry failed to decrypt.' + print 'Error message:', ve.msg + print + + print 'Finished, decrypted %d total entries.' %(total) + +def run_search(conn=None, + table='demo', + config_name = 'expressive', + PKI_object=None, + row_range='Analytics'): + """ Retrieves and decrypts values from the specified table, + outputting the appropriate error messages if not. + Arguments: + conn - the Accumulo connection to use + data - the list to insert into the Accumulo table + table - the name of the table to insert to + config_filept - file pointer to the configuration file for encryption + PKI_object - matches the interface on encryption PKI OBJECT, default is + DummyEncryptionPKI + row_range - the keyword to search for + """ + if conn is None: + conn = pyaccumulo.Accumulo(host='localhost', + port=42424, + user='root', + password='secret') + if PKI_object is None: + PKI_object = DummyEncryptionPKI(conn=conn) + + total = 0 + enc_config_filept = StringIO(schema[config_name]) + dec_config_filept = StringIO(schema[config_name]) + encrypter = AccumuloEncrypt(enc_config_filept, PKI_object) + enc_row, _ = encrypter.encrypt_search(row_range, None) + range = pyaccumulo.Range(srow = enc_row, sinclude = True, + erow = enc_row, einclude = True) + + + + for entry in conn.scan(table, scanrange=range): + total = total + 1 + try: + cell = encrypter.decrypt(entry) + print "Entry: (%s, %s, %s, %s)" % (cell.row, cell.cf, cell.cq, cell.val) + except DecryptionException as ve: + print 'Error: Entry failed to decrypt.' + print 'Error message:', ve.msg + print + + print 'Finished, decrypted %d total entries.' %(total) + + +def run_pki_insert(genpath=DEMO_USERS, user='user1', conn=None): + """ Insert elements into the PKI as specified by the config + file located at genpath. + + Returns: + + ks - the keystore object initialized this way + """ + + if conn is None: + print 'Logging in to Accumulo...' + conn = pyaccumulo.Accumulo(host='localhost', port=42424, + user='root', password='secret') + + print 'Logged in. Creating key store...' + print 'Deleting existing metadata tables' + for table_name in ['__VERSION_METADATA__','__ATTR_TABLE__','__KEYWRAP_METADATA__']: + if conn.table_exists(table_name): + print 'Deleting table ', table_name + conn.delete_table(table_name) + ks = AccumuloAttrKeyStore(conn) + print 'Key store created.' + print + + master_secret = 'master secret key' + + print 'Initializing key store with dummy master secret "master secret key"...' + + + + kg = KeyGen(master_secret) + users = KeyGen.file_to_dict(genpath) + for _, infos in users.itervalues(): + for _, _, metadata, _ in infos: + if conn.table_exists(metadata): + print ' Found existing table:', metadata + print ' Deleting to have a clean slate.' + conn.delete_table(metadata) + + kg.initialize_users(users, ks) + + #get private keys to unwrap things + f = open(PRIV_KEYS+user+'_privkey.pem','r') + priv_key = RSA.importKey(f.read()) + + print 'Key store initialized.' + return EncryptionPKIAccumulo(conn, user, priv_key), KeyStoreFrontEnd(ks) + +def run_revoke(user, attr, genpath=DEMO_USERS, conn=None): + + if conn is None: + conn = pyaccumulo.Accumulo(host='localhost', port=42424, + user='root', password='secret') + + ks = AccumuloAttrKeyStore(conn) + + master_secret = 'master secret key' + kg = KeyGen(master_secret) + + users = KeyGen.file_to_dict(genpath) + + user_keys = {} + for k_user, k_tuple in users.iteritems(): + user_keys[k_user] = k_tuple[0] + + print "Revoking user %s's access to attribute %s." %(user, attr) + kg.revoke(user, attr, ks, ks, ks, user_keys) diff --git a/pace/encryption/enc_classes.py b/pace/encryption/enc_classes.py new file mode 100644 index 0000000..9447e39 --- /dev/null +++ b/pace/encryption/enc_classes.py @@ -0,0 +1,63 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: All the different types of algorithms +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Dec 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from pace.encryption.AES_encrypt import Pycrypto_AES_CTR, Pycrypto_AES_OFB, \ + Pycrypto_AES_CFB, Pycrypto_AES_CBC, Pycrypto_AES_GCM, Pycrypto_AES_SIV +from pace.encryption.visibility.vis_encrypt import VIS_AES_CTR, VIS_AES_OFB, \ + VIS_AES_CFB, VIS_AES_CBC, VIS_AES_GCM, VIS_Identity +from pace.encryption.abstract_encrypt import Identity_AccEncrypt + + +ALGORITHMS = {"Identity" : Identity_AccEncrypt, + "Pycrypto_AES_CFB" : Pycrypto_AES_CFB, + "Pycrypto_AES_CBC" : Pycrypto_AES_CBC, + "Pycrypto_AES_OFB" : Pycrypto_AES_OFB, + "Pycrypto_AES_CTR" : Pycrypto_AES_CTR, + "Pycrypto_AES_GCM" : Pycrypto_AES_GCM, + "Pycrypto_AES_SIV" : Pycrypto_AES_SIV, + "VIS_Identity" : VIS_Identity, + "VIS_AES_CFB" : VIS_AES_CFB, + "VIS_AES_CBC" : VIS_AES_CBC, + "VIS_AES_OFB" : VIS_AES_OFB, + "VIS_AES_CTR" : VIS_AES_CTR, + "VIS_AES_GCM" : VIS_AES_GCM} + +AES_ALGORITHMS = {"Pycrypto_AES_CFB" : Pycrypto_AES_CFB, + "Pycrypto_AES_CBC" : Pycrypto_AES_CBC, + "Pycrypto_AES_OFB" : Pycrypto_AES_OFB, + "Pycrypto_AES_CTR" : Pycrypto_AES_CTR, + "Pycrypto_AES_GCM" : Pycrypto_AES_GCM, + "Pycrypto_AES_SIV" : Pycrypto_AES_SIV} + +#modes of operation that require plaintext to be a multiple of a block length +LENGTHBOUND_AES_ALGORITHMS = {"Pycrypto_AES_CBC" : Pycrypto_AES_CBC} + +IV_AES_ALGORITHMS = { "Pycrypto_AES_CFB" : Pycrypto_AES_CFB, + "Pycrypto_AES_CBC" : Pycrypto_AES_CBC, + "Pycrypto_AES_OFB" : Pycrypto_AES_OFB, + "Pycrypto_AES_GCM" : Pycrypto_AES_GCM} + +AUTH_ALGORITHMS = {"Pycrypto_AES_GCM" : Pycrypto_AES_GCM} + +DET_ALGORITHMS = {"Pycrypto_AES_SIV" : Pycrypto_AES_SIV} + +VIS_ALGORITHMS = {"VIS_Identity" : VIS_Identity, + "VIS_AES_CFB" : VIS_AES_CFB, + "VIS_AES_CBC" : VIS_AES_CBC, + "VIS_AES_OFB" : VIS_AES_OFB, + "VIS_AES_CTR" : VIS_AES_CTR, + "VIS_AES_GCM" : VIS_AES_GCM} diff --git a/pace/encryption/enc_mutation.py b/pace/encryption/enc_mutation.py new file mode 100644 index 0000000..5462e4a --- /dev/null +++ b/pace/encryption/enc_mutation.py @@ -0,0 +1,424 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Definition of encrypted mutation and cells +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Dec 2014 ATLH Original file +## 30 Dec 2014 ATLH Added EncCell +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import itertools +import copy +from collections import defaultdict +from pyaccumulo import Mutation, Cell, Range +from operator import methodcaller + +from pace.encryption.encryption_exceptions import EncryptionException, DecryptionException +from pace.encryption.vars import DELIN_CHAR, CELL_MUT_MAPPING, DET_ALGORITHMS, VALID_KEYS, CELL_ORDER + +class EncMutation(Mutation): + ''' + Contains the data structures and logic for + applying encryptors to a mutation + ''' + def __init__(self, mut, encryptor_dict): + ''' + Arguments + mut - mutation as defined in pyaccumulo + interface + encryptor_dict - dictionary keyed by cell location + containing a tuple of the encryptor class and + key_id used for encryption or decryption. Also + contains the key object for retrieving the key + ''' + self._encrypted = False + self._num_updates = len(mut.updates) + self.encryptor_dict = encryptor_dict + + #lists of updates grouped by cell location + self.update_dict = {} + self.update_dict['row'] = [mut.row] * len(mut.updates) + self.update_dict['colFamily'] = [u.colFamily for u in mut.updates] + self.update_dict['colQualifier'] = [u.colQualifier for u in mut.updates] + self.update_dict['colVisibility'] = [u.colVisibility for u in mut.updates] + self.update_dict['timestamp'] = [u.timestamp for u in mut.updates] + self.update_dict['value'] = [u.value for u in mut.updates] + self.update_dict['deleteCell'] = [u.deleteCell for u in mut.updates] + + #methods to allow object to be treated as dict + def __getitem__(self, key): + return self.update_dict[key] + + def __setitem__(self, key, value): + self.update_dict[key] = value + + def __iter__(self): + for list in [self.update_dict['row'], + self.update_dict['colFamily'], + self.update_dict['colQualifier'], + self.update_dict['colVisibility'], + self.update_dict['timestamp'], + self.update_dict['value'], + self.update_dict['deleteCell']]: + yield list + + def __eq__(self, other): + if isinstance(other, self.__class__): + return self.update_dict == other.update_dict + else: + return False + + def __ne__(self, other): + return not self.__eq__(other) + + @staticmethod + def concatenate_cell_section_values(mutation, cell_sections): + ''' + Arguments: + mutation - Mutation which one wants to extract + the list of all the same cell locations + cell_sections - the location(s) that need to be + extracted from the mutation + + Returns: a list of all of the cell locations + for that mutation (taking into account all of + the cell's updates). If there is more then one + location, it is a list of the value concatenated + by the DELIN_CHAR character. + + For example: + mut = Mutation('abcd') + mut.put(cf='cf1',cq='cq1', cv='cv1', ts = '12345', val = 'val1') + mut.put(cf='cf2',val='val2') + and + cell_sections = [colFamily, value] + this function would return: + ['cf1|val1','cf2|val2'] + ''' + sections = [mutation[sec] for sec in cell_sections] + return [DELIN_CHAR.join(map(str, u)) for u in zip(*sections)] + + @staticmethod + def split_values(values): + ''' + Arguments: + values - A list of values constructed by + get_values_by_cell_string in which individual entries + are made of cell values concatenated by the DELIN_CHAR + + Returns: A list of tuples, the first list consisting of + the first values marked by the DELIN_CHAR, the second list + the second values in the entries, and so on. For example + the list ['a|b|c', "1|2|3"] would return [(a,1), (b, 2), + (c, 3)]. + ''' + return zip(*map(methodcaller('split', DELIN_CHAR), values)) + + def _remove_unencrypted_cell_sections(self, updates): + """ + Compares the list of targeted locations (where encrypted + values are stored) to the locations that are actually + encrypted as part of subsets. If there are any locations + that were included in part of a subset that weren't over + written with encrypted data, it removes the original, + unencrypted data, and replaces it with a list of empty + strings as long as the original list of updates. + """ + source_locations = set() + target_locations = set() + for (cell_string, encryptor) in self.encryptor_dict.items(): + source_locations.update(encryptor.cell_sections) + target_locations.add(cell_string) + + for sec in (source_locations - target_locations): + updates[sec] = list(itertools.repeat("", self._num_updates)) + + return updates + + def _get_key(self, key_id): + """ + Helper function that acquires the key from the key object for + encryption/decryption. Raises PKI Lookup error if the key_id + does not return a key for this particular user + """ + return self._key_object.get_key(key_id) + + def encrypt(self): + ''' + Returns a list of new mutations. Each portion of the cell that + has an associated encryptor is encrypted. + ''' + #only want to encrypt the values once + if not self._encrypted: + self._encrypted = True + enc_updates = self.update_dict.copy() + for (cell_string, encryptor) in self.encryptor_dict.items(): + enc_updates[cell_string] = encryptor.encryption.encrypt_mutation(self, + encryptor.key_container, + encryptor.cell_sections) + self.update_dict = self._remove_unencrypted_cell_sections(enc_updates) + + #TODO: in the case where the row is deterministically encrypted + # update to only produce one mutation + muts = [] + for (row, cf,cq,cv,ts,v,dc) in zip(*self): + mut = Mutation(row) + mut.put(cf,cq,cv,ts,v,dc) + muts.append(mut) + return muts + + def decrypt(self): + ''' + Returns a new mutation. Each portion of the cell that + has an associated encryptor is decrypted. Mostly + used for testing. + ''' + dec_updates = self.update_dict.copy() + for (cell_string, encryptor) in self.encryptor_dict.items(): + encryptor.encryption.decrypt_mutation(self, + dec_updates, + encryptor.key_container, + cell_string, + encryptor.cell_sections) + + self.update_dict = dec_updates + #only should be one cell since each encrypted mutation only contains one cell + assert len(self.update_dict['row']) == 1 + mut = Mutation(self.update_dict['row'][0]) + for (row, cf,cq,cv,ts,v,dc) in zip(*self): + mut.put(cf,cq,cv,ts,v,dc) + return mut + +#create a default empty dictionary with the empty string as default +#used in EncRange +def constant_empty(): + return itertools.repeat('').next + + +class EncRange(Range): + ''' + Contains the logic for encrypting and decrypting a range object only + in the case where the algorithm is deterministic, otherwise does not + change the contents of the range + ''' + + @staticmethod + def get_value_by_cell_string(cols, cell_sections): + ''' + Arguments: + cols - col dictionary which one wants to extract + the list of all the same cell locations + cell_sections - the location(s) that need to be + extracted from the dict + + Returns: a string of all of the cell_sections + for the range concatenated by the DELIN_CHAR + ''' + return DELIN_CHAR.join([str(cols[sec]) for sec in cell_sections]) + + @staticmethod + def split_value_by_cell_string(value): + return value.split(DELIN_CHAR) + + @staticmethod + def _remove_unencrypted_cell_sections(encryptor_dict, col_dict): + """ + Compares the list of targeted locations (where encrypted + values are stored) to the locations that are actually + encrypted as part of subsets. If there are any locations + that were included in part of a subset that weren't over + written with encrypted data, it removes the original, + unencrypted data, and replaces it with a list of empty + strings as long as the original list of updates. + """ + source_locations = set() + target_locations = set() + for (cell_string, encryptor) in encryptor_dict.items(): + source_locations.update(encryptor.cell_sections) + target_locations.add(cell_string) + + for sec in (source_locations - target_locations): + col_dict[sec] = '' + + @staticmethod + def _valid_configuration(encryptor_dict): + """ + Arguments: + encryptor_dict - dictionary keyed by cell location + containing a tuple of the encryptor class and also + contains the key object for retrieving the key + + Returns: True/False whether the configuration is valid + for searching. For example, in the case where + non-deterministic encryption appears + in the ordering before either deterministic or no encryption + an false is returned. For example: + + Row: no encryption + ColFamily: Deterministic + ColQualifier: CTR_MODE + + would return true, but: + + Row: CTR_MODE + ColFamily: Deterministc + ColQualifier: No encryption + would. + """ + det_encryptions = 0 + for cell_string in VALID_KEYS: + + #case of no encryption + try: + encryptor = encryptor_dict[cell_string] + except KeyError: + det_encryptions += 1 + continue + + #case of non-deterministic encryption + if encryptor.encryption.name not in DET_ALGORITHMS: + break + + det_encryptions +=1 + + return det_encryptions != 0 + + @staticmethod + def encrypt(row, cols, encryptor_dict): + ''' + Arguments: + row - the row to search for, this will be passed in as both + the start and end row into 'scan' + cols - double nested list of what columns + to look for, where the first element in the + column_family, the second is the column_qualifier. + Defaults to None. Example: + [['cf1','cq1'],['cf2','cq2']] + encryptor_dict - dictionary keyed by cell location + containing a tuple of the encryptor class and also + contains the key object for retrieving the key + + Returns: (encrypted_start_row, encrypt_end_row, encrypted_col_list) + as per the the configuration specifies. If it does not specify + any of the above values, they are left unchanged. + + In the case where non-deterministic encryption appears + in the ordering before either deterministic or no encryption + an error is raised. For example: + + Row: no encryption + ColFamily: Deterministic + ColQualifier: CTR_MODE + + would not raise an error, but: + + Row: CTR_MODE + ColFamily: Deterministc + ColQualifier: No encryption + + would. + ''' + if not EncRange._valid_configuration(encryptor_dict): + raise EncryptionException('Cannot encrypt a range object in which the configuration '+\ + 'has the leading portion of the key not either unencrypted ' +\ + 'or deterministically encrypted.') + + #check to see if the row is being encrypted + if encryptor_dict.has_key('row'): + encryptor = encryptor_dict['row'] + row = encryptor.encryption.encrypt_row(row, encryptor.key_container) + + enc_cols = [] + if cols == None: + return (row, None) + + + for col in cols: + col_dict = defaultdict(constant_empty()) + for (key, value) in zip(['colFamily','colQualifier'], col): + col_dict[key]=value + enc_col = col_dict.copy() + for cell_string in ['colFamily', 'colQualifier']: + try: + encryptor = encryptor_dict[cell_string] + except KeyError: + continue + + enc_col[cell_string] = encryptor.encryption.encrypt_cols(col_dict, + encryptor.key_container, + encryptor.cell_sections) + #convert back into a list + EncRange._remove_unencrypted_cell_sections(encryptor_dict, enc_col) + if not enc_col.has_key('colQualifier'): + enc_cols.append([enc_col['colFamily']]) + else: + enc_cols.append([enc_col['colFamily'], enc_col['colQualifier']]) + + return (row, enc_cols) + + +class EncCell(Cell): + ''' + Contains the logic for encrypting and decrypting a single cell + ''' + @staticmethod + def get_value_by_cell_string(cell, cell_sections): + return DELIN_CHAR.join([str(cell[CELL_MUT_MAPPING[sec]]) for sec in cell_sections]) + + @staticmethod + def split_value_by_cell_string(value): + return value.split(DELIN_CHAR) + + + @staticmethod + def encrypt(cell, encryptor_dict): + ''' + Arguments: + cell - cell to be encrypted + encryptor_dict - dictionary keyed by cell location + containing a tuple of the encryptor class and also + contains the key object for retrieving the key + Returns new cell with all locations in cell encrypted + that are noted in encryptor_dict + ''' + cell_dict = cell._asdict() + enc_cell = cell_dict.copy() + for (cell_string, encryptor) in encryptor_dict.items(): + enc_cell[CELL_MUT_MAPPING[cell_string]] = encryptor.encryption.encrypt_cell(cell_dict, + encryptor.key_container, + encryptor.cell_sections) + return Cell(*[enc_cell[field] for field in CELL_ORDER]) + + @staticmethod + def decrypt(cell, encryptor_dict): + ''' + Arguments: + cell - cell to be encrypted + encryptor_dict - dictionary keyed by cell location + containing a tuple of the encryptor class and also + contains the key object for retrieving the key + Returns new cell with all locations in cell decrypted + that are noted in encryptor_dict + ''' + cell_dict = cell._asdict() + dec_cell = cell_dict.copy() + for (cell_string, encryptor) in encryptor_dict.items(): + encryptor.encryption.decrypt_cell(cell_dict, + dec_cell, + encryptor.key_container, + cell_string, + encryptor.cell_sections) + return Cell(*[dec_cell[field] for field in CELL_ORDER]) + + + + diff --git a/pace/encryption/enc_mutation_test.py b/pace/encryption/enc_mutation_test.py new file mode 100644 index 0000000..7bc2b00 --- /dev/null +++ b/pace/encryption/enc_mutation_test.py @@ -0,0 +1,203 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Unit tests for cell code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Dec 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import logging +import unittest +import ConfigParser +import StringIO as stringio +from pyaccumulo import Mutation, Cell, Range + +from pace.encryption.enc_mutation import EncMutation, EncCell, EncRange +from pace.encryption.acc_encrypt import AccumuloEncrypt +from pace.encryption.encryption_pki import DummyEncryptionPKI +from pace.encryption.encryption_exceptions import EncryptionException, DecryptionException + + +class EncStructureTest(unittest.TestCase): + + def setUp(self): + #Set up encryptor_dict + config = stringio.StringIO( + '[row]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'encryption = Pycrypto_AES_CFB\n'+\ + 'cell_sections = row\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_CFB\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = Pycrypto_AES_CFB') + config_identity = stringio.StringIO( + '[row]\n'+\ + 'key_id = Identity\n'+\ + 'encryption = Identity\n'+\ + 'cell_sections = row\n'+\ + '[colFamily]\n'+\ + 'key_id = Identity\n'+\ + 'cell_sections = colFamily\n'+\ + 'encryption = Identity') + + config_det = stringio.StringIO( + '[row]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'encryption = Pycrypto_AES_SIV\n'+\ + 'cell_sections = row\n'+\ + '[colFamily]\n'+\ + 'key_id = Pycrypto_AES_SIV\n'+\ + 'cell_sections = colFamily,colQualifier\n'+\ + 'encryption = Pycrypto_AES_SIV') + + # Use a consistent PKI + self.pki = DummyEncryptionPKI() + + self.encryptor_dict = self._create_encryptor_dict(config) + self.encryptor_dict_identity = self._create_encryptor_dict(config_identity) + self.encryptor_dict_det = self._create_encryptor_dict(config_det) + + #Sample mutation + mut = Mutation('abcd') + mut.put(cf='cf1',cq='cq1', cv='cv1', ts = '12345', val = 'val1') + self.mut = mut + + #complex Sample mutation + c_mut = Mutation('abcd') + c_mut.put(cf='cf1',cq='cq1', cv='cv1', ts = '12345', val = 'val1') + c_mut.put(cf='cf2', val='val2') + c_mut.put(cf='cf3',cq='cq3', val = 'val3') + c_mut.put(val = 'val4') + self.c_mut = c_mut + + + + def _create_encryptor_dict(self, config): + config_parser = ConfigParser.ConfigParser() + config_parser.readfp(config) + key_object = self.pki + return AccumuloEncrypt._config_to_encryptor(config_parser, + key_object) + @staticmethod + def _mutations_equal(list_mut, mut2): + ''' + list_mut - list of mutations + mut2 - the original mutation + + Returns if the list of mutations produced by a plaintext + mutation is the same as the original + ''' + equal = True + equal &= len(list_mut) == len(mut2.updates) + for (mut, update) in zip(list_mut, mut2.updates): + equal &= mut.row == mut2.row + equal &= mut.updates[0] == update + return equal + + + def test_encrypt_mutation(self): + ''' + Tests encryption functionality of EncMutation + when encryption is identity function + ''' + enc_mut = EncMutation(self.mut,self.encryptor_dict_identity).encrypt() + self.assertTrue(self._mutations_equal(enc_mut, self.mut), + "Mutation is not correctly handled during encryption process") + + def test_encrypt_overwrite(self): + """ + Tests the fact information is overwritten if encrypted and not + a target location + """ + enc_mut = EncMutation(self.mut, self.encryptor_dict).encrypt() + self.assertTrue(len(enc_mut) == 1) + for u in enc_mut[0].updates: + self.assertEqual(u.colQualifier, '', "colQualifier was not overwritten correctly") + + def test_row_different(self): + """ + Tests that the row value produced is different if deterministic encryption is not + used + """ + enc_muts = EncMutation(self.c_mut, self.encryptor_dict).encrypt() + self.assertTrue(len(enc_muts) == 4) + row_ids = set() + for mut in enc_muts: + row_ids.add(mut.row) + self.assertTrue(len(row_ids) == 4) + + def test_row_same(self): + """ + Tests that the row value produced is same if deterministic encryption is + used + """ + enc_muts = EncMutation(self.c_mut, self.encryptor_dict_det).encrypt() + self.assertTrue(len(enc_muts) == 4) + row_ids = set() + for mut in enc_muts: + row_ids.add(mut.row) + self.assertTrue(len(row_ids) == 1) + + def test_encrypt_decrypt_mutation(self): + ''' + Tests encrypt then decrypt functionality of EncMutation + ''' + enc_mut = EncMutation(self.mut, self.encryptor_dict).encrypt() + self.assertTrue(len(enc_mut) == 1) + dec_mut = EncMutation(enc_mut[0], self.encryptor_dict).decrypt() + self.assertTrue(self._mutations_equal([dec_mut], self.mut), + "Mutation is not correctly handled during encryption and decryption process") + + + def test_decrypt_cell(self): + ''' + Tests decryption functionality of EncCell when + decryption is identity function + ''' + cell = Cell('row','cf','cq','cv',1234,'val') + dec_cell = EncCell.decrypt(cell, self.encryptor_dict_identity) + self.assertEqual(cell, dec_cell, + str(dec_cell) + " was not correctly handled during decyption process " +\ + "should be " + str(cell)) + + def test_encrypt_decrypt_cell(self): + ''' + Tests encrypt then decrypt functionality of EncCell + ''' + cell = Cell('row','cf','cq','cv',1234,'val') + enc_cell = EncCell.encrypt(cell, self.encryptor_dict) + dec_cell = EncCell.decrypt(enc_cell, self.encryptor_dict) + self.assertEqual(cell, dec_cell, + str(dec_cell) + " was not correctly encrypted and decrypted " +\ + "should be " + str(cell)) + + def test_get_and_split_values(self): + ''' + Tests get_values_by_cell_string and split_values_by_cell_string + ''' + mut = EncMutation(self.mut,self.encryptor_dict) + values = EncMutation.concatenate_cell_section_values(mut, ['colFamily','colQualifier']) + self.assertEqual(values, ['cf1+cq1']) + + split_values = EncMutation.split_values(values) + self.assertEqual(split_values, [('cf1',),('cq1',)]) + + cell = Cell('row','cf','cq','cv',1234,'val') + value = EncCell.get_value_by_cell_string(cell._asdict(), ['colFamily', 'colQualifier']) + self.assertEqual(value, 'cf+cq') + + split_value = EncCell.split_value_by_cell_string(value) + self.assertEqual(split_value,['cf','cq']) + + diff --git a/pace/encryption/enc_utils.py b/pace/encryption/enc_utils.py new file mode 100644 index 0000000..85e20dc --- /dev/null +++ b/pace/encryption/enc_utils.py @@ -0,0 +1,210 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Utility functions for testing the encryption code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 20 Jan 2015 ATLH Original file - based on sign_utils +## ************** +""" Utility functions and tests for mass encryption/decryption of rows written to + Accumulo. + Any randomized test should use the same seed so that they are equivalent. +""" + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import time, datetime + +from pyaccumulo import Accumulo, Mutation, Range +from pace.encryption.encryption_exceptions import DecryptionException +from pace.common.common_utils import generate_data, sanitize + +from pace.common import common_utils + +def sanitize(string): + return common_utils.sanitize(string) + +def generate_data(filename, + seed, + num_entries=50000, + num_rows=1000, + vis_length=9, + row_length=9): + + common_utils.generate_data(filename, seed, default_vis = 'a&b', + num_entries = num_entries, + num_rows = num_rows, + vis_length = vis_length, + row_length = row_length) + +def write_and_encrypt_data(file_in, conn, table, encryptor, benchmark=False): + + #Get the lines from the file + print "Opening file", file_in + f = open(file_in, 'r') + lines = f.readlines() + f.close() + assert lines + print "Lines (%d) are now in memory." %len(lines) + #create the table if it doesn't exist yet + if not conn.table_exists(table): + conn.create_table(table) + print table, 'table created' + print "Beginning write." + + wr = conn.create_batch_writer(table) + row = '340930563???poitapeoita' + m = None + + if benchmark: + print "Starting encrypting..." + start = time.clock() + + mutations = [] + for l in lines: + pieces = l.split('\t') + if (row != pieces[0]): + if m: + mutations.append(m) + row = pieces[0] + m = Mutation(row) + vis = pieces[3] + m.put(cf=pieces[1], cq=pieces[2], cv=vis, val=pieces[4][:-1]) + mutations.append(m) + + if benchmark: + print "Starting encrypting..." + start = time.clock() + + for m in mutations: + wr.add_mutation(encryptor.encrypt(m)) + + if benchmark: + end = time.clock() + print "Encrypting finished!" + + wr.close() + + print "Write completed." + + if benchmark: + return (start, end) + +def write_data(file_in, conn, table, benchmark=False): + """ Just writes the data without signing it. + """ + + #Get the lines from the file + f = open(file_in, 'r') + lines = f.readlines() + f.close() + + #create the table if it doesn't exist yet + if not conn.table_exists(table): + conn.create_table(table) + + wr = conn.create_batch_writer(table) + m = None + + mutations = [] + for l in lines: + pieces = l.split('\t') + row = pieces[0] + m = Mutation(row) + vis = None + m.put(cf=pieces[1], cq=pieces[2], cv=pieces[3], val=pieces[4][:-1]) + mutations.append(m) + if benchmark: + print "Starting writing..." + start = time.clock() + + for m in mutations: + wr.add_mutation(m) + + if benchmark: + print "Done writing ..." + end = time.clock() + wr.close() + + if benchmark: + return (start,end) + +def decrypt_data(conn, table, decryptor, benchmark=False): + """ Verify the signed data in a table. + + Arguments: + conn - the connection to the accumulo server + table - the name of the table on the server to decrypt + decryptor - AcccumuloDecrypt object that will decrypt mutations + benchmark - whether we're benchmarking decryption (default: False) + """ + success = True + if benchmark: + print "Starting decryption..." + start = time.clock() + + count = 0 + dec_error = 0 + for entry in conn.scan(table): + count += 1 + try: + dec_entry = decryptor.decrypt(entry) + except DecryptionException as ve: + dec_error += 1 + if dec_error < 11: + print "Decryption error:", ve.msg + print "Entry was %s" % (str(entry)) + success = False + + if benchmark: + print "Decryption finished!" + end = time.clock() + + if success and count > 0: + print "Decryption of all (%d) entries succeeded." %count + elif count <= 0: + print "WARNING: no entries to decrypt" + else: + print "FAILURE: %d entries failed to decrypt." % dec_error + + if benchmark: + return (success, start, end) + else: + return success + +def read_data(conn, table, benchmark=False): + """ Read the data in a table. + + Arguments: + conn - the connection to the accumulo server + table - the name of the table on the server to decrypt + benchmark - whether we're benchmarking decryption (default: False) + """ + success = True + if benchmark: + print "Starting reading..." + start = time.clock() + + count = 0 + dec_error = 0 + for entry in conn.scan(table): + count += 1 + + + if benchmark: + print "Reading finished!" + end = time.clock() + + + if benchmark: + return (None, start, end) + + + diff --git a/pace/encryption/encrypt_test.py b/pace/encryption/encrypt_test.py new file mode 100644 index 0000000..2011eff --- /dev/null +++ b/pace/encryption/encrypt_test.py @@ -0,0 +1,187 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Tests/benchmark against live accumulo +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 20 Jan 2015 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import argparse +import profile + +from pace.encryption.benchmarker import Benchmarker +from pace.encryption.enc_classes import ALGORITHMS + +def main(): + parser = argparse.ArgumentParser(description=( + 'Test the encryption code with a running Accumulo server instance.')) + + parser.add_argument('--profile', + dest='profile', + action='store_const', + default=False, + const=True, + help='profile the test performed') + + parser.add_argument('--benchmark', + dest='benchmark', + action='store_const', + default=False, + const=True, + help='benchmark the test performed') + + parser.add_argument('--action', + dest='action', + action='store', + default='full', + choices=['full', 'encrypt', 'decrypt','none'], + help='determine what action to take \ + (default: write encrypted data & then decrypt)') + + parser.add_argument('--scheme', + dest='scheme', + action='store', + default='Pycrypto_AES_CFB', + choices=ALGORITHMS.keys().append("ALL"), + help='specify an encryption scheme to use \ + (default: AES_CFB)') + + parser.add_argument('--seed', + dest='seed', + action='store', + help='specify a seed to use for the randomness') + + parser.add_argument('--table', + dest='table', + action='store', + required=True, + help='specify the table in the accumulo database \ + to use') + + parser.add_argument('--port', + dest='port', + action='store', + default='42424', + type=int, + help='the port to connect to the Accumulo instance on') + + parser.add_argument('--user', + dest='user', + action='store', + default='root', + help='the username to connect to the Accumulo instance with') + + parser.add_argument('--hostname', + dest='hostname', + action='store', + default='localhost', + help='the hostname of the Accumulo instance') + + parser.add_argument('--password', + dest='password', + action='store', + default='secret', + help='the password for the Accumulo instance') + + parser.add_argument('--config', + dest='config', + action='store', + help='Encryption configuration file') + + args = parser.parse_args() + + + if args.action == 'full': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_test(config_file=args.config,\ + encClassName=args.scheme,\ + table=args.table,\ + encrypt=True,\ + decrypt=True,\ + benchmark=args.benchmark)', + globals(), + locals()) + else: + bench.run_test(config_file = args.config, + encClassName=args.scheme, + table=args.table, + encrypt=True, + decrypt=True, + benchmark=args.benchmark) + + elif args.action == 'encrypt': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_test(config_file=args.config,\ + encClassName=args.scheme,\ + table=args.table,\ + encrypt=True,\ + decrypt=False,\ + benchmark=args.benchmark)', + globals(), locals()) + else: + bench.run_test(config_file=args.config, + encClassName=args.scheme, + table=args.table, + encrypt=True, + decrypt=False, + benchmark=args.benchmark) + + elif args.action == 'decrypt': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_test(config_file=args.config,\ + encClassName=args.scheme,\ + table=args.table,\ + encrypt=False,\ + decrypt=True,\ + benchmark=args.benchmark)', + globals(), locals()) + else: + bench.run_test(config_file=args.config, + encClassName=args.scheme, + table=args.table, + encrypt=False, + decrypt=True, + benchmark=args.benchmark) + + elif args.action == 'none': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_test(config_file=args.config,\ + encClassName=args.scheme,\ + table=args.table,\ + encrypt=False,\ + decrypt=False,\ + benchmark=args.benchmark)', + globals(), locals()) + else: + bench.run_test(config_file=args.config, + encClassName=args.scheme, + table=args.table, + encrypt=False, + decrypt=False, + benchmark=args.benchmark) + else: + print "Invalid action: " + args.action + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/pace/encryption/encryption_exceptions.py b/pace/encryption/encryption_exceptions.py new file mode 100644 index 0000000..4e7cd94 --- /dev/null +++ b/pace/encryption/encryption_exceptions.py @@ -0,0 +1,34 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Contains exceptions for encryption code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 10 Aug 2015 ATLH Original file +## ************** + +class EncryptionException(Exception): + """ Exception raised when unable to encrypt. + + Attributes: + msg - error message for situation + """ + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + +class DecryptionException(Exception): + """ Exception raised when unable to decrypt. + + Attributes: + msg - error message for situation + """ + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg \ No newline at end of file diff --git a/pace/encryption/encryption_pki.py b/pace/encryption/encryption_pki.py new file mode 100644 index 0000000..5920ade --- /dev/null +++ b/pace/encryption/encryption_pki.py @@ -0,0 +1,474 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Class for encryption key management +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 10 Dec 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from Crypto.PublicKey import RSA +from base64 import b64encode +from beaker.cache import CacheManager +from beaker.util import parse_cache_config_options + +from pace.pki.keystore import KeyInfo +from pace.pki.abstractpki import PKILookupError +from pace.pki.accumulo_keystore import AccumuloKeyStore +from pace.common.fakeconn import FakeConnection + +import pace.pki.key_wrap_utils as key_utils +from pace.encryption.enc_classes import AES_ALGORITHMS, VIS_ALGORITHMS + +#creating cache where all the contents are stored within local memory +cache_opts = { + 'cache.type': 'memory', + } +cache = CacheManager(**parse_cache_config_options(cache_opts)) + +### NB: For functions decorated with: +### +### @cache.cache('key',expire=3600) +### +### +### Objects are cached for a paritcular set of arguments +### when a function call is made - in this particular example +### it will be for an hour. Thus when a call is made again, +### with the same set of arguments, the cached value is +### returned in lieu of another execution of the method. +### +### NB: There exists one copy of the cache for each class. This means +### that two instances of the cache, that may have different +### instance variables, will use the same copy of the cache. In +### this particular case, two copies of the PKI object that refer +### to different users on the same system or users who have more +### than one key store to connect to cannot be supported without +### further modification. For flexibility, we include both a plain key +### store and a cached subclass of it. + +class EncryptionPKIBase(object): + + def __init__(self, *args): + pass + + def get_key(self, algorithm): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the current key, triggers + PKILookupError if the algorithm is not part + of AES_ALGORITHMS + + Returns: + Current key for (userid, algorithm) tuple + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm) pairing. + """ + pass + + def get_current_key(self, algorithm): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the key, triggers + PKILookupError if the algorithm is not part + of AES_ALGORITHMS + + Returns: + (Most current key for (userid, algorithm) tuple, version) + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm) tuple. + + """ + pass + + + def get_attribute_key(self, algorithm, attribute): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the current key, triggers + PKILookupError if the algorithm is, not part + of VIS_ALGORITHMS + attribute - Attribute for which to rereive the current key for, + currently does not support looking for versions. + + Returns: + Current key for (userid, algorithm, attribute) triple + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm, attribute) tuple. + """ + pass + + def get_current_attribute_key(self, algorithm, attribute): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the key, triggers + PKILookupError if the algorithm is not part + of AES_ALGORITHMS + attribute - Attribute for which to retrieve the key for + + Returns: + + (Most current key for (userid, algorithm, attribute) tuple, version) + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm, attribute) tuple. + + """ + pass + + +class EncryptionPKIAccumulo(EncryptionPKIBase): + + """ + PKI object for encryption that uses an AccumuloKeyStore as a + backend. Matches the EncryptionPKIBase interface. + + Instance variables: + _acc_keystore - a handle on an instance of an Accumulo Keystore to + retrieve keys from + _user_id - the string representing the user's identity + _rsa_key - RSA key object produced by RSA.generate(). + + """ + + def __init__(self, conn, user_id, rsa_key): + """ + Arguments: + conn - (Accumulo connection) Connection to the Accumulo + instance that is being used as the Keystore. + NB: This represents the authentication for the user + to be accessing the keystore - including what + keys they should be able to access based on visability + labels. + user_id - (string) String that is used in the Keystore to + identify the particular user + rsa_key - (Crypto.PublicKey.RSA) Key object to wrap/unwrap keys + with. TODO: create a loader from a file for RSA keys + + """ + self._acc_keystore = AccumuloKeyStore(conn) + self._user_id = user_id + self._rsa_key = rsa_key + + def get_current_key(self, algorithm): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the key for, triggers + PKILookupError if the algorithm is not part + of AES_ALGORITHMS + + Returns: + (Most current key for (userid, algorithm) tuple, version) + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm) tuple. + + """ + #get the keys + try: + key_wrap = self._acc_keystore.retrieve_latest_version(self._user_id, + algorithm, + '') + except PKILookupError: + raise PKILookupError("User " + self._user_id + " with algorithm " +\ + algorithm + " is not present in keystore.") + + #unwrap the key + return (key_utils.unwrap_key(key_wrap.keywrap, self._rsa_key), key_wrap.vers) + + def get_current_attribute_key(self, algorithm, attribute): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the key for, triggers + PKILookupError if the algorithm is not part + of AES_ALGORITHMS + attribute - (string) Attribute for which to retrieve the key for + + Returns: + (Most current key for (userid, algorithm, attribute) tuple, version) + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm, attribute) tuple. + + """ + #get the keys + try: + key_wrap = self._acc_keystore.retrieve_latest_version(self._user_id, + algorithm, + attribute) + except PKILookupError as ple: + raise PKILookupError( + "User %s with algorithm %s and attribute %s is not present in keystore." + %(self._user_id, algorithm, attribute)) + + #unwrap the key + return (key_utils.unwrap_key(key_wrap.keywrap, self._rsa_key), key_wrap.vers) + + + def get_key(self, algorithm, version=1): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the key for, triggers + PKILookupError if the algorithm is not part + of AES_ALGORITHMS + version - (int) version of key to grab, defaults to 1 + + Returns: + Key for (userid, algorithm, version) tuple + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm, version) tuple. + + """ + #get the keys + try: + key_wrap = self._acc_keystore.retrieve(self._user_id, + '', + version, + algorithm) + except PKILookupError: + raise PKILookupError("User " + self._user_id + " with algorithm " +\ + algorithm + " is not present in keystore.") + #unwrap the key + return key_utils.unwrap_key(key_wrap, self._rsa_key) + + def get_attribute_key(self, algorithm, attribute, version=1): + """ + Arguments: + algorithm - (string) Name of algorithm for which the user + wishes to retrieve the current key for, triggers + PKILookupError if the algorithm is not part + of VIS_ALGORITHMS + attribute - (string) Attribute for which to retrieve the key for + version - (int)version of key to grab, defaults to 1 + + Returns: + Key for (userid, algorithm, attribute, version) tuple + + Raises: + PKILookupError if the key cannot be found for the + (userid, algorithm, attribute, version) tuple. + + """ + #get the keys + try: + key_wrap = self._acc_keystore.retrieve(self._user_id, + attribute, + version, + algorithm) + except PKILookupError as ple: + raise PKILookupError( + "User %s with algorithm %s and attribute %s is not present in keystore." + %(self._user_id, algorithm, attribute)) + #unwrap the key + return key_utils.unwrap_key(key_wrap, self._rsa_key) + + +class CachingEncryptionPKIMixin(object): + """ + Mixin class that implements caching the results for an hour + """ + + @cache.cache('key',expire=3600) + def get_current_key(self, algorithm): + return super(CachingEncryptionPKIMixin, self).get_current_key(algorithm) + + @cache.cache('key',expire=3600) + def get_current_attribute_key(self, algorithm, attribute): + return super(CachingEncryptionPKIMixin, self).get_current_attribute_key(algorithm, attribute) + + @cache.cache('key',expire=3600) + def get_key(self, algorithm, version=1): + return super(CachingEncryptionPKIMixin, self).get_key(algorithm, version) + + @cache.cache('key',expire=3600) + def get_attribute_key(self, algorithm, attribute, version=1): + return super(CachingEncryptionPKIMixin, self).get_attribute_key(algorithm, attribute, version) + +class CachingEncryptionPKIAccumulo(CachingEncryptionPKIMixin, EncryptionPKIAccumulo): + """ + Same as EncryptionPKIAccumulo, but caches results for an hour + """ + pass + +class DummyEncryptionPKI(EncryptionPKIAccumulo): + + """ + Sample PKI object for encryption that uses an AccumuloKeyStore as a + backend. Contains hard-code key values. + + Used primarily for testing. Matches the EncryptionPKIAcummulo interface. + """ + + + def __init__(self, conn=None, terms=None): + """ + Arguments: + + conn - connection to AccumuloKeyStore. Can be connection to + a live Accumulo instance. Defaults to a FakeConnection() + terms - (list) attributes to insert keys for - can be 'a'-'e'. + Allows for the creation of a 'limited' PKI for + demos and testing. Defaults to ['a','b',c','d','e'] + + Note: For key names we recommend to use a combination of + the algorithm being used and the specific table name, + along the lines of AES_CBC__table__, not the names + listed below. + + """ + # Initialize the new FakeConnection here so Python doesn't + # create a new hidden global variable for the default argument + if conn is None: + conn = FakeConnection() + + if terms is None: + terms = ['a','b','c','d','e'] + + + SYM_KEYS_TO_INSERT = {"table1": [(1,b'Sixteen by1e key')], + "Pycrypto_AES_CFB": [(1,b'Sixteen by1e key'), + (2,b'Sixteen by2e key'), + (3,b'Sixteen by3e key')], + "Pycrypto_AES_CBC": [(1,b'Sixteen bb1e key')], + "Pycrypto_AES_OFB": [(1,b'Sixteen bc1e key'), + (2,b'Sixteen bc2e key'), + (3,b'Sixteen bc3e key')], + "Pycrypto_AES_CTR": [(1,b'Sixteen bd1e key')], + "Pycrypto_AES_GCM": [(1,b'Sixteen be1e key'), + (2,b'Sixteen be2e key')], + "Pycrypto_AES_SIV": [(1, b'Sixteen byte keySixteen byte key')]} + + ATTR_KEYS_TO_INSERT={ + "VIS_Identity" : [('a', 1, b'Sixteen bate k1y'), + ('a', 2, b'Sixteen bate k2y'), + ('a', 3, b'Sixteen bate k3y'), + ('b', 1, b'Sixteen bbte k1y'), + ('b', 2, b'Sixteen bbte k2y'), + ('c', 1, b'Sixteen bcte key'), + ('d', 1, b'Sixteen bdte k1y'), + ('d', 2, b'Sixteen bdte k2y'), + ('d', 3, b'Sixteen bdte k3y'), + ('d', 4, b'Sixteen bdte k4y'), + ('e', 1, b'Sixteen bete key')], + "VIS_AES_CFB" : [('a', 1, b'Sixteen bate key'), + ('b', 2, b'Sixteen bbte k2y'), + ('b', 3, b'Sixteen bbte k3y'), + ('c', 1, b'Sixteen bcte key'), + ('d', 2, b'Sixteen bdte key'), + ('d', 3, b'Sixteen bdte key'), + ('d', 4, b'Sixteen bdte key'), + ('d', 5, b'Sixteen bdte key'), + ('e', 1, b'Sixteen bete key')], + "VIS_AES_CBC" : [('a', 1, b'Sixteen bate k1y'), + ('a', 2, b'Sixteen bate k2y'), + ('a', 3, b'Sixteen bate k3y'), + ('a', 5, b'Sixteen bate k5y'), + ('b', 1, b'Sixteen bbte k1y'), + ('b', 2, b'Sixteen bbte k2y'), + ('b', 3, b'Sixteen bbte k3y'), + ('c', 3, b'Sixteen bcte k3y'), + ('c', 4, b'Sixteen bcte k4y'), + ('c', 5, b'Sixteen bcte k5y'), + ('d', 1, b'Sixteen bdte k1y'), + ('d', 2, b'Sixteen bdte k2y'), + ('e', 1, b'Sixteen bete key')], + "VIS_AES_OFB" : [('a', 2, b'Sixteen bate k2y'), + ('a', 3, b'Sixteen bate k3y'), + ('a', 4, b'Sixteen bate k4y'), + ('a', 5, b'Sixteen bate k5y'), + ('b', 1, b'Sixteen bbte k1y'), + ('b', 2, b'Sixteen bbte k2y'), + ('b', 3, b'Sixteen bbte k3y'), + ('b', 4, b'Sixteen bbte k4y'), + ('c', 2, b'Sixteen bcte k2y'), + ('c', 3, b'Sixteen bcte k3y'), + ('d', 2, b'Sixteen bdte key'), + ('e', 1, b'Sixteen bete key')], + "VIS_AES_CTR" : [('a', 1, b'Sixteen bate k1y'), + ('a', 3, b'Sixteen bate k3y'), + ('a', 4, b'Sixteen bate k4y'), + ('b', 1, b'Sixteen bbte k1y'), + ('b', 2, b'Sixteen bbte k3y'), + ('b', 3, b'Sixteen bbte k3y'), + ('c', 2, b'Sixteen bcte key'), + ('d', 1, b'Sixteen bdte key'), + ('e', 3, b'Sixteen bete k3y'), + ('e', 5, b'Sixteen bete k5y')], + "VIS_AES_GCM" : [('a', 1, b'Sixteen bate key'), + ('b', 2, b'Sixteen bbte key'), + ('c', 1, b'Sixteen bcte k1y'), + ('c', 2, b'Sixteen bcte k2y'), + ('c', 3, b'Sixteen bcte k3y'), + ('d', 1, b'Sixteen bdte k1y'), + ('d', 2, b'Sixteen bdte k2y'), + ('d', 4, b'Sixteen bdte k4y'), + ('e', 5, b'Sixteen bete key')]} + + #remove existing symmetric key tables + for metadata in SYM_KEYS_TO_INSERT.keys(): + if conn.table_exists(metadata): + conn.delete_table(metadata) + + #remove existing attribute key tables + for metadata in ATTR_KEYS_TO_INSERT.keys(): + if conn.table_exists(metadata): + conn.delete_table(metadata) + + #generate RSA key + RSA_key = RSA.generate(3072) + super(DummyEncryptionPKI,self).__init__(conn, 'one', RSA_key) + + #add symmetric keys + for (algorithm, keys) in SYM_KEYS_TO_INSERT.iteritems(): + for ver, key in keys: + self._acc_keystore.insert(str(self._user_id), + KeyInfo(attr='', + vers=ver, + metadata=algorithm, + keywrap=key_utils.wrap_key(key, self._rsa_key), + keylen=len(key))) + + #add attribute keys + keys_to_insert = [] + for (algorithm, keys) in ATTR_KEYS_TO_INSERT.iteritems(): + for attr, vers, key in keys: + if attr in terms: + keys_to_insert.append( + KeyInfo(attr=attr, + vers=vers, + metadata=algorithm, + keywrap=key_utils.wrap_key(key, self._rsa_key), + keylen=len(key))) + + self._acc_keystore.batch_insert(str(self._user_id), keys_to_insert) + +class DummyCachingEncryptionPKI(CachingEncryptionPKIMixin, DummyEncryptionPKI): + """ + Same as DummyEncryptionPKI, but caches results for an hour + """ + pass diff --git a/pace/encryption/perf_benchmarking.py b/pace/encryption/perf_benchmarking.py new file mode 100644 index 0000000..0cdd01f --- /dev/null +++ b/pace/encryption/perf_benchmarking.py @@ -0,0 +1,369 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: runs benchmarking tests for performance section +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 1 Nov 2015 ATLH Original file +## ************** + + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import logging +from optparse import OptionParser, OptionGroup +from pace.encryption.benchmarker import Benchmarker +from pace.encryption.encryption_pki import DummyCachingEncryptionPKI, DummyEncryptionPKI +from pyaccumulo import Accumulo + +visibility_labels = ['a', + 'a&b', + 'a&b&c', + 'a|b', + 'a|b|c', + '(a&b)|c', + '(a|b)&c', + 'a|(b&c)', + 'a&(b|c)', + '(a&b)|(b&c)', + '(a|b)&(c|d)', + '((a&b)|c)&(d|e)'] + + +def run_non_ceabac(benchmarker, table_prefix, logger, profile, options): + """ + Runs the non-ceabac configuration files located in + /config/non_ceabac/ in addition to a baseline + + Arguments: + benchmarker - the benchmarker that contains the connection + to Accumulo, encryptor, etc + table_prefix - the prefix put in front of tables where the + data is stored + logger - logger instance where results are logged + profile - true if you are profiling code + options - contains the number of cells and rows to run + """ + + logger.info("Running Non-CEABAC Tests") + #run benchmarker for baseline + logger.info("Running test for non_ceabac_baseline") + benchmarker.run_test('', + table=table_prefix+'Non_ceabac_baseline', + vis='(a&b)|c', + encrypt=False, + decrypt=False, + num_entries=options.num_entries, + num_rows=options.num_rows) + + #run_test for all files in the non-ceabac configuration directory + for file in os.listdir("./config/non-ceabac"): + logger.info('Running test for %s' % (file)) + benchmarker.run_test('./config/non-ceabac/'+file, + table=table_prefix + file.split('.')[0], + vis='(a&b)|c', + profile=profile, + num_entries=options.num_entries, + num_rows=options.num_rows) + +def run_diff_non_ceabac(benchmarker, table_prefix, logger, profile, options): + """ + Runs the non-ceabac configuration files located in + /config/different_schemas_non_ceabac/ in addition to a baseline + + Arguments: + benchmarker - the benchmarker that contains the connection + to Accumulo, encryptor, etc + table_prefix - the prefix put in front of tables where the + data is stored + logger - logger instance where results are logged + """ + + logger.info("Running Non-CEABAC with different configuration files tests") + #run benchmarker for baseline + logger.info("Running test for non_ceabac_baseline") + benchmarker.run_test('', + table=table_prefix+'diff_non_ceabac_baseline', + vis='(a&b)|c', + encrypt=False, + decrypt=False, + num_entries=options.num_entries, + num_rows=options.num_rows) + + #run_test for all files in the non-ceabac configuration directory + for file in os.listdir("./config/different_schemas_non_ceabac"): + logger.info('Running test for %s' % (file)) + benchmarker.run_test('./config/different_schemas_non_ceabac/'+file, + table=table_prefix + file.split('.')[0], + vis='(a&b)|c', + profile=profile, + num_entries=options.num_entries, + num_rows=options.num_rows) + + +def run_diff_ceabac(benchmarker, table_prefix, logger, profile, options): + """ + Runs the ceabac configuration files located in + /config/different_schemas_ceabac/ in addition to a baseline + + Arguments: + benchmarker - the benchmarker that contains the connection + to Accumulo, encryptor, etc + table_prefix - the prefix put in front of tables where the + data is stored + logger - logger instance where results are logged + """ + + logger.info("Running CEABAC with different configuration files tests") + #run benchmarker for baseline + logger.info("Running test for ceabac_baseline") + benchmarker.run_test('', + table=table_prefix+'diff_ceabac_baseline', + vis='(a&b)|c', + encrypt=False, + decrypt=False, + num_entries=options.num_entries, + num_rows=options.num_rows) + + #run_test for all files in the non-ceabac configuration directory + for file in os.listdir("./config/different_schemas_ceabac"): + logger.info('Running test for %s' % (file)) + benchmarker.run_test('./config/different_schemas_ceabac/'+file, + table=table_prefix + file.split('.')[0], + vis='(a&b)|c', + profile=profile, + num_entries=options.num_entries, + num_rows=options.num_rows) + + +def run_ceabac(benchmarker, table_prefix, logger, profile, options): + """ + Runs the non-ceabac configuration files located in + /config/ceabac/ in addition to a baseline + + Arguments: + benchmarker - the benchmarker that contains the connection + to Accumulo, encryptor, etc + table_prefix - the prefix put in front of tables where the + data is stored + logger - logger instance where results are logged + """ + + logger.info("Running CEABAC Tests") + #run benchmarker for baseline + logger.info("Running test for ceabac_baseline") + benchmarker.run_test('', + table=table_prefix+'ceabac_baseline', + vis='(a&b)|c', + encrypt=False, + decrypt=False, + num_entries=options.num_entries, + num_rows=options.num_rows) + + #run_test for all files in the non-ceabac configuration directory + for file in os.listdir("./config/ceabac"): + logger.info('Running test for %s' % (file)) + benchmarker.run_test('./config/ceabac/'+file, + table=table_prefix + file.split('.')[0], + vis='(a&b)|c', + profile=profile, + num_entries=options.num_entries, + num_rows=options.num_rows) + +def run_vis_ceabac(benchmarker, table_prefix, logger, profile, options): + """ + Runs the CEABAC in CBC mode with different visibility labels + + Arguments: + benchmarker - the benchmarker that contains the connection + to Accumulo, encryptor, etc + table_prefix - the prefix put in front of tables where the + data is stored + logger - logger instance where results are logged + """ + + logger.info("Running CEABAC Test with different vis labels") + + #run_test for all files in the non-ceabac configuration directory + for vis in visibility_labels: + logger.info('Running test for %s' % (vis)) + benchmarker.run_test('./config/ceabac/VIS_AES_CBC.cfg', + table=table_prefix + vis.replace('&','_and_').replace('|','_or_').replace('(','').replace(')',''), + vis=vis, + profile=profile, + num_entries=options.num_entries, + num_rows=options.num_rows) + +def run_mixed_schemas(benchmarker, table_prefix, logger, profile, options): + """ + Runs the mixed schemas configuration files located in + /config/mixed_schemas/ in addition to a baseline + + Arguments: + benchmarker - the benchmarker that contains the connection + to Accumulo, encryptor, etc + table_prefix - the prefix put in front of tables where the + data is stored + logger - logger instance where results are logged + """ + + logger.info("Running mixed schemas with different configuration files tests") + #run benchmarker for baseline + logger.info("Running test for mix_schemas_baseline") + benchmarker.run_test('', + table=table_prefix+'mixed_schemas_baseline', + vis='(a&b)|c', + encrypt=False, + decrypt=False, + num_entries=options.num_entries, + num_rows=options.num_rows) + + #run_test for all files in the non-ceabac configuration directory + for file in os.listdir("./config/mixed_schemas"): + logger.info('Running test for %s' % (file)) + benchmarker.run_test('./config/mixed_schemas/'+file, + table=table_prefix + file.split('.')[0], + vis='(a&b)|c', + profile=profile, + num_entries=options.num_entries, + num_rows=options.num_rows) + + +def main(): + parser = OptionParser() + parser.add_option("-v", '--verbose', dest="verbose", + action="store_true", default=False, + help="Verbose output") + accumulo_group = OptionGroup(parser, 'Options that control the accumulo connection') + accumulo_group.add_option('--host', dest='host', + default='localhost', + help = 'Host for Accumulo. Default: localhost') + accumulo_group.add_option('--user', dest='user', + default='root', + help = 'User for Accumulo. Default: root') + accumulo_group.add_option('--password', dest='password', + default='secret', + help = 'Password for Accumulo user. Default: ...') + accumulo_group.add_option('--port', dest='port', + type='int', default=42424, + help="Port for Accumulo. Default: 42424") + parser.add_option_group(accumulo_group) + + output_group = OptionGroup(parser, 'Options that control output') + output_group.add_option('--log-file', dest='log_file', + default='output.log', + help = 'Output file for performance numbers') + output_group.add_option('--table-prefix', dest='table_prefix', + default='perf', + help = 'Prefix used for data tables') + output_group.add_option('--profile', dest='profile', + action='store_true', default=False, + help="Profiles encryption code") + output_group.add_option('--cache_key', dest='cache_key', + action='store_true', default=False, + help='Keys are now cached during encryption and decryption') + output_group.add_option('--use_accumulo_keystore', dest='accumulo_keystore', + action='store_true', default=False, + help="Keys are stored in Accumulo if option is included, otherwise they are stored locally") + parser.add_option_group(output_group) + + test_group = OptionGroup(parser, "Options that control what tests are being run") + test_group.add_option('--all', dest='all', + action='store_true', default=False, + help='Runs all the different tests') + test_group.add_option('--non-ceabac', dest='non_ceabac', + action='store_true', default=False, + help = 'Runs the non-CEABAC tests with a simple schema') + test_group.add_option('--ceabac', dest='ceabac', + action='store_true', default=False, + help = 'Runs the CEABAC tests with a simple schema') + test_group.add_option('--vis-ceabac', dest='vis_ceabac', + action='store_true', default=False, + help = 'Runs CEABAC in CBC mode with varying visibility fields') + test_group.add_option('--diff_schemas_ceabac',dest='diff_ceabac', + action='store_true',default=False, + help='Runs several different schemas for VIS_CBC') + test_group.add_option('--diff_schemas_non_ceabac', dest='diff_non_ceabac', + action='store_true', default=False, + help='Runs several different schemas for AES_CBC') + + test_group.add_option('--mixed_schemas', dest='mixed_schemas', + action='store_true',default=False, + help='Runs a set of schemas where the schemes are both CEABAC and not') + parser.add_option_group(test_group) + + entries_group = OptionGroup(parser, "Options that control how many entries are run") + entries_group.add_option('--num_entries', dest='num_entries', + type='int', default=1000, + help='Total number of cells being run') + entries_group.add_option('--num_rows', dest='num_rows', + type='int', default=100, + help='Total number of rows being run') + parser.add_option_group(entries_group) + + + (cl_flags, _) = parser.parse_args() + + #set up logging + if cl_flags.verbose: + log_level = logging.DEBUG + else: + log_level = logging.INFO + logging.basicConfig( + filename=cl_flags.log_file, + level = log_level, + format = '%(levelname)s-%(asctime)s: %(message)s') + + logger = logging.getLogger("performance_testing") + + #check inputs + if cl_flags.all and (cl_flags.non_ceabac or cl_flags.ceabac or cl_flags.vis_ceabac): + logger.error('--all is already specified, do not need to define other tests to run') + + #create accumulo connection + conn = Accumulo(host=cl_flags.host,port=cl_flags.port,user=cl_flags.user,password=cl_flags.password) + + #create benchmarker + if cl_flags.cache_key: + logger.info('Using the caching version of the pki') + pki = DummyCachingEncryptionPKI(conn=conn if cl_flags.accumulo_keystore else None) + else: + pki = DummyEncryptionPKI(conn=conn if cl_flags.accumulo_keystore else None) + + benchmarker = Benchmarker(logger=logger, pki=pki, conn=conn) + + if cl_flags.all: + run_non_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + run_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + run_vis_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + run_diff_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + run_diff_non_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + run_mixed_schemas(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + + if cl_flags.non_ceabac: + run_non_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + + if cl_flags.ceabac: + run_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + + if cl_flags.vis_ceabac: + run_vis_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + + if cl_flags.diff_ceabac: + run_diff_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + + if cl_flags.diff_non_ceabac: + run_diff_non_ceabac(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + + if cl_flags.mixed_schemas: + run_mixed_schemas(benchmarker, cl_flags.table_prefix, logger, cl_flags.profile, cl_flags) + + +if __name__ == "__main__": + main() diff --git a/pace/encryption/vars.py b/pace/encryption/vars.py new file mode 100644 index 0000000..fd5782c --- /dev/null +++ b/pace/encryption/vars.py @@ -0,0 +1,45 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Unit tests for cell code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Dec 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +DET_ALGORITHMS = ["Pycrypto_AES_SIV"] + +CELL_MUT_MAPPING = {'row' : 'row', + 'colFamily' : 'cf', + 'colQualifier' : 'cq', + 'colVisibility': 'cv', + 'timestamp' : 'ts', + 'value' : 'val'} +DELIN_CHAR = '+' + +KEY_LENGTHS = {"Identity" : 0, + "Pycrypto_AES_CFB" : 128, + "Pycrypto_AES_CBC" : 128, + "Pycrypto_AES_OFB" : 128, + "Pycrypto_AES_CTR" : 128, + "Pycrypto_AES_GCM" : 128, + "VIS_Identity" : 0, + "VIS_AES_CFB" : 128, + "VIS_AES_CBC" : 128, + "VIS_AES_OFB" : 128, + "VIS_AES_CTR" : 128, + "VIS_AES_GCM" : 128} + +VALID_KEYS = ['row', 'colFamily','colQualifier', + 'value','colVisibility'] + +CELL_ORDER = ['row','cf','cq','cv','ts','val'] + diff --git a/pace/encryption/visibility/__init__.py b/pace/encryption/visibility/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/encryption/visibility/secret_vis_tree.py b/pace/encryption/visibility/secret_vis_tree.py new file mode 100644 index 0000000..0bb9fa9 --- /dev/null +++ b/pace/encryption/visibility/secret_vis_tree.py @@ -0,0 +1,604 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Secret sharing for visibility +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 5 Mar 2015 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from Crypto import Random +import StringIO +import base64 + +from pace.pki.abstractpki import PKILookupError +from pace.encryption.visibility.vis_parser import VisParser, VisNode, VisTree, NodeType + + +def byte_xor(bytestring1, bytestring2): + ''' + Calculates the xor of two equal length byte strings + returns a byte string (not a byte array) + ''' + byte_array1 = bytearray(bytestring1) + byte_array2 = bytearray(bytestring2) + return bytes(bytearray(b1 ^ b2 for (b1, b2) in zip(byte_array1, byte_array2))) + +class SecretVisNode(VisNode): + ''' + Basic building block for Secret-sharing visibility trees. + Subclasses existing VisNode, but also stores the + corresponding share for that node. Shares are treated + as bytestrings. In the case of: + + AND - the share is the bitwise xor of all its + children + OR - the share is the same as its children + TERM - a random share + ''' + def __init__(self, start, end=None,type=NodeType.TERM, + share='', attribute='', encrypted_share=''): + super(SecretVisNode, self).__init__(start, + end=end, + type=type) + self.share = share + self.attribute = attribute + self.encrypted_share = encrypted_share + + @staticmethod + def copy_node(node): + ''' + Returns a copy of the node with the exception of + its children + ''' + if type(node) is SecretVisNode: + return SecretVisNode(start=node.start, + end=node.end, + type=node.type, + share=node.share, + attribute=node.attribute, + encrypted_share=node.encrypted_share) + else: + return SecretVisNode(start=node.start, + end=node.end, + type=node.type) + + +class SecretVisTree(VisTree): + ''' + Represents the logic for computing and dealing with + secret shares + + TODO: In future it may be nice to have the ability + to specify the random seed used to generate the shares + for repeatability + ''' + + def __init__(self, root, expression, secret=None): + ''' + Arguments: + root - either a VisTree or SecretVisTree + expression - corresponding visibility expression + secret - (byte_string) secret for the tree + ''' + self.expression = expression + self.secret = secret + self.terms = {} + if type(root) == VisNode: + #copy over nodes if it is a vis_tree + self.root = self._copy_from_vis_tree(root) + else: + self.root = root + + def _copy_from_vis_tree(self, node): + ''' + Arguments: + node - a top level vis node to copy + + Returns: A copy of vistree as the SecretVisTree + ''' + if node.type == NodeType.TERM: + new_node = SecretVisNode.copy_node(node) + new_node.attribute = node.getTerm(self.expression) + return new_node + + else: + new_node = SecretVisNode.copy_node(node) + _ = [new_node.add(self._copy_from_vis_tree(c)) + for c in node.children] + return new_node + + def set_attributes(self, vis_tree): + ''' + Arguments: + vis_tree - takes in vis_tree of the same structure + as self + + Updates the attributes in the nodes according to + vis_tree + ''' + self._set_attributes(self.root,vis_tree.root,vis_tree.expression) + + def _set_attributes(self, node, vis_node, expression): + ''' + Arguments: + node - a top level node to set + vis_node - the vis_node to get attribute from + expression - vis_expression to set + + ''' + if node.type == NodeType.TERM: + node.attribute = vis_node.getTerm(expression) + else: + _ = [self._set_attributes(c,vc,expression) + for (c, vc) in zip(node.children, vis_node.children)] + + + def optimal_decryption_tree(self, key_container, encrypted=True): + ''' + If the terms contained in the key_object passed in satisfy the expression; + calculates the minimal tree traversal (and therefore + minimal number of shares to be recombined) in order to reach the + leaves (or recombine the share) + + Arguments: + key_container - Keytor object that contains the key_id and key_object, + used to look up attribute keys as needed when a term + is run across + encrypted - whether the node is encrypted or not, used + for unit testing. When set to FALSE a default + version number is used rather than extracted + from the ciphertext + + Returns: + A three tuple of (match, SecretVisTree, keys). Match is a a boolean + of whether the terms satisfied the tree. If match is True, + returns a new SecretVisTree with the trimmed structure. + If False, it returns None. Keys is a dictionary of attribute + to key mappings built as the tree is traversed and the keys are + pulled back. + ''' + + self.terms = {} + #call recursive helper function for tree traversal + (match, num_decryption, node) = self._optimal_decryption_tree(self.root, + key_container, + encrypted) + + return (match, SecretVisTree(node, self.expression, self.secret), self.terms) + + def _have_term(self, term, key_container, version): + """ + Helper function to determine if user has particular attribute key + 1. First checks the list of terms if it contains the attribute. If so, + returns True. + 2. If the key is returned, this adds the key to terms and returns True. + Otherwise, this returns False." + + Arguments: + term: the attribute to check for + key_container - Keytor object that contains the key_id and key_object, + used to look up attribute keys as needed when a term + is run across + version - (string) version of the key to check + """ + if term in self.terms.keys(): + return True + else: + try: + key = key_container.key_object.get_attribute_key(key_container.key_id, + term, + int(version)) + self.terms[term] = key + return True + except PKILookupError: + return False + + def _optimal_decryption_tree(self, share_node, key_container, encrypted): + ''' + + Recursive helper function for optimal_decryption_tree + + Arguments: + share_node - the current top level node of the share_tree + key_container - Keytor object that contains the key_id and key_object, + used to look up attribute keys as needed when a term + is run across + encrypted - whether the node is encrypted or not, used + for unit testing. When set to FALSE a default + version number is used rather then extracted + from the ciphertext + Returns: + A four tuple of (match, num_decrypt, root, keys). Match is + a boolean value of whether the terms could satisfy + the expression. Num_decrypt is the minimum number of + shares that need to be combined. Root is the root of the tree + that represent the minimal tree traversal, it is a + strict subset of the original tree and with the + terms provided the expression is satisfied. In the + case where match is False, num_decryptions and root are set to + 0 and None respectively. Keys contains a dictionary of attributes + and their correspond keys that have been looked up so far. + ''' + + + #Base case, have reached a term and have to see if it + #is in the listed terms + if share_node.type == NodeType.TERM: + share_copy = SecretVisNode.copy_node(share_node) + #if not encrypted, then we have no version info for the key + if encrypted is False: + version = '1' + else: + version = share_copy.encrypted_share.rsplit('ver',1)[1] + + return (self._have_term(share_copy.attribute, + key_container, + version), + 1, + share_copy) + #And case: must see if all the children satisfy and num_encryptions + #is the maximum number for all of the children + elif share_node.type == NodeType.AND: + share_copy = SecretVisNode.copy_node(share_node) + max_decrypt = 0 + for c in share_node.children: + (match, num_decrypt, child_copy) =\ + self._optimal_decryption_tree(c, key_container, + encrypted) + if not match: + return (match, 0, None) + max_decrypt = max(max_decrypt, num_decrypt) + share_copy.add(child_copy) + return (True, max_decrypt+len(share_copy.children)-1, share_copy) + #OR case: see if one or more children satisfy, if so take the + #one that has the minimum number decryptions as the only child. + elif share_node.type == NodeType.OR: + share_children = [] + num_decrypts = [] + for c in share_node.children: + (match, num_decrypt, child_copy) =\ + self._optimal_decryption_tree(c, key_container, + encrypted) + if match: + share_children.append(child_copy) + num_decrypts.append(num_decrypt) + if not share_children: + return (False, 0, None) + else: + share_node_copy = SecretVisNode.copy_node(share_node) + min_decrypt = min(num_decrypts) + share_node_copy.add(share_children[num_decrypts.index(min_decrypt)]) + return (True, min_decrypt, share_node_copy) + + def print_shares(self, encrypted=False): + """ + Print the shares, used primarily for testing + """ + s = StringIO.StringIO() + self._print_shares(self.root, s, encrypted) + s_string = s.getvalue() + s.close() + return s_string + + def _print_shares(self, root, output, encrypted=False): + """ + Arguments: + root: VisNode to turn into a string representation + out_put: StringIO object in which the string + description is placed. + + Side Effects: Returns nothing, but string representation + of the shares is placed in the out_put object. + """ + #case of empty root + if root is None: + output.write('') + return + + if root.type == NodeType.TERM: + if not encrypted: + output.write('"'+str(root.share)+'"') + else: + output.write('"'+str(root.encrypted_share)+'"') + else: + sep = '' + for c in root.children: + output.write(sep) + parens = (c.type != NodeType.TERM) and (root.type != c.type) + if parens: + output.write("(") + self._print_shares(c, output, encrypted) + if parens: + output.write(")") + if root.type == NodeType.AND: + sep = '&' + else: + sep = "|" + + def verify_shares(self): + ''' + Verifies that the shares combine to the secret + ''' + return self._verify_shares(self.root) + + def _verify_shares(self, node): + ''' + Recursively verifies the node and its' children + to see if the SecretVisTree is well-formed. + + AND - Children should all verify and their shares + combined with bitwise xor should combine to the + node's own share + + OR - Children should all verify and their shares + should all be the same as the node's own share + + TERM - Nothing to verify + + Returns: True or False if the shares verify + ''' + if node.type == NodeType.TERM: + return True + elif node.type == NodeType.OR: + children_verified = all([self._verify_shares(c) + for c in node.children]) + all_match = all([node.share == c.share + for c in node.children]) + return children_verified and all_match + elif node.type == NodeType.AND: + children_verified = all([self._verify_shares(c) + for c in node.children]) + children_share = node.children[0].share + for c in node.children[1:]: + children_share = byte_xor(children_share, c.share) + return children_verified and (children_share == node.share) + + @staticmethod + def _generate_n_random_shares(n, l): + ''' + Arguments: + n - the number of random shares to generate + l - the upper length of the shares to generate (in bytes) + + Returns: A list of n random numbers of length l, + they are generated using a cryptographic PRNG. + ''' + return [Random.get_random_bytes(l) for x in xrange(0, n)] + + def compute_shares(self, secret=None): + ''' + Arguments: + secret - the secret to be split into shares + + Modifies the tree and updates the shares accordingly + ''' + if self.secret is None and secret is None: + raise ValueError("Secret must be specified") + secret = self.secret if (not self.secret is None) else secret + self._compute_shares(self.root, secret) + + def _compute_shares(self, node, share): + ''' + Arguments: + node - a VisNode to compute shares for + share - the share for the current node + + Returns: A SecretVisNode with shares computed + based on the share passed in + ''' + if node.type == NodeType.TERM: + node.share = share + + elif node.type == NodeType.OR: + #Give all the children the same share + node.share = share + _ = [self._compute_shares(c, share) + for c in node.children] + + elif node.type == NodeType.AND: + #Generate random shares for n-1 children and + #give the last one r1^r2^...^rn-1^m for a share + node.share = share + random_shares = SecretVisTree._generate_n_random_shares( + len(node.children)-1, + len(share)) + last_share = share + for (c,r) in zip(node.children[:-1],random_shares): + last_share = byte_xor(last_share, r) + self._compute_shares(c, r) + + self._compute_shares(node.children[-1], last_share) + + else: + #Should never be hitting the empty case + raise ValueError("Ill formed visibility tree") + +class SecretVisTreeEncryptor(object): + """ + Logic for dealing with secret sharing according to visibility labels, + this includes encrypting and decrypting shares: + + To encrypt: Build it from an existing visibility tree with a + chosen secret to share. Then it is possible to call encrypt + on the visibility tree to encrypt the shares under corresponding + attributes. This functionality is encased in 'compute_shares', and + 'encrypt_shares' respectively + + To decrypt: Given an encrypted set of shares and a set of attributes and + corresponding keys, it parses the expression, decrypts it and combines + it into the top level share. This functionality is encased in + 'decrypt_secret_shares' + """ + + @staticmethod + def encrypt_secret_shares(vis_expr, + secret, + key_container, + leaf_class): + """ + Arguments: + vis_expr - (string) vis_expr to be parsed and shares created + secret - (bytestring) the secret to be shared + key_container - (Keytor) key_id for the particular algorithm and key_object to look + up keys. Throws PKILookupError if the algorithm or attribute + is not present for that particular user. + leaf_class - (Encryption class) class to encrypt the leaves of the vis_tree + + Returns: String of encrypted shares (base64 encoded) formatted + like a visibility expression + """ + parser = VisParser() + tree = parser.parse(vis_expr) + secret_tree = SecretVisTree(tree.root, + vis_expr, + secret=secret) + secret_tree.compute_shares() + SecretVisTreeEncryptor._encrypt_secret_shares(secret_tree.root, + key_container, + leaf_class) + return secret_tree.print_shares(encrypted=True) + + @staticmethod + def _encrypt_secret_shares(node, key_container, leaf_class): + ''' + Arugments: + node - node to be processed + attribute_key_dict - see main function + + Side-effect: Share in node is encrypted + ''' + if node.type == NodeType.TERM: + (key, version) = key_container.key_object.get_current_attribute_key(key_container.key_id, + node.attribute) + ciphertext = leaf_class.encrypt(str(node.share), key) + node.encrypted_share = base64.b64encode(ciphertext)+'ver'+str(version) + else: + for c in node.children: + SecretVisTreeEncryptor._encrypt_secret_shares(c, + key_container, + leaf_class) + + + @staticmethod + def decrypt_secret_shares(vis_expression, + share_expression, + key_container, + leaf_class): + """ + Arguments: + vis_expression - the underlying visibility expression, + this is used to extract attributes to map to keys + share_expression - the encrypted shares structured in + the same way as the visibility label + key - key_id for the particular algorithm and key_object to look + up keys. Throws PKILookupError if the algorithm or attribute + is not present for that particular user. + leaf_class - class to encrypt the leaves of the vis_tree + + Returns: the top level secret share made by combining all + the necessary shares decrypted. If it is not possible + to satisfy the vis_expression with the given terms + (the ones present in the attribute_key_dict) None is returned. + """ + + visparser = VisParser() + + vistree = visparser.parse(vis_expression) + #NB: in this share tree, start and end in nodes represent the + #start and end for the share expression, not the visibility expression + #as they would when one is encrypting + shareparser = SecretVisParser() + share_tree = shareparser.parse(share_expression) + share_tree.set_attributes(vistree) + (match, opt_share_tree, keys) = share_tree.optimal_decryption_tree(key_container) + if not match: + return None + + SecretVisTreeEncryptor._decrypt_secret_shares(opt_share_tree.root, + keys, + leaf_class) + return opt_share_tree.root.share + + @staticmethod + def _decrypt_secret_shares(node, keys, leaf_class): + ''' + Arguments: + node - top level node to be decrypt and combine the shares + keys - dictionary of keys indexed by attribute + leaf-class - encryption class for the leaves + + Returns: The node with its share decrypted and reassembled + as also all of its children + + ''' + if node.type == NodeType.TERM: + key = keys[node.attribute] + ciphertext = base64.b64decode(node.encrypted_share.rsplit('ver',1)[0]) + node.share = leaf_class.decrypt(ciphertext, key) + elif node.type == NodeType.AND: + _ = [SecretVisTreeEncryptor._decrypt_secret_shares(c, keys, leaf_class) + for c in node.children] + + children_share = node.children[0].share + for c in node.children[1:]: + children_share = byte_xor(children_share, c.share) + node.share = children_share + + elif node.type == NodeType.OR: + _ = [SecretVisTreeEncryptor._decrypt_secret_shares(c, keys, leaf_class) + for c in node.children] + node.share = node.children[0].share + else: + #Should never be hitting the empty case + raise ValueError("Ill formed visibility tree") + + +class SecretVisParser(VisParser): + + #Helper functions for parse + def _processTerm(self, start, end, node_expr, expression): + """ + Arguments: + start - start of the term + end - end of the term + node_expr - Existing term node or None + expression - the overall expression + + Returns: Processed term node; if expr existed, it returns + the existing node, otherwise creates a new SecretVisNode for + the term + """ + if start != end: + if node_expr is not None: + raise VisibilityFormatException("expression %s needs to be | or &" % (expression)) + node = SecretVisNode(start=start, end=end, type=NodeType.TERM) + node.encrypted_share = node.getTerm(expression) + return node + + if node_expr is None: + raise VisibilityFormatException("empty term %s" % (expression)) + return node_expr + + def _getTreeType(self, node, expression): + return SecretVisTree(node, expression) + + def _create_node(self, start, type): + return SecretVisNode(start=start, type=type) + + + + + + + + + diff --git a/pace/encryption/visibility/secret_vis_tree_test.py b/pace/encryption/visibility/secret_vis_tree_test.py new file mode 100644 index 0000000..dabeb79 --- /dev/null +++ b/pace/encryption/visibility/secret_vis_tree_test.py @@ -0,0 +1,143 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Unit tests for secret_vis_tree.py +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 6 Mar 2015 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import unittest +from Crypto import Random +from pace.encryption.acc_encrypt import Encryptor, Keytor +from pace.encryption.AES_encrypt import Pycrypto_AES_CBC +from pace.encryption.visibility.vis_parser import VisParser +from pace.encryption.encryption_pki import DummyEncryptionPKI +from pace.pki.abstractpki import PKILookupError +from pace.encryption.visibility.secret_vis_tree import SecretVisNode, SecretVisTree, SecretVisParser, SecretVisTreeEncryptor + +class DummyKeys(object): + def __init__(self, terms): + self.keys={'a':'A', + 'b':'B', + 'c':'C', + 'd':'D', + 'e':'E'} + self.terms = terms + + def get_current_attribute_key(self, algorithm, attribute): + if attribute not in self.terms: + raise PKILookupError('Nope') + return self.keys[attribute] + + def get_attribute_key(self, algorithm, attribute, version=1): + if attribute not in self.terms: + raise PKILookupError('Nope') + return self.keys[attribute] + +class SecretVisTreeTest(unittest.TestCase): + + def test_optimal_path(self): + ''' + Test the optimal path functionality + ''' + expressions = [('a&b',['a','b'],'a&b'), + ('a&b&c', ['a','b'],''), + ('a|b', ['a'], 'a'), + ('a|b|c',['a','b'], 'a'), + ('(a&b)|c',['a','b'], '(a&b)'), + ('(a&b)|c',['c'], 'c'), + ('(a|b)&c',['a','c'], '(a)&c'), + ('(a|b)&c',['a'], ''), + ('(a&b)|(b&c)',['b','c'],'(b&c)'), + ('(a|b)&(c|d)',['a','d'],'(a)&(d)'), + ('((a&b)|c)&(d|e)',['c','e'],'(c)&(e)')] + + parser = VisParser() + share_parser = SecretVisParser() + for (e, t, g) in expressions: + vis_tree = parser.parse(e) + share_tree = SecretVisTree(vis_tree.root, + vis_tree.expression, + secret=Random.get_random_bytes(16)) + share_tree.compute_shares() + share_tree.set_attributes(vis_tree) + (match, opt_tree, keys) = share_tree.optimal_decryption_tree(Keytor('VIS_AES_CBC',DummyKeys(terms=t),16), + encrypted=False) + self.assertEqual(g, opt_tree.__str__(), + "Optimal tree for %s: %s should be %s" % + (e,opt_tree.__str__(),g)) + + def test_compute_shares(self): + ''' + Tests computing the shares + ''' + expressions = ['a&b', + 'a&b&c', + 'a|b', + 'a|b|c', + '(a&b)|c', + '(a|b)&c', + 'a|(b&c)', + 'a&(b|c)', + '(a&b)|(b&c)', + '(a|b)&(c|d)', + '"test&|"&b', + '((a&b)|c)&(d|e)'] + parser = VisParser() + for e in expressions: + tree = parser.parse(e) + secret = Random.get_random_bytes(16) + secret_tree = SecretVisTree(tree.root, e, secret=secret) + secret_tree.compute_shares() + + #Test for correct share + self.assertTrue(secret_tree.verify_shares(), + "Shares %s did not verify for expression %s." % + (secret_tree.print_shares(), e)) + + #Test for incorrect share + secret_tree.root.share = 0 + self.assertFalse(secret_tree.verify_shares(), + "Shares %s did incorrectly verify for expression %s." % + (secret_tree.print_shares(), e)) + + + def test_encrypt_decrypt(self): + ''' + Tests encrypting and decrypting the shares + ''' + DummyPKI = DummyEncryptionPKI() + + expressions = ['a&b', + 'a&b&c', + 'a|b', + 'a|b|c', + '(a&b)|c', + '(a|b)&c', + 'a|(b&c)', + 'a&(b|c)', + '(a&b)|(b&c)', + '(a|b)&(c|d)'] + + + for e in expressions: + secret = Random.get_random_bytes(16) + encrypted_shares = SecretVisTreeEncryptor.encrypt_secret_shares(e, + secret, + Keytor('VIS_AES_CBC',DummyPKI,16), + Pycrypto_AES_CBC) + share = SecretVisTreeEncryptor.decrypt_secret_shares(e, + encrypted_shares, + Keytor('VIS_AES_CBC',DummyPKI,16), + Pycrypto_AES_CBC) + self.assertEqual(share, secret) + \ No newline at end of file diff --git a/pace/encryption/visibility/vis_encrypt.py b/pace/encryption/visibility/vis_encrypt.py new file mode 100644 index 0000000..e80e75f --- /dev/null +++ b/pace/encryption/visibility/vis_encrypt.py @@ -0,0 +1,227 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Class for encryption via vis expression +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 12 Mar 2015 ATLH Original File +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from Crypto import Random +from Crypto.Cipher import AES +from pyaccumulo import Cell +from pace.encryption.enc_mutation import EncMutation, EncCell +from pace.encryption.vars import CELL_MUT_MAPPING, CELL_ORDER +from pace.encryption.AES_encrypt import Pycrypto_AES_CTR, Pycrypto_AES_OFB, \ + Pycrypto_AES_CFB, Pycrypto_AES_CBC, Pycrypto_AES_GCM +from pace.encryption.abstract_encrypt import AbstractEncrypt, \ + EncryptionException, DecryptionException, Identity_AccEncrypt +from pace.encryption.visibility.secret_vis_tree import SecretVisTreeEncryptor + +class Vis_Encrypt_Mixin(AbstractEncrypt): + + @classmethod + def _encrypt_with_shares(cls, plaintext, key_id, vis_expr): + ''' + Arguments: + plaintext - plaintext portion of the cell to be encrypted + key_id - the keytor object,contains a key_id and handle on the key_objection + to obtain the keys. + vis_expr - visibility expression of the cell to be encrypted + + Returns - the encrypted shares concatenated with the ciphertext + or the field of the cell being encrypted + ''' + #generate a random key for the cell + cell_key = Random.get_random_bytes(key_id.cell_key_length) + #break into shares and then encrypt + encrypted_shares = SecretVisTreeEncryptor.encrypt_secret_shares(vis_expr, + cell_key, + key_id, + cls.leaf_class) + #encrypt the plaintext + ciphertext = cls._encrypt(plaintext, cell_key) + return encrypted_shares + "#" + ciphertext + + @classmethod + def _decrypt_with_shares(cls, ciphertext, key_id, vis_expr): + ''' + Arguments: + ciphertext - string that contains the encrypted shares and + the ciphertext of the portion of the cell + key - the keytor object, see decrypt_mutation for more details + vis_expr - visibility expression of the cell to be encrypted + + Returns - the plaintext of the cell that was encrypted + ''' + #recover the cell_key + encrypted_shares = ciphertext.split('#')[0] + ciphertext = ciphertext[len(encrypted_shares)+1:] + cell_key = SecretVisTreeEncryptor.decrypt_secret_shares(vis_expr, + encrypted_shares, + key_id, + cls.leaf_class) + if cell_key is None: + raise DecryptionException("The key object does not contain keys for the necessary attributes to decrypt this cell") + + plaintext = cls._decrypt(ciphertext, cell_key) + return plaintext + + @classmethod + def encrypt_mutation(cls, mutation, key_id, cell_sections): + """ + Arguments: + mutation - mutation as defined in encmutation (based on + pyaccumulo interface ) + key_id - Keytor object that contains the algorithm name + and a key_object to obtain the keys + cell_sections - the list of part of the cell to be encrypted. + Options are defined in VALID_KEYS in vars.py. Can't be + colVisibility + + + Effect: The EncMutation is modified and the encrypted data + stored in the cell_location. For example if + cell_sections was [colFamily, colQualifier] and + cell_location is 'colFamily'. Let the first update + be cf = 'cf1', and cq = 'cq1', the resulting update + would become cf = 'cf1|cq1' (encrypted) and cq = ''. + This is done for each update in the list of updates. + + """ + ptexts = EncMutation.concatenate_cell_section_values(mutation, cell_sections) + vis_exprs = mutation.update_dict['colVisibility'] + if not all([vis != '' for vis in vis_exprs]): + raise EncryptionException("There are rows without visibility labels, "+\ + "cannot encrypt the mutation") + ctexts = [cls._encrypt_with_shares(ptext, key_id, vis) + for (ptext, vis) in zip(ptexts,vis_exprs)] + return ctexts + + + @classmethod + def decrypt_mutation(cls, mutation, dec_mutation, key_id, cell_location, cell_sections): + ''' + Arguments: + mutation - mutation as defined in encmutation (based on + pyaccumulo interface ) + key_id - Keytor object that contains the algorithm name + and a key_object to obtain the keys + cell_location - the part of the cell where encrypted data is + to be stored + cell_sections - the target locations for decrypted data that + contained at the cell_location. + + Effect: The EncMutation is modified. The encrypted data + cell_location is decrypted and seperated into + the values associated with each of the cell_sections. + These values are then placed in the cell as + specified by cell_sections. + + For example, cell_location = 'cq' and cell_sections = + [colFamily, colQualifier, value] and the cq for + the first update is 'cf1|cq1|val1' the three + values are separated out and the update becomes + cf = 'cf1', cq = 'cq1', and val = 'val1'. + ''' + ctexts = mutation[cell_location] + vis_exprs = mutation.update_dict['colVisibility'] + if not all([vis != None for vis in vis_exprs]): + raise DecryptionException("There are rows without visibility labels, "+\ + "cannot decrypt the mutation") + ptexts = [cls._decrypt_with_shares(ctext, key_id, vis) + for (ctext, vis) in zip(ctexts,vis_exprs)] + split_values = EncMutation.split_values(ptexts) + for sec, values in zip(cell_sections, split_values): + dec_mutation[sec] = list(values) + + + @classmethod + def encrypt_cell(cls, cell_dict, key, cell_sections): + ''' + Arguments: + cell_dict - dictionary indexed by cell keywords containing the + data to encrypt + key - Keytor object that contains the algorithm name + and a key_object to obtain the keys. + cell_sections - the list of part of the cell to be encrypted. + Options are defined in VALID_KEYS in vars.py. + + Returns: the ciphertext + ''' + ptext = EncCell.get_value_by_cell_string(cell_dict,cell_sections) + vis_expr = cell_dict['cv'] + if vis_expr == None: + raise EncryptionException("There are rows without visibility labels, "+\ + "cannot encrypt the mutation") + return cls._encrypt_with_shares(ptext, key, vis_expr) + + @classmethod + def decrypt_cell(cls, cell_dict, dec_cell, key, cell_location, cell_sections): + ''' + Arguments: + cell_dict - dictionary indexed by cell keywords containg the + data to encrypt + dec_cell - dictionary where the decrypted data is stored + key - Keytor object that contains the algorithm name + and a key_object to obtain the keys + cell_location - the part of the cell where encrypted data is + to be stored + cell_sections - the target locations for decrypted data that + contained at the cell_location. + + Effect: dec_cell is mutated with the decrypted data placed + in the necessary locations + ''' + vis_expr = cell_dict['cv'] + if vis_expr == None: + raise DecryptionException("There are rows without visibility labels, "+\ + "cannot decrypt the mutation") + ptext = cls._decrypt_with_shares(cell_dict[CELL_MUT_MAPPING[cell_location]], + key, + vis_expr) + split_value = EncCell.split_value_by_cell_string(ptext) + for (sec, value) in zip(cell_sections, split_value): + dec_cell[CELL_MUT_MAPPING[sec]] = value + + @classmethod + def encrypt_row(row, key): + raise NotImplementedError("CEABAC does not currently support deterministic encryption") + + @classmethod + def encrypt_cols(cols, key_container, cell_location, cell_sections): + raise NotImplementedError("CEABAC does not currently support deterministic encryption") + + +class VIS_Identity(Vis_Encrypt_Mixin,Identity_AccEncrypt): + name = 'VIS_Identity' + leaf_class = Identity_AccEncrypt + +class VIS_AES_CFB(Vis_Encrypt_Mixin,Pycrypto_AES_CFB): + name = "VIS_AES_CFB" + leaf_class = Pycrypto_AES_CFB + +class VIS_AES_CBC(Vis_Encrypt_Mixin,Pycrypto_AES_CBC): + name = "VIS_AES_CBC" + leaf_class = Pycrypto_AES_CBC + +class VIS_AES_OFB(Vis_Encrypt_Mixin,Pycrypto_AES_OFB): + name = "VIS_AES_OFB" + leaf_class = Pycrypto_AES_OFB + +class VIS_AES_CTR(Vis_Encrypt_Mixin,Pycrypto_AES_CTR): + name = "VIS_AES_CTR" + leaf_class = Pycrypto_AES_CTR + +class VIS_AES_GCM(Vis_Encrypt_Mixin,Pycrypto_AES_GCM): + name = "VIS_AES_GCM" + leaf_class = Pycrypto_AES_GCM + diff --git a/pace/encryption/visibility/vis_parser.py b/pace/encryption/visibility/vis_parser.py new file mode 100644 index 0000000..e329f95 --- /dev/null +++ b/pace/encryption/visibility/vis_parser.py @@ -0,0 +1,370 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Visiblity nodes +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 17 Feb 2015 ATLH Original file - based on +## ColumnVisibility.java in Accumulo +## code base +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from enum import IntEnum +import StringIO + +class VisibilityFormatException(Exception): + """ Exception raised when unable to process a vis label + + Attributes: + msg - error message for situation + """ + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + +class NodeType(IntEnum): + """ + Represents the four types of nodes. + + EMPTY: exactly what it says on the tin, an empty node + + TERM: This is a visibility label term, found at the leaves + of the tree. For example in 'alice&bob', both 'alice' and + 'bob' would be the terms. + + OR: Node for an or clause, children are either other OR/AND + nodes or terminal TERM nodes. + + AND: Node for an and clause, children are either other OR/AND + nodes or terminal TERM nodes. + """ + EMPTY = 0 + TERM = 1 + OR = 2 + AND = 3 + +VALID_CHAR = ['_','-',':','.','/'] + +class VisNode(object): + """ + Basic building block to form visibility trees. Stores the + type of the node and the start and the end locations of + the term in the expression, does not actually store the + term itself. Can have multiple children if OR/AND node: + for example a&b&c would have three children. + """ + def __init__(self, start, end=None, type=NodeType.TERM): + ''' + Arguments: + start: integer representing the start of the term, + in the case of OR/AND nodes, this is just the + location of the '&'/'|' + end: integer representing the end of the term, + in the case of OR/AND nodes, this is just the + location of the '&'/|'. If not specified, is assumed + to be one more than the start. + type: The type of the node as specified in NodeType. + Defaults to TERM. + ''' + self.type = type + self.start = start + self.children = [] + if end: + self.end = end + else: + self.end = start + 1 + + def copy_node(self, node): + ''' + Returns a copy of the node of the same type with + the exception of its children. + ''' + + return VisNode(start=node.start, + end=node.end, + type=node.type) + + def add(self, child): + """ + Adds the child to the end of list of children + """ + self.children.append(child) + + def getTerm(self, expression): + ''' + When passed the original expression for the node + returns the associated term (without quotes if they exist). + Throws an assertion if the node is not a term node. + ''' + assert self.type == NodeType.TERM + + if expression[self.start] == '"': + return expression[(self.start+1):(self.end-1)] + else: + return expression[self.start:self.end] + +class VisTree(object): + """ + Represents a container for a root VisNode and the + corresponding expression + """ + def __init__(self, root, expression): + self.root = root + self.expression = expression + + def __str__(self): + """ + Overloading str function, does not simply + return self.expression because it is used + primarily for testing, and it is useful to + see the structure of the tree. + """ + s = StringIO.StringIO() + self._stringify(self.root,self.expression, s) + s_string = s.getvalue() + s.close() + return s_string + + def _stringify(self, root, expression, out_put): + """ + Arguments: + root: VisNode to turn into a string representation + exression: the corresponding expression for the + root node passed in + out_put: StringIO object in which the string + description is placed. + + Side Effects: Returns nothing, but string representation + is placed in the out_put object. + """ + #case of empty root + if root is None: + out_put.write('') + return + + if root.type == NodeType.TERM: + out_put.write(expression[root.start:root.end]) + else: + sep = '' + for c in root.children: + out_put.write(sep) + parens = (c.type != NodeType.TERM) and (root.type != c.type) + if parens: + out_put.write("(") + self._stringify(c, expression, out_put) + if parens: + out_put.write(")") + if root.type == NodeType.AND: + sep = '&' + else: + sep = "|" + + + +class VisParser(object): + """ + Contains the logic for parsing visibility labels and turning into + VisTree + """ + + def _getTreeType(self, node, expression): + return VisTree(node, expression) + + def parse(self, expression): + """ + Arguments: + expression - the expression to parse + + Returns: VisTree containing the root node of + the parsed Visibility Tree and the original expression. + Raises VisibilityFormatException if the visibility + is ill-formed. + """ + self._index = 0 #current parse location + self._parens = 0 #number of parenthesis encountered + + if len(expression) == 0: + return None + + node = self._parse(expression) + + if node is None: + raise VisibilityFormatException("operator or missing parens: %s" % (expression)) + + if self._parens != 0: + raise VisibilityFormatException("parenthesis mis-match: %s" % (expression)) + + return self._getTreeType(node, expression) + + def _isValidAuthChar(self, c): + """ + Determines if the character c is an authorized character for the + visibility field + """ + return any([c >= 'a', c <= 'z', + c >= 'A', c <= 'Z', + c >= '0', c <= '9', + c in VALID_CHAR]) + + def _processTerm(self, start, end, node_expr, expression): + """ + Arguments: + start - start of the term + end - end of the term + node_expr - Existing term node or None + expression - the overall expression + + Returns: Processed term node; if expr existed, it returns + the existing node, otherwise creates a new VisNode for + the term + """ + if start != end: + if node_expr is not None: + raise VisibilityFormatException("expression %s needs to be | or &" % (expression)) + return VisNode(start = start, end = end) + + if node_expr is None: + raise VisibilityFormatException("empty term %s" % (expression)) + return node_expr + + def _create_node(self, start, type): + return VisNode(start = start, type = type) + + def _parse(self, expression): + """ + Arguments: + expression - the expression to parse + + Returns: Root node to the newly parsed visibility tree + """ + result = None #current top-level node + expr = None #child node being parsed + wholeTermStart = self._index #start of the top-level term + subtermStart = self._index #start of sub-level term + subtermComplete = False #has the subterm been completed + + #loop through all characters and parse them individually + while self._index < len(expression): + e = expression[self._index] + self._index += 1 + if e == '&': #case of whole term being being AND + expr = self._processTerm(subtermStart, self._index - 1, expr, expression) + if result != None: + if result.type != NodeType.AND: + raise VisibilityFormatException("cannot mix & and |") + else: + result = self._create_node(wholeTermStart, NodeType.AND ) + result.add(expr) + expr = None + subtermStart = self._index + subtermComplete = False + continue + + elif e == '|': #case of whole term being OR + expr = self._processTerm(subtermStart, self._index - 1, expr, expression) + if result != None: + if result.type != NodeType.OR: + raise VisibilityFormatException("cannot mix & and |") + else: + result = self._create_node(wholeTermStart, NodeType.OR ) + result.add(expr) + expr = None + subtermStart = self._index + subtermComplete = False + continue + + elif e == '(': #case of start of a parenthetical term + self._parens += 1 + if (subtermStart != self._index - 1) or (expr is not None): + raise VisibilityFormatException("expression needs & or |") + #parse the subterm expression + expr = self._parse(expression) + subtermStart = self._index + subtermComplete = False + continue + + elif e == ')': #case of end of a parenthetical term + self._parens -= 1 + #process the subterm and make sure it is wellformed + child = self._processTerm(subtermStart, self._index - 1, expr, expression) + if child is None and result is None: + raise VisibilityFormatException("empty expression not allowed") + if result is None: + return child + #if the child is the same type as parent (result), promote the child's children + if result.type == child.type: + for c in child.children: + result.add(c) + else: + result.add(child) + result.end = self._index - 1 + return result + + elif e == '"': #case of a quoted expression + if subtermStart != (self._index - 1): + raise VisibilityFormatException("expression needs & or |") + + #check to make nothing is invalid escaped in the quotes + while (self._index < len(expression) and \ + expression[self._index] != '"'): + if expression[self._index] == '\\': + self._index += 1 + if (expression[self._index] != '\\' and \ + expression[self._index] != '"'): + raise VisibilityFormatException('invalid escaping within quotes') + self._index += 1 + + #case without a closing quote + if self._index == len(expression): + raise VisibilityFormatException("unclosed quote") + + if subtermStart + 1 == self._index: + raise VisibilityFormatException("empty term") + + self._index += 1 + subtermComplete = True + continue + + else: #all other cases, should be valid characters part of a term + if subtermComplete: + raise VisibilityFormatException("expression needs & or |") + + #check to see the character is valid + c = expression[self._index - 1] + if not self._isValidAuthChar(c): + raise VisibilityFormatException('bad character (%c)' % (c)) + + continue + + child = self._processTerm(subtermStart, self._index, expr, expression) + if result is not None: + result.add(child) + result.end = self._index + else: + result = child + + if result.type != NodeType.TERM: + if len(result.children) < 2: + raise VisibilityFormatException("missing term") + + return result + + + + + + + + + + \ No newline at end of file diff --git a/pace/encryption/visibility/vis_parser_test.py b/pace/encryption/visibility/vis_parser_test.py new file mode 100644 index 0000000..1be9b67 --- /dev/null +++ b/pace/encryption/visibility/vis_parser_test.py @@ -0,0 +1,77 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Unit tests for vis_parser.py +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Feb 2015 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import unittest +from pace.encryption.visibility.vis_parser import NodeType, VisNode, VisTree, VisParser,\ + VisibilityFormatException + +class VisNodeTest(unittest.TestCase): + + def test_get_term(self): + """ + Tests get_term + """ + node = VisNode(2, end = 5, type = NodeType.TERM) + self.assertEqual(node.getTerm("abcdef"),"cde", "Get term does not correctly parse term.") + self.assertEqual(node.getTerm('ab"d"f'),"d", "Get term does not correctly handle quotes.") + +class VisParserTest(unittest.TestCase): + + + def test_correct_expressions(self): + ''' + Tests the parser on correct expressions + ''' + expressions = ['a&b', + 'a&b&c', + 'a|b', + 'a|b|c', + '(a&b)|c', + '(a|b)&c', + 'a|(b&c)', + 'a&(b|c)', + '(a&b)|(b&c)', + '(a|b)&(c|d)', + '"test&|"&b', + '((a&b)|c)&(d|e)'] + parser = VisParser() + for e in expressions: + tree = parser.parse(e) + parsed_expr = tree.__str__() + self.assertEqual(parsed_expr, e, + "Parser did not correctly parse %s: %s" % (e,parsed_expr)) + + + def test_incorrect_expressions(self): + ''' + Test the parser on incorrect expressions + ''' + expressions = ['a&b|c', + 'a&|b', + 'a|b&c', + '()&b', + '""&b', + '"a&b&c', + 'a(&b&c', + '<&*|}'] + + parser = VisParser() + for e in expressions: + self.assertRaises(VisibilityFormatException,parser.parse, e) + + \ No newline at end of file diff --git a/pace/pki/.frontend.py.swp b/pace/pki/.frontend.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..fe2b4d40898556c1631c6c0a8cc37c25c4b140ed GIT binary patch literal 12288 zcmeI2&u<$=6vwB9QYdXfpk6?NM^e>Jm9CSv6v!wX5E|q4ak9T+W z&6_vhc{{UFwl;BgZh>BMjtP_}g;+m$;OzC|`^86p2+?#qkqY_7-Akv|@#4(fXf^)jm2z@VBp6dkNd%Lq1RspNPeJQX{96LHW!A(X- zUZAI+TD`B<*4Qdw6|f3e1*`&A0jq#jz$#!Bc(4_SgB{`mhOjdk#yiPz$8E>t(jKe= zRspMkRlq7>6|f3e1*`&A0jq#jz$#!BcmNfUt`K7n3vqQ9g2(^=)4%_3J|V>S;0y2x zP~Z%3z#j1Dej$DVKZ9%FDtHgP1x|trI0*KEz2Me9A#Q>j;5zsWd;s1DOJEoHZm$sE zf(zgncpf|let#VH;4-)b)`14|U(e89s<8TD#Q=qOYko6KpQNA1#kfTwOfeK!DVm>oB_{*XTZOY2=NoR2+o5y zz{_AK_y;=Q0yn^Qa1DF|z6Lx8SAZ>60jq#jU>gchQUo7``Q@`9)Lu-58PBD2s!Ohp zf|l$$h1?>u%GzW#R5-HDQW$PLTtl@J$CX$2T~$OZ+H3d@j+>zj#_nKTINiHfzJqV# zo3x?ANc$d9xiHS7Gak8e3vVRjIMlUHtoj>pW!9kKhp8vh9-l_#L8<5-h22f@Pd+C0 zLQ@o}R)Yr|#eS%qnvCnsYN!yA+E7LQzD~PSd>E&;ilr-KIhCG_=P{TG&Eid_cWRp@ zmojO%kn}_~rM)#m_bzLb_IrCj%T0fi?Jx?+1F_mN<{4nwICO5y$2{ConpGGm9ZFNr zXqw+=H3x^3)lebrE>uyc6-TC;qnU~?3+^=l4@|=irak9o#SoCuX ziUL*F4XxbVR5#3h(h)8C9s(HdZ@4Cppnqg6T&f>Oz-4$)Y=vYxH8WdTonNW0F3+6V zW}mAOPo1k85@MQZ@?=|~#{plxetW-3l0XCQm94jszy$R_NRZ|of=W+C8qly5sY#z4 z3o|Q~tOd6mxY#n$2Bk^;_DM73H0-a?w}_OLvoG~HD7b0ovHPFs0M@I%RZ-HGIy z>VLxWDIOUa85mRClriBk#4{E*6|LzF<(cUsi8Vj%-5F>z*C4MyuMt|7+T-bi8WBGp z2n!2Tl=lx!N!I)gH8$uIy_J$xz$D71M(dj5P+TfTN@Z!rTAJXt%)4HEY3!7^efCjr$ta@Js=Lg)%`AUSjdy^eUt3r8m<{lOb(?B3QYVg+ZU=rC=i9Ro{ZoUU z3;cjj7P4wHg{VF|w_L5vELW#zPvVUt>PAi=VP-SGMSk<0=3NMrevgBc(Fmg@migxmB}{Kw$j08@?liwxJ?C; slxMU|{3*Sunf8M&hSQ9DBV3qUp?QtBu9iphcyL3Bgy^#6fHH^0f30IS3jhEB literal 0 HcmV?d00001 diff --git a/pace/pki/README.md b/pace/pki/README.md new file mode 100644 index 0000000..f26d5ed --- /dev/null +++ b/pace/pki/README.md @@ -0,0 +1,461 @@ +DISTRIBUTION STATEMENT A. Approved for public release: distribution unlimited. + +This material is based upon work supported by the Department of Defense under Air Force Contract +No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or +recommendations expressed in this material are those of the author(s) and do not +necessarily reflect the views of the Department of Defense. + +© 2015 Massachusetts Institute of Technology. + +MIT Proprietary, Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014) + +The software/firmware is provided to you on an As-Is basis + +Delivered to the US Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 +or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this +work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of +this work other than as specifically authorized by the U.S. Government may violate any +copyrights that exist in this work. + +# Attribute Key Generation and Storage + +This is a Python library for management of attribute keys for Cryptographically +Enforced Attribute-Based Access Control (CEABAC) for Accumulo. This library +consists of two components: the key generation system, including key derivation, +wrapping, and storage, and the key storage system. Keys in the system depend on +four components: attribute, version, metadata (e.g., mode of operation), and +key length. The attribute, version, and metadata are assumed to uniquely +identify a key. + +This document describes how to install and use the key generation and storage +library to manage attribute keys for Cryptographically Enforced Attribute-Based +Access Control (CEABAC). + +## Installation + +### Dependencies + +This project depends on several other Python libraries and utilities. They are +listed below with links to their project pages. In addition to these packages, +it also requires a running Accumulo instance. + +- [nosetests](https://nose.readthedocs.org/en/latest/), version 1.3.3+. +- [pyaccumulo](https://pypi.python.org/pypi/pyaccumulo), version 1.5.0.6+. +- [pycrypto](https://www.dlitz.net/software/pycrypto/), version 2.7a1. + +## Use + +### Key Generation + +The code for key generation, wrapping, and revocation is contained in `keygen`. + +To perform these tasks, one must first create a key generation object as +follows: + +```python +from pace.pki.keygen import KeyGen +keygen = KeyGen(msk) +``` + +The `KeyGen` constructor takes as input a master secret key `msk`. This key +will be used as the key for the hash-based message authentication code (HMAC) +used to generate attribute keys. Therefore, the master secret key must be a +uniformly random or pseudorandom string that is at least as long as the output +of the hash function used in the HMAC (in the case of SHA-1, 20 bytes). + +#### Initializing and Adding Users +The initialization process takes users' RSA public keys and the attribute, +metadata, and version information for the keys to which they should receive +access. It generates attribute keys, encrypts each one separately using the +public key of the each user with that attribute, and stores the key wraps and +associated information in the key store. Initializing users can be done by +inputting either a dictionary or a configuration file. + +To initialize using a dictionary, one calls `initialize_users` as follows: + +```python +KeyGen.initialize_users(users, keystore) +``` + +The `users` argument is a dictionary mapping user IDs to `(RSA_pk, info)` +tuples, where `RSA_pk` is the user's RSA public key, and `info` is a list of +`(attr, vers, metadata, keylen)` tuples specifying the attribute, version, +metadata, and key length (in bytes) of the keys to generate, wrap, and store +for that user. The attribute, version, and metadata strings must not contain +the pipe ('|') character. + +The `keystore` argument is the key store to which the key wraps will be written. +It must implement the `AbstractKeyStore` interface, which is described later in +this document. + +To initialize using a configuration file, one calls `init_from_file` as follows: + +```python +KeyGen.init_from_file(user_file, keystore) +``` + +The `user_file` argument is a user configuration file name (or a list of file +names). Each configuration file contains information about users' RSA public +keys and about the attributes for which they should receive keys. Configuration +files must follow a specific format described below. + +The `keystore` argument is the key store to which the key wraps will be written +It must implement the `AbstractKeyStore` interface, which is described later in +this document. + +The initialization functions `initialize_users` and `init_from_file` can also be +used to add new users' attributes later. To do this, one must specify all of the +version numbers of the attribute keys the user should get access to, which may +not necessarily be just the current version number. + +##### Configuration File Format +The configuration files used for initializing or adding users' attributes must +satisfy the following format. The file contains sections, each consisting of a +`[section]` header followed by `name: value` entries. + +Each section corresponds to a user. The section header should be the user ID. +Within each section, the entries should be as follows: + +- `public_key`: the name of a file containing an exported RSA public key. + +- `key_info`: a newline-separated list of pipe-delimited strings specifying an +attribute, version, metadata, and byte length of the key to be generated. The +attribute, version, and metadata strings must not contain the pipe ('|') +character. A non-attribute key can be generated by letting the attribute be the +empty string. + +For example, a section might look like the following: + +```python + [user1] + public_key: user1_pubkey.pem + key_info: a|1|VIS_AES_CFB|16 + b|1|VIS_AES_CFB|16 + c|1|VIS_AES_CFB|16 + d|1|VIS_AES_CFB|16 + |1|Pycrypto_AES_SIV|32 + |1|Pycrypto_AES_CFB|16 + |1|Pycrypto_AES_GCM|16 +``` + +In this example, `user1`'s RSA public key is stored in the file +`user1_pubkey.pem`. The user `user1` should receive access to version 1 of the +AES CFB keys for attributes `a`, `b`, `c`, and `d`, all of which are 16-byte +(128-bit) keys. The user should also get access to version 1 of the +non-attribute keys for AES SIV (32 bytes), AES CFB (16 bytes), and AES GCM (16 +bytes). + +todo mention example config + +#### Revoking Attributes + +To revoke attributes from a user, one can either revoke a single attribute from +a user or revoke all attributes from a user at once. + +To revoke a single attribute from a user: +```python +keygen.revoke(userid, attr, keystore, attr_user_map, user_attr_map, user_pks) +``` + +The `revoke` function takes the following arguments: + +- `userid`: the ID of the user whose keys to revoke. + +- `attr`: the attribute to revoke. + +- `keystore`: the key store to which to write the new key wraps for all other + users with the given attribute. This must implement the `AbstractKeyStore` + interface, which is described later in this document. + +- `attr_user_map`: an attribute-to-user map that can return a list of all users + with the given attribute. This must implement the `AbstractAttrUserMap` + interface, which is described later in this document. + +- `user_attr_map`: a user-to-attribute map that can return a list a of all + attributes of a given user. This must implement the `AbstractUserAttrMap` + interface, which is described later in this document. + +- `user_pks`: a dictionary that maps user IDs to users' RSA public keys. + +- `metas_keylens`: an optional argument; a dictionary that maps metadata strings to new key lengths. For any metadata not in the dictionary, the new key will + have the same length as the current key. + +The `revoke` function will delete all of the revoked user's keys for the +specified attribute for all relevant metadata strings, generate a new attribute +key with the next version number for each affected metadata (with a new key +length, if specified), wrap these keys for all other users with that attribute, +and insert the key wraps into the key store. A non-attribute key can be revoked +by letting the attribute be the empty string. + +To revoke all attributes of a user: + +```python +keygen.revoke_all_attrs(self, userid, keystore, attr_user_map, user_attr_map, + user_pks, metas_keylens={}): +``` + +The arguments are the same as for `revoke`, except that there is no `attr` +argument specifying an attribute to revoke. Instead, all of the users' +attributes will be revoked. + +### Key Storage +After the keys are generated and wrapped, the key wraps need to be written out +to a key store that users can query to retrieve their attribute keys. Depending +on what infrastructure is available, this key store could take many different +forms: it could be an LDAP server, a MySQL database, or even a separate Accumulo +database. With such a range of options, we find it important to provide not +just an implementation of a key store, but a generic interface for key stores +that any user can implement based on what is available in their ecosystem. + +#### Interface +Our interface defines the basic means of storing and retrieving key wraps as +follows: + +```python +class AbstractKeyStore(object): + + @abstractmethod + def insert(self, userid, keyinfo): + ... + + @abstractmethod + def batch_insert(self, userid, infos): + ... + + @abstractmethod + def retrieve_info(self, userid, attr, vers, metadata): + ... + + @abstractmethod + def batch_retrieve(self, userid, metadata, attr=None): + ... + + @abstractmethod + def remove_revoked_keys(self, userid, metadata, attr): + ... + + @abstractmethod + def get_metadatas(self, user, attr): + ... + + @abstractmethod + def retrieve_latest_version_number(self, metadata, attr): + ... + + def retrieve(self, userid, attr, vers, metadata): + ... + + def retrieve_latest_version(self, userid, metadata, attr): + ... +``` + +At a high level, the key store maps users (represented as unique strings) to +`KeyInfo` tuples, which contain a key wrap and its associated information. +More precisely, a `KeyInfo` tuple contains the following fields: + +- `attr`: the attribute corresponding to the associated key wrap, stored as a + string. + +- `vers`: the version number of the associated key wrap, stored as an integer. + +- `metadata`: the metadata corresponding to the associated key wrap, stored as a + string. + +- `keywrap`: the key wrap being stored, represented as a bit array (which in + Python 2.* is equivalent to the `string' type). + +- `keylen`: the length of the key, in bytes, stored as an integer. + +In addition to associating each user with their set of `KeyInfo` tuples, the key +store allows clients to perform more nuanced searches, additionally specifying +the metadata, and potentially the attribute, to search for. This allows users to +target the keys they know they will need when performing potentially costly +key store operations. + +These functions behave as follows: + +- `insert(self, userid, keyinfo)`: a function that inserts a mapping from + `userid` to `keyinfo` into the key store. + +- `batch_insert(self, userid, infos)`: similar to `insert`, but accepts a list + of `KeyInfo` tuples to insert all at once for a given user, allowing the + implementation to more efficiently write them all to the key store, if + applicable. + +- `retrieve_info(self, userid, attr, vers, metadata)`: retrieves a specific + `KeyInfo` tuple from the key store, fully specified with a `userid`, `attr`, + `vers`, and `metadata`. + +- `batch_retrieve(self, userid, metadata, attr=None)`: retrieves all `KeyInfo` + tuples corresponding to a given `userid` and `metadata`. Optionally takes an + `attr` as an argument; if none is provided, returns all found attributes. + +- `remove_revoked_keys(self, userid, metadata, attr)`: removes all key wraps + belonging to `userid` associated with `metadata` and `attr` from the key + store. This is used when a user's permission for a certain attribute is + revoked, to avoid storing keys to which they should no longer have access. + +- `get_metadatas(self, user, attr)`: returns a `set` of all metadata strings + associated with `user` and `attr`. + +- `retrieve_latest_version_number(self, metadata, attr)`: returns the number (as + an integer) of the most recent version of the attribute key with the given + metadata. Importantly, this is user-independent; it returns the most recent + version that has been inserted into the key store, regardless of which user + or users it has been assigned to. + +- `retrieve(self, userid, attr, vers, metadata)`: a wrapper function around + `retrieve_info()`, this function returns only the key wrap itself, rather than + the entire `KeyInfo` tuple. + +- `retrieve_latest_version(self, userid, metadata, attr)`: returns the most + recent version of the `KeyInfo` tuple for the given `userid`, `metadata`, and + `attr`. By default, this is implemented as a call to + `retrieve_latest_version_number()` followed by a call to `retrieve_info()`, + but can be overridden with a more efficient implementation. + +#### Instantiations + +We provide two concrete implementations of our key store interface: +`DummyKeyStore`, in `keystore.py`, and `AccumuloKeyStore`, in +`accumulo_keystore.py`. Specific details of each implementation follow. + +##### Dummy Key Store + +The `DummyKeyStore` class is a local implementation of the key store interface +using Python's built-in dictionary type. This may be suitable for use if the +keys involved are static, or if all of the key storage and generation can happen +on a single machine. However, its main purpose is to serve as the simplest +possible implementation with which to test our key store-dependent code. + +To initialize a dummy key store, one only has to call the constructor with no +arguments, as follows: + +```python +from pace.pki.keystore import DummyKeyStore +keystore = DummyKeyStore() +``` + +After initialization, one can call `keystore.insert(...)` and +`keystore.batch_insert(...)` to insert the appropriate elements to be held in +the store. + +##### Accumulo Key Store + +For a more realistic key store implementation, we provide the `AccumuloKeyStore` +class. This key store takes an Accumulo connection in which to store all of the +users' key wraps, indexed to make most of the key store operations performable +with a single write or scan. + +Each key wrap is stored in a table corresponding to a single metadata string. +Within this table, each user gets a row, with the attribute stored in both the +column family and visibility field, the version stored in the column qualifier, +and the key wrap and key length stored in the value field. Storing the attribute +in both the column family and the visibility field allows lookup by attribute +while allowing the trusted key store to enforce access control on the key wrap. +*Note that in order to use this schema, every user must have access to each +table in which they have a key stored.* + +To efficiently implement `get_metadatas()`, we use a separate table to keep +track of which attributes and users have which metadata string associated with +them. This table, whose name is configurable at the time the key store is +created, stores the user ID as the row, the attribute as the column family, +the metadata as the column qualifier, and the string `1` as the value. This +dummy value allows the server to perform a range query over the given users and +attributes, then extract the resulting cells' column qualifiers to return the +appropriate metadata strings. + +To efficiently implement `retrieve_latest_version_number()`, we use another +separate table for keeping track of the latest version number for each key wrap +metadata string and attribute. This table, whose name is also configurable, +stores the attribute in the row, the metadata in the column qualifier, and the +version number as a string in the value field. + +To initialize an Accumulo key store, one invokes the constructor with a +pyaccumulo connection to the hosting Accumulo instance, and optionally provides +names for the metadata storage table and version number storage table, as +follows: + +```python +from pace.pki.accumulo_keystore import AccumuloKeyStore +import pyaccumulo + +conn = pyaccumulo.Accumulo(...) # connection info goes here +keystore = AccumuloKeyStore(conn, meta_table='__KEYWRAP_METADATA__', + vers_table='__VERSION_METADATA__') +``` + +This produces a key store that stores its key wraps in the Accumulo server that +`conn` points to, stores its key wrap metadata in the table +`__KEYWRAP_METADATA__`, and stores its version metadata in the table +`__VERSION_METADATA__`. For simplicity, the constructor includes these values as +the defaults for the metadata tables. *Again, note that users require access to +each of these tables in order to be able to use the key store.* + +#### Other Interfaces + +In addition to the basic interface described above, we provide two interfaces to +fetch information that is needed in order to revoke keys. One defines a way to +fetch all of the attributes held by a given user; the other defines a way to +fetch all of the users who hold a given attribute. + +The exact interfaces we define are as follows: + +```python +class AbstractAttrUserMap(object): + + def users_by_attribute(self, attr): + ... + + def delete_user(self, attr, user): + ... + +class AbstractUserAttrMap(object): + + def attributes_by_user(self, userid): + ... + + def delete_attr(self, userid, attr): + ... +``` + +Each of these takes as input an attribute or a user, and returns a list of users +or a list of attributes, respectively. There is also a `delete` function +associated with both interfaces; this is called by the revocation functions in +`KeyGen`, in case the underlying implementation needs to be told to delete a +particular mapping when revocation occurs. + +These interfaces are split up for the sake of modularity: if PACE is being +installed in an ecosystem that already has services that provide one or both of +these abilities, then those existing systems can be plugged in to this interface +with only some glue code. In a situation where no such services already exist, +however, there needs to be a backup solution. For these situations, we provide +an add-on to our Accumulo key store that also implements both of these +interfaces, updating the appropriate mappings whenever a key wrap is added to +the store. + +The joint interface, found in `accumulo_keystore.py`, is initialized +similarly to an Accumulo key store, but with more arguments: + +```python +from pace.pki.accumulo_keystore import AccumuloAttrKeyStore +import pyaccumulo + +conn = pyaccumulo.Accumulo(...) # connection info goes here +keystore = AccumuloAttrKeyStore(conn, meta_table='__KEYWRAP_METADATA__', + vers_table='__VERSION_METADATA__' + attr_user_table='__ATTR_USER_TABLE__', + user_attr_table='__USER_ATTR_TABLE__') +``` + +This creates a keystore that has the same functionality as the one described +previously, but that additionally keeps track of user-attribute and +attribute-user mappings, in tables denoted by `attr_user_table` and +`user_attr_table`. As before, the default values for these arguments are +the same as those shown above. + +## Testing + +Unit tests for key generation and key storage are contained in +`keygen_test.py` and `keystore_test.py` and can be run by running `nosetests` +from a shell in the `pace/pki` directory with nosetests installed. diff --git a/pace/pki/__init__.py b/pace/pki/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/pki/abstractpki.py b/pace/pki/abstractpki.py new file mode 100644 index 0000000..55beb3d --- /dev/null +++ b/pace/pki/abstractpki.py @@ -0,0 +1,64 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ATLH +## Description: Abstract class for key management interface +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Dec 2014 ATLH Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from abc import ABCMeta, abstractmethod + +class AbstractPKI(object): + """Abstract interface that all key management objects + must match. Should support matching between an identifier + and keys. + """ + __metaclass__= ABCMeta + + @abstractmethod + def __init__(self, *args): + """ + Arguments: + *args - user specified arguments necessary for key + management. May be information about an LDAP server, + or some other external key management service. + """ + pass + + @abstractmethod + def get_profile(self, identifier): + """ + Arguments: + identifier - unique to a single user that is used + to map between a user and their security profile, which + may take the form of an X509 certificate or something + similar + + Returns: profile of user in the form a named tuple, + specified by particular use case. May contain signing + or encryption keys, as well as scheme preference. + + Raises PKILookupError if `identifier` is not found + """ + pass + +class PKILookupError(Exception): + """ Error to be raised when an identifier is not found in get_profile + """ + def __init__(self, msg): + self.msg = msg + +class PKIStorageError(Exception): + """ Error to be raised when an entry to be stored in the PKI is invalid + """ + def __init__(self, msg): + self.msg = msg diff --git a/pace/pki/accumulo_keystore.py b/pace/pki/accumulo_keystore.py new file mode 100644 index 0000000..aa7d90a --- /dev/null +++ b/pace/pki/accumulo_keystore.py @@ -0,0 +1,488 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CAS +## Description: Key storage in Accumulo +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 22 Jun 2015 CAS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from pyaccumulo import Mutation, Range +from types import IntType +from collections import defaultdict + +from pace.pki.keystore import AbstractKeyStore, KeyInfo +from pace.common.common_utils import get_single_entry +from pace.pki.abstractpki import PKILookupError, PKIStorageError +from pace.pki.attrusermap import AbstractAttrUserMap +from pace.pki.userattrmap import AbstractUserAttrMap +from pace.common.common_utils import entry_exists + +class AccumuloKeyStore(AbstractKeyStore): + """ An implementation of AbstractKeyStore (see keystore.py) that + uses an Accumulo instance to store the key wraps. + + Overall design: + - Index keys by metadata to allow the encryption code to perform + efficient lookups for {en,de}cryption + - Key info is essentially a (metadata, userid, attribute, version, + keywrap, keylen) tuple + - Key infos are sorted lexicographically; importantly, this means + it is possible to search for the most recent version, or for a + range of versions + - Since we assume many users but few metadatas, create one table + per metadata, then one row per user in each of these tables. + """ + + def __init__(self, conn, meta_table='__KEYWRAP_METADATA__', + vers_table='__VERSION_METADATA__'): + """ Init needs the connection that the Accumulo server used to + store the keys lives on. + """ + self.conn = conn + if not conn.table_exists(meta_table): + conn.create_table(meta_table) + self.meta_table = meta_table + if not conn.table_exists(vers_table): + conn.create_table(vers_table) + self.vers_table = vers_table + + def insert(self, userid, keyinfo): + """ Insert a wrapped key into the key store. + + Arguments: + + self - the KeyStore object being written to + userid : string - the ID of the user for whom the key is wrapped + keyinfo : a KeyInfo tuple containing the key's metadata, attribute, + version, keywrap, and key length + """ + + # Table name: metadata + # Row: userid + # Column family: attribute + # Column qualifier: version + # Visibility field: attribute (non-attr keys visible to all) + # Value: keywrap + self.batch_insert(userid, [keyinfo]) + + def retrieve_info(self, userid, attr, vers, metadata): + """ Attempt to retrieve a wrapped key from the key store. + + Arguments: + + self - the KeyStore object being retrieved from + userid : string - the ID of the user for whom the key is wrapped + attr : string - the attribute for the key being retrieved, if any. + If this field is the empty string '', it denotes that this + is not an attribute key. + vers : string - the version identifier for the key + metadata : string - metadata about the key (e.g. the mode of + operation with which it is intended to be used) + + Returns: + + keyinfo - the KeyInfo object corresponding to the provided + values + + Raises: + + PKILookupError - when no key is found + """ + + if type(vers) is not IntType: + raise PKILookupError('version to search for must be an integer') + + tabname = metadata + + if not self.conn.table_exists(tabname): + raise PKILookupError('No such table %s' %tabname) + + row = userid + cf = attr + cq = str(vers) + + cell = get_single_entry(self.conn, tabname, row=row, cf=cf, cq=cq) + + if cell is not None: + keywrap, raw_keylen = cell.val.rsplit(',', 1) + + try: + keylen = int(raw_keylen) + except ValueError: + raise PKILookupError('Error: found non-integer key length') + + return KeyInfo(attr, vers, metadata, keywrap, keylen) + else: + raise PKILookupError('No keywrap found') + + def batch_insert(self, userid, infos): + """ Add all of a user's attribute keys into the key store at once, + to avoid the overhead of repeated individual insertions. + + Arguments: + + self - the KeyStore object being written to + userid : string - the ID of the user whose keys these are + infos : [KeyInfo] - a list of KeyInfo objects (that is, + (attr, vers, metadata, keywrap, keylen) tuples) to be + inserted into the key store in batches. The batching + method is left up to the specific implementation, and + ideally would be faster than inserting each tuple + individually. + """ + + # Store metadata (i.e. table) names mapping to + # BatchWriter, Mutation pairs + writers = {} + + # Also keep a mutation to write to the keywrap metadata table + # Schema: + # Table - self.meta_table + # Row - userid + # CF - attr + # CQ - metadata + # vis - [empty] + # value - '1' (dummy value) + meta_mutation = Mutation(userid) + # Use a defaultdict to return 0 if the attribute searched for is not + # found; useful for the call to max() later on. Assumes that all + # versions are positive. + maxvers = defaultdict(int) + + for keyinfo in infos: + if type(keyinfo.vers) is not IntType: + raise PKIStorageError('versions must be integers') + if type(keyinfo.keylen) is not IntType: + raise PKIStorageError('key lengths must be integers') + + metadata = keyinfo.metadata + + if metadata not in writers: + if not self.conn.table_exists(metadata): + self.conn.create_table(metadata) + + writers[metadata] = (self.conn.create_batch_writer(metadata), + Mutation(userid)) + + _, mutation = writers[metadata] + + mutation.put(cf=keyinfo.attr, + cq=str(keyinfo.vers), + cv=keyinfo.attr, + val='%s,%s' %(keyinfo.keywrap, str(keyinfo.keylen))) + + meta_mutation.put(cf=keyinfo.attr, cq=metadata, val='1') + + # Keep track of the largest version number for each attr metadata + # pair we've seen so far. + maxvers[(keyinfo.attr, metadata)] = max( + maxvers[(keyinfo.attr, metadata)], keyinfo.vers) + + for wr, m in writers.itervalues(): + wr.add_mutation(m) + wr.close() + + self.conn.write(self.meta_table, meta_mutation) + + # Go through the largest version numbers we found and see if any + # need to be updated in the version table + for (attr, metadata), vers in maxvers.iteritems(): + cell = get_single_entry(self.conn, self.vers_table, + row=attr, cf='', cq=metadata) + if cell: + try: + old_vers = int(cell.val) + except ValueError: + raise PKIStorageError('stored version must be integer') + + if old_vers >= vers: + continue + + vers_mutation = Mutation(attr) + vers_mutation.put(cq=metadata, val=str(vers)) + self.conn.write(self.vers_table, vers_mutation) + + def batch_retrieve(self, userid, metadata, attr=None): + """ Fetch all of a user's keys at once. Optionally, fetch only their + keys either for a specified attribute or with no attribute at all. + + Arguments: + + self - the KeyStore object being read from + userid : string - the ID of the user whose keys to fetch + metadata : string - the metadata of the keys to search for + attr : optional string - the attribute to search for. Default + value: None. If this argument is None, this method should + return all of the given user's keys. If this argument is + the empty string, it should return that user's non-attribute + keys. If this argument is a non-empty string, it should + return all of that user's keys for that attribute, including + all versions and metadata options. + + Returns: + + [KeyInfo] - a non-empty list of KeyInfo objects (that is, + (attr, vers, metadata, keywrap, keylen) tuples). If the attr + argument was None, the attr field of each tuple will be the + attribute corresponding to the returned version, metadata, and + keywrap; otherwise, the attr field of each tuple will be equal to + the attr argument. + + Raises: + + PKILookupError - if there is no information to be returned + """ + + tabname = metadata + + if not self.conn.table_exists(tabname): + raise PKILookupError('Error: no such table %s' %tabname) + + if attr is None: + # Get everything! + scan_range = Range(srow=userid, erow=userid) + else: + # Get only things from the corresponding row + scan_range = Range(srow=userid, erow=userid, scf=attr, ecf=attr) + + ret = [] + + for c in self.conn.scan(tabname, scan_range): + try: + vers = int(c.cq) + except ValueError: + raise PKILookupException('Retrieved version must be int') + + keywrap, raw_keylen = c.val.rsplit(',', 1) + + try: + keylen = int(raw_keylen) + except ValueError: + raise PKILookupError('Error: found non-integer key length') + + ret.append(KeyInfo(metadata=metadata, attr=c.cf, + vers=vers, keywrap=keywrap, keylen=keylen)) + + if not ret: + # If we found no elements, that's an error + raise PKILookupError( + 'Error: no results found for batch key retrieval') + else: + return ret + + def remove_revoked_keys(self, userid, metadata, attr): + """ Delete all stored key versions corresponding to the given + revoked userid, metadata, and attribute. + + Arguments: + + self - the KeyStore object to delete elements from + userid : string - the ID of the user whose keys are being deleted + metadata : string - the metadata of the keys to delete + attr : string - the attribute of the keys to delete + """ + # Table name: metadata + # Row: userid + # Column family: attribute + # Column qualifier: version + # Visibility field: attribute (non-attr keys visible to all) + # Value: keywrap + del_keys = self.batch_retrieve(userid, metadata, attr) + mutation = Mutation(userid) + + for keyinfo in del_keys: + # Queue deletes of all these cells in a mutation + mutation.put(cf=attr, cq=str(keyinfo.vers), cv=attr, + is_delete=True) + + # Write out the deletes + self.conn.write(metadata, mutation) + + # Also need to remove this from the metadata store + # Schema: + # Table - self.meta_table + # Row - userid + # CF - attr + # CQ - metadata + # vis - [empty] + # value - '1' (dummy value) + mutation = Mutation(userid) + mutation.put(cf=attr, cq=metadata, is_delete=True) + self.conn.write(self.meta_table, mutation) + + def get_metadatas(self, user, attr): + """ Get all metadatas that a given user has for a particular attribute. + + Arguments: + + self - the KeyStore object to delete elements from + userid : string - the ID of the user whose metadata is + being fetched + attr : string - the attribute whose metadata is being fetched + + Returns: + + metadatas : string set - a set of metadata strings + """ + # Scan the keywrap metadata table for the metadatas + # Row: user + # Col. Fam: attribute + raw_metas = self.conn.scan(self.meta_table, + Range(srow=user, erow=user), + cols=[[attr]]) + + return set([entry.cq for entry in raw_metas]) + + def retrieve_latest_version_number(self, metadata, attr): + """ Return the most recent version number for the given attribute + and metadata. + + metadata : string - the metadata of the key version to search for + attr : string - the attribute to search for + + Returns: + + v_num : int - the version number for the appropriate key + + Raises: + + PKILookupError - if no such version is found, or if the stored + value is not an integer + """ + cell = get_single_entry(self.conn, self.vers_table, + row=attr, cf='', cq=metadata) + + if cell is None: + raise PKILookupError('Cell not found for version lookup') + + try: + return int(cell.val) + except ValueError: + raise PKILookupError('Stored version string does not parse as int') + +class AccumuloAttrKeyStore(AccumuloKeyStore, AbstractAttrUserMap, + AbstractUserAttrMap): + """ Subclass of the AccumuloKeyStore that also keeps track of + attr -> [user] mappings and user -> [attr] mappings in separate tables, + adding & removing mappings where appropriate. + + Schema: + - The table denoted by the `attr_user_table` instance variable keeps all + of the attribute -> user mappings. + Each row in this table represents a single attribute; each column + family in a given row represents a user who has that attribute + associated with them. + - The table denoted by the `user_attr_table` instance variable keeps all + of the user -> attribute mappings. + Each row in this table represents a single user; each column family + in a given row represents an attribute that the user has. + """ + def __init__(self, conn, meta_table='__KEYWRAP_METADATA__', + vers_table='__VERSION_METADATA__', + attr_user_table='__ATTR_USER_TABLE__', + user_attr_table='__USER_ATTR_TABLE__'): + super(AccumuloAttrKeyStore, self).__init__(conn, meta_table, vers_table) + + if not self.conn.table_exists(attr_user_table): + self.conn.create_table(attr_user_table) + self.attr_user_table = attr_user_table + + if not self.conn.table_exists(user_attr_table): + self.conn.create_table(user_attr_table) + self.user_attr_table = user_attr_table + + def batch_insert(self, userid, infos): + # Do a normal insert + super(AccumuloAttrKeyStore, self).batch_insert(userid, infos) + + # Also add key information + # NB: this can also be done inline to avoid iterating twice + # though the keystore infos, at the downside of more code + # duplication and less modularity. + for keyinfo in infos: + if not entry_exists(self.conn, self.attr_user_table, + keyinfo.attr, userid): + #TODO: we could batch these writes for potentially a + # little bit more efficiency + m = Mutation(keyinfo.attr) + m.put(cf=userid, val='1') + self.conn.write(self.attr_user_table, m) + + if not entry_exists(self.conn, self.user_attr_table, + userid, keyinfo.attr): + m = Mutation(userid) + m.put(cf=keyinfo.attr, val='1') + self.conn.write(self.user_attr_table, m) + + + def users_by_attribute(self, attr): + """ Return the list of all users who are currently authorized to + read data with the given attribute. + + Arguments: + + attr : string - the attribute to query + + Returns: + + users : [string] - a (potentially empty) list of usernames + (as strings) that are all authorized to have the given + attribute `attr` + """ + # Scan the attribute-to-user table for the row for this attribute + raw_users = self.conn.scan(self.attr_user_table, + Range(srow=attr, erow=attr)) + + # Grab the column family (where the user is stored) for each entry + return [entry.cf for entry in raw_users] + + def attributes_by_user(self, userid): + """ Returns a list of the attributes the given user has. + + Arguments: + userid (string) - the ID of the user whose attributes to retrieve + + Returns: + [string] - a (potentially empty) list of the attributes that the + given user has + """ + # Scan the user-to-attribute table for the row for this user + raw_attrs = self.conn.scan(self.user_attr_table, + Range(srow=userid, erow=userid)) + + # Grab the column family (where the attribute is stored) for each entry + return [entry.cf for entry in raw_attrs] + + def delete_user(self, attr, user): + """ Delete a user from the list of users with a given attribute. + Used for key revocation. + + Arguments: + + attr : string - the attribute to delete a user from + user : string - the user to be deleted from attr + """ + mutation = Mutation(attr) + mutation.put(cf=user, is_delete=True) + self.conn.write(self.attr_user_table, mutation) + + def delete_attr(self, userid, attr): + """ Delete an attribute from the list of attributes a given user has. + Used for key revocation. + + Arguments: + userid (string) - the ID of the user whose attribute to delete + attr (string) - the attribute to delete from the user's list + """ + mutation = Mutation(userid) + mutation.put(cf=attr, is_delete=True) + self.conn.write(self.user_attr_table, mutation) diff --git a/pace/pki/attrusermap.py b/pace/pki/attrusermap.py new file mode 100644 index 0000000..cea9431 --- /dev/null +++ b/pace/pki/attrusermap.py @@ -0,0 +1,110 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CAS +## Description: Attribute-to-user map interface & implementations +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 24 Aug 2015 CAS Original file +## 28 Aug 2015 CAS Changed file & object name +## ************** + +from abc import ABCMeta, abstractmethod + +class AbstractAttrUserMap(object): + """ Abstract interface for fetching attribute-user mappings + (i.e. for an Accumulo instance). Can be standalone or folded in + to some other bit of infrastructure, such as a keystore. Assumes + any updates to the contents of said store are updated elsewhere, + as there is no functionality to add or delete a user in this API. + """ + + __metaclass__ = ABCMeta + + @abstractmethod + def users_by_attribute(self, attr): + """ Return the list of all users who are currently authorized to + read data with the given attribute. + + Arguments: + + attr : string - the attribute to query + + Returns: + + users : [string] - a (potentially empty) list of usernames + (as strings) that are all authorized to have the given + attribute `attr` + """ + pass + + @abstractmethod + def delete_user(self, attr, user): + """ Delete a user from the list of users with a given attribute. + Used for key revocation. If the class implementing this + interface is a wrapper around a separate service that is + already taking attribute revocations into account, this may + just be implemented with `pass`. + + Arguments: + + attr : string - the attribute to delete a user from + user : string - the user to be deleted from attr + """ + pass + + +class LocalAttrUserMap(AbstractAttrUserMap): + """ Simple attribute store that references a static dictionary passed + in at initialization. + + Fields: + + attr_dict : {string -> [string]} - a dictionary mapping attribute + strings to lists of users. + """ + def __init__(self, attr_dict): + """ Initialize the attribute-to-user map with a provided dictionary. + """ + #Create a fresh copy of the provided dictionary to prevent aliasing + #issues + self.attr_dict = {} + for key, val in attr_dict.iteritems(): + self.attr_dict[key] = list(val) + + def users_by_attribute(self, attr): + """ Return the list of all users who are currently authorized to + read data with the given attribute. + + Arguments: + + attr : string - the attribute to query + + Returns: + + users : [string] - a (potentially empty) list of usernames + (as strings) that are all authorized to have the given + attribute `attr` + """ + try: + newlist = [x for x in self.attr_dict[attr]] + return newlist + except KeyError: + return [] + + def delete_user(self, attr, user): + """ Delete a user from the list of users with a given attribute. + Used for key revocation. + + Arguments: + + attr : string - the attribute to delete a user from + user : string - the user to be deleted from attr + """ + try: + self.attr_dict[attr].remove(user) + except ValueError: + pass + except KeyError: + pass diff --git a/pace/pki/attrusermap_test.py b/pace/pki/attrusermap_test.py new file mode 100644 index 0000000..d187981 --- /dev/null +++ b/pace/pki/attrusermap_test.py @@ -0,0 +1,300 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Unit tests for user-attribute and attribute-user maps +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 24 Aug 2015 CS Original file +## 28 Aug 2015 CS Changed file name +## 4 Sep 2015 ES Added tests for user-attribute maps +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random + +from pace.common.pacetest import PACETestCase +from pace.common.fakeconn import FakeConnection +from pace.pki.keystore import KeyInfo +from pace.pki.attrusermap import LocalAttrUserMap +from pace.pki.userattrmap import LocalUserAttrMap +from pace.pki.accumulo_keystore import AccumuloAttrKeyStore + +class UserAttrTests(PACETestCase): + + def setUp(self): + self.names = 10 + self.metadatas = 5 + self.attrs = 3 + self.vers = 2 + + def test_local_store(self): + """ Test local store on a static set of values + """ + maps = {'a' : ['1', '2', '3'], + 'b' : ['4', '5', '6'], + 'c' : ['7', '8', '9']} + + #test attribute-to-user map + store = LocalAttrUserMap(maps) + for key, val in maps.iteritems(): + self.assertEqual(set(store.users_by_attribute(key)), set(val)) + + #test user-to-attribute map + store = LocalUserAttrMap(maps) + for key, val in maps.iteritems(): + self.assertEqual(set(store.attributes_by_user(key)), set(val)) + + def test_local_store_many(self): + """ Random dictionary generation for the local store + """ + maps = {} + + for _ in xrange(self.num_iters): + + for i in xrange(self.names): + name = str(i) + vals = self.generate_elems() + maps[name] = list(vals) + + #test attribute-to-user map + store = LocalAttrUserMap(maps) + for key, val in maps.iteritems(): + self.assertEqual(set(store.users_by_attribute(key)), set(val)) + + #test user-to-attribute map + store = LocalUserAttrMap(maps) + for key, val in maps.iteritems(): + self.assertEqual(set(store.attributes_by_user(key)), set(val)) + + def test_acc_store(self): + """ Test that the AccumuloAttrKeyStore correctly returns attributes and + users on a small, hard-coded test case. + """ + + conn = FakeConnection() + store = AccumuloAttrKeyStore(conn) + + keys1 = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0), + KeyInfo('attr A', 2, 'metadata', 'keywarp', 0), + KeyInfo('attr B', 23, 'meatdata', 'wheycap', 0)] + store.batch_insert('user1', keys1) + + keys2 = [KeyInfo('attr B', 23, 'meatdata', 'wheycap', 0), + KeyInfo('attr C', 12, 'metadata', 'otherwrap', 0), + KeyInfo('attr D', 10, 'meatdata', 'newwrap', 0)] + store.batch_insert('user2', keys2) + + self.assertEqual(store.users_by_attribute('attr A'), ['user1']) + self.assertEqual(set(store.users_by_attribute('attr B')), + set(['user1', 'user2'])) + self.assertEqual(store.users_by_attribute('attr C'), ['user2']) + self.assertEqual(store.users_by_attribute('attr D'), ['user2']) + + self.assertEqual(set(store.attributes_by_user('user1')), + set(['attr A', 'attr B'])) + self.assertEqual(set(store.attributes_by_user('user2')), + set(['attr B', 'attr C', 'attr D'])) + + def test_acc_store_many(self): + """ Test that the AccumuloAttrKeyStore correctly returns attributes and + users on randomly-generated data. + """ + + for _ in xrange(self.num_iters): + conn = FakeConnection() + store = AccumuloAttrKeyStore(conn) + users_by_attr = {} + attrs_by_user = {} + + # Generate some random user IDs + names = ('user'+str(random.randint(0,1000000000)) + for _ in xrange(self.names)) + + for name in names: + if name not in attrs_by_user: + attrs_by_user[name] = set([]) + + name_batch = [] + + # Generate some random metadata + metadatas = ('meta'+str(random.randint(0,1000000000)) + for _ in xrange(self.metadatas)) + + for metadata in metadatas: + # Generate some random attributes + attrs = ('attr'+str(random.randint(0,1000000000)) + for _ in xrange(self.attrs)) + + for attr in attrs: + if attr not in users_by_attr: + users_by_attr[attr] = set([]) + users_by_attr[attr].add(name) + attrs_by_user[name].add(attr) + # Generate some random versions + vers = (random.randint(0,1000000000) + for _ in xrange(self.vers)) + + for vrs in vers: + # Generate a random keywrap + keywrap = 'key'+str(random.randint(0,1000000000)) + + info = KeyInfo(attr, vrs, metadata, keywrap, 0) + name_batch.append(info) + + store.batch_insert(name, name_batch) + + for attr, users in users_by_attr.iteritems(): + self.assertEqual(users, set(store.users_by_attribute(attr))) + + for user, attrs in attrs_by_user.iteritems(): + self.assertEqual(attrs, set(store.attributes_by_user(user))) + + def test_empty_store(self): + """ Make sure each attribute/user store correctly returns the empty list + when appropriate. + """ + conn = FakeConnection() + acc_store = AccumuloAttrKeyStore(conn) + loc_attr_user_map = LocalAttrUserMap({}) + loc_user_attr_map = LocalUserAttrMap({}) + + self.assertEqual(loc_attr_user_map.users_by_attribute('not found'), []) + self.assertEqual(loc_user_attr_map.attributes_by_user('not found'), []) + self.assertEqual(acc_store.users_by_attribute('not found'), []) + self.assertEqual(acc_store.attributes_by_user('not found'), []) + + self.assertEqual(loc_attr_user_map.users_by_attribute(''), []) + self.assertEqual(loc_user_attr_map.attributes_by_user(''), []) + self.assertEqual(acc_store.users_by_attribute(''), []) + self.assertEqual(acc_store.attributes_by_user(''), []) + + loc_attr_user_map2 = LocalAttrUserMap({'a' : []}) + self.assertEqual(loc_attr_user_map2.users_by_attribute('a'), []) + + loc_user_attr_map2 = LocalUserAttrMap({'a' : []}) + self.assertEqual(loc_user_attr_map2.attributes_by_user('a'), []) + + def test_delete_from_store(self): + """ Make sure attribute/user maps correctly delete elements. + """ + + maps = {'a' : ['1', '2', '3'], + 'b' : ['4', '5', '6'], + 'c' : ['7', '8', '9']} + + loc_attr_user_map = LocalAttrUserMap(maps) + loc_user_attr_map = LocalUserAttrMap(maps) + + loc_attr_user_map.delete_user('a', '1') + loc_attr_user_map.delete_user('b', '5') + loc_attr_user_map.delete_user('c', '9') + + loc_user_attr_map.delete_attr('a', '1') + loc_user_attr_map.delete_attr('b', '5') + loc_user_attr_map.delete_attr('c', '9') + + delmaps = {'a' : ['2', '3'], + 'b' : ['4', '6'], + 'c' : ['7', '8']} + + for key, val in delmaps.iteritems(): + self.assertEqual(loc_attr_user_map.users_by_attribute(key), val) + self.assertEqual(loc_user_attr_map.attributes_by_user(key), val) + + def test_del_acc_store(self): + """ Make sure AccumuloAttrKeyStores correctly delete users and + attributes. + """ + + conn = FakeConnection() + store = AccumuloAttrKeyStore(conn) + + keys1 = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0), + KeyInfo('attr A', 2, 'metadata', 'keywarp', 0), + KeyInfo('attr B', 23, 'meatdata', 'wheycap', 0)] + store.batch_insert('user1', keys1) + + keys2 = [KeyInfo('attr B', 23, 'meatdata', 'wheycap', 0), + KeyInfo('attr C', 12, 'metadata', 'otherwrap', 0), + KeyInfo('attr D', 10, 'meatdata', 'newwrap', 0)] + store.batch_insert('user2', keys2) + + store.delete_user('attr B', 'user1') + store.delete_attr('user1', 'attr B') + + self.assertEqual(store.users_by_attribute('attr A'), ['user1']) + self.assertEqual(store.users_by_attribute('attr B'), ['user2']) + self.assertEqual(store.users_by_attribute('attr C'), ['user2']) + self.assertEqual(store.users_by_attribute('attr D'), ['user2']) + + self.assertEqual(store.attributes_by_user('user1'), ['attr A']) + self.assertEqual(set(store.attributes_by_user('user2')), + set(['attr B', 'attr C', 'attr D'])) + + def test_aliasing_acc(self): + """ Make sure aliasing isn't a problem (mostly relevant for local maps, + but testing it on AccumuloAttrKeyStore for completeness) + """ + # Problem is as follows: + # 1) call x = users_by_attribute() + # 2) call delete_user() + # 3) use x + + conn = FakeConnection() + store = AccumuloAttrKeyStore(conn) + + keys1 = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0), + KeyInfo('attr A', 2, 'metadata', 'keywarp', 0), + KeyInfo('attr B', 23, 'meatdata', 'wheycap', 0)] + store.batch_insert('user1', keys1) + + keys2 = [KeyInfo('attr B', 23, 'meatdata', 'wheycap', 0), + KeyInfo('attr C', 12, 'metadata', 'otherwrap', 0), + KeyInfo('attr D', 10, 'meatdata', 'newwrap', 0)] + store.batch_insert('user2', keys2) + + users = store.users_by_attribute('attr B') + self.assertEqual(set(['user1', 'user2']), set(users)) + + store.delete_user('attr B', 'user1') + store.delete_attr('user1', 'attr B') + self.assertEqual(set(['user1', 'user2']), set(users)) + + def test_aliasing_loc(self): + """ Make sure aliasing isn't a problem (mostly relevant for local maps) + """ + # Problem is as follows: + # 1) call x = users_by_attribute() + # 2) call delete_user() + # 3) use x + + maps = {'A' : ['1', '2', '3'], + 'B' : ['4', '5', '6'], + 'C' : ['7', '8', '9']} + + #test attribute-to-user map + store = LocalAttrUserMap(maps) + + users = store.users_by_attribute('B') + self.assertEqual(set(['4', '5', '6']), set(users)) + + store.delete_user('B', '5') + self.assertEqual(set(['4', '5', '6']), set(users)) + + #test user-to-attribute map + print maps + store = LocalUserAttrMap(maps) + + attrs = store.attributes_by_user('B') + self.assertEqual(set(['4', '5', '6']), set(attrs)) + store.delete_attr('B', '5') + self.assertEqual(set(['4', '5', '6']), set(attrs)) + + diff --git a/pace/pki/dictpki.py b/pace/pki/dictpki.py new file mode 100644 index 0000000..418e229 --- /dev/null +++ b/pace/pki/dictpki.py @@ -0,0 +1,26 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Abstract class for key management interface +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 19 Dec 2014 CS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from pace.pki.abstractpki import AbstractPKI + +class DictPKI(AbstractPKI): + def __init__(self, dictionary, tuple_class): + self.dictionary = dictionary + self.tuple_class = tuple_class + + def get_profile(self, identifier): + return self.tuple_class(*self.dictionary[identifier]) diff --git a/pace/pki/frontend.py b/pace/pki/frontend.py new file mode 100644 index 0000000..65af773 --- /dev/null +++ b/pace/pki/frontend.py @@ -0,0 +1,94 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CAS +## Description: Front-end for easily viewing the key store +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 10 Aug 2015 CAS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +DEFAULT_META = 'VIS_AES_CFB' +DEFAULT_USER = 'user1' + +from base64 import b64encode + +class KeyStoreFrontEnd(object): + + def __init__(self, keystore): + self.keystore = keystore + + def view(self, metadata=None, user=None, attr=None): + """ Provide a view into the key store, showing the key information + for the given metadata, user, attribute, and version. + + If no metadata or user is specified, the default table + and/or username will be used (see DEFAULT_META and DEFAULT_USER + above). + + If no attribute is specified, displays all entries + that match the given user and metadata. + """ + + # Check arguments & print usage information + + if metadata is None: + print 'No metadata specified' + print 'Using default metadata', DEFAULT_META + print + + metadata = DEFAULT_META + else: + print 'Showing results for metadata', metadata + print + + if user is None: + print 'No username specified' + print 'Using default username', DEFAULT_USER + print + + user = DEFAULT_USER + else: + print 'Showing results for user', user + print + + if attr is None: + print 'No attribute specified' + print 'Showing all attributes' + print + else: + print 'Showing results for attribute', attr + print + + # Fetch & display keys + + print 'Showing key information for user:', user + print 'Metadata being used:', metadata + print '========================================' + print + + keys = self.keystore.batch_retrieve(userid=user, metadata=metadata, + attr=attr) + + for keyinfo in keys: + print 'Key attribute:', keyinfo.attr + print 'Key version :', keyinfo.vers + print 'Keywrap:' + print b64encode(keyinfo.keywrap) + print + print '----------------------------------------' + print + + print 'End key display.' + + + + + diff --git a/pace/pki/key_wrap_utils.py b/pace/pki/key_wrap_utils.py new file mode 100644 index 0000000..b2ab6c9 --- /dev/null +++ b/pace/pki/key_wrap_utils.py @@ -0,0 +1,48 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ES +## Description: Key wrapping and unwrapping +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 15 July 2015 ES Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from Crypto.Cipher import PKCS1_OAEP +from Crypto.PublicKey import RSA + +def wrap_key(sk, RSA_pk): + """ Generates a keywrap. + + Arguments: + sk (string) - the key to be encrypted + RSA_pk (_RSAobj) - the user's RSA public key + + Returns: + A string, an RSA-OAEP encryption of key `sk' under public key `RSA_pk' + """ + + cipher = PKCS1_OAEP.new(RSA_pk) + return cipher.encrypt(sk) + +def unwrap_key(keywrap, RSA_sk): + """ Unwraps a keywrap. + + Arguments: + keywrap (string) - the wrapped key + RSA_sk (_RSAobj) - the user's RSA private key + + Returns: + A string, the RSA-OAEP decryption of `keywrap' under private key + `RSA_sk' + """ + + cipher = PKCS1_OAEP.new(RSA_sk) + return cipher.decrypt(keywrap) diff --git a/pace/pki/key_wrap_utils_test.py b/pace/pki/key_wrap_utils_test.py new file mode 100644 index 0000000..489e4ca --- /dev/null +++ b/pace/pki/key_wrap_utils_test.py @@ -0,0 +1,64 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ES +## Description: Key wrapping and unwrapping tests +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 20 July 2015 ES Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import time +import random + +from Crypto.PublicKey import RSA +from pace.pki.key_wrap_utils import wrap_key, unwrap_key +from pace.common.pacetest import PACETestCase + +class KeyWrapUtilsTests(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + def test_valid_enc_dec(self): + """ Check that we can unwrap a key using the private key + corresponding to the public key used to wrap the key. + """ + RSA_key = RSA.generate(3072) + RSA_pk = RSA_key.publickey() + for i in range(self.num_iters): + sk = format(random.getrandbits(128), 'b') + keywrap = wrap_key(sk, RSA_pk) + try: + decrypted_key = unwrap_key(keywrap, RSA_key) + except ValueError as e: + self.assertTrue(False, 'Error: %s' %e.msg) + else: + self.assertEqual(decrypted_key, sk, + 'Failed to unwrap original key') + + def test_invalid_enc_dec(self): + """ Check that we cannot unwrap a key using a private key that does + not correspond to the public key used to wrap the key. + """ + RSA_key = RSA.generate(3072) + RSA_pk = RSA_key.publickey() + for i in range(self.num_iters): + sk = format(random.getrandbits(128), 'b') + keywrap = wrap_key(sk, RSA_pk) + other_key = RSA.generate(3072) + try: + decrypted_key = unwrap_key(keywrap, other_key) + except ValueError: + self.assertTrue(True, 'error') + else: + self.assertNotEqual(decrypted_key, sk, + 'Decryption succeeded with invalid key') + diff --git a/pace/pki/keygen.py b/pace/pki/keygen.py new file mode 100644 index 0000000..ae9878f --- /dev/null +++ b/pace/pki/keygen.py @@ -0,0 +1,284 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ES +## Description: Key generation, wrapping, and storage +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 30 July 2015 ES Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) +import math +import ConfigParser +import struct +import hmac +from hashlib import sha1 + +from Crypto import Random +from Crypto.PublicKey import RSA +import pace.pki.key_wrap_utils as utils +from pace.pki.keystore import KeyInfo + +class KeyGen(object): + def __init__(self, msk): + """ Initializes key generator with master secret key. + + Arguments: + msk (string) - the master secret key for the key generator. This must be + chosen at random and at least the output length of the hash function + used for key generation - in the case of SHA-1, 20 bytes. + """ + + self._msk = msk + + def _generate_key(self, attr, vers, metadata, keylen): + """ Generates a key corresponding to the specified attribute, version, + metadata, and key length. The key is generated by applying a + keyed-hash message authentication code (HMAC) to the inputs, in the + manner specified by the ''extract'' stage of the HMAC-based key + derivation function HKDF, using the key generator's master secret + key as the secret HMAC key. The key length is included the input to + the HMAC so that keys are unpredictable even if given keys of + different lengths for the same attribute, version, and metadata. + The key generation function is deterministic, so keys + can be regenerated. + + Arguments: + attr (string) - attribute for which the key is to be generated + vers (string) - version for which the key is to be generated + metadata (string) - metadata about the key (e.g., the mode of + operation with which it is to be used) + keylen (integer) - length of key to be generated, in bytes; + non-negative, no more than 255 times the output length of the + hash function (the output length of SHA-1 is 20 bytes) + + Note: attr, vers, and metadata strings must not contain the '|' + character. + + Returns: + A key for the specified attribute, version, metadata, and key + length. + """ + + h = hmac.new(self._msk, digestmod=sha1) + if (keylen < 0): + raise ValueError('Key length must be non-negative') + num_blocks = int(math.ceil((keylen*1.0)/h.digest_size)) + #Include key length in info so that keys are unpredictable even if + #given keys for different lengths for the same attribute, version, and + #metadata + key_info = '|'.join([attr, str(vers), metadata, str(keylen)]) + key = '' + block = '' + for i in xrange(num_blocks): + #Create a one-byte representation of the block number + block_num = bytes(bytearray(struct.pack('>i', i+1)))[-1] + h = hmac.new(self._msk, block + key_info + block_num, sha1) + block = h.digest() + key += block + return key[:keylen] + + def initialize_users(self, users, keystore): + """ Generates users' keys, wraps them with their public keys, and + stores the keywraps and associated info in the key store. + + Arguments: + users ({string: (_RSAobj, [(string, string, string, integer)])}) - + a dictionary mapping user IDs to (RSA_pk, info) tuples, where + RSA_pk is the user's RSA public key, and info is a list of + (attr, vers, metadata, keylen) tuples describing the attribute, + version, metadata, and key length (in bytes) of the keys to + generate, wrap, and store. + Note: attr, vers, and metadata strings must not contain the '|' + character. + keystore (AbstractKeyStore) - the key store to be written to + """ + for userid, (RSA_pk, info) in users.iteritems(): + keywraps = [] + for attr, vers, metadata, keylen in info: + sk = self._generate_key(attr, vers, metadata, keylen) + keywrap = utils.wrap_key(sk, RSA_pk) + keywraps.append(KeyInfo(attr, vers, metadata, keywrap, keylen)) + keystore.batch_insert(userid, keywraps) + + def init_from_file(self, user_file, keystore): + """ Given a user configuration file, generates users' keys, wraps them + with their public keys, and stores the keywraps and associated info + in the key store. + + Arguments: + user_file (string or [string]): a user config file name or list of + file names. + Each file should consist of sections with a user ID as the + section header followed by 'public_key' and 'key_info' options. + The 'public_key' value should be the name of a file containing + an exported RSA public key. + The 'key_info' value should be a newline-separated list of + pipe-delimited strings specifying an attribute, version, + metadata, and key length (in bytes). + The attribute, version, and metadata must not contain the '|' + character. + See user_info.cfg for an example. + #TODO: allow pipe character within a quoted string + keystore (AbstractKeyStore) - the key store to be written to + + Raises an IOError if any of the public key files listed within + the config file cannot be opened. + """ + users = self.file_to_dict(user_file) + self.initialize_users(users, keystore) + + @staticmethod + def file_to_dict(user_file): + """ Constructs a dictionary mapping users to public keys and attribute + key information from a user configuration file. + + Arguments: + user_file (string or [string]): a user config file name or list of + file names. + Each file should consist of sections with a user ID as the + section header followed by 'public_key' and 'key_info' options. + The 'public_key' value should be the name of a file containing + an exported RSA public key. + The 'key_info' value should be a newline-separated list of + pipe-delimited strings specifying an attribute, version, + metadata, and key length (in bytes). + The attribute, version, and metadata must not contain the '|' + character. + See user_info.cfg for an example. + #TODO: allow pipe character within a quoted string + + Returns: + A dictionary of type + {string: (RSA._RSAobj, [(string, string, string, integer)])}) + mapping user IDs to (RSA_pk, info) tuples, where RSA_pk is the + user's RSA public key, and info is a list of (attr, vers, metadata, + keylen) tuples describing the attribute, version, metadata, and key + length (in bytes) of the user's keys. + + Raises an IOError if any of the public key files listed within + the config file cannot be opened. + """ + abs_path = os.path.dirname(user_file) + user_config = ConfigParser.ConfigParser() + try: + user_config.read(user_file) + except IOError as e: + print 'Error opening config file:', e + raise e + users = {} + userids = user_config.sections() + for userid in userids: + try: + f = open(abs_path+'/'+user_config.get(userid, 'public_key'), 'r') + except IOError as e: + print 'Error opening user', userid +'\'s', 'public key file:' + print e + raise e + RSA_pk = RSA.importKey(f.read()) + f.close() + info = [] + key_infos = user_config.get(userid, 'key_info').splitlines() + for key_info in key_infos: + attr, vers, metadata, keylen = key_info.split('|') + info.append((attr, int(vers), metadata, int(keylen))) + users[userid] = (RSA_pk, info) + return users + + def revoke(self, userid, attr, keystore, attr_user_map, user_attr_map, + user_pks, metas_keylens={}): + """ Revoke an attribute from a user. Specifically, delete all of the + user's keys for that attribute for all supported metadatas, generate + new keys for all supported metadatas, wrap them for all other users + with that attribute, and insert them into the keystore. Optionally, + new keys can have new key lengths. If the user to revoke does not + have the specified attribute, this function does nothing. + + Arguments: + userid (string) - the ID of the user whose keys to revoke + attr (string) - the attribute of the keys to revoke + keystore (AbstractKeyStore) - the key store to which to write the + new keywraps for all other users with the given attribute + attr_user_map (AbstractAttrUserMap) - an attribute-to-user map + that can return a list of all users with the given attribute + user_attr_map (AbstractUserAttrMap) - a user-to-attribute map that + can return a list of all attributes of a given user + user_pks ({string: RSA._RSA_obj}) - a dictionary that maps user IDs + to users' RSA public keys + metas_keylens (optional {string: int}) - an optional dictionary that + maps metadatas to new key lengths. For any metadata not in the + dictionary, the new key will have the same length as the current + key. + """ + + #If revoked user does not have the specified attribute, do nothing + cur_users = attr_user_map.users_by_attribute(attr) + if userid not in cur_users: + return + + #Delete revoked user/attribute from maps + attr_user_map.delete_user(attr, userid) + user_attr_map.delete_attr(userid, attr) + + metas = keystore.get_metadatas(userid, attr) + new_keys = {} + + #For each supported metadata, generate a new attribute key and delete + #revoked user's keys + for meta in metas: + cur_info = keystore.retrieve_latest_version(userid, meta, attr) + new_vers = cur_info.vers + 1 + if meta in metas_keylens: + new_keylen = metas_keylens[meta] + else: + new_keylen = cur_info.keylen + new_key = self._generate_key(attr, new_vers, meta, new_keylen) + new_keys[meta] = new_key + keystore.remove_revoked_keys(userid, meta, attr) + + #Wrap newly generated keys for other users and add to keystore + cur_users.remove(userid) + for user in cur_users: + for meta in keystore.get_metadatas(user, attr): + if meta in new_keys: + sk = new_keys[meta] + RSA_pk = user_pks[user] + keywrap = utils.wrap_key(sk, RSA_pk) + keystore.insert(user, KeyInfo(attr, new_vers, meta, keywrap, + new_keylen)) + + def revoke_all_attrs(self, userid, keystore, attr_user_map, user_attr_map, + user_pks, metas_keylens={}): + """ Revoke all attributes of a user. Specifically, delete all of the + user's keys for all of their attributes and supported metadatas, + generate new keys for all of those attributes and metadatas, wrap + them for all other users with those attributes, and insert them into + the keystore. Optionally, new keys can have new key lengths. + + Arguments: + userid (string) - the ID of the user whose keys to revoke + keystore (AbstractKeyStore) - the key store to which to write the + new keywraps for all other users with the given attribute + attr_user_map (AbstractAttrUserMap) - an attribute-to-user map + that can return a list of all users with the given attribute + user_attr_map (AbstractUserAttrMap) - a user-to-attribute map that + can return a list of all attributes of a given user + user_pks ({string: RSA._RSA_obj}) - a dictionary that maps user IDs + to users' RSA public keys + metas_keylens (optional {string: int}) - an optional dictionary that + maps metadatas to new key lengths. All of the new attribute keys + for a given metadata in the dictionary will have the same new + length. For any metadata not in the dictionary, new keys will + have the same length as the current key. + """ + + attrs = user_attr_map.attributes_by_user(userid) + for attr in attrs: + self.revoke(userid, attr, keystore, attr_user_map, user_attr_map, + user_pks, metas_keylens) diff --git a/pace/pki/keygen_test.py b/pace/pki/keygen_test.py new file mode 100644 index 0000000..263c8f8 --- /dev/null +++ b/pace/pki/keygen_test.py @@ -0,0 +1,597 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ES +## Description: Key generation tests +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 30 July 2015 ES Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import struct +import math +import time +import random +import ConfigParser +import shutil +import hmac +from hashlib import sha1 +from binascii import unhexlify + +from Crypto.PublicKey import RSA +from pace.common.pacetest import PACETestCase +from pace.pki.keygen import KeyGen +from pace.pki.keystore import DummyKeyStore,KeyInfo +from pace.pki.attrusermap import LocalAttrUserMap +from pace.pki.userattrmap import LocalUserAttrMap +import pace.pki.key_wrap_utils as utils +from pace.pki.abstractpki import PKILookupError + +ABS_PATH = os.path.dirname(__file__) +TMP_PATH = ABS_PATH + '/tmp' + +class KeyGenTests(PACETestCase): + @classmethod + def setUpClass(cls): + os.mkdir(TMP_PATH) + + def setUp(self): + random.seed(int(time.time())) + self.num_users = 10 + self.num_keys = 10 + + @classmethod + def tearDownClass(cls): + shutil.rmtree(TMP_PATH) + + def test_HMAC_SHA1(self): + """ Implements HMAC-SHA1 test cases from RFC 2202 to check that + pycrypto's HMAC and its usage in generate_key are correct. + Does not test generate_key itself. + """ + + # Test case 1 + key = unhexlify('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b') + data = "Hi There" + digest = unhexlify('b617318655057264e28bc0b6fb378c8ef146be00') + h = hmac.new(key, data, sha1) + self.assertEqual(h.digest(), digest) + + # Test case 2 + key = "Jefe" + data = "what do ya want for nothing?" + digest = unhexlify('effcdf6ae5eb2fa2d27416d5f184df9c259a7c79') + h = hmac.new(key, data, sha1) + self.assertEqual(h.digest(), digest) + + # Test case 3 + key = unhexlify('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + data = '\xdd' * 50 + digest = unhexlify('125d7342b9ac11cd91a39af48aa17b4f63f175d3') + h = hmac.new(key, data, sha1) + self.assertEqual(h.digest(), digest) + + # Test case 4 + key = unhexlify('0102030405060708090a0b0c0d0e0f10111213141516171819') + data = '\xcd' * 50 + digest = unhexlify('4c9007f4026250c6bc8414f9bf50c86c2d7235da') + h = hmac.new(key, data, sha1) + self.assertEqual(h.digest(), digest) + + # Test case 5 + key = unhexlify('0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c') + data = 'Test With Truncation' + digest = unhexlify('4c1a03424b55e07fe7f27be1d58bb9324a9a5a04') + h = hmac.new(key, data, sha1) + self.assertEqual(h.digest(), digest) + + # Test case 6 + key = '\xaa' * 80 + data = 'Test Using Larger Than Block-Size Key - Hash Key First' + digest = unhexlify('aa4ae5e15272d00e95705637ce8a3b55ed402112') + h = hmac.new(key, data, sha1) + self.assertEqual(h.digest(), digest) + + # Test case 7 + key = '\xaa' * 80 + data = 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data' + digest = unhexlify('e8e99d0f45237d786d6bbaa7965c7808bbff1a91') + h = hmac.new(key, data, sha1) + self.assertEqual(h.digest(), digest) + + def test_HKDF_expand(self): + """ Implements HMAC-based key derivation function (HKDF) test cases + from RFC 5869 to check that the iterated usage of HMAC-SHA1 in + generate_key correctly implements the ``expand'' step of HKDF. + Does not test generate_key itself. + """ + + #Test case 4 (Test cases 1-3 are for SHA-256) + msk = unhexlify('9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243') + info = unhexlify('f0f1f2f3f4f5f6f7f8f9') + keylen = 42 + output = unhexlify('085a01ea1b10f36933068b56efa5ad81' + + 'a4f14b822f5b091568a9cdd4f155fda2' + + 'c22e422478d305f3f896') + self.assertEqual(output, self.HKDF_extract(msk, info, keylen)) + + #Test case 5 + msk = unhexlify('8adae09a2a307059478d309b26c4115a224cfaf6') + info = unhexlify('b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' + + 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' + + 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' + + 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' + + 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff') + keylen = 82 + output = unhexlify('0bd770a74d1160f7c9f12cd5912a06eb' + + 'ff6adcae899d92191fe4305673ba2ffe' + + '8fa3f1a4e5ad79f3f334b3b202b2173c' + + '486ea37ce3d397ed034c7f9dfeb15c5e' + + '927336d0441f4c4300e2cff0d0900b52' + + 'd3b4') + self.assertEqual(output, self.HKDF_extract(msk, info, keylen)) + + #Test case 6 + msk = unhexlify('da8c8a73c7fa77288ec6f5e7c297786aa0d32d01') + info = '' + keylen = 42 + output = unhexlify('0ac1af7002b3d761d1e55298da9d0506' + + 'b9ae52057220a306e07b6b87e8df21d0' + + 'ea00033de03984d34918') + self.assertEqual(output, self.HKDF_extract(msk, info, keylen)) + + #Test case 7 + msk = unhexlify('2adccada18779e7c2077ad2eb19d3f3e731385dd') + info = '' + keylen = 42 + output = unhexlify('2c91117204d745f3500d636a62f64f0a' + + 'b3bae548aa53d423b0d1f27ebba6f5e5' + + '673a081d70cce7acfc48') + self.assertEqual(output, self.HKDF_extract(msk, info, keylen)) + + def HKDF_extract(self, msk, key_info, keylen): + """ Generates a pseudorandom key in a similar way to generate_key, + except that the master secret key is passed in instead of set in a + constructor, and key info is passed in instead of constructed from + attr, vers, metadata, keylen arguments. Enables testing on HKDF + test vectors. + """ + h = hmac.new(msk, digestmod=sha1) + num_blocks = int(math.ceil((keylen*1.0)/h.digest_size)) + key = '' + block = '' + for i in xrange(num_blocks): + block_num = bytes(bytearray(struct.pack('>i', i+1)))[-1] + h = hmac.new(msk, block + key_info + block_num, sha1) + block = h.digest() + key += block + return key[:keylen] + + def test_negative_keylen(self): + """ Check that negative key lengths raise an exception. + """ + keygen = KeyGen('Sixteen byte key') + self.assertRaises(ValueError, keygen._generate_key, 'attr', 1, 'metadata', -1) + + def test_keylen(self): + """ Check that generated keys are of expected length. + """ + + keygen = KeyGen('Sixteen byte key') + for i in xrange(65): + key = keygen._generate_key('attr', 1, 'metadata', i) + self.assertEqual(i, len(key)) + + def test_equal_inputs(self): + """ Check that the same inputs result in the same key. + """ + + keygen = KeyGen('Sixteen byte key') + key1 = keygen._generate_key('attr', 1, 'metadata', 16) + key2 = keygen._generate_key('attr', 1, 'metadata', 16) + self.assertEqual(key1, key2) + + def test_diff_inputs(self): + """ Check that different inputs result in different keys. + """ + + keygen = KeyGen('Sixteen byte key') + + key1 = keygen._generate_key('attr1', 1, 'metadata', 16) + key2 = keygen._generate_key('attr2', 1, 'metadata', 16) + self.assertNotEqual(key1, key2) + + key1 = keygen._generate_key('attr', 2, 'metadata', 16) + key2 = keygen._generate_key('attr', 3, 'metadata', 16) + self.assertNotEqual(key1, key2) + + key1 = keygen._generate_key('attr', 1, 'metadata1', 16) + key2 = keygen._generate_key('attr', 1, 'metadata2', 16) + self.assertNotEqual(key1, key2) + + def test_diff_keygens(self): + """ Check that key generators with different master secret keys result + in different keys. + """ + + keygen1 = KeyGen('Sixteen byte key') + keygen2 = KeyGen('sixteen byte key') + key1 = keygen1._generate_key('attr', 1, 'metadata', 16) + key2 = keygen2._generate_key('attr', 1, 'metadata', 16) + self.assertNotEqual(key1, key2) + + def test_diff_keylens_same_info(self): + """ Check that keys generated for the same attribute, version, and + metadata but different key lengths do not have a common prefix + of the shorter key length. + """ + keygen = KeyGen('Sixteen byte key') + key1 = keygen._generate_key('attr', 1, 'metadata', 16) + key2 = keygen._generate_key('attr', 1, 'metadata', 32) + self.assertNotEqual(key1, key2[:16]) + + def test_initialize_single(self): + """ Check that a key generated, wrapped with a user's public key, and + stored in a keystore can be retrieved and unwrapped with the user's + secret key. + """ + + RSA_key = RSA.generate(3072) + RSA_pk = RSA_key.publickey() + keygen = KeyGen('Sixteen byte key') + keystore = DummyKeyStore() + orig_key = keygen._generate_key('attr', 1, 'meta', 16) + keygen.initialize_users( + {'userid': (RSA_pk, [('attr', 1, 'meta', 16)])}, keystore) + keywrap = keystore.retrieve('userid', 'attr', 1, 'meta') + self.assertEqual(utils.unwrap_key(keywrap, RSA_key), orig_key) + + def test_initialize_diff_users_same_info(self): + """ Check that two different users can recover the same key for the + same attribute, version, metadata, key length combination. + """ + + RSA_key1 = RSA.generate(3072) + RSA_pk1 = RSA_key1.publickey() + RSA_key2 = RSA.generate(3072) + RSA_pk2 = RSA_key2.publickey() + keygen = KeyGen('Sixteen byte key') + keystore = DummyKeyStore() + keygen.initialize_users( + {'user1': (RSA_pk1, [('attr', 1, 'meta', 16)]), + 'user2': (RSA_pk2, [('attr', 1, 'meta', 16)])}, keystore) + keywrap1 = keystore.retrieve('user1', 'attr', 1, 'meta') + keywrap2 = keystore.retrieve('user2', 'attr', 1, 'meta') + self.assertEqual(utils.unwrap_key(keywrap1, RSA_key1), + utils.unwrap_key(keywrap2, RSA_key2)) + + def test_initialize_empty(self): + """ Check that a key generated from empty string inputs, wrapped with a + user's public key, and stored in a keystore can be retrieved and + unwrapped with the user's secret key. + """ + + RSA_key = RSA.generate(3072) + RSA_pk = RSA_key.publickey() + keygen = KeyGen('Sixteen byte key') + keystore = DummyKeyStore() + + params = [('', 'attr', 1, 'meta'), + ('userid', '', 1, 'meta'), + ('userid', 'attr', 0, 'meta'), + ('userid', 'attr', 1, ''), + ('', '', 0, '')] + + for userid, attr, vers, meta in params: + orig_key = keygen._generate_key(attr, vers, meta, 16) + keygen.initialize_users( + {userid: (RSA_pk, [(attr, vers, meta, 16)])}, keystore) + keywrap = keystore.retrieve(userid, attr, vers, meta) + self.assertEqual(utils.unwrap_key(keywrap, RSA_key), orig_key) + + def test_initialize_many(self): + """ Check that multiple keys generated, wrapped with users' public keys, + and stored in a keystore can be retrieved and unwrapped with the + users' secret keys. + """ + + keygen = KeyGen('Sixteen byte key') + keystore = DummyKeyStore() + + key_infos = [('attr'+str(i), i, 'meta'+str(i), 16) + for i in xrange(self.num_keys)] + + users = {} + RSA_sks = {} + for i in xrange(self.num_users): + userid = 'user'+str(i) + RSA_key = RSA.generate(3072) + RSA_sks[userid] = RSA_key + RSA_pk = RSA_key.publickey() + + info = random.sample(key_infos, random.randint(1, len(key_infos))) + users[userid] = (RSA_pk, info) + + keygen.initialize_users(users, keystore) + + for userid in users: + RSA_pk, info = users[userid] + for attr, vers, meta, keylen in info: + keywrap = keystore.retrieve(userid, attr, vers, meta) + self.assertEqual(utils.unwrap_key(keywrap, RSA_sks[userid]), + keygen._generate_key(attr, vers, meta, keylen)) + + def create_configs_from_dict(self, user_info, filename): + """ Takes in a dictionary of user info, generates RSA key pair files, + and creates a configuration file. For each user, the RSA public and + private keys are written to a temporary directory in files + [userid]_pubkey.pem and [userid]_privkey.pem respectively, where + [userid] is replaced with the user's ID. + + Arguments: + user_info ({string: [(string, string, string, integer)]}): + a dictionary mapping user IDs to lists of tuples each containing + an attribute, version, metadata, and key length (in bytes) + filename: the name of the configuration file to create + """ + f = open(filename, 'w') + for userid, key_infos in user_info.iteritems(): + RSA_key = RSA.generate(3072) + sk_file = open(TMP_PATH + '/' + userid + '_privkey.pem', 'w') + sk_file.write(RSA_key.exportKey()) + sk_file.close() + + RSA_pk = RSA_key.publickey() + pk_file = open(TMP_PATH + '/' + userid + '_pubkey.pem', 'w') + pk_file.write(RSA_pk.exportKey()) + pk_file.close() + + f.write('[' + userid + ']\n') + f.write('public_key: ' + userid + '_pubkey.pem\n') + f.write('key_info: ') + for attr, vers, meta, keylen in key_infos: + info_string = '|'.join([attr, str(vers), meta, str(keylen)]) + f.write('\t' + info_string + '\n') + f.close() + + def test_init_many_from_file(self): + """ Check that multiple keys generated, wrapped with users' public keys, + and stored in a keystore can be retrieved and unwrapped with the + users' secret keys when input comes from a configuration file. + """ + keygen = KeyGen('Sixteen byte key') + keystore = DummyKeyStore() + + user_info = {'user1': [('attr1', 1, 'AES_GCM', 16), + ('attr2', 1, 'AES_GCM', 16), + ('attr3', 2, 'AES_GCM', 16)], + 'user2': [('attr2', 1, 'AES_GCM', 16), + ('attr4', 2, 'AES_GCM', 16)], + 'user3': [('attr1', 1, 'AES_GCM', 16), + ('attr4', 2, 'AES_GCM', 16)]} + + self.create_configs_from_dict(user_info, + TMP_PATH + '/user_info_test.cfg') + + keygen.init_from_file(TMP_PATH + '/user_info_test.cfg', keystore) + + for userid in user_info: + key_infos = user_info[userid] + f = open(TMP_PATH + '/' + userid + '_privkey.pem', 'r') + RSA_sk = RSA.importKey(f.read()) + f.close() + for attr, vers, meta, keylen in key_infos: + keywrap = keystore.retrieve(userid, attr, vers, meta) + self.assertEqual(utils.unwrap_key(keywrap, RSA_sk), + keygen._generate_key(attr, vers, meta, keylen)) + + def test_nonexistent_publickey_file(self): + """ Check that creating a dictionary from a configuration file that does + not exist raises an IOError. + """ + keygen = KeyGen('Sixteen byte key') + + f = open(TMP_PATH + '/user_info_nonexistent.cfg', 'w') + f.write('[userA]\n') + f.write('public_key: user1_nonexistent.pem\n') + f.write('key_info: attr1|v1|AES_GCM|16') + f.close() + + try: + users = keygen.file_to_dict(TMP_PATH+'/user_info_nonexistent.cfg') + except IOError: + self.assertTrue(True, 'error') + else: + self.assertTrue(False, + 'No error raised on a nonexistent public key file') + + def test_revocation(self): + """ Tests that revoking an attribute from a user removes the appropriate + entries from the keystore and the attr-user map and generates wraps + of new keys of the correct length for the correct set of users. + """ + + keygen = KeyGen('Sixteen byte key') + ks = DummyKeyStore() + attr_user_dict = {'A': ['user1', 'user2', 'user3'], + 'B': ['user1', 'user2']} + attr_user_map = LocalAttrUserMap(attr_user_dict) + user_attr_dict = {'user1': ['A', 'B'], + 'user2': ['A', 'B'], + 'user3': ['A']} + user_attr_map = LocalUserAttrMap(user_attr_dict) + + user_sks = {} + user_pks = {} + for i in range(1, 4): + userid = 'user' + str(i) + RSA_key = RSA.generate(3072) + user_sks[userid] = RSA_key + RSA_pk = RSA_key.publickey() + user_pks[userid] = RSA_pk + + key_infos = {'user1': [KeyInfo('A', 1, 'meta1', 'keywrap1', 16), + KeyInfo('A', 1, 'meta2', 'keywrap2', 16), + KeyInfo('B', 1, 'meta1', 'keywrap4', 16), + KeyInfo('B', 1, 'meta2', 'keywrap5', 16)], + 'user2': [KeyInfo('A', 1, 'meta2', 'keywrap6', 16), + KeyInfo('A', 1, 'meta3', 'keywrap7', 16), + KeyInfo('B', 1, 'meta1', 'keywrap8', 16), + KeyInfo('B', 1, 'meta2', 'keywrap9', 16)], + 'user3': [KeyInfo('A', 1, 'meta1', 'keywrap10', 16), + KeyInfo('A', 1, 'meta2', 'keywrap11', 16), + KeyInfo('A', 1, 'meta3', 'keywrap12', 16)]} + for user in key_infos: + ks.batch_insert(user, key_infos[user]) + + #revoke an attribute from a user + keygen.revoke('user1', 'A', ks, attr_user_map, user_attr_map, user_pks) + + #check that keywraps for revoked user/attr were removed from keystore + for i in range(1, 3): + self.assertRaises(PKILookupError, ks.retrieve, 'user1', 'A', 1, 'meta'+str(i)) + + #check that revoked user/attr were removed from maps + self.assertEqual(set(attr_user_map.users_by_attribute('A')), + set(['user2', 'user3'])) + self.assertEqual(user_attr_map.attributes_by_user('user1'), ['B']) + + #check that metadatas for revoked attr have correct version numbers + self.assertEqual(ks.retrieve_latest_version_number('meta1', 'A'), 2) + self.assertEqual(ks.retrieve_latest_version_number('meta2', 'A'), 2) + self.assertEqual(ks.retrieve_latest_version_number('meta3', 'A'), 1) + + #check that other users with revoked attr got new keywraps that decrypt + #to keys of the correct length + kw22 = ks.retrieve_latest_version('user2', 'meta2', 'A').keywrap + kw31 = ks.retrieve_latest_version('user3', 'meta1', 'A').keywrap + kw32 = ks.retrieve_latest_version('user3', 'meta2', 'A').keywrap + + self.assertEqual(len(utils.unwrap_key(kw22, user_sks['user2'])), 16) + self.assertEqual(len(utils.unwrap_key(kw31, user_sks['user3'])), 16) + self.assertEqual(len(utils.unwrap_key(kw32, user_sks['user3'])), 16) + + #check that other keys for revoked user are still unchanged + self.assertEqual(ks.retrieve_latest_version( + 'user1', 'meta1', 'B').keywrap, 'keywrap4') + self.assertEqual(ks.retrieve_latest_version( + 'user1', 'meta2', 'B').keywrap, 'keywrap5') + + #revoke an attribute from a user and update key lengths + keylens = {'meta1': 24, 'meta2': 32} + keygen.revoke('user1', 'B', ks, attr_user_map, user_attr_map, user_pks, + keylens) + + #check that new keys for other users have updated key lengths + kw21 = ks.retrieve_latest_version('user2', 'meta1', 'B').keywrap + kw22 = ks.retrieve_latest_version('user2', 'meta2', 'B').keywrap + self.assertEqual(len(utils.unwrap_key(kw21, user_sks['user2'])), 24) + self.assertEqual(len(utils.unwrap_key(kw22, user_sks['user2'])), 32) + + def test_revocation_all_attrs(self): + """ Tests that revoking all of a user's attributes removes the + appropriate entries from the keystore and the user/attr maps and + generates wraps of new keys for the correct set of users. + """ + keygen = KeyGen('Sixteen byte key') + ks = DummyKeyStore() + attr_user_dict = {'A': ['user1', 'user2', 'user3'], + 'B': ['user1', 'user2'], + 'C': ['user1', 'user3']} + attr_user_map = LocalAttrUserMap(attr_user_dict) + user_attr_dict = {'user1': ['A', 'B', 'C'], + 'user2': ['A', 'B'], + 'user3': ['A', 'C']} + user_attr_map = LocalUserAttrMap(user_attr_dict) + + user_sks = {} + user_pks = {} + for i in range(1, 4): + userid = 'user' + str(i) + RSA_key = RSA.generate(3072) + user_sks[userid] = RSA_key + RSA_pk = RSA_key.publickey() + user_pks[userid] = RSA_pk + + key_infos = {'user1': [KeyInfo('A', 1, 'meta1', 'keywrap1', 16), + KeyInfo('A', 1, 'meta2', 'keywrap2', 16), + KeyInfo('B', 1, 'meta1', 'keywrap4', 16), + KeyInfo('B', 1, 'meta2', 'keywrap5', 16), + KeyInfo('C', 1, 'meta1', 'keywrap6', 16), + KeyInfo('C', 1, 'meta2', 'keywrap7', 16)], + 'user2': [KeyInfo('A', 1, 'meta2', 'keywrap8', 16), + KeyInfo('A', 1, 'meta3', 'keywrap9', 16), + KeyInfo('B', 1, 'meta1', 'keywrap10', 16), + KeyInfo('B', 1, 'meta2', 'keywrap11', 16)], + 'user3': [KeyInfo('A', 1, 'meta1', 'keywrap12', 16), + KeyInfo('A', 1, 'meta2', 'keywrap13', 16), + KeyInfo('A', 1, 'meta3', 'keywrap14', 16), + KeyInfo('C', 1, 'meta1', 'keywrap15', 16), + KeyInfo('C', 1, 'meta2', 'keywrap16', 16)]} + + for user in key_infos: + ks.batch_insert(user, key_infos[user]) + + #revoke all attributes from a user + keygen.revoke_all_attrs('user1', ks, attr_user_map, user_attr_map, + user_pks) + + #check that keywraps for revoked user were removed from keystore + for i in range(1, 3): + self.assertRaises(PKILookupError, ks.retrieve, 'user1', 'A', 1, 'meta'+str(i)) + self.assertRaises(PKILookupError, ks.retrieve, 'user1', 'B', 1, 'meta'+str(i)) + self.assertRaises(PKILookupError, ks.retrieve, 'user1', 'C', 1, 'meta'+str(i)) + + #check that updated user/attr maps are correct + self.assertEqual(set(attr_user_map.users_by_attribute('A')), + set(['user2', 'user3'])) + self.assertEqual(attr_user_map.users_by_attribute('B'), ['user2']) + self.assertEqual(attr_user_map.users_by_attribute('C'), ['user3']) + self.assertEqual(user_attr_map.attributes_by_user('user1'), []) + self.assertEqual(set(user_attr_map.attributes_by_user('user2')), + set(['A', 'B'])) + self.assertEqual(set(user_attr_map.attributes_by_user('user3')), + set(['A', 'C'])) + + #check that metadatas for revoked attrs have correct version numbers + self.assertEqual(ks.retrieve_latest_version_number('meta1', 'A'), 2) + self.assertEqual(ks.retrieve_latest_version_number('meta2', 'A'), 2) + self.assertEqual(ks.retrieve_latest_version_number('meta3', 'A'), 1) + self.assertEqual(ks.retrieve_latest_version_number('meta1', 'B'), 2) + self.assertEqual(ks.retrieve_latest_version_number('meta2', 'B'), 2) + + #check that other users with revoked attrs got new keywraps that decrypt + #to keys of the correct length + kw_2_2_A = ks.retrieve_latest_version('user2', 'meta2', 'A').keywrap + kw_3_1_A = ks.retrieve_latest_version('user3', 'meta1', 'A').keywrap + kw_3_2_A = ks.retrieve_latest_version('user3', 'meta2', 'A').keywrap + kw_2_1_B = ks.retrieve_latest_version('user2', 'meta1', 'B').keywrap + kw_2_2_B = ks.retrieve_latest_version('user2', 'meta2', 'B').keywrap + kw_3_1_C = ks.retrieve_latest_version('user3', 'meta1', 'C').keywrap + kw_3_2_C = ks.retrieve_latest_version('user3', 'meta2', 'C').keywrap + + self.assertEqual(len(utils.unwrap_key(kw_2_2_A, user_sks['user2'])), 16) + self.assertEqual(len(utils.unwrap_key(kw_3_1_A, user_sks['user3'])), 16) + self.assertEqual(len(utils.unwrap_key(kw_3_2_A, user_sks['user3'])), 16) + self.assertEqual(len(utils.unwrap_key(kw_2_1_B, user_sks['user2'])), 16) + self.assertEqual(len(utils.unwrap_key(kw_2_2_B, user_sks['user2'])), 16) + self.assertEqual(len(utils.unwrap_key(kw_3_1_C, user_sks['user3'])), 16) + self.assertEqual(len(utils.unwrap_key(kw_3_2_C, user_sks['user3'])), 16) + + #revoke all attributes from a user and update some key lengths + keylens = {'meta2': 24} + keygen.revoke_all_attrs('user2', ks, attr_user_map, user_attr_map, + user_pks, keylens) + + #check that new keys for other users have correct key lengths + kw_3_2_A = ks.retrieve_latest_version('user3', 'meta2', 'A').keywrap + kw_3_3_A = ks.retrieve_latest_version('user3', 'meta3', 'A').keywrap + self.assertEqual(len(utils.unwrap_key(kw_3_2_A, user_sks['user3'])), 24) + self.assertEqual(len(utils.unwrap_key(kw_3_3_A, user_sks['user3'])), 16) diff --git a/pace/pki/keystore.py b/pace/pki/keystore.py new file mode 100644 index 0000000..23e710b --- /dev/null +++ b/pace/pki/keystore.py @@ -0,0 +1,456 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CAS +## Description: Key storage interface & basic implementations +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Jun 2015 CAS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from abc import ABCMeta, abstractmethod +from collections import namedtuple, defaultdict +from types import IntType + +from pace.pki.abstractpki import PKILookupError, PKIStorageError + +# Object to store all associated information for keys. +# Used in AbstractKeyStore.batch_insert() +KeyInfo = namedtuple('KeyInfo', 'attr, vers, metadata, keywrap, keylen') +""" attr : string - the attribute for the key being inserted, if any. + If this field is the empty string '', it denotes that this + is not an attribute key. + vers : int - the version number for the key + metadata : string - metadata about the key (e.g. the mode of + operation with which it is intended to be used) + keywrap : string - the wrapped key to insert into the key store + keylen : int - the length of the key wrapped in keywrap in bytes (NOT bits) +""" + +class AbstractKeyStore(object): + """ Abstract interface for key stores to implement. + """ + + __metaclass__ = ABCMeta + + @abstractmethod + def insert(self, userid, keyinfo): + """ Insert a wrapped key into the key store. + + Arguments: + + self - the KeyStore object being written to + userid : string - the ID of the user for whom the key is wrapped + keyinfo : a KeyInfo tuple + """ + pass + + def retrieve(self, userid, attr, vers, metadata): + """ Attempt to retrieve a wrapped key from the key store. Similar to + retrieve_info(), but returns only the keywrap. + + Arguments: + + self - the KeyStore object being retrieved from + userid : string - the ID of the user for whom the key is wrapped + attr : string - the attribute for the key being inserted, if any. + If this field is the empty string '', it denotes that this + is not an attribute key. + vers : string - the version identifier for the key + metadata : string - metadata about the key (e.g. the mode of + operation with which it is intended to be used) + + Returns: + + keywrap - the wrapped key corresponding to the provided info. + + Raises: + + PKILookupError - when no key is found + """ + # simple default implementation + return self.retrieve_info(userid, attr, vers, metadata).keywrap + + @abstractmethod + def retrieve_info(self, userid, attr, vers, metadata): + """ Attempt to retrieve a wrapped key from the key store. + + Arguments: + + self - the KeyStore object being retrieved from + userid : string - the ID of the user for whom the key is wrapped + attr : string - the attribute for the key being inserted, if any. + If this field is the empty string '', it denotes that this + is not an attribute key. + vers : string - the version identifier for the key + metadata : string - metadata about the key (e.g. the mode of + operation with which it is intended to be used) + + Returns: + + keyinfo - the KeyInfo object corresponding to the provided + values + + Raises: + + PKILookupError - when no key is found + """ + pass + + @abstractmethod + def batch_insert(self, userid, infos): + """ Add all of a user's attribute keys into the key store at once, + to avoid the overhead of repeated individual insertions. + + Arguments: + + self - the KeyStore object being written to + userid : string - the ID of the user whose keys these are + infos : [KeyInfo] - a list of KeyInfo objects (that is, + (attr, vers, metadata, keywrap, keylen) tuples) to be + inserted into the key store in batches. The batching + method is left up to the specific implementation, and + ideally would be faster than inserting each tuple + individually. + """ + pass + + @abstractmethod + def batch_retrieve(self, userid, metadata, attr=None): + """ Fetch all of a user's keys at once. Optionally, fetch only their + keys either for a specified attribute or with no attribute at all. + + Arguments: + + self - the KeyStore object being read from + userid : string - the ID of the user whose keys to fetch + metadata : string - the metadata of the keys to search for + attr : optional string - the attribute to search for. Default + value: None. If this argument is None, this method should + return all of the given user's keys. If this argument is + the empty string, it should return that user's non-attribute + keys. If this argument is a non-empty string, it should + return all of that user's keys for that attribute, including + all versions and metadata options. + + Returns: + + [KeyInfo] - a non-empty list of KeyInfo objects (that is, + (attr, vers, metadata, keywrap, keylen) tuples). If the attr + argument was None, the attr field of each tuple will be the + attribute corresponding to the returned version, metadata, and + keywrap; otherwise, the attr field of each tuple will be equal to + the attr argument. + + Raises: + + PKILookupError - if there is no information to be returned + """ + pass + + @abstractmethod + def remove_revoked_keys(self, userid, metadata, attr): + """ Delete all stored key versions corresponding to the given + revoked userid, metadata, and attribute. + + Arguments: + + self - the KeyStore object to delete elements from + userid : string - the ID of the user whose keys are being deleted + metadata : string - the metadata of the keys to delete + attr : string - the attribute of the keys to delete + """ + pass + + @abstractmethod + def get_metadatas(self, user, attr): + """ Get all metadatas that a given user has for a given attribute. + + Arguments: + + self - the KeyStore object to delete elements from + userid : string - the ID of the user whose metadata is + being fetched + attr : string - the attribute whose metadata is being fetched + + Returns: + + metadatas : string set - a set of metadata strings + """ + pass + + def retrieve_latest_version(self, userid, metadata, attr): + """ Fetch the latest key for the given user, attribute, + and metadata. "Latest" here means that the integer that the + version contains has the greatest magnitude (e.g. '10' is + more recent than '2' because 10 > 2 even though '2' > '10'). + + self - the KeyStore object being read from + userid : string - the ID of the user whose keys to fetch + metadata : string - the metadata of the keys to search for + attr : string - the attribute to search for. + + Returns: + + KeyInfo - the KeyInfo object for the appropriate key. + + Raises: + + PKILookupError - if no such key is found. + """ + vers = self.retrieve_latest_version_number(metadata, attr) + return self.retrieve_info(userid, attr, vers, metadata) + + @abstractmethod + def retrieve_latest_version_number(self, metadata, attr): + """ Return the most recent version number for the given attribute + and metadata. + + self - the KeyStore object being read from + metadata : string - the metadata of the key version to search for + attr : string - the attribute to search for + + Returns: + + v_num : int - the version number for the appropriate key + + Raises: + + PKILookupError - if no such key is found + """ + pass + + +class DummyKeyStore(AbstractKeyStore): + + def __init__(self): + self.store = {} + # Use a default dict for vnums so all versions start at 0; this + # assumes all real versions are positive + self.vnums = defaultdict(int) + self.metas = {} + + def insert(self, userid, keyinfo): + """ Insert a wrapped key into the key store. + + Arguments: + + self - the KeyStore object being written to + userid : string - the ID of the user for whom the key is wrapped + keyinfo : a KeyInfo tuple + """ + + if type(keyinfo.vers) is not IntType: + raise PKIStorageError('version must be an integer') + + metadata = keyinfo.metadata + + # Store things by self.store[metadata][userid][attr][vers] => keywrap + # Need to initialize stores first in case they are empty + if metadata not in self.store: + self.store[metadata] = {} + + metamap = self.store[metadata] + + if userid not in metamap: + metamap[userid] = {} + + usermap = metamap[userid] + + if keyinfo.attr not in usermap: + usermap[keyinfo.attr] = {} + + attrmap = usermap[keyinfo.attr] + attrmap[keyinfo.vers] = keyinfo.keywrap, keyinfo.keylen + + if (userid, keyinfo.attr) not in self.metas: + self.metas[(userid, keyinfo.attr)] = set([]) + + self.metas[(userid, keyinfo.attr)].add(keyinfo.metadata) + self.vnums[(keyinfo.attr, metadata)] = max( + self.vnums[(keyinfo.attr, metadata)], keyinfo.vers) + + def retrieve_info(self, userid, attr, vers, metadata): + """ Attempt to retrieve a wrapped key from the key store. + + Arguments: + + self - the KeyStore object being retrieved from + userid : string - the ID of the user for whom the key is wrapped + attr : string - the attribute for the key being retrieved, if any. + If this field is the empty string '', it denotes that this + is not an attribute key. + vers : string - the version identifier for the key + metadata : string - metadata about the key (e.g. the mode of + operation with which it is intended to be used) + + Returns: + + keyinfo - the KeyInfo object corresponding to the provided + values + + Raises: + + PKILookupError - when no key is found + """ + + try: + keywrap, keylen = self.store[metadata][userid][attr][vers] + return KeyInfo(attr, vers, metadata, keywrap, keylen) + except KeyError: + raise PKILookupError('No key found in lookup') + + def batch_insert(self, userid, infos): + """ Add all of a user's attribute keys into the key store at once, + to avoid the overhead of repeated individual insertions. + + Arguments: + + self - the KeyStore object being written to + userid : string - the ID of the user whose keys these are + keywraps : [(string, string, string, string)] - a list of + (attr, vers, metadata, keywrap, keylen) KeyInfos to be + inserted into the key store in batches. The batching method + is left up to the specific implementation, and ideally would + be faster than inserting each tuple individually. + + Raises: + + PKIStorageError - if the key info is not properly constructed + """ + + # This is a dummy key store, so just insert them all separately + for keyinfo in infos: + self.insert(userid, keyinfo) + + def batch_retrieve(self, userid, metadata, attr=None): + """ Fetch all of a user's keys at once. Optionally, fetch only their + keys either for a specified attribute or with no attribute at all. + + Arguments: + + self - the KeyStore object being read from + userid : string - the ID of the user whose keys to fetch + metadata : string - the metadata of the keys to search for + attr : optional string - the attribute to search for. Default + value: None. If this argument is None, this method should + return all of the given user's keys. If this argument is + the empty string, it should return that user's non-attribute + keys. If this argument is a non-empty string, it should + return all of that user's keys for that attribute, including + all versions and metadata options. + + Returns: + + [KeyInfo] - a non-empty list of KeyInfo objects (that is, + (attr, vers, metadata, keywrap, keylen) tuples). If the attr + argument was None, the attr field of each tuple will be the + attribute corresponding to the returned version, metadata, and + keywrap; otherwise, the attr field of each tuple will be equal to + the attr argument. + + Raises: + + PKILookupError - if there is no information to be returned + """ + + try: + metamap = self.store[metadata] + except KeyError: + raise PKILookupError('no metadata table found') + + try: + usermap = metamap[userid] + except KeyError: + raise PKILookupError('No such user %s' %userid) + + ret = [] + + if attr is None: + # Return all attributes for this user + + for innerattr, attrmap in usermap.iteritems(): + for vers, (keywrap, keylen) in attrmap.iteritems(): + ret.append( + KeyInfo(innerattr, vers, metadata, keywrap, keylen)) + else: + # Return just this attribute + try: + attrmap = usermap[attr] + except KeyError: + raise PKILookupError('No such attribute %s' %attr) + + for vers, (keywrap, keylen) in attrmap.iteritems(): + ret.append(KeyInfo(attr, vers, metadata, keywrap, keylen)) + + if not ret: + raise PKILookupError('no key wraps to return') + + return ret + + def remove_revoked_keys(self, userid, metadata, attr): + """ Delete all stored key versions corresponding to the given + revoked userid, metadata, and attribute. + + Arguments: + + self - the KeyStore object to delete elements from + userid : string - the ID of the user whose keys are being deleted + metadata : string - the metadata of the keys to delete + attr : string - the attribute of the keys to delete + """ + try: + self.store[metadata][userid][attr] = {} + except KeyError: + pass + + try: + self.metas[(userid, attr)].remove(metadata) + except KeyError: + pass + + def get_metadatas(self, user, attr): + """ Get all metadatas that a given user and attribute have. + + Arguments: + + self - the KeyStore object to delete elements from + userid : string - the ID of the user whose metadata is + being fetched + attr : string - the attribute whose metadata is being fetched + + Returns: + + metadatas : string set - a set of metadata strings + """ + try: + return set([x for x in self.metas[(user, attr)]]) + except KeyError: + return [] + + def retrieve_latest_version_number(self, metadata, attr): + """ Return the most recent version number for the given attribute + and metadata. + + metadata : string - the metadata of the key version to search for + attr : string - the attribute to search for + + Returns: + + v_num : int - the version number for the appropriate key + + Raises: + + PKILookupError - if no such key is found + """ + if (attr, metadata) not in self.vnums: + raise PKILookupError('Key not found for latest version lookup') + + return self.vnums[(attr, metadata)] diff --git a/pace/pki/keystore_test.py b/pace/pki/keystore_test.py new file mode 100644 index 0000000..3c08b6b --- /dev/null +++ b/pace/pki/keystore_test.py @@ -0,0 +1,937 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CAS +## Description: Key storage tests +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Jun 2015 CAS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import time +from unittest import TestCase +from nose.tools import ok_, eq_ + +from pace.common.pacetest import PACETestCase +from pace.common.fakeconn import FakeConnection +from pace.pki.abstractpki import PKILookupError, PKIStorageError +from pace.pki.keystore import DummyKeyStore, KeyInfo +from pace.pki.accumulo_keystore import AccumuloKeyStore, AccumuloAttrKeyStore + +random.seed(int(time.time())) + +ITERS = 10 +NAMES = 10 +METADATAS = 5 +ATTRS = 3 +VERS = 2 + +class DummyTest(object): + """ Dummy test object to call assertEqual() and assertTrue() + """ + def assertEqual(self, x, y, err=None): + eq_(x, y, err) + + def assertTrue(self, x, err=None): + ok_(x, err) + +# NB: Functions out here are intended to be outside of the above object + +def _check_write_read(self, ks): + """ Make sure that when we write something, we can read it back. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + + ks.insert('test', KeyInfo('', 1, 'metadata', 'keywrap', 0)) + wrap = ks.retrieve('test', '', 1, 'metadata') + self.assertEqual(wrap, 'keywrap') + +def _check_write_read_attr(self, ks): + """ Make sure that when we write something, we can read it back. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + + ks.insert('test', KeyInfo('attr A', 1, 'metadata', 'keywrap', 0)) + wrap = ks.retrieve('test', 'attr A', 1, 'metadata') + self.assertEqual(wrap, 'keywrap') + +def _check_writes_reads(self, ks_gen): + """ Make sure reads & writes work with iterated, random data. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks_gen - a function of no arguments that, when called, generates + a fresh object matching the AbstractKeyStore interface + """ + + for _ in xrange(ITERS): + values = [] + ks = ks_gen() + attr = '' # no attr + vers = 1 # static version + + # Generate some random user IDs + names = ('user'+str(random.randint(0,1000000000)) + for _ in xrange(NAMES)) + + + for name in names: + # Generate some random metadata + metadatas = ('meta'+str(random.randint(0,1000000000)) + for _ in xrange(METADATAS)) + + for metadata in metadatas: + # Generate a random keywrap + keywrap = 'key'+str(random.randint(0,1000000000)) + + values.append(((name, metadata), keywrap)) + ks.insert(name, KeyInfo(attr, vers, metadata, keywrap, 0)) + + for ((name, metadata), keywrap) in values: + self.assertEqual(ks.retrieve(name, attr, vers, metadata), keywrap) + +def _check_writes_reads_attr(self, ks_gen): + """ Make sure reads & writes work with iterated, random data storing + attribute keys. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks_gen - a function of no arguments that, when called, generates + a fresh object matching the AbstractKeyStore interface + """ + + for _ in xrange(ITERS): + values = [] + ks = ks_gen() + + # Generate some random user IDs + names = ('user'+str(random.randint(0,1000000000)) + for _ in xrange(NAMES)) + + + for name in names: + # Generate some random metadata + metadatas = ('meta'+str(random.randint(0,1000000000)) + for _ in xrange(METADATAS)) + + for metadata in metadatas: + # Generate some random attributes + attrs = ('attr'+str(random.randint(0,1000000000)) + for _ in xrange(ATTRS)) + + for attr in attrs: + # Generate some random versions + vers = (random.randint(0,1000000000) + for _ in xrange(VERS)) + + for vrs in vers: + # Generate a random keywrap + keywrap = 'key'+str(random.randint(0,1000000000)) + + values.append((name, attr, vrs, metadata, keywrap)) + ks.insert(name, + KeyInfo(attr, vrs, metadata, keywrap, 0)) + + for (name, attr, vrs, metadata, keywrap) in values: + self.assertEqual(ks.retrieve(name, attr, vrs, metadata), keywrap) + +def _check_not_found(self, ks): + """ Make sure a key store without an element in it raises an exception + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + + try: + ks.insert('user', KeyInfo('invalid', '1', 'version', 'string', 0)) + self.assertTrue(False, 'failed to raise error') + except PKIStorageError: + pass + + try: + ks.retrieve('user', 0, 'not', 'found') + self.assertTrue(False, 'failed to raise error') + except PKILookupError: + pass + + try: + ks.retrieve('user', 0, 'still_not', 'found') + self.assertTrue(False, 'failed to raise error') + except PKILookupError: + pass + + # Try looking for non-existent data in a real table + ks.insert('user', KeyInfo('attr', 0, 'meta', 'keywrap', 0)) + + try: + ks.retrieve('user', 'newattr', 12, 'meta') + self.assertTrue(False, 'failed to raise error') + except PKILookupError: + pass + + # Try fetching the latest version of a nonexistent key + try: + ks.retrieve_latest_version('nope', 'not', 'found') + self.assertTrue(False, 'failed to raise error') + except PKILookupError: + pass + + try: + ks.retrieve_latest_version_number('not', 'found') + self.assertTrue(False, 'failed to raise error') + except PKILookupError: + pass + + + +def _check_overlap_values(self, ks_gen): + """ Make sure elements with some of the same identifying + information (user ID, metadata, etc) are still correctly + stored. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks_gen - a function of no arguments that, when called, generates + a fresh object matching the AbstractKeyStore interface + """ + + for _ in xrange(ITERS): + values = [] + ks = ks_gen() + attr = '' + vers = 1 + + # Generate some random user IDs + names = ['key'+str(random.randint(0,1000000000)) + for _ in xrange(NAMES)] + + # Generate some random metadata + metadatas = ['meta'+str(random.randint(0,1000000000)) + for _ in xrange(METADATAS)] + + for name in names: + for metadata in metadatas: + # Generate a random keywrap + keywrap = 'key'+str(random.randint(0,1000000000)) + + values.append((name, metadata, keywrap)) + ks.insert(name, KeyInfo(attr, vers, metadata, keywrap, 0)) + + for (name, metadata, keywrap) in values: + self.assertEqual(ks.retrieve(name, attr, vers, metadata), keywrap) + +def _check_overlap_values_attr(self, ks_gen): + """ Make sure elements with some of the same identifying + information (user ID, metadata, attribute, etc) are still + correctly stored. Includes attribute keys. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks_gen - a function of no arguments that, when called, generates + a fresh object matching the AbstractKeyStore interface + """ + + for _ in xrange(ITERS): + values = [] + ks = ks_gen() + + # Generate some random user IDs + names = ['user'+str(random.randint(0,1000000000)) + for _ in xrange(NAMES)] + + # Generate some random metadata + metadatas = ['meta'+str(random.randint(0,1000000000)) + for _ in xrange(METADATAS)] + + # Generate some random attrs + attrs = ['attr'+str(random.randint(0,1000000000)) + for _ in xrange(ATTRS)] + + # Generate some random versions + verss = [random.randint(0,1000000000) + for _ in xrange(VERS)] + + for name in names: + for metadata in metadatas: + for attr in attrs: + for vrs in verss: + keywrap = 'key_'+name+metadata+attr+str(vrs) + + values.append((name, attr, vrs, metadata, keywrap)) + ks.insert(name, + KeyInfo(attr, vrs, metadata, keywrap, 0)) + + for (name, attr, vrs, metadata, keywrap) in values: + self.assertEqual(ks.retrieve(name, attr, vrs, metadata), keywrap) + +def _check_batch_insert_single(self, ks): + """ Check that batch adding of attribute keys works with a singleton. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + + keys = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0)] + ks.batch_insert('test', keys) + wrap = ks.retrieve('test', 'attr A', 1, 'metadata') + self.assertEqual(wrap, 'keywrap') + +def _check_batch_insert_double(self, ks): + """ Check that batch adding of attribute keys works with two elements. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + + keys = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0), + KeyInfo('attr A', 2, 'metadata', 'keywarp', 0)] + ks.batch_insert('test', keys) + wrap = ks.retrieve('test', 'attr A', 1, 'metadata') + self.assertEqual(wrap, 'keywrap') + wrap = ks.retrieve('test', 'attr A', 2, 'metadata') + self.assertEqual(wrap, 'keywarp') + +def _check_batch_insert_several(self, ks_gen): + """ Check that batch adding of attribute keys works with several + related elements with a few edge cases. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks_gen - a function of no arguments that, when called, generates + a fresh object matching the AbstractKeyStore interface + """ + + # Case 1: two attr A keys, one attr B key + ks = ks_gen() + keys = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0), + KeyInfo('attr A', 2, 'metadata', 'keywarp', 0), + KeyInfo('attr B', 23, 'meatdata', 'wheycap', 0)] + ks.batch_insert('test', keys) + wrap = ks.retrieve('test', 'attr A', 1, 'metadata') + self.assertEqual(wrap, 'keywrap') + wrap = ks.retrieve('test', 'attr A', 2, 'metadata') + self.assertEqual(wrap, 'keywarp') + wrap = ks.retrieve('test', 'attr B', 23, 'meatdata') + self.assertEqual(wrap, 'wheycap') + + # Case 2: attr B key has the same version string as an attr A key + ks = ks_gen() + keys = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0), + KeyInfo('attr A', 2, 'metadata', 'keywarp', 0), + KeyInfo('attr B', 1, 'metadata', 'newwrap', 0)] + ks.batch_insert('test', keys) + wrap = ks.retrieve('test', 'attr A', 1, 'metadata') + self.assertEqual(wrap, 'keywrap') + wrap = ks.retrieve('test', 'attr A', 2, 'metadata') + self.assertEqual(wrap, 'keywarp') + wrap = ks.retrieve('test', 'attr B', 1, 'metadata') + self.assertEqual(wrap, 'newwrap') + +def _check_batch_insert_many(self, ks_gen): + """ Check that batch adding attribute keys works for randomly + generated data. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks_gen - a function of no arguments that, when called, generates + a fresh object matching the AbstractKeyStore interface + """ + + for _ in xrange(ITERS): + values = [] + ks = ks_gen() + + # Generate some random user IDs + names = ('user'+str(random.randint(0,1000000000)) + for _ in xrange(NAMES)) + + + for name in names: + name_batch = [] + + # Generate some random metadata + metadatas = ('meta'+str(random.randint(0,1000000000)) + for _ in xrange(METADATAS)) + + for metadata in metadatas: + # Generate some random attributes + attrs = ('attr'+str(random.randint(0,1000000000)) + for _ in xrange(ATTRS)) + + for attr in attrs: + # Generate some random versions + vers = (random.randint(0,1000000000) + for _ in xrange(VERS)) + + for vrs in vers: + # Generate a random keywrap + keywrap = 'key'+str(random.randint(0,1000000000)) + + info = KeyInfo(attr, vrs, metadata, keywrap, 0) + + values.append((name, info)) + name_batch.append(info) + + ks.batch_insert(name, name_batch) + + for (usr, keyinfo) in values: + self.assertEqual( + ks.retrieve(usr, keyinfo.attr, keyinfo.vers, keyinfo.metadata), + keyinfo.keywrap) + +def _check_repeat_cell_key(self, ks): + """ Make sure the second key is returned after two consecutive writes + to the same ID and metadata. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + + ks.insert('test', KeyInfo('', 1, 'metadata', 'keywrap1', 0)) + ks.insert('test', KeyInfo('', 1, 'metadata', 'keywrap2', 0)) + wrap = ks.retrieve('test', '', 1, 'metadata') + self.assertEqual(wrap, 'keywrap2') + +def _check_empty_fields(self, ks): + """ Make sure key stores work with empty strings. + + Arguments: + self - a simulator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + ks.insert('', KeyInfo('', 0, '', '', 0)) + wrap = ks.retrieve('', '', 0, '') + self.assertEqual(wrap, '') + +def _check_batch_retrieve(self, ks): + """ Make sure batch retrieval works + + Arguments: + self - a simuluator of a test object (see DummyTest above) + ks - a fresh object matching the AbstractKeyStore interface + """ + + keys = [KeyInfo('attr A', 1, 'metadata', 'keywrap', 0), + KeyInfo('attr A', 2, 'metadata', 'keywarp', 0), + KeyInfo('attr B', 1, 'metadata', 'newwrap', 0), + KeyInfo('attr B', 2, 'metadata', 'dewwrap', 0), + KeyInfo('', 12, 'metadata', 'gluwrap', 0), + KeyInfo('', 1, 'betadata', 'foowrap', 0), + KeyInfo('', 1, 'gammadata', 'barwrap', 0)] + ks.batch_insert('user', keys) + + # Case 1: test getting everything + res = ks.batch_retrieve('user', 'metadata') + mkeys = keys[:5] + + self.assertTrue(len(res) == len(mkeys)) + self.assertTrue(all(x in mkeys for x in res)) + self.assertTrue(all(x in res for x in mkeys)) + + res = ks.batch_retrieve('user', 'betadata') + bkeys =keys[5:6] + + self.assertTrue(len(res) == len(bkeys)) + self.assertTrue(all(x in bkeys for x in res)) + self.assertTrue(all(x in res for x in bkeys)) + + res = ks.batch_retrieve('user', 'gammadata') + gkeys =keys[6:] + + self.assertTrue(len(res) == len(gkeys)) + self.assertTrue(all(x in gkeys for x in res)) + self.assertTrue(all(x in res for x in gkeys)) + + # Case 2: test non-attribute keys + res = ks.batch_retrieve('user', 'metadata', '') + + self.assertTrue(len(res) == 1) + self.assertTrue(all(x.attr == '' for x in res)) + self.assertTrue(keys[4] in res) + + # Case 3: test attr A + res = ks.batch_retrieve('user', 'metadata', 'attr A') + + self.assertTrue(len(res) == 2) + self.assertTrue(all(x.attr == 'attr A' for x in res)) + self.assertTrue(keys[0] in res) + self.assertTrue(keys[1] in res) + + # Case 4: test attr B + res = ks.batch_retrieve('user', 'metadata', 'attr B') + + self.assertTrue(len(res) == 2) + self.assertTrue(all(x.attr == 'attr B' for x in res)) + self.assertTrue(keys[2] in res) + self.assertTrue(keys[3] in res) + + # Case 5: test non-existent attr C + try: + res = ks.batch_retrieve('user', 'metadata', 'attr C') + self.assertTrue(False, 'Should fail to retrieve non-existent attr') + except PKILookupError: + pass + +def _check_most_recent(self, ks): + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0), + KeyInfo('A', 5, 'metadata', 'wrap5', 0), + KeyInfo('A', 6, 'metadata', 'wrap6', 0), + KeyInfo('A', 7, 'metadata', 'wrap7', 0), + KeyInfo('A', 8, 'metadata', 'wrap8', 0), + KeyInfo('A', 9, 'metadata', 'wrap9', 0), + KeyInfo('A', 10, 'metadata', 'wrap10', 0)] + + random.shuffle(keys) + + ks.batch_insert('user', keys) + + res = ks.retrieve_latest_version(userid='user', metadata='metadata', attr='A') + self.assertEqual(res.vers, 10) + self.assertEqual(res.keywrap, 'wrap10') + +def _check_most_recent_many(self, ks_gen): + + user = 'user' + metadata='metadata' + attr = 'A' + + for _ in xrange(ITERS): + ks = ks_gen() + + versions = [] + + for _ in xrange(50): + vers = random.randint(0,10000000000000) + keywrap = 'wrap'+str(vers) + + versions.append(vers) + ks.insert(user, KeyInfo(attr, vers, metadata, keywrap, 0)) + + res = ks.retrieve_latest_version(user, metadata, attr) + self.assertEqual(res.vers, max(versions)) + self.assertEqual(res.keywrap, 'wrap'+str(max(versions))) + +def _check_most_recent_num(self, ks): + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0), + KeyInfo('A', 5, 'metadata', 'wrap5', 0), + KeyInfo('A', 6, 'metadata', 'wrap6', 0), + KeyInfo('A', 7, 'metadata', 'wrap7', 0), + KeyInfo('A', 8, 'metadata', 'wrap8', 0), + KeyInfo('A', 9, 'metadata', 'wrap9', 0), + KeyInfo('A', 10, 'metadata', 'wrap10', 0)] + + random.shuffle(keys) + + ks.batch_insert('user', keys) + + vers = ks.retrieve_latest_version_number(metadata='metadata', attr='A') + self.assertEqual(vers, 10) + +def _check_most_recent_num_many(self, ks_gen): + + user = 'user' + metadata='metadata' + attr = 'A' + + for _ in xrange(ITERS): + ks = ks_gen() + + versions = [] + + for _ in xrange(50): + vers = random.randint(0,10000000000000) + keywrap = 'wrap'+str(vers) + + versions.append(vers) + ks.insert(user, KeyInfo(attr, vers, metadata, keywrap, 0)) + + vers = ks.retrieve_latest_version_number(metadata, attr) + self.assertEqual(vers, max(versions)) + +def _check_remkeys(self, ks): + """ Make sure basic key removal functionality works. + """ + + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0)] + + ks.batch_insert('user', keys) + ks.remove_revoked_keys('user', 'metadata', 'A') + + try: + res = ks.batch_retrieve('user', 'metadata', 'A') + self.assertTrue(False, 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + +def _check_remkeys_multi_user(self, ks): + """ Make sure basic key removal functionality works when there are + multiple users. + """ + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0)] + + ks.batch_insert('user1', keys) + ks.batch_insert('user2', keys) + ks.remove_revoked_keys('user1', 'metadata', 'A') + + try: + res = ks.batch_retrieve('user1', 'metadata', 'A') + self.assertTrue(False, 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + + res = ks.batch_retrieve('user2', 'metadata', 'A') + self.assertEqual(set(res), set(keys)) + +def _check_remkeys_multi_attr(self, ks): + """ Make sure basic key removal functionality works when there are + multiple attributes. + """ + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0), + KeyInfo('B', 1, 'metadata', 'wrap5', 0), + KeyInfo('B', 2, 'metadata', 'wrap6', 0), + KeyInfo('B', 3, 'metadata', 'wrap7', 0)] + + ks.batch_insert('user', keys) + ks.remove_revoked_keys('user', 'metadata', 'A') + + try: + res = ks.batch_retrieve('user', 'metadata', 'A') + self.assertTrue(False, 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + + res = ks.batch_retrieve('user', 'metadata', 'B') + self.assertEqual(set(res), set(keys[4:])) + +def _check_remkeys_multi_meta(self, ks): + """ Make sure basic key removal functionality works when there are + multiple metadatas. + """ + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0), + KeyInfo('A', 1, 'betadata', 'wrap5', 0), + KeyInfo('A', 2, 'betadata', 'wrap6', 0), + KeyInfo('A', 3, 'betadata', 'wrap7', 0)] + + ks.batch_insert('user', keys) + ks.remove_revoked_keys('user', 'metadata', 'A') + + try: + res = ks.batch_retrieve('user', 'metadata', 'A') + self.assertTrue(False, 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + + res = ks.batch_retrieve('user', 'betadata', 'A') + self.assertEqual(set(res), set(keys[4:])) + +def _check_remkeys_all(self, ks): + """ Make sure basic key removal functionality works when the dataset is + heterogenous and there are multiple remove operations. + """ + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0), + KeyInfo('A', 1, 'betadata', 'wrap5', 0), + KeyInfo('A', 2, 'betadata', 'wrap6', 0), + KeyInfo('A', 3, 'betadata', 'wrap7', 0), + KeyInfo('B', 1, 'metadata', 'wrap8', 0), + KeyInfo('B', 2, 'metadata', 'wrap9', 0), + KeyInfo('B', 3, 'metadata', 'wrap0', 0)] + + ks.batch_insert('user1', keys) + ks.batch_insert('user2', keys) + ks.batch_insert('user3', keys) + ks.remove_revoked_keys('user1', 'metadata', 'A') + + try: + res = ks.batch_retrieve('user1', 'metadata', 'A') + self.assertTrue(False, 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + + res = ks.batch_retrieve('user1', 'betadata', 'A') + self.assertEqual(set(res), set(keys[4:7])) + + res = ks.batch_retrieve('user1', 'metadata', 'B') + self.assertEqual(set(res), set(keys[7:])) + + res = ks.batch_retrieve('user2', 'metadata', 'A') + self.assertEqual(set(res), set(keys[:4])) + + res = ks.batch_retrieve('user2', 'betadata', 'A') + self.assertEqual(set(res), set(keys[4:7])) + + res = ks.batch_retrieve('user2', 'metadata', 'B') + self.assertEqual(set(res), set(keys[7:])) + + ks.remove_revoked_keys('user2', 'metadata', 'A') + + try: + res = ks.batch_retrieve('user1', 'metadata', 'A') + self.assertTrue(False, 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + + try: + res = ks.batch_retrieve('user2', 'metadata', 'A') + self.assertTrue(False, 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + + res = ks.batch_retrieve('user1', 'betadata', 'A') + self.assertEqual(set(res), set(keys[4:7])) + + res = ks.batch_retrieve('user1', 'metadata', 'B') + self.assertEqual(set(res), set(keys[7:])) + + res = ks.batch_retrieve('user2', 'betadata', 'A') + self.assertEqual(set(res), set(keys[4:7])) + + res = ks.batch_retrieve('user2', 'metadata', 'B') + self.assertEqual(set(res), set(keys[7:])) + +def _check_remkeys_random(self, ks_gen): + """ Make sure basic key removal functionality works when the dataset is + heterogenous and there are multiple remove operations. + """ + + for _ in xrange(ITERS): + ks = ks_gen() + values = [] + + # Generate some random user IDs + names = ('user'+str(random.randint(0,1000000000)) + for _ in xrange(NAMES)) + + for name in names: + to_insert = [] + name_batch = [] + + # Generate some random metadata + metadatas = ('meta'+str(random.randint(0,1000000000)) + for _ in xrange(METADATAS)) + + for metadata in metadatas: + meta_batch = [] + # Generate some random attributes + attrs = ('attr'+str(random.randint(0,1000000000)) + for _ in xrange(ATTRS)) + + for attr in attrs: + attr_batch = [] + # Generate some random versions + vers = (random.randint(0,1000000000) + for _ in xrange(VERS)) + + for vrs in vers: + # Generate a random keywrap + keywrap = 'key'+str(random.randint(0,1000000000)) + + info = KeyInfo(attr, vrs, metadata, keywrap, 0) + + to_insert.append(info) + attr_batch.append(info) + meta_batch.append((attr, attr_batch)) + name_batch.append((metadata, meta_batch)) + + values.append((name, name_batch)) + ks.batch_insert(name, to_insert) + + for name, name_batch in values: + for metadata, meta_batch in name_batch: + for attr, infos in meta_batch: + # Flip a coin to determine whether we remove this batch + if random.randint(0, 1) == 0: + ks.remove_revoked_keys(name, metadata, attr) + try: + res = ks.batch_retrieve(name, metadata, attr) + self.assertTrue(False, + 'Should fail to retrieve deleted keys') + except PKILookupError: + pass + else: + res = ks.batch_retrieve(name, metadata, attr) + self.assertEqual(set(res), set(infos)) + +# test get_metadatas +def _check_get_metas(self, ks): + """ Test basic get_metadatas functionality + """ + + # Test 1: one user, one metadata + keys = [KeyInfo('A', 1, 'meta1', 'wrap1', 0), + KeyInfo('A', 1, 'meta2', 'wrap2', 0), + KeyInfo('A', 1, 'meta3', 'wrap3', 0), + KeyInfo('A', 1, 'meta4', 'wrap4', 0)] + + ks.batch_insert('user1', keys) + metas = ks.get_metadatas('user1', 'A') + + self.assertEqual(metas, set(['meta' + str(i) for i in xrange(1, 5)])) + + # Test 2: add another user + ks.batch_insert('user2', keys) + metas1 = ks.get_metadatas('user1', 'A') + metas2 = ks.get_metadatas('user2', 'A') + + # Make sure old metadata info is unchanged + self.assertEqual(metas1, set(['meta' + str(i) for i in xrange(1, 5)])) + self.assertEqual(metas2, set(['meta' + str(i) for i in xrange(1, 5)])) + + # Test 3: add another attribute + keys = [KeyInfo('B', 1, 'meta1', 'wrap1', 0), + KeyInfo('B', 1, 'meta2', 'wrap2', 0)] + + ks.batch_insert('user1', keys) + metas = ks.get_metadatas('user1', 'B') + + self.assertEqual(metas, set(['meta' + str(i) for i in xrange(1, 3)])) + +def _check_get_metas_remove(self, ks): + """ Test interaction of get_metadatas and remove_revoked_keys + """ + keys = [KeyInfo('A', 1, 'meta1', 'wrap1', 0), + KeyInfo('A', 1, 'meta1', 'wrap2', 0), + KeyInfo('A', 1, 'meta2', 'wrap3', 0), + KeyInfo('A', 1, 'meta2', 'wrap4', 0), + KeyInfo('B', 1, 'meta1', 'wrap5', 0), + KeyInfo('B', 1, 'meta1', 'wrap6', 0)] + + ks.batch_insert('user1', keys) + ks.batch_insert('user2', keys) + + metas1a = ks.get_metadatas('user1', 'A') + metas2a = ks.get_metadatas('user2', 'A') + metas1b = ks.get_metadatas('user1', 'B') + metas2b = ks.get_metadatas('user2', 'B') + + self.assertEqual(metas1a, set(['meta' + str(i) for i in xrange(1, 3)])) + self.assertEqual(metas2a, set(['meta' + str(i) for i in xrange(1, 3)])) + self.assertEqual(metas1b, set(['meta' + str(i) for i in xrange(1, 2)])) + self.assertEqual(metas2b, set(['meta' + str(i) for i in xrange(1, 2)])) + + # Remove a set of revoked keys and make sure the metadata correctly + # reflects this change + ks.remove_revoked_keys('user1', 'meta1', 'A') + + metas1a = ks.get_metadatas('user1', 'A') + metas2a = ks.get_metadatas('user2', 'A') + metas1b = ks.get_metadatas('user1', 'B') + metas2b = ks.get_metadatas('user2', 'B') + + self.assertEqual(metas1a, set(['meta' + str(i) for i in xrange(2, 3)])) + self.assertEqual(metas2a, set(['meta' + str(i) for i in xrange(1, 3)])) + self.assertEqual(metas1b, set(['meta' + str(i) for i in xrange(1, 2)])) + self.assertEqual(metas2b, set(['meta' + str(i) for i in xrange(1, 2)])) + +def _check_avoid_aliasing(self, ks): + """ Make sure values returned by key stores don't magically change when + their key store changes (mostly an issue for the dummy implementation) + """ + # The dangerous set of operations is as follows: + # 1) call x = get_metadatas() + # 2) call remove_revoked_keys() + # 3) interact with x + + keys = [KeyInfo('A', 1, 'metadata', 'wrap1', 0), + KeyInfo('A', 2, 'metadata', 'wrap2', 0), + KeyInfo('A', 3, 'metadata', 'wrap3', 0), + KeyInfo('A', 4, 'metadata', 'wrap4', 0), + KeyInfo('A', 1, 'betadata', 'wrap5', 0), + KeyInfo('A', 2, 'betadata', 'wrap6', 0), + KeyInfo('A', 3, 'betadata', 'wrap7', 0), + KeyInfo('B', 1, 'metadata', 'wrap8', 0), + KeyInfo('B', 2, 'metadata', 'wrap9', 0), + KeyInfo('B', 3, 'metadata', 'wrap0', 0)] + + ks.batch_insert('user1', keys) + ks.batch_insert('user2', keys) + ks.batch_insert('user3', keys) + + metas = ks.get_metadatas('user1', 'A') + self.assertEqual(set(metas), set(['metadata', 'betadata'])) + + ks.remove_revoked_keys('user1', 'metadata', 'A') + self.assertEqual(set(metas), set(['metadata', 'betadata'])) + + +def _dummy_gen(): + return DummyKeyStore() + +def _acc_gen(): + conn = FakeConnection() + return AccumuloKeyStore(conn) + +def _attr_gen(): + conn = FakeConnection() + return AccumuloAttrKeyStore(conn) + +def test_all(): + self = DummyTest() + generators = [_dummy_gen, _acc_gen, _attr_gen] + + for gen in generators: + yield _check_write_read, self, gen() + yield _check_write_read_attr, self, gen() + yield _check_writes_reads, self, gen + yield _check_writes_reads_attr, self, gen + yield _check_not_found, self, gen() + yield _check_overlap_values, self, gen + yield _check_overlap_values_attr, self, gen + yield _check_batch_insert_single, self, gen() + yield _check_batch_insert_double, self, gen() + yield _check_batch_insert_several, self, gen + yield _check_batch_insert_many, self, gen + yield _check_repeat_cell_key, self, gen() + yield _check_empty_fields, self, gen() + yield _check_batch_retrieve, self, gen() + yield _check_most_recent, self, gen() + yield _check_most_recent_many, self, gen + yield _check_most_recent_num, self, gen() + yield _check_most_recent_num_many, self, gen + yield _check_remkeys, self, gen() + yield _check_remkeys_multi_user, self, gen() + yield _check_remkeys_multi_attr, self, gen() + yield _check_remkeys_multi_meta, self, gen() + yield _check_remkeys_all, self, gen() + yield _check_remkeys_random, self, gen + yield _check_get_metas, self, gen() + yield _check_get_metas_remove, self, gen() + yield _check_avoid_aliasing, self, gen() diff --git a/pace/pki/user1_privkey.pem b/pace/pki/user1_privkey.pem new file mode 100644 index 0000000..2e60436 --- /dev/null +++ b/pace/pki/user1_privkey.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAz9zKyH8O6Pau83OZaMwPIL34E4aeYjPo1v78AQ4hD8s67M3t +M1gwB5sXotMh0Cra79uinYk5QCMqOSTKtwfb2LNzDYahKksz8IcEh2U3VYdDYYue +eLRBdNYlVuQQ25XPi+g1DS5+xwsVEQDEkIlc5pxIhoWjo4p0MxPBjAZ2Dzlv+21C +3tuWXZp04WpVj3VviaaoLOALYCTI/aP6O8NaEEr5jXamAUbMJe3c1tojvjbWYvB9 ++sS8peHGxrylt7GBxq59mK/NrvEL6MiwGKvC0jNxcOAjBf67OcntEFI58fJp5AHn +nNnlZQmsIiMcyjulYkcrbyUHLfPieTchaf7rT1L1iOz49Q0Z7vbQGhZwVorVBwCC +Y90gUd6XAUZbhCnhJm4iypvSWOxJKwCVQrMy4Cv7QVL0mrmRwDGhnKc/LfkYNusd +5uTO4eG0USngjuu9d/3rqAdMPBcCCUmjYKXiql9McWi3XkM4kmOqSJUvkZMQXG/X +DEmhBaLSjWxqLGb7AgMBAAECggGAOWD+jUgdqotmEggoIfiqeGRYVbOEhyFDNg4f +LH9k+wIj2vihcNn4MDFM3gKgQ+GAnFOp2QjnR+AtKKcSWmIN+wzWRraSSKWHye7L +fkCffLmhDQ1IipNfukve9NRyHtuE9l78Pg5GqtVRVGc825U/kt0zXAcJ+/wdRXg/ +plKmRl+ZnPM1UWWWZXJcr1j2E2rchkf+Bp02Jq0g2ntoeRTdCMBZkQZent2XPyUh +ICIJWdmzZo5yiEXEuZnQkE3FBSc3Z15VKpAmonwPcBKy1kLcglXM49zP6CD2kDFl +nNMNQG4BZLgpbwE/AZT5NyArycZSEB87p0+Uyf5yYQUy8KyOcK7ZMoVENvNKubvV +G0CVot6/Dg0yO7gv+r2H+zpg6xPMmnRSCNcBZoTJSQy7qpI5CPuPaf1YY19KBiQ4 +vqErqposaeTgEnBITNF6W+nZGL8A/yLL1YtLgrIjWRPSwXyfnFXY9UXiNzgFevxx +TqtQvOBEiLFKCS5WUAKcLMHA6B4ZAoHBAN8LzGvUta1a+Mx12+M7h0E26jjvq4ew +g0ZRj0vD8t7UQ0f2a4hQhIgbXfb5V9LFqzfTyqlcvbXZYWOxzrJkQ8t8ae6zI57r +98pWkSJOadCDXXap5yA1Nq9mxO2+RhsFPgXUjh/jVPB4w8ygfk7skBnLBqVTS/av +fIw7dcUmugYwNJFORunfInvTjiRHoRGYkXNFNaJTGjFHbhbQZOiPn18itqqTXwOd +cLSJ3LxuasrsCCAtZDVwkWAhNMm9HkbOZwKBwQDukrVZ5Jmo77+l5QG7aD2kywMD +ccsKM3bHIvvbKL7TOUtZPuuV0mGvqcMmoSVRxNr8ULZHCAjOedikUkD8+lbzpxXr +jrZ/wOnPECM+2bclXEXtFA1DbG1rxLgn2MwMEF0ibStBlJ1PdWCiw+0+8ieeXce3 +Mx6TmdHh0Dwhn9+1drANdd6KVwsmc3rKdn2LyRQ+Shh2uTt7GftJWzuXlL2DkGU5 +V8sZvCvejzXknNmwH9+J4OlqUi8ZO1AkiHUl3k0CgcBExLB8NpLlJf07nML05m+n +LbU9ZLewGD4BOjhCFeIVzcAIufMhjiGujTGFag8nzwYhKk17tjpPjPw37qRZ4Av+ ++xb2H4lGAF7fpZ0NxLtfLIFuiqfWCFIZ9keVPWsD/bPHvGctcbvIgJNtzbXjw5AS +Q8SCyJHNNwHhgpum82+7ZLVwb3/xr3hEUU+r4+HHORDvR1FoANM8ildo9UuHYHC0 +tlE3ekR7KtmK8E58UlbexbMjqJsS1ugbiWFrKcHh9tUCgcBTdfGJnCaBajYihCYB ++OqvzvGj79g3Hl/sNHnlZrCzVjTc6N0j0bCo8nu59OAIZhSx9k5+NPpXuVqnybrA +hZeLr6VEfe2sbcGd1ahu4V1n7Yrs8HnfX3w8GlrOXdKsWcErPQPH8oTB+m8vIdnK +jo57oZUvquuEeWhqVh3jKXnqkrXuT5Dl1qOo9Pc9AwzSrSquy98ZEZ4UZ7d4JzmG +wts1vnsa/3Km8yRpvLH+4zxomA3sv0kJD+04J37W+QH6mHUCgcAmw21/eMZwRtCI +UOwQd+BsmcVasNn0+FUajD+zZrxb4DSAAQxjB11IVjeYO8SRfq4X2DO8CQU1cO0B +udGKw6PtNZsl4fxjhQedWuIMgwxD3pO3Abjr8vbFby0YjCF9D8H/CKE0IhMBkqOE +KRrJEr7KoekqnAIA3lIOXXI8oN7j9/4QAhAQPJ7tl40R0ZgNX/qLDNhvubBRL1mc +XKPz+6CTsYyLXwhEiOVM3gdgIwcsNB1sV6Jg5e1BmJHY/R+US4g= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/pace/pki/user1_pubkey.pem b/pace/pki/user1_pubkey.pem new file mode 100644 index 0000000..b0aa045 --- /dev/null +++ b/pace/pki/user1_pubkey.pem @@ -0,0 +1,11 @@ +-----BEGIN RSA PUBLIC KEY----- +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAz9zKyH8O6Pau83OZaMwP +IL34E4aeYjPo1v78AQ4hD8s67M3tM1gwB5sXotMh0Cra79uinYk5QCMqOSTKtwfb +2LNzDYahKksz8IcEh2U3VYdDYYueeLRBdNYlVuQQ25XPi+g1DS5+xwsVEQDEkIlc +5pxIhoWjo4p0MxPBjAZ2Dzlv+21C3tuWXZp04WpVj3VviaaoLOALYCTI/aP6O8Na +EEr5jXamAUbMJe3c1tojvjbWYvB9+sS8peHGxrylt7GBxq59mK/NrvEL6MiwGKvC +0jNxcOAjBf67OcntEFI58fJp5AHnnNnlZQmsIiMcyjulYkcrbyUHLfPieTchaf7r +T1L1iOz49Q0Z7vbQGhZwVorVBwCCY90gUd6XAUZbhCnhJm4iypvSWOxJKwCVQrMy +4Cv7QVL0mrmRwDGhnKc/LfkYNusd5uTO4eG0USngjuu9d/3rqAdMPBcCCUmjYKXi +ql9McWi3XkM4kmOqSJUvkZMQXG/XDEmhBaLSjWxqLGb7AgMBAAE= +-----END RSA PUBLIC KEY----- \ No newline at end of file diff --git a/pace/pki/user2_privkey.pem b/pace/pki/user2_privkey.pem new file mode 100644 index 0000000..f7d66c2 --- /dev/null +++ b/pace/pki/user2_privkey.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAqwrZ+cZeq1xs8Pele64uiDHnH7E5FJxRtDHbJiROewSSHpvN +MNy+pCs/zUiYJZCiRhxBe4g3oDyHkHHmP2N2dTaXd8PGjZw8+I+D/YpEpNbU34hA +0jBntu56xtfy4ywAFQN2e2z+TqlAsIwjYQBBzrI8uV6fFY6+K2O9P+a4ZfIwXy+z +v852MbeaSYCAVipA3vg26nf++wmqSjaHI49Ep7hJlhVhdlCp1GfFZ3OL4SRyGOKJ +ejwbIVylhINPTpEay4BJJ9twBPTJtgIEkUc04abRsITCV+s9/BMhlYN3COi2e39z +uAPKVMHJWX6kDm1fNmnI0z7SMhomGQ1icwkSpTjOl7k4k5WpBqOIcMaRMWieRfEt +U7AvyaHz+rHm8lunJ+M3dGEaI0HTWWWQHHT47OuLwfHrFtcVL3FP4AYi86Kuvqpv +3BITztCv0omAIZpjgXk6uJj/cM0v7peGWttvoKAJLiAjSxtr0J9fZWgJOQeO5gvq +MMeu3QS2lQVlSIPLAgMBAAECggGAOepXupKn1aBbJxDD0Og+y1EScJHCwS7ZH4nO +KdEbXd5DV+frh8MHLnGSjgEpu3aI6/J/XcPXCgPU510Z2JbmMnREv4HkBmlD3+pA +iCY8bhBsTjBFuqY3SCLiIdhXXwK0GGluwgY66gm3ZNBe3maG4eVKWH4oodUOoYSJ +PUzzXVmvdVuioqzXKqh/rqm7SvHNu3ISrjvpc7lnFu/1vF2zopLtH8unj7dqegiV +OB1Q3PBJThHO+TvG9/n19bO8s96/xN3rW1tWvzAuB5gBOWJsrX43S4gjN7dfchfk +4x/2ofK9yeYRF2RRaA5LeMkyK4iOSYxBqCIU3WOH/F6pSRjqtS/JV4bPGuNTAfTJ +bEh/AoB2MdAoIYXJYciRC/NTgpRvJ4UMVCWqdTh88NzGCas90awmuUGzlQsrbo5C +UdxYJeBJYX8UQ0YYAcoQN5ccd7dCe/2L82MfBZVzK0REPpRsJgLZvZxtSL3f6lwc +DMqVz6oLpscfqNLsdnJUVm7Q+se5AoHBAML0a+2vythveY5X5oyFo6C1fVj845ZC +yGiv70m5odzMQIctaTtbEntx995VO/TDelT7/S1zjJCOZEG/9MxvDoCouF3wx0qL +bL+Hh2reeMcvxOrqltEkm4E4FcAlRT51gSbD6NDw7jfm4Ha43sed/zxx20s3z3YM +Rz/LJgoOpnAXarvV54tlXEvR9zBcMLn3oKbjwWbND1vDAxSCt8f15/XiHkXEN9WB +GthTwn1od1NlngrDb6pO52IVFF+9ZZomrQKBwQDgmZzdELT75X/fDiNmyIjYQLle +DiSZLqWGwFz07CfdaCchsa0efuy/5qXrYNawgLNJBIxd9gloF05vFqKjrj3Msocg +gWI76xm2SUSIO2sDovxUhtwTtM+MoLOemTxEFEX10IFNntEnXgP6YoEmrh64uV1X +N3lIL3m2pATlPptky4T2YJirXkRzbo2bgVnNCs3Mf3C/tnnLFlNf4n3bUyN7RTeV +YI77sqZtbBUmN6EBrcMGdzrVoGQpJZFhKcfZu1cCgcACLvaefN+KuQTlgTqFzGFe +xWmX+40Y+7p+4amOa9PSQz9dxDZvgb+dPlOGW/IF9cKC/SeCwM6MN+wLiHjXaU8C +ReF6u92fihw3sO7lVYSIxpIwB1yVDxHmypgDxOcXof1GT99lp60jVySgb8We+rgH +F0dbek6KheyuXDoa1rsqejipzeV//CyidMGN+xpYmttjwx1BZ36Kio6YRjaEuM5W +RKgOI/p0G7QPRDDjcq4TcwnoGPRBNg0FXjMSN27R4SkCgcAol/r/BZcAdCFhakfB +uvrowwH92uaIfSLTsQ7cAZbO8JUqBNf6TAx0Pra8TRtgeVJuHxFTpjVbB+NYNqoc +lVB8H8RGfrwHgl16UdG+Iacc2CdtC5bZRPPCQgVU4/M9hsCCRjYolkzNJbPoXEdl +e1D4KCCTs+YKwvHnrctot6EUXahhc2IEjxwmFNQpR/64DXzWui3hqJRovVdCXEhN +DMC79e2u5O3S1h44ZrGH38QM7p/yGjibBcs0mKKnAgsp8i8CgcBTEikaeM6qo4no +k35mWKXPj6+niSFnDvc3KItGpTS3h7rtv4KX4ybTmRsyXP5e0CP8zexb+5I6sGSX +0VRwReYq42+/7E4YpeA6vdmvWrwa3ZCNqRWWE7I/Uvd/Y+kqjLixVr5f3FnNJZnI +pC7rUWmt5V9JKqdQq5fXnvuV/dtCIhi2U3e4Bo5mEeOPVhvfYZgzb73J4YddErzl +3ps+f1394xO3f0hdpCRRnIIhb0pKs0IFOojyywcIBBuRAuqciM4= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/pace/pki/user2_pubkey.pem b/pace/pki/user2_pubkey.pem new file mode 100644 index 0000000..4d99ed6 --- /dev/null +++ b/pace/pki/user2_pubkey.pem @@ -0,0 +1,11 @@ +-----BEGIN RSA PUBLIC KEY----- +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAqwrZ+cZeq1xs8Pele64u +iDHnH7E5FJxRtDHbJiROewSSHpvNMNy+pCs/zUiYJZCiRhxBe4g3oDyHkHHmP2N2 +dTaXd8PGjZw8+I+D/YpEpNbU34hA0jBntu56xtfy4ywAFQN2e2z+TqlAsIwjYQBB +zrI8uV6fFY6+K2O9P+a4ZfIwXy+zv852MbeaSYCAVipA3vg26nf++wmqSjaHI49E +p7hJlhVhdlCp1GfFZ3OL4SRyGOKJejwbIVylhINPTpEay4BJJ9twBPTJtgIEkUc0 +4abRsITCV+s9/BMhlYN3COi2e39zuAPKVMHJWX6kDm1fNmnI0z7SMhomGQ1icwkS +pTjOl7k4k5WpBqOIcMaRMWieRfEtU7AvyaHz+rHm8lunJ+M3dGEaI0HTWWWQHHT4 +7OuLwfHrFtcVL3FP4AYi86Kuvqpv3BITztCv0omAIZpjgXk6uJj/cM0v7peGWttv +oKAJLiAjSxtr0J9fZWgJOQeO5gvqMMeu3QS2lQVlSIPLAgMBAAE= +-----END RSA PUBLIC KEY----- \ No newline at end of file diff --git a/pace/pki/user3_privkey.pem b/pace/pki/user3_privkey.pem new file mode 100644 index 0000000..4dc0987 --- /dev/null +++ b/pace/pki/user3_privkey.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG5AIBAAKCAYEA0STB3NrbV7x7x/F4KrC8B7jKhHsOtzsSKJAN69QdTzed4dmF +w+vNUc6ccbMUK9ZQMpsEu/qy1bxjOKsGakDBOqzHZ12+Q+xgHFYv5A+i241eNUOX +JrmEgnDWO1NjlyyzT5yerfIrx7Oya+WufxQJVS78mq2qPARcF+IIQRh4r4P4uINN +CToIr3dAWkPmwgSvKOKmrzOnBcj6KnumvUDTtVAhj60KjwhVHIYG/PxF8aSz3lpD +sO0QnEbhxlGM4v3qiKBeQSOBmrv5nJ1oLzfgamBcCDTdP4b5fGyx6KWcCkWYwJXk +FNrcGaC6mnGal+yGOewrpKwINiJuUl+7JfE+sFKkkZDPD7qTmdYGy9Ky6d6jTMkn +F4yOadiN9rftAelvxYbpMZ0vAkblBNTv+QPMzJZZfyvu5vzGp2eR9hlXUcPNQgTH +zQGQKJC/psoGYdy+9rcbFdEDseoxbD4Rp6qkEmGBrXqHfg978Ln/rQpa6Iwf/m4r +QXp34uhjnmUk9qgBAgMBAAECggGBALNy/oQppRpatzqPjbPTgQJ/JAUYMUA2hxYW +xFsc3SkjZ2xp38SDhuAyjzlflmcmtBk3uZAxQ1DxG5F77T0t4p4dsdqXLLHLF4w4 +x06/u9T2L2c0X3TyqSfi+W5d1o3X5OLiV6SYrcfj/6tkn5yZ7IgSkNuHNxHYC8zS +PJLeFG9EpRxsTKUmDl2/zI+mw1CmBETodGzPvPfRwhTBlAe+n+hqoOFOcEjZtW2L +8mMPclQsJckbWgls31u31fD7+A6sHgrmXMts50N1v+LSVAHbTfUXd2PoCJieSJvr +7iXkbawh2Y2sbeYUSvBWVyfgXk8t8YumtLv5++aO7q3XyQ5dWHLmDqnaapsUwtzw +eD7nN09SwCFJJJyaCJa5CzFu+Cld/iWay80m0DbZIb6GEhO/MhI9SqxI5hAjpUYT +E3kFUjBmuUtEm9KXiqvk4EoW9RKPlhrNVcFZ/1+ucCmB+F+LBfc++L3gWAlsGN1O +52U9nyXHb6cv7YkJLpcTGR7HBpsHIQKBwQDaE9cWnR0LrPw8SSRRGFLizgzB8O7D +VQB6Hcq30jySZKRFlpjCjB6tufUSq/BeEuhtzc3sA6XhSutRc3L6b0ay2Q6h+C2V +/rteBzlRBPcUJvsKhWY3lZr84csuccAIgvnGtjcfJqyIBX5xwylG1QiGMxiyb7Uc +hqm654xws+lgIco8aoFYX7vYqL1yZy1PO3mowkROk2dCr8BKG9+Efzhr3OrFomgq +whi8OxVz9x9kuThO/7YmvYEK0WtG7PRU2DMCgcEA9YM0qlp1F5OLmI1qDcOzelzS +61y/+R9t1gld6dSO/pm6Gbom2mazM+F+MM1STxBaaX2apANc+aHEgJ7SB7astS/d +B3uxSx5MevIktbK3wyuDdKo2x0cWwAgf706eNEOlJMLZcWY93zUD1wfwm5idXwwc +4cUjWeCw9ytyLmubOZh/kjILM/hp1tixZGRO/t5q89YY9dwuzQ687Ls59f4f6/xg +b1LefSF0NQG3UxfNLn846Mu1fdgiuszH0ittaJr7AoHARgxXa3keClEPWGH6G15f +yWB8MpOsbevQ0mjdY7xRHojbR0r/WIZfmFgCA3RdKiqSpCqWOXhWgQ5qlegqh4zU +vcAA9j/cjLCdCK/zVjXtE3kN7Cw7UCFq/k2c0RdSoqlHh++htwzaIHr7SZlxmcH2 +Ef05sp81IquSu2mC7/SqQum3pz5iu7tMgGR7LdM8d5XYF0AHZuHsKjx/3I4lds7S +lbsJYmAva4SbI2MrGevIFrd0AdQbc0gtugbYmZilRteHAoHBAN3irNBhXH3oTTuc +YwL5odWu2rj4ZE/khcHxST0xa+LSUI073i14r/DtlLzKc98c6nl4mTAuEfNSrmOI +Jk3uXPyLu3kt4zf+tCRRf7fvQ4FSbEYeJ8/Ggdsf/KytIvIdSL2GlDqWqsh2A3ht +ppkZPvFN4zRwlNh/57AbReCKRAmzt2gLbnCTzCPuR7Rxq6tQnNyu3HQngOy2qyxQ +sbuO5o7C0u0Juibg+0OEv4iLdFbXiDltEiQgGJM2zEk4EnN9zQKBwAQwZUjbXzhQ ++J+9gnW/Lz70ar6q3gkA62mHDdySw/lMm/T3RdprnSmXVkkUpJsVR4Bj/LVFINZ8 +g4QuG6aR58/b5LZaBhvqwpaQl74SoPeRhblc50D6rDLjYD8Rts9aT2blOH8H8NVS +fjnf9k6ZQlduQIB6B4kzukDyAqIH9qYNSEBecjpmHGa/+mgn76fAfixrJtHfpwHh +G/cmgmg4zcHnpRapmtWFcK+BdPmcgWlgs0GZZLw1A7fXyz6MAwQ2TA== +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/pace/pki/user3_pubkey.pem b/pace/pki/user3_pubkey.pem new file mode 100644 index 0000000..1209789 --- /dev/null +++ b/pace/pki/user3_pubkey.pem @@ -0,0 +1,11 @@ +-----BEGIN RSA PUBLIC KEY----- +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0STB3NrbV7x7x/F4KrC8 +B7jKhHsOtzsSKJAN69QdTzed4dmFw+vNUc6ccbMUK9ZQMpsEu/qy1bxjOKsGakDB +OqzHZ12+Q+xgHFYv5A+i241eNUOXJrmEgnDWO1NjlyyzT5yerfIrx7Oya+WufxQJ +VS78mq2qPARcF+IIQRh4r4P4uINNCToIr3dAWkPmwgSvKOKmrzOnBcj6KnumvUDT +tVAhj60KjwhVHIYG/PxF8aSz3lpDsO0QnEbhxlGM4v3qiKBeQSOBmrv5nJ1oLzfg +amBcCDTdP4b5fGyx6KWcCkWYwJXkFNrcGaC6mnGal+yGOewrpKwINiJuUl+7JfE+ +sFKkkZDPD7qTmdYGy9Ky6d6jTMknF4yOadiN9rftAelvxYbpMZ0vAkblBNTv+QPM +zJZZfyvu5vzGp2eR9hlXUcPNQgTHzQGQKJC/psoGYdy+9rcbFdEDseoxbD4Rp6qk +EmGBrXqHfg978Ln/rQpa6Iwf/m4rQXp34uhjnmUk9qgBAgMBAAE= +-----END RSA PUBLIC KEY----- \ No newline at end of file diff --git a/pace/pki/user_info.cfg b/pace/pki/user_info.cfg new file mode 100644 index 0000000..ee99480 --- /dev/null +++ b/pace/pki/user_info.cfg @@ -0,0 +1,31 @@ +[user1] +public_key: user1_pubkey.pem +key_info: a|1|VIS_AES_CFB|16 + b|1|VIS_AES_CFB|16 + c|1|VIS_AES_CFB|16 + d|1|VIS_AES_CFB|16 + |1|Pycrypto_AES_SIV|32 + |1|Pycrypto_AES_CFB|16 + |1|Pycrypto_AES_GCM|16 + |1|Identity|16 + +[user2] +public_key: user2_pubkey.pem +key_info: a|1|VIS_AES_CFB|16 + b|1|VIS_AES_CFB|16 + c|1|VIS_AES_CFB|16 + d|1|VIS_AES_CFB|16 + |1|Pycrypto_AES_SIV|32 + |1|Pycrypto_AES_CFB|16 + |1|Pycrypto_AES_GCM|16 + |1|Identity|16 + +[user3] +public_key: user3_pubkey.pem +key_info: a|1|VIS_AES_CFB|16 + c|1|VIS_AES_CFB|16 + d|1|VIS_AES_CFB|16 + |1|Pycrypto_AES_SIV|32 + |1|Pycrypto_AES_CFB|16 + |1|Pycrypto_AES_GCM|16 + |1|Identity|16 diff --git a/pace/pki/userattrmap.py b/pace/pki/userattrmap.py new file mode 100644 index 0000000..48a33d8 --- /dev/null +++ b/pace/pki/userattrmap.py @@ -0,0 +1,91 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: ES +## Description: User-to-attribute map interface and simple implementation +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 3 Sep 2015 ES Original file +## ************** + +from abc import ABCMeta, abstractmethod + +class AbstractUserAttrMap(object): + """ Abstract interface for fetching attributes for a given user. + """ + + __metaclass__ = ABCMeta + + @abstractmethod + def attributes_by_user(self, userid): + """ Returns a list of the attributes the given user has. + + Arguments: + userid (string) - the ID of the user whose attributes to retrieve + + Returns: + [string] - a (potentially empty) list of the attributes that the + given user has + """ + pass + + def delete_attr(self, userid, attr): + """ Deletes an attribute from the list of attributes of a given user. + Used in key revocation. If the user does not already have the + attribute, this function does nothing. + + Arguments: + userid (string) - the ID of the user whose attribute to delete + attr (string) - the attribute to delete from the user's list + """ + pass + +class LocalUserAttrMap(AbstractUserAttrMap): + """ A simple implementation of a user-to-attribute map that references a + dictionary passed in at initialization. + + Fields: + user_attr_dict ({string -> [string]}) - a dictionary mapping each user + ID to a list of attributes + """ + + def __init__(self, user_attr_dict): + """ Initializes the user-to-attribute map with a provided dictionary. + """ + #Create a fresh copy of the provided dictionary to prevent aliasing + #issues + self.user_attr_dict = {} + for key, val in user_attr_dict.iteritems(): + self.user_attr_dict[key] = list(val) + + def attributes_by_user(self, userid): + """ Returns a list of the attributes the given user has. + + Arguments: + userid (string) - the ID of the user whose attributes to retrieve + + Returns: + [string] - a (potentially empty) list of the attributes that the + given user has + """ + try: + return [attr for attr in self.user_attr_dict[userid]] + except KeyError: + return [] + + def delete_attr(self, userid, attr): + """ Deletes an attribute from the list of attributes of a given user. + Used in key revocation. If the user does not already have the + attribute, this function does nothing. + + Arguments: + userid (string) - the ID of the user whose attribute to delete + attr (string) - the attribute to delete from the user's list + """ + try: + self.user_attr_dict[userid].remove(attr) + except ValueError: + pass + except KeyError: + pass diff --git a/pace/signatures/.signaturepki.py.swp b/pace/signatures/.signaturepki.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..96beccb2e20b82f627188c0a329d0e292dc83e94 GIT binary patch literal 12288 zcmeHN&u<(x6m}7apDl%g#DPk$Db?n+Vz~AUpbY$Da3|zxVms(kkxF zUs+wJSGuPe+Cj!{y!8B)duI=@7rtg}m=s26_u~Go=oOhQ?r-DXzE=jE+gMy$ncLv8 zi1M)=s%$RD^PG``jN3vB(>&%ovYU?|964A71%d((R$xCned^@AvpYI-gbqD>`N1y1 zA}A0P2nqxRf&xK-pg>R{C=e9*-zZ@7ee8W?^H7!1tJU|uJ>OL~d<6x90zrYGKu{nk z5EKXs1OV{2fHmL^;C0|2@Z%GV{Q%qn&I4}&hk-|cdyivI;6va8fCJmWVc=ol zOXTeG{@mprT2LS;5EKXs1O$isjrGGY0V+FCt-adG?d z=E_zR+A(UIxSR1*yxdw{Zq53x6~;z8Vr<%-YxCD<5yV?`8pmnY^cp2HwrxMR;}}IU zlQxPxL6C|^+!$Ie(sYcx%iEbyx;^Qv%iA(@>}y#N(ossR*QiwwgI?>V(6T?4*}xG5 zwK`yA;-N@ItHX}cn_LS@K_V^EsX$Z`v5E}0()7nw&}~*ED*zA)r?H#NOCAZPZp=a#MkMIHAPN;vqYv`V}zixG(jFTarS6;P?1b=fH;;YW|bMpf>cbA z=StgZ&u#6h?Y8RO5V3U|t*=!|?!L4?ddmCK-J4t+7Zv_{PK+sgcbA&?P=q|Tc&_bt zpPbbMu^Npqp=VdcZMHRjh>cA*=XTiTc`mY~-Qz|?iPRldKVjdf%I1cWSsN8%oCVH- zZg;NR#cr>Mrc7brrfJu%bw7&Su^B};$0{~pP(Lbz+pI_F_^#$g=+rq{7BQWgKY4~| zY0E9;B`pUs<0Enbz0nCY_r|xf<38)=ZI)fF*X^R)pR}%$auYx!Z!T~li3lnRZ zI~fAS<#OIj6z@fFb&P^^Woh&f+oZim&u7Yp2z*Vwg7TR!rJR<0lx$X%uPBTFhD gBe$U~(_LTPrZt&i9Wz?vJ*Bx-dh9HB$#k6k1xxsk9{>OV literal 0 HcmV?d00001 diff --git a/pace/signatures/DEMO.md b/pace/signatures/DEMO.md new file mode 100644 index 0000000..1e5e40d --- /dev/null +++ b/pace/signatures/DEMO.md @@ -0,0 +1,195 @@ +# Signatures Demo Commands + +This document contains documentation for the commands, primarily in `demo.py`, +for quickly getting up to speed on and running our client-side signature code +for Accumulo users. Users should read this file if they want a tour of what our +signatre code can accomplish and a look at how this code works behind the +scenes. + +## Setup + +When trying out our code, it is useful to be able to see both the output shown +to the user and the information stored on the server. This is particularly +useful when demonstrating the protections PACE adds, in this case the server's +inability to modify signed data without detection. + +For this demo, we will denote the client's view as a Python interpreter shell, +and the server's view as the Accumulo shell. The client view will look as +follows: + +``` +$ python -i demo.py +>>> run_insert + +>>> +``` + +We will represent the server view as follows: + +``` +$ accumulo shell -u root +Password: +root@server> table test_table +root@server test_table> scan +... +root@server test_table> +``` + +## demo.py commands + +To simplify the insertion process into Accumulo, we define a function +`run_insert()` in demo.py, with arguments as follows: + +```python +def run_insert(conn, data, table, signClass, privkey, loc, default_vis, sign): + ... +``` + +- `conn`: the connection to use to connect to Accumulo. Default: `None`, which + will default to the connection `Accumulo(host='localhost', port=42424, + user='root', password='secret')`. +- `data`: a list of row-value pairs to be stored in Accumulo. We provide a + sample list of data, `elems`, that is also the default argument for this + value. +- `table`: the name of the table into which to insert `data`. Default: `'demo'`. +- `signClass`: the signature class, as defined in `acc_sig.py`, to use to sign + the elements inserted into the table. Default: `PyCryptopp_ECDSA_AccSig`, + which signs using ECDSA. +- `privkey`: the private key to use to sign the elements of `data`. Default: + `None`, which uses the testing key returned by `signClass.test_keys()`. +- `loc`: the location in which to store, chosen from the strings `'vis'` (store + in the visibility field), `'val'` (store in the value), or `'tab'` (store in a + separate table). Default: `'val'`. +- `default_vis`: when storing a signature in the visibility field of a cell, if + the visibility field was previously empty, we add a default attribute to that + cell that all users have access to. This is configurable by this argument, + whose default value is `UNCLASS`. +- `sign`: whether or not to sign the data. Default: `True`; set to `False` when + you only want to insert the data by itself into Accumulo, such as to compare + the size overhead between signed and unsigned data. + +Dual to this, we also define `run_verify()`, which retrieves and verifies the +signatures of all values in a given Accumulo table: + +```python +def run_verify(conn, table, signClass, pubkey, loc): + ... +``` + +These arguments are the same as above, with the exceptions of `data`, which is +not present as an argument to `run_verify()`, and `pubkey`, which replaces +`privkey` and is used to verify the signatures stored in the table. + +## Usage + +First, we can sign and insert data into Accumulo: + +``` +>>> run_insert(table='sig_demo') +Inserting signed row: Mission A, value: 0200 +Inserting signed row: Mission B, value: 2200 +Inserting signed row: Mission C, value: 1000 +Inserting signed row: Mission D, value: 0300 +Inserting signed row: Mission E, value: 1100 +>>> +``` + +We can then verify the data we just inserted: + +``` +>>> run_verify(table='sig_demo') +Finished, with 5 successes out of 5 total entries. +>>> +``` + +The server can see both the data stored, and the signature of that data (in this +case, stored in the value field as directed by the default value for `loc`): + +``` +root@server> scan -t sig_demo +Mission A : [UNCLASS] +PyCryptopp_ECDSA|5k7/xi1gbUSmctbKVaKitR4nV9f86nbns21SZPbX6HJc3aPB8F2AHMtbcM6CUp6WP8WqXU8x5frUFcDvjTACwg==|0200 +root@server> +``` + +In this case, there are three elements stored in the value field, denoted by +pipe characters: + +- The name of the signature algorithm used, in this case `PyCryptopp_ECDSA`. +- The cell's signature. +- The value, in this case `0200`. + +If the malicious server would like to modify or add a value, they can do so: + +``` +root@server> table sig_demo +root@server sig_demo>nsert "Mission A" "" "" +PyCryptopp_ECDSA|5k7/xi1gbUSmctbKVaKitR4nV9f86nbns21SZPbX6HJc3aPB8F2AHMtbcM6CUp6WP8WqXU8x5frUFcDvjTACwg==|2200 +-l UNCLASS +root@server sig_demo> insert "Mission F" "" "" +PyCryptopp_ECDSA|5k7/xi1gbUSmctbKVaKitR4nV9f86nbns21SZPbX6HJc3aPB8F2AHMtbcM6CUp6WP8WqXU8x5frUFcDvjTACwg==|0400 +-l UNCLASS +root@server sig_demo> +``` + +This overwrites the prior value for Mission A with 2200, and adds a new mission, +Mission F, with value 0400. However, note that the server uses the original +signature from Mission A for both of these spurious fields. Since it is +computationally intractable for the server to determine the signature for data +if it does not have the corresponding signing key, it cannot do better than this +signature here, and consequently the client can detect these malicious changes: + +``` +>>> run_verify(table='sig_demo') +Error: Entry failed to verify. +Entry row: Mission A +Entry val: 2200 +Error message: Failed to verify the signature + +Error: Entry failed to verify. +Entry row: Mission F +Entry val: 0400 +Error message: Failed to verify the signature + +Finished, with 4 successes out of 6 total entries. +>>> +``` + +We can also try storing the signature in different locations: + +``` +>>> run_insert(table='sig_demo_vis', loc='vis') +... +>>> run_insert(table='sig_demo_tab', loc='tab') +... +>>> +``` + +``` +root@server> scan -t sig_demo_vis +Mission A : +[UNCLASS|",PyCryptopp_ECDSA,ntDBZaoqHl/IqfKteOe2io1ycmKQl4bNLkWy6aTuwT++o1jXN7eQzZpOEm3n8YoYfAwRcv36WHEThDamPlH+Og==,"] +0200 +... +root@server> scan -t sig_demo_tab +Mission A : [UNCLASS] 0200 +... +root@server> +``` + +Note that when the signatures are stored in a separate table, the signed cell +looks exactly how it would look without using signatures at all. The signatures +themselves are stored in a separate table, generated by prepending +`'__sig_metadata__'` to the name of the original table: + +``` +root@server> root@pace-liz sig_demo> scan -t __sig_metadata__sig_demo_tab +('Mission A', '', '', 'UNCLASS', None) : [UNCLASS] +PyCryptopp_ECDSA,kWS4OdjJyjO4HKxAhy/DfzAkBsd5HL6rh/kjpOVNXO97z7hlOtK9YMnRwDUzBPV/w6/01K+XGnBakJsBOv5CPg== +... +root@server> +``` + +This separate table stores mappings from a key in the original table to the +signature corresponding to the cell with that key, allowing the user to look +up signatures as they receive query results. diff --git a/pace/signatures/README.md b/pace/signatures/README.md new file mode 100644 index 0000000..ea1d432 --- /dev/null +++ b/pace/signatures/README.md @@ -0,0 +1,400 @@ +DISTRIBUTION STATEMENT A. Approved for public release: distribution unlimited. + +This material is based upon work supported by the Department of Defense under Air Force Contract +No. FA8721-05-C-0002 and/or FA8702-15-D-0001. Any opinions, findings, conclusions or +recommendations expressed in this material are those of the author(s) and do not +necessarily reflect the views of the Department of Defense. + +© 2015 Massachusetts Institute of Technology. + +MIT Proprietary, Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014) + +The software/firmware is provided to you on an As-Is basis + +Delivered to the US Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 +or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this +work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of +this work other than as specifically authorized by the U.S. Government may violate any +copyrights that exist in this work. + +# Accumulo Signatures + +This is a Python library for client-side signing of Accumulo database entries. +It provides a function to automatically sign every entry in a pyaccumulo +mutation in an unmodified Accumulo instance. Cryptographic signatures provide a +technical solution to guarantee end-to-end integrity of client data from +insertion to retrieval. Specifically, since malicious parties can not forge +signatures, by signing all data items inserted into Accumulo, a client can +verify that the data has remained unchanged. + +## Installation + +### Dependencies + +This project depends on several other Python libraries and utilities. They are +listed below with links to their project pages. In addition to these packages, +it also requires a running Accumulo instance. + +- [nosetests](https://nose.readthedocs.org/en/latest/), version 1.3.3+. +- [pyaccumulo](https://pypi.python.org/pypi/pyaccumulo), version 1.5.0.6+. +- [pycrypto](https://www.dlitz.net/software/pycrypto/), experimental release +- 2.7a1. +- [pycryptopp](https://github.com/tahoe-lafs/pycryptopp), development version. + We rely on 256-bit ECDSA signatures, which are not supported by the latest + official release of `pycryptopp`. The latest version as of 16 September 2013, + hosted on the project's github page, is the version we use. + +## Use + +To use the signature code, you must first import the signature module. You can +then create an AccumuloSigner with your private key. + +```python +import pace.signatures.sign +signer = AccumuloSigner(privkey) +``` + +There are several optional arguments to the `AccumuloSigner` constructor, as +follows: + +- `sig_f`: the signature function to be used. Must be one of the classes + defined in `acc_sig.py` (as described below), and must be compatible with the + private key provided as the first argument to the constructor. Default: + `PyCryptopp_ECDSA_AccSig`. + +- `default_visibility`: the name of the default visibility label, held by all + users. Default: `"default"`. + +- `signerID`: an optional identifier for the entity signing entries with the + AccumuloSigner. This allows users to dynamically look up the verifying key to + use to verify entries in the database (e.g. with some sort of public key + infrastructure). If `None`, the object created will not write a signer ID to + the metadata. Default: `None`. + +- `conf`: a configuration object that stores information about the Accumulo + database that both signers and verifiers need to have access to. This + currently tells the Accumulo database where to store the signatures. Default: + `VisibilityFieldConfig()`, which creates a new object that tells the signer to + store signature metadata in the visibility field. See `signconfig.py` for more + details and alternatives. + +### Signing entries + +Once you have an `AccumuloSigner` defined, you can sign a mutation created by +pyaccumulo: + +```python +signer.sign_mutation(mutation, table) +``` + +where `table` is either `None` if the table name should not be included in the +signature (the default behavior), or the name of the table `mutation` will be +written to. + +This is the only additional step needed when creating a mutation to write to an +Accumulo database. + +### Verifying entries + +Verifying an entry requires an `AccumuloVerifier`, similar to signing an entry. +This function can be called in two different ways. In the first way, the public +key for everything being verified is known beforehand, so it is passed to the +verifier upon creation: + +```python +verifier = AccumuloVerifier(pubkey) +``` + +If the signer included their unique ID in the signature metadata, the verifier +instead needs to take a PKI object (see below) as an argument, to be able to +look up the verifying key and the signature algorithm used: + +```python +verifier = AccumuloVerifier(pki) +``` + +The `AccumuloVerifier` constructor also has an optional configuration argument, +as described above. It is important to make sure the configuration expected by +the verified matches the configuration supplied by the signer, or else the +verifier may look for metadata in the wrong place and fail. + +To verify an entry with an `AccumuloVerifier`, one calls the `verify_entry` +method, as follows: + +```python +verifier.verify_entry(raw_entry, table) +``` + +The first argument is the entry in the Accumulo table, including its metadata. +The second argument should be the name of the table the entry is in if that was +included in the signature, or `None` if the signature is independent of the +table. The default value for `table` is `None`. + +The `verify_entry` method will return the entry cell without signature metadata +if the verification was successful. If not, it will raise a +`VerificationException`. This exception has two relevant fields: `msg`, for an +error message, and `cell`, which can contain either `None` if the verification +method failed before the actual signature verification stage (such as, for +instance, if it ran into malformed metadata), or the cell with the metadata +parsed out. This is useful for providing informative error messages when the +metadata is stored in the value field. + +### Use example + +```python +>>> # Imports +>>> import pyaccumulo +>>> import pace.signatures.sign +>>> import pace.signatures.verify +>>> from pace.signatures.signconfig import VerificationException +>>> +>>> from pace.signatures.acc_sig import PyCryptopp_ECDSA_AccSig +>>> +>>> # Connection setup +>>> conn = pyaccumulo.Accumulo(host='localhost', port='42424', user='root', password='secret') +>>> pubkey, privkey = PyCryptopp_ECDSA_AccSig.test_keys() +>>> +>>> # Create the signer and mutation +>>> signer = sign.AccumuloSigner(privkey, sig_f=PyCryptopp_ECDSA_AccSig) +>>> mutation = pyaccumulo.Mutation('test_row') +>>> mutation.put(cf='test_column_family', cq='test_cq', cv='default', val='this is a test value') +>>> +>>> # Sign the mutation and write it to a table +>>> signer.sign_mutation(mutation) +>>> conn.create_table('demo_table') +>>> wr = conn.create_batch_writer('demo_table') +>>> wr.add_mutation(mutation) +>>> wr.close() +>>> +>>> # Create the verifier +>>> verifier = verify.AccumuloVerifier(pubkey) +>>> +>>> # Read the entry and verify its signature +>>> for entry in conn.scan('demo_table'): +... try: +... verifier.verify_entry(entry) +... print 'verification succeeded' +... except VerificationException as ve: +... print 'verification failed:', ve.msg +... if ve.cell is not None: +... print 'row:', ve.cell.row +... print 'val:', ve.cell.val +... +verification succeeded +``` + +### PKI Objects + +As mentioned above, verifiers can take in a public key interface (PKI) object as +an argument to use to look up a signer's keys. These objects are defined in the +directory `pace/pki/`, and more can be read about them in that +directory's README. We provide an abstract interface for PKIs that support +signature schemes and two implementations of this interface. + +The class `SignatureMixin`, found in `signaturepki.py`, defines a method +`get_verifying_key(self, identifier)` for PKIs whose returned profiles contain a +`verifying_key` field and a `signature_scheme` field. This file also contains a +simple implementation of the PKI interface just for signatures, +`DummySignaturePKI`, used mostly for testing. + +In `manualtruststore.py`, there is a more practical implementation of a +signature PKI in the form of a manually populated store of trusted entities, the +signature schemes they use, and their associated public keys. These can be +stored in a local file, where each entry contains three parts: one line for the +user's identifier, one line for the name of the signature algorithm they are +using (as defined in `vars.py`), and an arbitrary number of lines enclosed with +a public key header and footer that contain the relevant public key. For +example, if user `jdoe` wishes to store the key `ABCDE` using the PyCryptopp +implementation of ECDSA, the entry would be: + +``` +jdoe +ECDSA +-----BEGIN PUBLIC KEY----- +ABCDE +-----END PUBLIC KEY----- +``` + +In order to create a manual trust store object, one must call its constructor on +a path to the desired trust store file: + +```python +ts = ManualTrustStore('keys/trust_store.txt') +``` + +One can then proceed to use `ts` as an argument to any signature code that +requires a PKI argument. + +## Signature Algorithms + +We provide a variety of options for what signature algorithm to use, each with +its own benefits and drawbacks. A brief description of them follows. + +### RSA + +Two different forms of RSA signatures are supported: PKCS1-v1-5 and PKCS1-PSS. + +### Elliptic Curves + +`Ecdsa` signatures are supported via the `pycryptopp` package. This package is +a Python wrapper for C++ code, specifically the `Crypto++` library. We currently +support 256-bit ECDSA on NIST-approved curve `secp256r1`. + +### Best Practices + +Currently, for performance and security reasons, we suggest using ECDSA via +`pycryptopp`, or if that is not an option, PKCS1-PSS, which is preferred to +PKCS1-v1-5 as it is robust (according to page 27 of +[RFC3447](http://www.ietf.org/rfc/rfc3447.txt)) without sacrificing significant +performance. + +### Adding your own signatures + +It is possible to add your own signature functions to this code. The interface +for a signature (defined in the `AbstractAccSig` class in `acc_sig.py`) requires +four definitions, as follows: + +- `name`: the name of the signing algorithm as a string. Used to store the + identity of the algorithm used as metadata in the Accumulo cell, and as a key + in a Python dictionary. + +- `sign(hash_value, privkey)`: a function that signs the hashed value of an + entry with the private key. Returns the signature of `hash_value` with + `privkey`. + +- `verify(hash_value, signature, pubkey)`: a function that verifies a hash value + against a signature and public key. Returns `True` if `signature` is a valid + result of signing `hash_value` with the private key corresponding to `pubkey`, + and `False` otherwise. + +- `test_keys()`: returns a pair `(test_pubkey, test_privkey)` of a public and + private key to be used for testing the signature algorithm. + +- `parse_key()`: a function that takes a string as an argument and attempts to + parse it into a verifying key for the class's signature algorithm. If it + succeeds, it returns that verifying key; if it fails, it raises a + `KeyParseError`. + +- `serialize_key()`: a function that takes a verifying key and returns a + serialization of that key as a string. This should be an inverse of + `parse_key()`; that is, keys parsed, serialized, then parsed again should + return the same verifying key after each parsing step. + +Adding a signature algorithm takes two steps: + +1. In `acc_sig.py`, implement the new algorithm in a new class ascribing to the +signature defined above. + +2. In `vars.py`, add that new class to the variable `ALL_SIGNATURES`, and add a +mapping from the new signature algorithm's name to the new class in +`SIGNATURE_FUNCTIONS`. + +After doing this, the new class can be used as an argument to the +`AccumuloSigner` constructor, and the testing framework (described below) will +automatically test it when run. + +## Configuration Objects + +Both signer and verifier objects take an optional configuration object as an +argument, as explained above. Configuration objects are a generic way of +representing configuration options common to both signers and verifiers. +Currently, the one option they support is where to store the signature metadata. + +There are three options for metadata locations: + +- Appended to the end of the visibility field +- Prepended to the beginning of the value field +- In a separate entry in a separate metadata table + +### Creating configuration objects + +We provide a function in `signconfig.py` called `new_config` to simplify the +process of creating new configuration objects to pass in to signer and verifier +objects. It takes a configuration file object and an Accumulo connection as +arguments: + +```python +new_config(config_file, conn) +``` + +The config file should have a section called `Location`. The options for +this section are as follows: + +- `loc`: where to store the signature metadata. Options are `vis` for the cell's + visibility field, `val` for the cell's value field, and `tab` for a separate + metadata table. If the option chosen is `tab`, the rest of the options listed + in this section must also be provided. Default: `vis`. + +- `is_batch`: whether to batch the elements inserted into the signature metadata + table (if `yes`) or to stream them (if `no`). + +- `metadata_table`: the name of the table to store the signature metadata in. + +An example of a config file for writing batches of signature metadata to a table +called `__signature_metadata__` is as follows: + +```cfg +[Location] +loc : tab +is_batch : yes +metadata_table : __signature_metadata__ +``` + +This and other configuration file examples can be found in the `cfg/` directory. +Below is an example of how to use a configuration file: + +```python +>>> from pyaccumulo import Accumulo +>>> from pace.signatures.signconfig import new_config +>>> +>>> conn = Accumulo(port=42424) +>>> +>>> with open('cfg/batch_test.cfg', 'r') as cfg_file: +... cfg = new_config(cfg_file, conn) +... +>>> cfg + +>>> signer = AccumuloSigner(privkey, conf=cfg) +>>> verifier = AccumuloVerifier(pubkey, conf=cfg) +``` + +### Configuration object methods + +There are five methods over `SignConfig` objects. Two of them, `add_signature` +and `split_entry`, are only used inside the library and do not need to be used +by the user, but the other three are called by the user when the metadata is +being written to a separate table: + +- `start_batch(self)` should be called when the user starts a batch to be + created to insert into Accumulo. This should be around when a new pyaccumulo + `BatchWriter` object is created. + +- `update_batch(self, mutation)` should be called on each mutation that is + entered into the batch. + +- `end_batch(self)` should be called at the end of each batch. This should + correspond to a call to `BatchWriter.close()`. + +## Testing the code + +We use a combination of nosetests for unit tests, and a larger python test +script to test against a running Accumulo instance. The unit tests can be run +just by running `nosetests` from the shell in the `pace/signatures/` +directory with nosetests installed. + +The larger test scripts require a running Accumulo instance to run against. They +are located in the file `test_main.py`, and are invoked automatically by the +script `test.sh` with the arguments defined in that file, as follows: + +- `TABLE`: the prefix to use for the tables created in the test. Default: + `"newtest"` +- `HOSTNAME`: the hostname of the Accumulo instance to connect to. Default: + `"localhost"` +- `PORT`: the port to connect to the Accumulo instance on. Default: `"42424"` +- `USER`: the username to log in to the Accumulo instance with. Default: + `"root"` +- `PASSWORD`: the password for `USER`. Default: `"secret"` + +To change any of these, modify the relevant variable in `test.sh`. Note that +these will only change the defaults in the test script; the defaults in the +python test file will remain the same when you invoke it from the command line. diff --git a/pace/signatures/__init__.py b/pace/signatures/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pace/signatures/acc_sig.py b/pace/signatures/acc_sig.py new file mode 100644 index 0000000..c070e01 --- /dev/null +++ b/pace/signatures/acc_sig.py @@ -0,0 +1,257 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Classes for various signature algorithms +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 9 Jul 2014 ZS Original file +## ************** + +from Crypto.Signature import PKCS1_v1_5 +from Crypto.Signature import PKCS1_PSS +from Crypto.PublicKey import RSA +from Crypto.Hash import SHA256 +from pycryptopp.publickey import ecdsa +from pycryptopp.publickey import ed25519 + +from hashlib import sha256 +from abc import ABCMeta, abstractmethod + +import hmac +import os +import logging +import base64 + + +class AbstractAccSig(object): + """ Defines the interface for accumulo code to sign data and + verify signatures. This is needed because the PyCrypt + library's interface is not shared by all cryptographic + libraries, nor is it the most intuitive interface. + """ + + __metaclass__ = ABCMeta + + name = '' + + @abstractmethod + def sign(msg, privkey): + """ Input: + msg - the message to sign + privkey - the private key of the corresponding crypto algorithm + + Returns: + The result of signing msg with privkey. + """ + pass + + @abstractmethod + def verify(msg, signature, pubkey): + """ Input: + msg - the message to verify the signature of + signature - the signature to test against msg + pubkey - a public key of the corresponding crypto algorithm + + Returns: + True if signature verifies against msg with pubkey, + False otherwise + """ + pass + + + @abstractmethod + def test_keys(): + """ Returns: + test_pubkey: the public key to use for testing + test_privkey: the private key to use for testing + """ + pass + + @classmethod + def parse_key(cls, s): + """ Parse a key string into its internal representation. + By default, this is not implemented and raises an exception. + + Input: + + s: the ASCII string to parse the key from, including header + and footer. + + Returns: + The corresponding public key. + """ + + raise NotImplementedError( + 'ERROR: parse_key() not implemented for class %s' %cls.name) + + @classmethod + def serialize_key(cls, key): + """ Serialize a key into a string to store in a file. + By default, this is not implemented and raises an exception. + + Input: + + key: the key to create the key from. + + Returns: + A string representation of the key, including header and footer. + + Raises: + KeyParseError, if the key cannot be parsed + NotImplementedError, if this is not implemented for the + class calling it + """ + + raise NotImplementedError( + 'ERROR: serialize_key() not implemented for class %s' %cls.name) + +class KeyParseError(Exception): + def __init__(self, msg): + self.msg = msg + +class PKCS1_PSS_AccSig(AbstractAccSig): + """ AccSig for PKCS1_PSS (RSA signatures) + """ + + name = 'RSASSA-PSS' + + @staticmethod + def sign(msg, privkey): + signer = PKCS1_PSS.new(privkey) + return signer.sign(SHA256.new(msg)) + + @staticmethod + def verify(msg, signature, pubkey): + verifier = PKCS1_PSS.new(pubkey) + return verifier.verify(SHA256.new(msg), signature) + + @staticmethod + def test_keys(): + with open(os.path.dirname(os.path.realpath(__file__)) + + '/keys/test_pubkey_3072.rsa') as pubkey: + with open(os.path.dirname(os.path.realpath(__file__)) + + '/keys/test_privkey_3072.rsa') as privkey: + test_pubkey = RSA.importKey(pubkey.read()) + test_privkey = RSA.importKey(privkey.read()) + + return test_pubkey, test_privkey + + @staticmethod + def parse_key(s): + try: + return RSA.importKey(s) + except ValueError: + raise KeyParseError('Problem parsing RSASSA-PSS key') + + @staticmethod + def serialize_key(key): + return key.exportKey() + +class PKCS1_v1_5_AccSig(AbstractAccSig): + """ AccSig for PKCS1_v1_5 (RSA signatures) + """ + + name = 'RSASSA_PKCS1-v1_5' + + @staticmethod + def sign(msg, privkey): + signer = PKCS1_v1_5.new(privkey) + return signer.sign(SHA256.new(msg)) + + @staticmethod + def verify(msg, signature, pubkey): + verifier = PKCS1_v1_5.new(pubkey) + return verifier.verify(SHA256.new(msg), signature) + + @staticmethod + def test_keys(): + with open(os.path.dirname(os.path.realpath(__file__)) + + '/keys/test_pubkey_3072.rsa') as pubkey: + with open(os.path.dirname(os.path.realpath(__file__)) + + '/keys/test_privkey_3072.rsa') as privkey: + test_pubkey = RSA.importKey(pubkey.read()) + test_privkey = RSA.importKey(privkey.read()) + + return test_pubkey, test_privkey + + @staticmethod + def parse_key(s): + try: + return RSA.importKey(s) + except ValueError: + raise KeyParseError('Problem parsing RSASSA_PKCS1-v1_5 key') + + @staticmethod + def serialize_key(key): + return key.exportKey() + + +class PyCryptopp_ECDSA_AccSig(AbstractAccSig): + """ AccSig for elliptic curve cryptography signatures, using the + ecdsa module. Uses 256-bit signing keys. + """ + + name = 'PyCryptopp_ECDSA' + + @staticmethod + def sign(msg, privkey): + return privkey.sign(SHA256.new(msg).digest()) + + @staticmethod + def verify(msg, signature, pubkey): + return pubkey.verify(SHA256.new(msg).digest(), signature) + + @staticmethod + def test_keys(): + test_privkey = ecdsa.SigningKey("testseedtestseedtestseedtestseed") + test_pubkey = test_privkey.get_verifying_key() + return test_pubkey, test_privkey + + @staticmethod + def parse_key(s): + lines = s.split('\n') + keystr64 = ''.join(lines[1:-2]) + + try: + keystr = base64.b64decode(keystr64) + except TypeError: + raise KeyParseError('Error decoding base64 keystring for ECDSA key') + + try: + return ecdsa.VerifyingKey(keystr) + except ecdsa.Error: + raise KeyParseError('Error parsing ECDSA key') + + @staticmethod + def serialize_key(key): + ser = key.serialize() + ser64 = base64.b64encode(ser) + return '-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY-----\n' %ser64 + + +class Symmetric_HMAC_SHA256_AccSig(AbstractAccSig): + """ AccSig for symmetric key MACs (not asymmetric signatures). + + Using symmetric key crypto requires different trust assumptions + (namely, that all clients have a shared secret that the server does + not know about), but empirically runs 2-3 orders of magnitude + faster than the public key algorithms. See hybrid/prelim.py for + benchmarks comparing it to PyCrypto++'s ECDSA implementation. + """ + + name = 'HMAC-SHA256' + + @staticmethod + def sign(msg, privkey): + return hmac.new(privkey, msg, sha256).digest() + + @staticmethod + def verify(msg, signature, pubkey): + return signature == hmac.new(pubkey, msg, sha256).digest() + + @staticmethod + def test_keys(): + key = b'thisisathirtytwobytestringtotest' + return key, key diff --git a/pace/signatures/benchmark_results.csv b/pace/signatures/benchmark_results.csv new file mode 100644 index 0000000..ee23317 --- /dev/null +++ b/pace/signatures/benchmark_results.csv @@ -0,0 +1,37 @@ +num entries,name,sign time,verification time +4,RSASSA_PKCS1-v1_5,0.01,0.0 +4,PyCryptopp_ECDSA,0.01,0.01 +4,RSASSA-PSS,0.01,0.0 +8,RSASSA_PKCS1-v1_5,0.05,0.01 +8,PyCryptopp_ECDSA,0.0,0.02 +8,RSASSA-PSS,0.03,0.0 +16,RSASSA_PKCS1-v1_5,0.08,0.01 +16,PyCryptopp_ECDSA,0.01,0.05 +16,RSASSA-PSS,0.08,0.01 +32,RSASSA_PKCS1-v1_5,0.18,0.03 +32,PyCryptopp_ECDSA,0.03,0.08 +32,RSASSA-PSS,0.18,0.03 +64,RSASSA_PKCS1-v1_5,0.37,0.06 +64,PyCryptopp_ECDSA,0.04,0.15 +64,RSASSA-PSS,0.37,0.05 +128,RSASSA_PKCS1-v1_5,0.75,0.11 +128,PyCryptopp_ECDSA,0.09,0.3 +128,RSASSA-PSS,0.74,0.11 +256,RSASSA_PKCS1-v1_5,1.5,0.23 +256,PyCryptopp_ECDSA,0.18,0.58 +256,RSASSA-PSS,1.48,0.21 +512,RSASSA_PKCS1-v1_5,3.04,0.43 +512,PyCryptopp_ECDSA,0.35,1.19 +512,RSASSA-PSS,2.94,0.42 +1024,RSASSA_PKCS1-v1_5,6.0,0.86 +1024,PyCryptopp_ECDSA,0.71,2.38 +1024,RSASSA-PSS,6.03,0.84 +2048,RSASSA_PKCS1-v1_5,11.91,1.73 +2048,PyCryptopp_ECDSA,1.43,4.81 +2048,RSASSA-PSS,12.07,1.68 +4096,RSASSA_PKCS1-v1_5,24.23,3.59 +4096,PyCryptopp_ECDSA,2.79,9.68 +4096,RSASSA-PSS,24.76,3.52 +8192,RSASSA_PKCS1-v1_5,48.31,6.91 +8192,PyCryptopp_ECDSA,5.68,19.18 +8192,RSASSA-PSS,48.38,7.01 diff --git a/pace/signatures/benchmarker.py b/pace/signatures/benchmarker.py new file mode 100644 index 0000000..0f3f054 --- /dev/null +++ b/pace/signatures/benchmarker.py @@ -0,0 +1,454 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Benchmark framework for signature code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 30 Oct 2014 CS Original file +## ************** + +import random +from pyaccumulo import Accumulo, Mutation, Range +import time, datetime +from Crypto.PublicKey import RSA + +from pace.signatures.sign import AccumuloSigner +from pace.signatures.signconfig import VerificationException +from pace.signatures.vars import ALL_SIGNATURES, SUPPORTED_SIGNATURES, SIGNATURE_FUNCTIONS +from pace.signatures.sign_utils import write_and_sign_data, write_data, sanitize, verify_data, generate_data +from pace.signatures.acc_sig import PKCS1_v1_5_AccSig, PyCryptopp_ECDSA_AccSig +from pace.signatures.signconfig import new_config +from pace.signatures.signaturepki import SignatureMixin, SigTuple + +from pace.pki.dictpki import DictPKI + +class SignedDictPKI(DictPKI, SignatureMixin): + pass + +test_ids = [('pkcsv1_test', PKCS1_v1_5_AccSig), + ('ecdsa_test', PyCryptopp_ECDSA_AccSig)] + +test_pki = SignedDictPKI({'pkcsv1_test' : (PKCS1_v1_5_AccSig.test_keys()[0], + PKCS1_v1_5_AccSig.name), + 'ecdsa_test' :(PyCryptopp_ECDSA_AccSig.test_keys()[0], + PyCryptopp_ECDSA_AccSig.name)}, + SigTuple) + +class Benchmarker(object): + + BENCHMARKS = [ + (100, 10), + (500, 50), + (1000, 100), + (5000, 500), + (10000, 1000) + ] + + FANCY_BENCHMARKS = [(2 ** i, 2 ** (i-1)) for i in range(2, 14)] + + def __init__(self, + host="localhost", + port=42424, + user="root", + password="secret", + num_trials=100, + filename='default_file.txt', + seed=None, + signer_ids=test_ids, + pki=test_pki): + self.conn = Accumulo(host=host, port=port, user=user, password=password) + self.num_trials = num_trials + self.filename = filename + self.seed = seed + self.signer_ids = signer_ids + self.pki = pki + + def run_test(self, + table="test_table_5", + default_vis="default", + num_entries=100, + num_rows=15, + signClassName='RSASSA_PKCS1-v1_5', + write=True, + benchmark=False): + """ Runs one iteration of the signature test. If benchmark is set to + True, returns the lengths of time it took to sign all the entries + and the time it took to verify all the entries. + """ + + table = sanitize(table) + seed = self.seed + + if signClassName == 'ALL': + for signClass in ALL_SIGNATURES: + self.run_test(table + '_' + sanitize(signClass.name), + default_vis, num_entries, num_rows, + signClass.name, write, benchmark) + return + + signClass = SIGNATURE_FUNCTIONS[signClassName] + + pubkey, privkey = signClass.test_keys() + + if write: + signer = AccumuloSigner(privkey, sig_f = signClass) + + if not seed: + # set a new seed if one wasn't specified + seed = str(time.time()) + + generate_data(self.filename, seed, default_vis=default_vis, + num_entries=num_entries, num_rows=num_rows) + + sout = write_and_sign_data(self.filename, self.conn, table, signer, + benchmark) + + vout = verify_data(self.conn, table, pubkey, benchmark) + + if benchmark: + sign_start, sign_end = sout + verif_success, verif_start, verif_end = vout + + print "Time taken to sign: %s" % str(sign_end - sign_start) + print "Time taken to verify: %s" % str(verif_end - verif_start) + + return sign_end - sign_start, verif_end - verif_start + + def run_benchmarks(self, + table_prefix="benchmarking", + default_vis="default"): + """ Benchmarks each different signature class on a variety of table + sizes, measuring the time taken to sign & verify all entries of each + table size with each signature algorithm. + """ + + table_prefix = sanitize(table_prefix) + + for entries, rows in self.BENCHMARKS: + print "===============================================================" + print "Current benchmark: %d entries over %d rows" %(entries, rows) + print "===============================================================" + print + for signClass in SUPPORTED_SIGNATURES: + table = "%s_%s_e%d_r%d" %(table_prefix, + sanitize(signClass.name), + entries, + rows) + print "Benchmarking %s" % (sanitize(signClass.name)) + self.run_test(table, default_vis, entries, rows, signClass.name, + write=True, benchmark=True) + print + + def run_fancy_benchmarks(self, + table_prefix="benchmarking", + default_vis="default", + resfile="benchmark_results.csv"): + + """ Runs more benchmarks than run_benchmarks(), then writes the output + to a file. + """ + + table_prefix = sanitize(table_prefix) + + results = [] + for entries, rows in self.FANCY_BENCHMARKS: + print "===============================================================" + print "Current benchmark: %d entries over %d rows" %(entries, rows) + print "===============================================================" + print + classres = [] + for signClass in SUPPORTED_SIGNATURES: + table = "%s_%s_e%d_r%d" %(table_prefix, + sanitize(signClass.name), + entries, + rows) + print "Benchmarking %s" % (sanitize(signClass.name)) + sign_time, verif_time = self.run_test( + table, default_vis, entries, rows, signClass.name, + write=True, benchmark=True) + classres.append((signClass.name, sign_time, verif_time)) + print + results.append((entries, classres)) + + print 'time to write to file' + with open(resfile, 'w') as f: + f.write('num entries,name,sign time,verification time\n') + for num_entries, classres in results: + for name, stime, vtime in classres: + f.write(','.join( + [str(num_entries), name, str(stime), str(vtime)])) + f.write('\n') + print 'wrote to file' + + def full_benchmark(self, + table_prefix="full_benchmarking", + default_vis="default", + signClass=None, + num_entries=10000, + num_rows=1000): + """ Either run a single benchmark (sign & verify) on one signature + class, or run it with no signing class (just write & read) to get + a baseline time. + """ + + table_prefix = sanitize(table_prefix) + + conn = self.conn + + if signClass: + table = table_prefix + '_' + sanitize(signClass.name) + else: + table = table_prefix + '_baseline' + + if signClass: + pubkey, privkey = signClass.test_keys() + signer = AccumuloSigner(privkey, sig_f = signClass) + start_time = time.clock() + write_and_sign_data(self.filename, conn, table, signer, + benchmark=False) + end_time = time.clock() + total_sign_time = end_time - start_time + + start_time = time.clock() + verify_data(conn, table, pubkey, benchmark=False) + end_time = time.clock() + total_verif_time = end_time - start_time + else: + start_time = time.clock() + write_data(self.filename, conn, table) + end_time = time.clock() + total_sign_time = end_time - start_time + + count = 0 + start_time = time.clock() + for entry in conn.scan(table): + count += 1 + end_time = time.clock() + total_verif_time = end_time - start_time + + return (total_sign_time, total_verif_time) + + def run_full_benchmarks(self, + table_prefix="full_benchmarking", + default_vis="default", + num_entries=10000, + num_rows=1000, + outfile='full_benchmark_out.csv'): + """ Benchmark each signing algorithm, writing the results to a file, + and comparing them to a baseline write & read with no signatures. + """ + + table_prefix = sanitize(table_prefix) + + n = generate_data(self.filename, self.seed, default_vis=default_vis, + num_entries=num_entries, num_rows=num_rows) + + base_write_time, base_read_time = self.full_benchmark( + table_prefix, default_vis, None, num_entries, num_rows) + + with open(outfile, 'w') as f: + bw = (base_write_time / n) * 1000 + br = (base_read_time / n) * 1000 + f.write(','.join(['name', 'signing time', 'verification time'])) + f.write('\n') + f.write(','.join(['baseline', str(bw), str(br)])) + f.write('\n') + for signClass in SUPPORTED_SIGNATURES: + (st, vt) = self.full_benchmark( + table_prefix, default_vis, signClass, num_entries, num_rows) + + # convert seconds for the whole batch to milliseconds + # per element + st = (st / n) * 1000 + vt = (vt / n) * 1000 + + f.write(','.join([signClass.name, str(st), str(vt)])) + f.write('\n') + + def fastfail_benchmark(self, table): + """ Check how long it takes just to read each element from a table, + to see if there's a difference because of the changed visibility + fields in signed tables. + """ + + table = sanitize(table) + + start = time.clock() + + total = 0 + for e in self.conn.scan(table): + total += 1 + end = time.clock() + + return end - start + + def run_fastfail_benchmarks(self, + table_prefix="fastfail_benchmarking", + default_vis="default", + num_rows=1000, + num_noisy_entries=50000, + num_noisy_rows=1000, + outfile='fastfail_benchmark_out_2.csv', + num_trials=100, + one_vis=False): + """ Benchmark to see how much overhead there is from the signature code + making Accumulo unable to fast-fail and cache results from + visibility field checks. + + If one_vis is False, it will randomly generate a default visibility + value for each field. If it is a string, that string will be treated + as the default visibility value for each 'noise' field. + """ + + table_prefix = sanitize(table_prefix) + + seed = self.seed + noisy_filename = 'noisy_' + self.filename + + if not seed: + # set a new seed if one wasn't specified + seed = str(time.time()) + + if one_vis: + print 'generating noise with one visibility field' + generate_data(noisy_filename, seed, vis=False, default_vis=one_vis, + num_entries=num_noisy_entries, num_rows=num_rows) + else: + print 'generating noise with random visibility fields' + generate_data(noisy_filename, seed, vis=True, + num_entries=num_noisy_entries, num_rows=num_rows) + + noisy_table = 'noisy_' + table_prefix + + write_data(noisy_filename, self.conn, noisy_table) + + for sc in SUPPORTED_SIGNATURES: + pubkey, privkey = sc.test_keys() + signer = AccumuloSigner(privkey, sig_f = sc) + write_and_sign_data(noisy_filename, + self.conn, + '_'.join([table_prefix, sanitize(sc.name)]), + signer) + + all_times = [] + + for n in [(num_noisy_entries/10000) * (10 ** i) + for i in range(6)]: + + print 'n:', n + + generate_data(self.filename, str(time.time()), + default_vis=default_vis, num_entries=n, + num_rows=min(n, num_rows)) + write_data(self.filename, self.conn, noisy_table) + + base_time = sum([self.fastfail_benchmark(noisy_table) + for j in range(num_trials)]) + times = [] + + for signClass in SUPPORTED_SIGNATURES: + + pubkey, privkey = signClass.test_keys() + signer = AccumuloSigner(privkey, sig_f = signClass) + table = '_'.join([table_prefix, sanitize(signClass.name)]) + + write_and_sign_data(self.filename, self.conn, table, signer) + + times.append((signClass.name, + sum([self.fastfail_benchmark(table) + for j in range(num_trials)]))) + + all_times.append((n, base_time, times)) + + with open(outfile, 'w') as f: + for num_elems, base_time, trials in all_times: + + print 'Trial for %d elements. Base time: %s' %( + num_elems, str(base_time)) + + f.write('%d,BASE,%s\n' %(num_elems, str(base_time))) + + for name, ttime in trials: + print '\t%s: %s' %(name, str(ttime)) + f.write('%d,%s,%s\n' %(num_elems, name, str(ttime))) + print + + def id_test(self, + table_prefix="id_test", + default_vis="default", + num_entries=10000, + num_rows=1000): + + table_prefix = sanitize(table_prefix) + + generate_data(self.filename, self.seed, default_vis=default_vis, + num_entries=num_entries, num_rows=num_rows) + + for signer_id, sigclass in self.signer_ids: + + _, privkey = sigclass.test_keys() + table = table_prefix + '_' + sanitize(signer_id) + + signer = AccumuloSigner(privkey, sig_f=sigclass, + signerID=signer_id) + write_and_sign_data(self.filename, + self.conn, + table, + signer) + verify_data(self.conn, table, self.pki, sigclass) + + def table_test(self, + table_prefix="table_test1", + default_vis="default", + num_entries=10000, + num_rows=1000): + + table_prefix = sanitize(table_prefix) + + generate_data(self.filename, self.seed, default_vis=default_vis, + num_entries=num_entries, num_rows=num_rows) + + for signer_id, sigclass in self.signer_ids: + + _, privkey = sigclass.test_keys() + + table = table_prefix + '_' + sanitize(signer_id) + + signer = AccumuloSigner(privkey, sig_f=sigclass) + write_and_sign_data(self.filename, + self.conn, + table, + signer, + include_table=True) + verif_key, _ = self.pki.get_verifying_key(signer_id) + verify_data(self.conn, table, verif_key, False, include_table=True) + + def location_test(self, + cfg_file, + table_prefix="table_test1", + default_vis="default", + num_entries=10000, + num_rows=1000): + + table_prefix = sanitize(table_prefix) + '_' + sanitize(loc) + + generate_data(self.filename, self.seed, default_vis=default_vis, + num_entries=num_entries, num_rows=num_rows) + + for signer_id, sigclass in self.signer_ids: + + _, privkey = sigclass.test_keys() + + table = table_prefix + '_' + sanitize(signer_id) + + conf = new_config(cfg_file, self.conn) + + signer = AccumuloSigner(privkey, sig_f=sigclass, conf=conf) + write_and_sign_data(self.filename, + self.conn, + table, + signer) + verif_key, _ = self.pki.get_verifying_key(signer_id) + verify_data(self.conn, table, verif_key, False, conf=conf) diff --git a/pace/signatures/cfg/batch_test.cfg b/pace/signatures/cfg/batch_test.cfg new file mode 100644 index 0000000..36e492b --- /dev/null +++ b/pace/signatures/cfg/batch_test.cfg @@ -0,0 +1,4 @@ +[Location] +loc : tab +is_batch : yes +metadata_table : __signature_metadata__ diff --git a/pace/signatures/cfg/stream_test.cfg b/pace/signatures/cfg/stream_test.cfg new file mode 100644 index 0000000..b65af1a --- /dev/null +++ b/pace/signatures/cfg/stream_test.cfg @@ -0,0 +1,4 @@ +[Location] +loc : tab +is_batch : no +metadata_table : __signature_metadata__ diff --git a/pace/signatures/cfg/value_test.cfg b/pace/signatures/cfg/value_test.cfg new file mode 100644 index 0000000..665b0a5 --- /dev/null +++ b/pace/signatures/cfg/value_test.cfg @@ -0,0 +1,2 @@ +[Location] +loc : val diff --git a/pace/signatures/default_file.txt b/pace/signatures/default_file.txt new file mode 100644 index 0000000..7e0a7f0 --- /dev/null +++ b/pace/signatures/default_file.txt @@ -0,0 +1,10000 @@ +000000001 000043122 000229379 default 040022089 +000000001 000251727 000260940 default 024374609 +000000001 000283542 000448089 default 030181919 +000000001 000391942 000550149 default 061624086 +000000001 000621042 000561351 default 019044300 +000000001 000642761 000572200 default 011212952 +000000001 000680200 000648770 default 089258081 +000000001 000686389 000739315 default 054540209 +000000001 000687289 000780810 default 029098809 +000000001 000710287 000917284 default 009175527 +000000002 000001762 000002114 default 049445405 +000000002 000041481 000054798 default 096122320 +000000002 000103492 000278014 default 028685364 +000000002 000197537 000296383 default 069398102 +000000002 000212578 000479662 default 012082390 +000000002 000466663 000501072 default 056927766 +000000002 000667474 000511312 default 091970059 +000000002 000778818 000624342 default 054427304 +000000002 000801297 000681775 default 090693944 +000000002 000849987 000949085 default 017692156 +000000003 000385155 000019744 default 019320936 +000000003 000412427 000153185 default 093112053 +000000003 000534514 000159137 default 097194995 +000000003 000618248 000267820 default 027601844 +000000003 000665045 000391503 default 093865472 +000000003 000751187 000431090 default 083610434 +000000003 000886704 000456500 default 081089290 +000000003 000902714 000657688 default 044855482 +000000003 000966377 000757776 default 021162863 +000000003 000977340 000784060 default 019375234 +000000004 000159253 000424759 default 086103686 +000000004 000283755 000473971 default 011368438 +000000004 000424785 000492199 default 087610396 +000000004 000479566 000534561 default 035741133 +000000004 000577583 000591645 default 036858912 +000000004 000599675 000723988 default 094726237 +000000004 000643887 000729414 default 078073119 +000000004 000674749 000929725 default 030097964 +000000004 000809575 000958597 default 071639480 +000000004 000867613 000983520 default 071710109 +000000005 000017983 000026904 default 053337371 +000000005 000183048 000187041 default 075089307 +000000005 000195357 000202055 default 011114958 +000000005 000204699 000317615 default 087217933 +000000005 000329733 000374713 default 074028051 +000000005 000427749 000383634 default 065221857 +000000005 000750671 000548994 default 003321414 +000000005 000843647 000752466 default 048806471 +000000005 000912573 000787181 default 097128289 +000000005 000916111 000878200 default 086824519 +000000006 000001713 000008719 default 035090062 +000000006 000090756 000262333 default 001358672 +000000006 000107213 000344304 default 001110839 +000000006 000332994 000480613 default 024044311 +000000006 000481872 000497425 default 034941930 +000000006 000545513 000614916 default 093494781 +000000006 000603362 000621798 default 015890079 +000000006 000942174 000655793 default 031756600 +000000006 000944279 000750287 default 002281638 +000000006 000957883 000925977 default 010798694 +000000007 000164892 000238052 default 097512934 +000000007 000222865 000504265 default 033763667 +000000007 000292212 000570539 default 083144839 +000000007 000450237 000612432 default 030569586 +000000007 000508675 000626989 default 063139287 +000000007 000825648 000644650 default 097288174 +000000007 000847176 000663007 default 065396820 +000000007 000860542 000692772 default 083673230 +000000007 000888577 000725363 default 000370873 +000000007 000935336 000924126 default 071230424 +000000008 000085306 000075877 default 001535483 +000000008 000088797 000279560 default 013078466 +000000008 000260638 000291460 default 016060197 +000000008 000297451 000335837 default 072625733 +000000008 000391792 000511480 default 087880467 +000000008 000401634 000661975 default 017344670 +000000008 000480112 000814555 default 060402086 +000000008 000502015 000889861 default 090006562 +000000008 000702508 000911030 default 034946953 +000000008 000943067 000960538 default 089827484 +000000009 000031437 000024517 default 010935442 +000000009 000129343 000161838 default 022130999 +000000009 000173361 000194329 default 076868520 +000000009 000173887 000212399 default 009968230 +000000009 000261345 000490196 default 072293448 +000000009 000297573 000531681 default 039749190 +000000009 000459016 000644911 default 037210145 +000000009 000560782 000737762 default 089466180 +000000009 000581731 000796459 default 036954690 +000000009 000758487 000975172 default 093581322 +000000010 000028942 000101832 default 007328917 +000000010 000056959 000291058 default 084102813 +000000010 000116925 000317208 default 045894929 +000000010 000167842 000399389 default 037621075 +000000010 000421460 000740219 default 068391970 +000000010 000729356 000815466 default 067726598 +000000010 000791998 000824422 default 023933684 +000000010 000846904 000839042 default 046620027 +000000010 000880608 000932127 default 055970628 +000000010 000959246 000940743 default 075285636 +000000011 000098904 000117516 default 002962412 +000000011 000128939 000129275 default 049723664 +000000011 000201015 000411455 default 003817317 +000000011 000306863 000555443 default 047255615 +000000011 000343868 000587647 default 007120959 +000000011 000449722 000708265 default 012598063 +000000011 000539356 000729893 default 035480800 +000000011 000587698 000894858 default 008687149 +000000011 000933412 000930107 default 033027727 +000000011 000934761 000956144 default 093014045 +000000012 000081191 000107619 default 052669161 +000000012 000099540 000117421 default 063483609 +000000012 000115397 000320205 default 043612357 +000000012 000207419 000326680 default 061789591 +000000012 000552078 000545290 default 007785247 +000000012 000560060 000596320 default 035745984 +000000012 000572880 000657568 default 019105600 +000000012 000585349 000688285 default 092251367 +000000012 000783900 000924010 default 031691844 +000000012 000923865 000975338 default 015256963 +000000013 000036081 000015634 default 072539685 +000000013 000076818 000028083 default 091617699 +000000013 000100248 000132444 default 020196107 +000000013 000105725 000176688 default 025467834 +000000013 000402719 000223832 default 034066700 +000000013 000641415 000369667 default 019224327 +000000013 000650963 000379660 default 009879176 +000000013 000859181 000506420 default 017723097 +000000013 000958388 000667023 default 016900354 +000000013 000997805 000826423 default 095377265 +000000014 000002611 000049138 default 028619903 +000000014 000096613 000153047 default 043079748 +000000014 000101304 000179839 default 014351060 +000000014 000145662 000266771 default 066817505 +000000014 000185164 000315830 default 029532408 +000000014 000267299 000466616 default 048822859 +000000014 000367772 000474248 default 014850260 +000000014 000390929 000581220 default 057172709 +000000014 000644638 000874468 default 088347884 +000000014 000680394 000965819 default 047660980 +000000015 000010184 000167899 default 051852995 +000000015 000089250 000203004 default 047110659 +000000015 000192832 000292717 default 042222154 +000000015 000432896 000294112 default 074991543 +000000015 000722034 000558669 default 000372902 +000000015 000757912 000739277 default 044797256 +000000015 000794112 000786819 default 049294049 +000000015 000797844 000829462 default 018915512 +000000015 000810527 000903347 default 011305148 +000000015 000815044 000970641 default 001373564 +000000016 000103110 000101979 default 074795780 +000000016 000121115 000135808 default 018580919 +000000016 000211290 000191021 default 067999469 +000000016 000308829 000261997 default 006482787 +000000016 000749140 000409733 default 098137680 +000000016 000799212 000504881 default 009570103 +000000016 000815737 000510047 default 095301725 +000000016 000868389 000791293 default 084735932 +000000016 000883202 000868926 default 014592408 +000000016 000897910 000939811 default 036993887 +000000017 000036736 000002991 default 010383254 +000000017 000211449 000202601 default 026568555 +000000017 000806489 000431125 default 031778412 +000000017 000842991 000441765 default 045918289 +000000017 000849801 000676499 default 034078312 +000000017 000874092 000695531 default 008045252 +000000017 000913263 000697886 default 005202538 +000000017 000940096 000932734 default 086066785 +000000017 000972954 000979990 default 027818126 +000000017 000974967 000998504 default 091973138 +000000018 000209957 000016194 default 051553330 +000000018 000259201 000058187 default 023050975 +000000018 000296102 000105876 default 014264327 +000000018 000297144 000382586 default 055180461 +000000018 000306417 000417573 default 012587714 +000000018 000334362 000419302 default 094068859 +000000018 000573111 000721746 default 062907871 +000000018 000706409 000732696 default 011008091 +000000018 000747744 000864317 default 047056197 +000000018 000965991 000952317 default 046710483 +000000019 000033154 000005104 default 016551956 +000000019 000323744 000049050 default 080171299 +000000019 000364343 000410172 default 010077762 +000000019 000466484 000429997 default 019184713 +000000019 000650093 000591535 default 064542222 +000000019 000744828 000602778 default 031468953 +000000019 000745199 000715002 default 032424203 +000000019 000807479 000787634 default 019517384 +000000019 000826367 000877061 default 005873112 +000000019 000945421 000881232 default 075455200 +000000020 000050762 000186197 default 072652930 +000000020 000059581 000228442 default 092374701 +000000020 000107088 000257477 default 058303103 +000000020 000260984 000362174 default 049831254 +000000020 000416633 000405021 default 042503538 +000000020 000435142 000458400 default 076894965 +000000020 000768356 000573628 default 056389901 +000000020 000930693 000926621 default 088976466 +000000020 000995025 000936634 default 048472101 +000000020 000996858 000947110 default 055875145 +000000021 000002026 000039970 default 020937695 +000000021 000048433 000210580 default 012142638 +000000021 000256112 000329476 default 053675579 +000000021 000385701 000558449 default 031119862 +000000021 000441214 000649619 default 030091200 +000000021 000778045 000774261 default 068498258 +000000021 000791823 000779871 default 040596104 +000000021 000934518 000782577 default 044848219 +000000021 000966782 000836874 default 004123960 +000000021 000992626 000914236 default 057819704 +000000022 000080993 000225161 default 054592445 +000000022 000135884 000366897 default 046689883 +000000022 000216284 000373251 default 091432326 +000000022 000252310 000413622 default 024016823 +000000022 000367102 000630973 default 070734810 +000000022 000522964 000643972 default 003499879 +000000022 000525575 000663653 default 086308984 +000000022 000690687 000802817 default 071825831 +000000022 000733060 000867356 default 091804992 +000000022 000849729 000920680 default 083141048 +000000023 000021716 000018698 default 018491405 +000000023 000041227 000024099 default 034763286 +000000023 000150810 000309472 default 086903156 +000000023 000230542 000377231 default 083900309 +000000023 000263926 000407691 default 086136861 +000000023 000289600 000708029 default 079938425 +000000023 000445160 000885046 default 080015941 +000000023 000507191 000934419 default 022684950 +000000023 000531599 000939471 default 011090344 +000000023 000937124 000943455 default 066900184 +000000024 000068994 000029477 default 015104125 +000000024 000103658 000206819 default 058433400 +000000024 000243886 000413157 default 029813305 +000000024 000247470 000494514 default 057156269 +000000024 000477586 000507217 default 097524016 +000000024 000483813 000572173 default 088212056 +000000024 000499536 000806337 default 006836466 +000000024 000519941 000851224 default 084214381 +000000024 000738467 000921519 default 009362980 +000000024 000993201 000947443 default 046938296 +000000025 000116164 000013066 default 062293966 +000000025 000420935 000040711 default 084783240 +000000025 000449661 000049895 default 075331377 +000000025 000520204 000145533 default 045039542 +000000025 000655211 000244047 default 005666775 +000000025 000687877 000353422 default 020533566 +000000025 000773352 000392780 default 007058073 +000000025 000777437 000680670 default 007338435 +000000025 000778482 000691423 default 023904210 +000000025 000863628 000925074 default 082249838 +000000026 000047756 000105370 default 060832877 +000000026 000171644 000181022 default 053723560 +000000026 000459568 000194935 default 008176728 +000000026 000555252 000541300 default 031936853 +000000026 000566866 000565354 default 067567804 +000000026 000584918 000602643 default 007240547 +000000026 000716362 000610701 default 098928361 +000000026 000719728 000654472 default 054978414 +000000026 000966146 000706562 default 051373386 +000000026 000974219 000716867 default 009072877 +000000027 000077560 000297295 default 031737920 +000000027 000097699 000319376 default 058393241 +000000027 000154738 000440185 default 008797802 +000000027 000332906 000444419 default 040601372 +000000027 000443449 000471292 default 096745038 +000000027 000465548 000607697 default 050276131 +000000027 000483030 000645034 default 018095119 +000000027 000546274 000772842 default 029721220 +000000027 000604999 000882411 default 098136977 +000000027 000956175 000882552 default 012556851 +000000028 000041811 000091069 default 039555117 +000000028 000127576 000093388 default 056958813 +000000028 000319404 000422501 default 018030563 +000000028 000390929 000549551 default 015622543 +000000028 000474366 000616299 default 079530905 +000000028 000533280 000641623 default 086672560 +000000028 000542540 000644469 default 032200900 +000000028 000643456 000690554 default 010988883 +000000028 000813370 000742314 default 017858888 +000000028 000966209 000950873 default 032201551 +000000029 000045437 000277745 default 034001358 +000000029 000136857 000321097 default 017128848 +000000029 000280045 000359997 default 030731974 +000000029 000330672 000464065 default 016346347 +000000029 000479096 000568445 default 089205773 +000000029 000481336 000603340 default 069216597 +000000029 000678274 000659207 default 003703492 +000000029 000714120 000833908 default 045927333 +000000029 000760432 000861899 default 052611706 +000000029 000960746 000919736 default 051520122 +000000030 000216082 000038231 default 008741627 +000000030 000231371 000167840 default 074690204 +000000030 000390446 000188529 default 092065158 +000000030 000503021 000219571 default 044062231 +000000030 000593915 000241511 default 012544711 +000000030 000602241 000259314 default 026375818 +000000030 000648035 000566612 default 018240853 +000000030 000675865 000648200 default 027169082 +000000030 000778544 000655739 default 017931426 +000000030 000979182 000794407 default 093844013 +000000031 000070674 000016707 default 000897750 +000000031 000204056 000210641 default 071004590 +000000031 000244346 000401479 default 083768382 +000000031 000309030 000516637 default 086028030 +000000031 000599426 000591404 default 048888752 +000000031 000638850 000677260 default 038453917 +000000031 000758843 000756109 default 097621134 +000000031 000764004 000761910 default 071361631 +000000031 000768242 000979301 default 062373152 +000000031 000995338 000979307 default 086241440 +000000032 000376902 000009156 default 065966051 +000000032 000529441 000049948 default 087948162 +000000032 000603172 000167059 default 061286234 +000000032 000621673 000232208 default 081480797 +000000032 000627184 000241227 default 044494462 +000000032 000640195 000386939 default 038713303 +000000032 000743180 000571109 default 015468969 +000000032 000805747 000596285 default 060787227 +000000032 000907761 000682272 default 016435642 +000000032 000997845 000984552 default 082397284 +000000033 000147556 000049289 default 075629202 +000000033 000226251 000145300 default 067024382 +000000033 000338056 000234009 default 059474958 +000000033 000419065 000236217 default 093200424 +000000033 000600808 000282212 default 017819023 +000000033 000674314 000396469 default 078496439 +000000033 000708208 000420821 default 087413345 +000000033 000734596 000459907 default 086027366 +000000033 000800231 000657313 default 018677712 +000000033 000963946 000942027 default 011477200 +000000034 000022957 000046203 default 038926322 +000000034 000177689 000078853 default 015348736 +000000034 000408154 000116150 default 053879882 +000000034 000542716 000170937 default 079638919 +000000034 000610388 000369246 default 017091776 +000000034 000654886 000518246 default 018233785 +000000034 000658736 000598905 default 083663965 +000000034 000686087 000754435 default 075031162 +000000034 000783737 000788285 default 063894998 +000000034 000973582 000935988 default 007112126 +000000035 000123524 000035869 default 025143768 +000000035 000304802 000042326 default 078889868 +000000035 000429198 000134232 default 072251819 +000000035 000645159 000304986 default 018182461 +000000035 000744407 000441315 default 089568679 +000000035 000804963 000463304 default 083553163 +000000035 000825223 000542984 default 053361434 +000000035 000922178 000642951 default 019472997 +000000035 000982302 000651884 default 037744419 +000000035 000996044 000668108 default 042836036 +000000036 000262893 000054590 default 060891569 +000000036 000348311 000067528 default 080636351 +000000036 000453034 000137992 default 097349774 +000000036 000540128 000183325 default 029224862 +000000036 000787014 000318199 default 010047385 +000000036 000813997 000407826 default 080276172 +000000036 000905448 000436372 default 037102572 +000000036 000932851 000446893 default 050158688 +000000036 000940149 000458831 default 052402093 +000000036 000984023 000610969 default 044872007 +000000037 000228407 000120162 default 025686121 +000000037 000319966 000150452 default 055097613 +000000037 000370037 000178937 default 055020921 +000000037 000390215 000523973 default 041595307 +000000037 000434360 000593901 default 053515353 +000000037 000475164 000726865 default 006010048 +000000037 000633317 000781701 default 042138784 +000000037 000648875 000827510 default 057025589 +000000037 000886140 000913893 default 006851197 +000000037 000964072 000993155 default 047006956 +000000038 000041366 000134250 default 003286863 +000000038 000220577 000358849 default 095743117 +000000038 000268085 000474870 default 061008776 +000000038 000313641 000620960 default 083006460 +000000038 000355056 000622292 default 077621847 +000000038 000470581 000701571 default 007963871 +000000038 000560207 000928873 default 005872800 +000000038 000666049 000933619 default 015130765 +000000038 000777077 000953846 default 017587448 +000000038 000905460 000972106 default 006722113 +000000039 000198337 000040127 default 047218143 +000000039 000223987 000059045 default 097372522 +000000039 000229943 000097002 default 076302495 +000000039 000333708 000203292 default 048924050 +000000039 000388868 000376470 default 079627863 +000000039 000502729 000393105 default 001833786 +000000039 000612677 000423122 default 079347889 +000000039 000945196 000430521 default 033491359 +000000039 000955477 000718209 default 034172195 +000000039 000999094 000771206 default 042507012 +000000040 000179650 000045689 default 021539078 +000000040 000229817 000141627 default 081581547 +000000040 000341598 000201764 default 026023223 +000000040 000383932 000217139 default 037990133 +000000040 000389242 000384635 default 055881276 +000000040 000582299 000412282 default 093171641 +000000040 000642347 000418077 default 065797569 +000000040 000783124 000658452 default 018862590 +000000040 000789042 000798515 default 082895916 +000000040 000870153 000945358 default 091012225 +000000041 000096791 000000772 default 032529794 +000000041 000183863 000250798 default 015277308 +000000041 000214240 000305799 default 011328898 +000000041 000253946 000398945 default 040791393 +000000041 000310593 000426796 default 016174158 +000000041 000452821 000432946 default 000247375 +000000041 000640754 000457602 default 032647310 +000000041 000648084 000647095 default 005534455 +000000041 000750788 000707529 default 017435584 +000000041 000909107 000968764 default 010542119 +000000042 000008084 000041203 default 070090114 +000000042 000203154 000052603 default 081053079 +000000042 000284211 000378967 default 034270925 +000000042 000291405 000392593 default 062785281 +000000042 000431542 000681678 default 058441321 +000000042 000468140 000743887 default 088013589 +000000042 000527805 000750168 default 097287445 +000000042 000768939 000806403 default 047112253 +000000042 000786964 000969142 default 051050715 +000000042 000915189 000979141 default 097249784 +000000043 000000958 000336491 default 021799332 +000000043 000007914 000401709 default 022925779 +000000043 000266388 000514088 default 091406392 +000000043 000480655 000688621 default 006180568 +000000043 000511462 000715914 default 008178333 +000000043 000579248 000821425 default 086685253 +000000043 000583385 000840673 default 087924705 +000000043 000667001 000908420 default 099682438 +000000043 000778669 000980076 default 079993954 +000000043 000903683 000981285 default 057843464 +000000044 000041705 000061632 default 031319273 +000000044 000142303 000381272 default 033328237 +000000044 000145687 000408502 default 007974766 +000000044 000317735 000517274 default 061698035 +000000044 000362013 000536199 default 042745559 +000000044 000371086 000568961 default 056031959 +000000044 000479318 000689886 default 006855080 +000000044 000528940 000695590 default 016555079 +000000044 000581727 000731950 default 010785084 +000000044 000928327 000880004 default 060321977 +000000045 000162559 000059939 default 041959879 +000000045 000186178 000111287 default 099861530 +000000045 000248388 000115190 default 035797545 +000000045 000255885 000458649 default 019112269 +000000045 000297735 000730177 default 028796706 +000000045 000324851 000740963 default 031361816 +000000045 000479484 000751796 default 003333105 +000000045 000605784 000882809 default 052179968 +000000045 000696197 000900658 default 020675828 +000000045 000730630 000922995 default 038104216 +000000046 000020709 000185666 default 021379234 +000000046 000029077 000228573 default 094583953 +000000046 000091868 000480290 default 034543717 +000000046 000138737 000588378 default 017118663 +000000046 000435999 000779917 default 048121027 +000000046 000534605 000823828 default 019158114 +000000046 000739525 000859072 default 060565239 +000000046 000839081 000974441 default 078988006 +000000046 000847956 000987536 default 070859332 +000000046 000888651 000988832 default 022657802 +000000047 000016687 000072607 default 060161506 +000000047 000055053 000107779 default 054908186 +000000047 000102110 000146413 default 013828700 +000000047 000142754 000187967 default 002848606 +000000047 000162206 000366474 default 029442642 +000000047 000182299 000432881 default 052467817 +000000047 000278099 000667974 default 037276048 +000000047 000379802 000674643 default 013587008 +000000047 000485638 000823975 default 021010515 +000000047 000732415 000882808 default 099444713 +000000048 000136377 000195790 default 017005354 +000000048 000238616 000423385 default 094338198 +000000048 000335849 000462513 default 011629775 +000000048 000433410 000469597 default 055191665 +000000048 000476390 000618530 default 057795648 +000000048 000506654 000710289 default 075683169 +000000048 000593451 000732878 default 047266676 +000000048 000741687 000781456 default 041340370 +000000048 000796695 000815986 default 043431899 +000000048 000937071 000842358 default 014939142 +000000049 000011562 000041414 default 059006560 +000000049 000216196 000289738 default 020596867 +000000049 000290989 000355747 default 053591313 +000000049 000343785 000448731 default 026644741 +000000049 000389746 000474908 default 052014036 +000000049 000436568 000528568 default 017935013 +000000049 000652379 000541641 default 047323485 +000000049 000656986 000674055 default 093296546 +000000049 000718315 000733016 default 053423100 +000000049 000834288 000861041 default 022300372 +000000050 000506744 000011837 default 011422415 +000000050 000518521 000084169 default 086530632 +000000050 000609790 000125736 default 076595383 +000000050 000611273 000155793 default 012477271 +000000050 000644594 000343777 default 097566062 +000000050 000703567 000554428 default 034718718 +000000050 000751802 000634505 default 067481888 +000000050 000869083 000737068 default 049134409 +000000050 000957799 000957047 default 016091647 +000000050 000994550 000983822 default 040459055 +000000051 000009965 000025117 default 047040491 +000000051 000097824 000087770 default 003379705 +000000051 000109423 000212253 default 063751031 +000000051 000120853 000283935 default 064581836 +000000051 000398932 000335863 default 001652307 +000000051 000653317 000634317 default 006135734 +000000051 000761692 000802785 default 040849531 +000000051 000775007 000847597 default 050524519 +000000051 000852378 000876182 default 002496351 +000000051 000941761 000995373 default 033169749 +000000052 000043970 000158902 default 045884088 +000000052 000167039 000408496 default 049458291 +000000052 000325078 000521205 default 049642204 +000000052 000349681 000539617 default 015353674 +000000052 000424632 000669699 default 022901897 +000000052 000462616 000718227 default 080008102 +000000052 000491108 000723780 default 085007500 +000000052 000689594 000775915 default 034202551 +000000052 000770460 000860626 default 058032752 +000000052 000810037 000897401 default 086501129 +000000053 000006165 000002073 default 005441060 +000000053 000064334 000079314 default 065565969 +000000053 000539651 000228859 default 059769244 +000000053 000605109 000239783 default 049599550 +000000053 000627271 000245646 default 051848844 +000000053 000656137 000329180 default 013382304 +000000053 000692839 000679446 default 058115513 +000000053 000780424 000854471 default 057063069 +000000053 000822568 000873239 default 028117304 +000000053 000896214 000921342 default 031622780 +000000054 000006530 000073618 default 027350926 +000000054 000061709 000073872 default 036510527 +000000054 000201653 000166217 default 093896262 +000000054 000298008 000245718 default 060679091 +000000054 000317950 000272733 default 028752408 +000000054 000457875 000287707 default 027539690 +000000054 000560409 000288070 default 080379553 +000000054 000600268 000391072 default 086599440 +000000054 000784059 000513003 default 096506771 +000000054 000787994 000951503 default 078470645 +000000055 000131862 000152216 default 030332196 +000000055 000170278 000190870 default 015561186 +000000055 000188968 000221226 default 064834194 +000000055 000252777 000304047 default 082130444 +000000055 000378095 000325251 default 064384634 +000000055 000406478 000476786 default 060493848 +000000055 000516672 000625326 default 092512312 +000000055 000606881 000727792 default 057885189 +000000055 000607499 000740153 default 077493291 +000000055 000801930 000837592 default 037818536 +000000056 000022768 000076218 default 035330264 +000000056 000299654 000212731 default 076116971 +000000056 000453525 000284031 default 056705609 +000000056 000616749 000515381 default 069846494 +000000056 000635139 000519915 default 058723174 +000000056 000689206 000585497 default 015689227 +000000056 000702059 000619234 default 008109782 +000000056 000772075 000633075 default 007500227 +000000056 000844441 000637289 default 014568593 +000000056 000895449 000767708 default 016756393 +000000057 000035721 000083439 default 094877296 +000000057 000046827 000134441 default 063542519 +000000057 000169624 000230920 default 088376066 +000000057 000267494 000294985 default 001612622 +000000057 000307452 000297225 default 025985657 +000000057 000425742 000479786 default 007781644 +000000057 000527764 000504339 default 080171493 +000000057 000691805 000609842 default 076734745 +000000057 000711671 000773932 default 043973338 +000000057 000808066 000873556 default 037965551 +000000058 000197979 000021004 default 053832972 +000000058 000292850 000051555 default 038173112 +000000058 000302749 000087814 default 052585544 +000000058 000387331 000284014 default 030041816 +000000058 000486360 000358550 default 088087441 +000000058 000495247 000402507 default 048458092 +000000058 000746477 000667520 default 096083412 +000000058 000813848 000778319 default 075342168 +000000058 000889434 000931487 default 022489279 +000000058 000979524 000983393 default 056019672 +000000059 000033288 000127794 default 003747517 +000000059 000166760 000154680 default 093923904 +000000059 000254990 000237654 default 069144690 +000000059 000475494 000296020 default 029358891 +000000059 000535096 000397796 default 081211151 +000000059 000563064 000486113 default 044823610 +000000059 000563161 000735032 default 066164855 +000000059 000627575 000749724 default 018032381 +000000059 000669800 000832640 default 009238511 +000000059 000995695 000854720 default 061422408 +000000060 000058033 000034124 default 077652768 +000000060 000226253 000253055 default 020589193 +000000060 000306343 000316569 default 081329489 +000000060 000387556 000389162 default 091998533 +000000060 000459547 000529196 default 094335329 +000000060 000515865 000731687 default 028752731 +000000060 000569491 000821040 default 059258520 +000000060 000586826 000822863 default 047829122 +000000060 000602960 000842328 default 017741229 +000000060 000651412 000883808 default 028208267 +000000061 000053413 000191743 default 023163957 +000000061 000099066 000192151 default 073812885 +000000061 000144307 000404613 default 074524625 +000000061 000163216 000451494 default 016805313 +000000061 000163814 000476688 default 009094499 +000000061 000241509 000491991 default 040170156 +000000061 000352233 000530466 default 078495548 +000000061 000704419 000649982 default 004824392 +000000061 000770369 000782508 default 002670757 +000000061 000974434 000789646 default 064345230 +000000062 000144902 000030013 default 068449114 +000000062 000293562 000186137 default 039177817 +000000062 000605353 000186933 default 032311524 +000000062 000620724 000236495 default 051570822 +000000062 000653596 000244944 default 013272534 +000000062 000720214 000514467 default 048513751 +000000062 000782304 000534864 default 048565883 +000000062 000844028 000617233 default 045932267 +000000062 000874475 000908466 default 048904463 +000000062 000903295 000929758 default 098228119 +000000063 000010682 000167444 default 036828912 +000000063 000052681 000183515 default 062905437 +000000063 000092582 000233338 default 061223972 +000000063 000401412 000252549 default 076404706 +000000063 000534725 000263255 default 006604584 +000000063 000541338 000307900 default 047378141 +000000063 000563195 000334007 default 013239384 +000000063 000569742 000341784 default 010670131 +000000063 000632498 000355109 default 060719395 +000000063 000882835 000581961 default 083469994 +000000064 000033641 000138451 default 035606638 +000000064 000041986 000154117 default 047566752 +000000064 000247680 000165023 default 000184615 +000000064 000385434 000234542 default 018063593 +000000064 000527192 000247112 default 068868733 +000000064 000541044 000392151 default 045903362 +000000064 000611594 000518770 default 022491767 +000000064 000619443 000533152 default 023321536 +000000064 000715907 000578406 default 042975448 +000000064 000912336 000772785 default 054716906 +000000065 000016493 000074777 default 078265243 +000000065 000143236 000196621 default 009661646 +000000065 000344792 000266459 default 087951532 +000000065 000357631 000271089 default 056191335 +000000065 000391996 000463485 default 053837641 +000000065 000653226 000706834 default 094235362 +000000065 000690723 000947864 default 050530734 +000000065 000691262 000965904 default 054315969 +000000065 000705631 000971219 default 026060474 +000000065 000789108 000972307 default 078666861 +000000066 000015451 000089561 default 040796679 +000000066 000055188 000167581 default 003798182 +000000066 000062478 000244147 default 033701435 +000000066 000152680 000333057 default 083531526 +000000066 000179180 000344922 default 023089100 +000000066 000652442 000530081 default 077345679 +000000066 000744355 000543395 default 091139473 +000000066 000820764 000879222 default 047675631 +000000066 000825620 000945721 default 084628009 +000000066 000826540 000959069 default 097024241 +000000067 000271276 000052604 default 086015194 +000000067 000348020 000055565 default 036683862 +000000067 000394371 000065525 default 055092940 +000000067 000401307 000126189 default 084965412 +000000067 000477432 000205861 default 063398262 +000000067 000539241 000344588 default 030294334 +000000067 000719913 000464352 default 081472814 +000000067 000790906 000614526 default 069020472 +000000067 000796634 000620797 default 068706701 +000000067 000833935 000739355 default 016587593 +000000068 000151437 000022539 default 059817866 +000000068 000156783 000175025 default 064069128 +000000068 000337077 000190642 default 054718238 +000000068 000361943 000304129 default 095628011 +000000068 000425571 000361964 default 081167369 +000000068 000516919 000414382 default 054621952 +000000068 000542327 000697739 default 039750720 +000000068 000593909 000772515 default 080610013 +000000068 000950613 000829835 default 023583155 +000000068 000964409 000965576 default 031824548 +000000069 000107493 000063721 default 085363265 +000000069 000182362 000209179 default 056310951 +000000069 000185203 000393638 default 077526516 +000000069 000222498 000415075 default 003211910 +000000069 000283545 000677579 default 001008657 +000000069 000313295 000768034 default 060095136 +000000069 000357665 000818694 default 034769206 +000000069 000587918 000853618 default 036354016 +000000069 000783326 000944403 default 030299452 +000000069 000798375 000956548 default 063449270 +000000070 000101698 000103443 default 076626382 +000000070 000131610 000227198 default 049649269 +000000070 000294477 000270285 default 042757843 +000000070 000300430 000432036 default 077176292 +000000070 000382490 000466254 default 077272133 +000000070 000627728 000592369 default 039736950 +000000070 000671698 000725374 default 089250903 +000000070 000716670 000826741 default 007648861 +000000070 000835370 000959067 default 005039235 +000000070 000915064 000991232 default 094352440 +000000071 000018890 000102542 default 093509138 +000000071 000154594 000156708 default 058240312 +000000071 000209340 000264361 default 085143796 +000000071 000444250 000453924 default 002929700 +000000071 000512019 000506888 default 047147670 +000000071 000617476 000558640 default 042824589 +000000071 000622332 000668392 default 082122893 +000000071 000739546 000740453 default 046198212 +000000071 000876016 000888817 default 064204855 +000000071 000986996 000918123 default 018659238 +000000072 000071435 000016217 default 004523804 +000000072 000131621 000027483 default 092407493 +000000072 000301684 000048665 default 003244985 +000000072 000414048 000100513 default 091206044 +000000072 000505202 000321871 default 097518807 +000000072 000905317 000396876 default 068943219 +000000072 000925637 000398112 default 046783647 +000000072 000947729 000578553 default 010198768 +000000072 000976523 000833004 default 010088799 +000000072 000985456 000881283 default 057175168 +000000073 000377335 000035992 default 073420073 +000000073 000382813 000264745 default 010729096 +000000073 000490402 000273915 default 038296020 +000000073 000509981 000291405 default 023447489 +000000073 000519502 000365688 default 040359940 +000000073 000725071 000471527 default 036204461 +000000073 000729047 000575338 default 023112215 +000000073 000741710 000711200 default 012934359 +000000073 000840863 000791978 default 076302184 +000000073 000917621 000923367 default 055509766 +000000074 000094694 000048855 default 022413265 +000000074 000158299 000149760 default 014519235 +000000074 000163499 000210954 default 052545109 +000000074 000169101 000300927 default 020046730 +000000074 000267740 000350882 default 010092155 +000000074 000360247 000439361 default 004010655 +000000074 000364654 000544182 default 035929631 +000000074 000430233 000839616 default 005749112 +000000074 000460305 000925733 default 093238041 +000000074 000740979 000980295 default 086571901 +000000075 000106620 000189950 default 031274026 +000000075 000153157 000272750 default 045154134 +000000075 000417765 000297715 default 009993169 +000000075 000594195 000412467 default 087797379 +000000075 000656495 000419268 default 063171124 +000000075 000801450 000435647 default 014259088 +000000075 000815986 000538350 default 048059833 +000000075 000858754 000693976 default 004937901 +000000075 000878792 000764464 default 075434391 +000000075 000884536 000819571 default 052538920 +000000076 000113232 000210105 default 029451343 +000000076 000232714 000287325 default 097232399 +000000076 000250545 000330737 default 052103361 +000000076 000288285 000433870 default 076678980 +000000076 000306128 000507568 default 088913093 +000000076 000403464 000511613 default 037474751 +000000076 000663294 000749065 default 037337386 +000000076 000756571 000850716 default 083423760 +000000076 000805389 000881066 default 050807729 +000000076 000913158 000957495 default 016762548 +000000077 000266718 000031558 default 096824706 +000000077 000275251 000047915 default 089790880 +000000077 000358339 000063629 default 035445485 +000000077 000402062 000134575 default 093910118 +000000077 000420088 000405498 default 012700948 +000000077 000488214 000424160 default 078694172 +000000077 000539530 000445112 default 072248844 +000000077 000735312 000537804 default 045545222 +000000077 000778884 000686835 default 018935745 +000000077 000969844 000702971 default 074991118 +000000078 000058307 000005502 default 040314656 +000000078 000378340 000264431 default 030223197 +000000078 000634130 000342166 default 037683570 +000000078 000650773 000388563 default 000280132 +000000078 000671122 000447544 default 057737026 +000000078 000788688 000486249 default 027841897 +000000078 000796774 000556367 default 089188562 +000000078 000804437 000579452 default 080994933 +000000078 000886532 000586581 default 045163098 +000000078 000954584 000965530 default 069546730 +000000079 000047155 000048110 default 063461313 +000000079 000049560 000077275 default 006734590 +000000079 000186919 000186977 default 033295532 +000000079 000394600 000218959 default 064657409 +000000079 000460770 000219137 default 028684438 +000000079 000496644 000386777 default 008819400 +000000079 000504490 000420064 default 066249396 +000000079 000514782 000443174 default 016464244 +000000079 000575316 000825971 default 053712278 +000000079 000674661 000995211 default 084399101 +000000080 000169493 000040795 default 022023845 +000000080 000179811 000183105 default 032069337 +000000080 000277770 000243562 default 091801368 +000000080 000326931 000496157 default 024703463 +000000080 000528303 000523034 default 028262435 +000000080 000584480 000528442 default 041971351 +000000080 000665577 000554006 default 052734956 +000000080 000726557 000834464 default 045604600 +000000080 000734211 000852330 default 086814633 +000000080 000811872 000941168 default 079203142 +000000081 000165075 000109314 default 032858656 +000000081 000174832 000164981 default 033774654 +000000081 000197655 000191243 default 081769305 +000000081 000455629 000212110 default 001467204 +000000081 000477664 000228872 default 045776752 +000000081 000518822 000455443 default 019826328 +000000081 000606673 000663580 default 035587035 +000000081 000641033 000681706 default 098422684 +000000081 000777284 000687036 default 053904897 +000000081 000975076 000855760 default 076712193 +000000082 000062323 000053836 default 038291040 +000000082 000078445 000120580 default 033985160 +000000082 000086202 000394176 default 075541344 +000000082 000185291 000560040 default 030016347 +000000082 000317674 000601680 default 035873929 +000000082 000407529 000662291 default 002956711 +000000082 000432115 000695622 default 002737865 +000000082 000783250 000716727 default 015146578 +000000082 000787854 000769777 default 079634662 +000000082 000870079 000959449 default 064272000 +000000083 000066771 000034088 default 067562862 +000000083 000104431 000155426 default 035315958 +000000083 000105083 000176256 default 011387839 +000000083 000337817 000194445 default 002261551 +000000083 000379833 000327643 default 066767666 +000000083 000433902 000493186 default 013913853 +000000083 000465654 000528752 default 033041861 +000000083 000478010 000655295 default 014559302 +000000083 000543953 000722103 default 042155028 +000000083 000559270 000891356 default 011923579 +000000084 000108417 000286725 default 035091199 +000000084 000186564 000298981 default 060909305 +000000084 000222383 000415756 default 033398571 +000000084 000233783 000543518 default 069094829 +000000084 000299204 000661230 default 054746141 +000000084 000325893 000806170 default 068716917 +000000084 000370832 000823046 default 077192757 +000000084 000451562 000833537 default 068677573 +000000084 000593813 000865141 default 011595987 +000000084 000803382 000962382 default 095284104 +000000085 000116084 000145540 default 076128167 +000000085 000149800 000198916 default 084765092 +000000085 000183426 000199880 default 089119817 +000000085 000517612 000213377 default 068139059 +000000085 000637726 000320272 default 001247590 +000000085 000901655 000356301 default 014284285 +000000085 000903028 000826612 default 042493198 +000000085 000915448 000877383 default 035204886 +000000085 000957048 000960579 default 088539394 +000000085 000994642 000961292 default 058340371 +000000086 000113812 000127863 default 086781660 +000000086 000153847 000194703 default 015292489 +000000086 000381963 000257865 default 002430392 +000000086 000386891 000436715 default 049224711 +000000086 000402176 000449279 default 076348766 +000000086 000402603 000496171 default 087541051 +000000086 000651157 000731644 default 024013078 +000000086 000902867 000791543 default 040897210 +000000086 000959922 000914496 default 047058304 +000000086 000994386 000915640 default 035843260 +000000087 000172462 000053105 default 084311267 +000000087 000193521 000086479 default 011232423 +000000087 000306537 000089181 default 035860640 +000000087 000358790 000565711 default 022149536 +000000087 000435360 000613581 default 016706895 +000000087 000599042 000724028 default 077829297 +000000087 000726968 000730176 default 075199628 +000000087 000731579 000757144 default 035254468 +000000087 000767072 000780694 default 092393309 +000000087 000848933 000785352 default 004759505 +000000088 000058821 000001299 default 005482676 +000000088 000101829 000007152 default 091157345 +000000088 000170985 000094219 default 033829611 +000000088 000202514 000204657 default 081991751 +000000088 000272501 000382497 default 032824128 +000000088 000550248 000560797 default 074129432 +000000088 000552428 000687590 default 064576486 +000000088 000854550 000792356 default 021319017 +000000088 000922725 000952465 default 013766718 +000000088 000937774 000985648 default 022315504 +000000089 000413415 000084497 default 053002601 +000000089 000429477 000117257 default 007646812 +000000089 000464414 000217324 default 019534809 +000000089 000505439 000256988 default 001738160 +000000089 000530461 000607980 default 003639091 +000000089 000589383 000638092 default 006029607 +000000089 000616040 000705814 default 000926317 +000000089 000630523 000791098 default 056127429 +000000089 000873025 000794790 default 013538596 +000000089 000918369 000909783 default 077742325 +000000090 000014966 000085830 default 096011298 +000000090 000040055 000149457 default 033099012 +000000090 000122833 000428277 default 056706031 +000000090 000234812 000497566 default 049604496 +000000090 000309315 000544638 default 017769782 +000000090 000713879 000581882 default 030295955 +000000090 000751643 000796502 default 072940555 +000000090 000777312 000861846 default 083288055 +000000090 000830548 000942414 default 022552421 +000000090 000889768 000994473 default 099705357 +000000091 000221711 000033345 default 024020447 +000000091 000308753 000204145 default 040275168 +000000091 000334701 000313687 default 058533720 +000000091 000378732 000483289 default 041722512 +000000091 000551897 000510313 default 046301740 +000000091 000624613 000560649 default 023120914 +000000091 000805983 000638337 default 072186204 +000000091 000854019 000691459 default 019920809 +000000091 000879627 000794605 default 006666365 +000000091 000993284 000902362 default 075781510 +000000092 000224509 000004873 default 064940338 +000000092 000239069 000080882 default 044014767 +000000092 000349332 000257385 default 090136342 +000000092 000574327 000406487 default 059257561 +000000092 000651112 000473451 default 027838830 +000000092 000742081 000542937 default 044133451 +000000092 000805402 000602066 default 065688679 +000000092 000899953 000733729 default 085168911 +000000092 000939729 000739706 default 007349661 +000000092 000971142 000970980 default 054645040 +000000093 000080351 000086962 default 087653152 +000000093 000254804 000253011 default 020897908 +000000093 000374488 000258885 default 033355922 +000000093 000390885 000370737 default 036107654 +000000093 000474300 000405169 default 046280831 +000000093 000746794 000557786 default 048072871 +000000093 000775057 000618604 default 085933324 +000000093 000828320 000846420 default 048112974 +000000093 000846821 000920957 default 036180818 +000000093 000989143 000957401 default 009992512 +000000094 000166219 000075811 default 000373278 +000000094 000197076 000184414 default 072652006 +000000094 000245433 000384841 default 032854049 +000000094 000451088 000405764 default 022952797 +000000094 000478072 000423111 default 064376342 +000000094 000507795 000769403 default 058513506 +000000094 000657814 000806751 default 098914977 +000000094 000733142 000895252 default 088653321 +000000094 000872326 000900643 default 089204121 +000000094 000993166 000968473 default 094208383 +000000095 000084532 000088132 default 049641831 +000000095 000201617 000316136 default 017743788 +000000095 000281401 000514749 default 021768996 +000000095 000373074 000688898 default 092602839 +000000095 000443497 000724400 default 003847146 +000000095 000454303 000726758 default 028200438 +000000095 000558396 000732063 default 049414211 +000000095 000639570 000808544 default 066572109 +000000095 000894268 000941602 default 092866065 +000000095 000903247 000942658 default 077149551 +000000096 000038823 000218516 default 084870950 +000000096 000256039 000270245 default 037417633 +000000096 000466929 000303897 default 099360899 +000000096 000499989 000329156 default 017567131 +000000096 000543632 000351727 default 071855654 +000000096 000560627 000641171 default 050083408 +000000096 000626057 000770452 default 005444724 +000000096 000713324 000776491 default 054479953 +000000096 000730097 000944155 default 011920857 +000000096 000835562 000956378 default 018160903 +000000097 000081477 000268262 default 035747571 +000000097 000139351 000288163 default 044421191 +000000097 000179105 000402178 default 055952569 +000000097 000199144 000402189 default 064226646 +000000097 000296492 000481497 default 071172130 +000000097 000368807 000511611 default 017852225 +000000097 000494471 000585164 default 050788745 +000000097 000513246 000638189 default 089140146 +000000097 000623640 000712829 default 051549234 +000000097 000664719 000840027 default 020352144 +000000098 000067036 000089885 default 001894140 +000000098 000176257 000103889 default 025178619 +000000098 000219972 000190943 default 036838326 +000000098 000432356 000273080 default 071827083 +000000098 000504638 000332216 default 022841095 +000000098 000525942 000476992 default 034896996 +000000098 000745332 000560679 default 056046738 +000000098 000749729 000634710 default 053123181 +000000098 000818142 000683726 default 098732273 +000000098 000881040 000783438 default 009914520 +000000099 000028102 000013353 default 025775452 +000000099 000048667 000199229 default 044149772 +000000099 000081295 000363647 default 067819190 +000000099 000098134 000506142 default 078735569 +000000099 000171897 000587152 default 027297408 +000000099 000176250 000667145 default 090070664 +000000099 000226407 000700321 default 000290462 +000000099 000626905 000869124 default 002354484 +000000099 000764515 000932019 default 098936612 +000000099 000782536 000982328 default 028887178 +000000100 000072896 000040493 default 010848755 +000000100 000079760 000111782 default 004017117 +000000100 000100906 000143729 default 047937365 +000000100 000153520 000571651 default 085085348 +000000100 000273580 000694451 default 040150877 +000000100 000640488 000780028 default 070402968 +000000100 000704479 000784201 default 059774079 +000000100 000732851 000797445 default 034596607 +000000100 000735666 000805527 default 011992302 +000000100 000860343 000994385 default 036014488 +000000101 000033977 000192608 default 096667755 +000000101 000062628 000313039 default 066222077 +000000101 000272499 000314799 default 054805269 +000000101 000444841 000397979 default 013840235 +000000101 000490267 000445752 default 095033233 +000000101 000636016 000732265 default 097624905 +000000101 000643698 000791113 default 058511660 +000000101 000776998 000816786 default 070237360 +000000101 000795044 000845078 default 027531278 +000000101 000994775 000916582 default 049323597 +000000102 000018703 000005400 default 055252248 +000000102 000260555 000076494 default 011583085 +000000102 000263775 000080560 default 039496882 +000000102 000356037 000087627 default 060093283 +000000102 000475488 000177984 default 040368825 +000000102 000572324 000300421 default 074594189 +000000102 000686850 000553992 default 020438185 +000000102 000694396 000660303 default 052155597 +000000102 000731188 000831870 default 026820409 +000000102 000931018 000832285 default 085231977 +000000103 000247506 000045051 default 007385940 +000000103 000291687 000160767 default 016220632 +000000103 000359013 000259495 default 070462210 +000000103 000361897 000308495 default 006595760 +000000103 000431799 000330494 default 023371017 +000000103 000492729 000488477 default 045337018 +000000103 000585731 000518787 default 009753978 +000000103 000604985 000596369 default 058565773 +000000103 000806656 000820447 default 060574576 +000000103 000815481 000974721 default 054596844 +000000104 000098783 000008460 default 085635261 +000000104 000300606 000010502 default 006895748 +000000104 000365458 000064269 default 008974505 +000000104 000452827 000326621 default 028335769 +000000104 000524484 000365582 default 092161199 +000000104 000555355 000494255 default 038041630 +000000104 000611291 000501760 default 070147103 +000000104 000777390 000519736 default 029205438 +000000104 000813584 000937484 default 066267118 +000000104 000946586 000961684 default 026991943 +000000105 000115386 000066750 default 047491446 +000000105 000167705 000458503 default 061038582 +000000105 000212102 000559776 default 044119667 +000000105 000326428 000604038 default 046362119 +000000105 000352031 000758100 default 095490706 +000000105 000422540 000797445 default 010831611 +000000105 000623404 000858498 default 080044838 +000000105 000856306 000859615 default 063363125 +000000105 000930509 000905029 default 029526843 +000000105 000996653 000913637 default 026375629 +000000106 000046660 000046488 default 059077736 +000000106 000054805 000103677 default 052257290 +000000106 000196279 000156948 default 067869403 +000000106 000383718 000180810 default 001242602 +000000106 000510635 000376108 default 071780321 +000000106 000709911 000595898 default 062738564 +000000106 000746780 000621488 default 051702481 +000000106 000765236 000635477 default 035079957 +000000106 000864431 000903581 default 024554323 +000000106 000928383 000971589 default 045674275 +000000107 000003721 000022548 default 064811822 +000000107 000226266 000040083 default 026643397 +000000107 000302807 000207539 default 021136349 +000000107 000312223 000216335 default 079370458 +000000107 000439832 000246271 default 033063877 +000000107 000523039 000252008 default 003227416 +000000107 000660159 000373107 default 063359624 +000000107 000758181 000526323 default 000332094 +000000107 000779112 000622791 default 093313402 +000000107 000881084 000636621 default 001075016 +000000108 000148249 000199002 default 068871433 +000000108 000175123 000294591 default 092655951 +000000108 000263163 000320550 default 071654386 +000000108 000551884 000396726 default 050869852 +000000108 000615867 000513388 default 028187265 +000000108 000622759 000543602 default 041775450 +000000108 000637254 000597541 default 050072286 +000000108 000809248 000772377 default 024077178 +000000108 000930338 000776276 default 022404548 +000000108 000938754 000977504 default 067426136 +000000109 000180759 000008542 default 056113680 +000000109 000201737 000049653 default 057593792 +000000109 000248448 000582627 default 053901596 +000000109 000413556 000596342 default 050810298 +000000109 000460984 000652210 default 031703219 +000000109 000470809 000879713 default 059963804 +000000109 000474858 000893076 default 021806456 +000000109 000545055 000906829 default 093998041 +000000109 000648422 000948155 default 069904531 +000000109 000797887 000997662 default 009555004 +000000110 000130694 000087349 default 029812594 +000000110 000322026 000099537 default 030861123 +000000110 000355947 000386716 default 063886897 +000000110 000380065 000411169 default 089417694 +000000110 000430112 000487725 default 000062827 +000000110 000594861 000566632 default 076465022 +000000110 000707261 000572489 default 051280919 +000000110 000813266 000606356 default 070266331 +000000110 000851635 000862723 default 050766170 +000000110 000959146 000997505 default 073938576 +000000111 000050646 000024496 default 086782570 +000000111 000166886 000052851 default 084141656 +000000111 000214890 000324543 default 018293100 +000000111 000324834 000335121 default 081337479 +000000111 000477830 000393974 default 069031201 +000000111 000663682 000405019 default 054248486 +000000111 000722754 000410594 default 006972457 +000000111 000744971 000661448 default 082652103 +000000111 000755921 000746193 default 043837821 +000000111 000964935 000871713 default 060540304 +000000112 000048563 000144877 default 015243320 +000000112 000232470 000208660 default 013980317 +000000112 000258247 000308347 default 099002841 +000000112 000380813 000391772 default 009467563 +000000112 000502415 000632889 default 076567196 +000000112 000716399 000690189 default 031518915 +000000112 000774717 000706306 default 081974014 +000000112 000802694 000866430 default 029111101 +000000112 000977010 000947051 default 033724216 +000000112 000979341 000952080 default 048334423 +000000113 000053109 000138107 default 036495586 +000000113 000163546 000157803 default 076776162 +000000113 000384866 000229732 default 063021336 +000000113 000404277 000288263 default 035740749 +000000113 000420924 000291350 default 080072643 +000000113 000713548 000392169 default 031633887 +000000113 000747075 000417318 default 005317702 +000000113 000765043 000443941 default 011507929 +000000113 000944436 000752653 default 032221842 +000000113 000945130 000874671 default 020302177 +000000114 000113008 000284594 default 020874775 +000000114 000195439 000366615 default 090057705 +000000114 000418045 000410080 default 043822923 +000000114 000538894 000456937 default 010538816 +000000114 000684080 000476036 default 046706667 +000000114 000726663 000737752 default 053707617 +000000114 000824298 000917320 default 056041645 +000000114 000840101 000922206 default 072504442 +000000114 000914364 000949809 default 013685720 +000000114 000927152 000996413 default 061196255 +000000115 000052341 000034436 default 045138596 +000000115 000139940 000106238 default 095945944 +000000115 000174216 000142106 default 028055484 +000000115 000224687 000210368 default 051419260 +000000115 000440373 000272390 default 095622495 +000000115 000453651 000277616 default 032884544 +000000115 000482364 000492825 default 021653992 +000000115 000542078 000553704 default 087703340 +000000115 000886256 000646333 default 093244877 +000000115 000935427 000918184 default 027514974 +000000116 000033413 000065535 default 053958922 +000000116 000147354 000075675 default 028268269 +000000116 000256374 000112368 default 098832876 +000000116 000297193 000591920 default 090905163 +000000116 000300209 000605735 default 093441226 +000000116 000539040 000652812 default 042499489 +000000116 000609835 000657141 default 037795768 +000000116 000624282 000683024 default 002551905 +000000116 000775093 000949751 default 055298390 +000000116 000944758 000993860 default 084050372 +000000117 000048424 000024670 default 038062640 +000000117 000126860 000167425 default 006026880 +000000117 000154467 000203618 default 093717670 +000000117 000172068 000212636 default 003574827 +000000117 000543666 000213225 default 078516375 +000000117 000547282 000443937 default 061529067 +000000117 000685231 000458633 default 022437430 +000000117 000756646 000547574 default 030232596 +000000117 000877322 000575420 default 095510689 +000000117 000910714 000971983 default 004261986 +000000118 000240887 000021300 default 037503552 +000000118 000291450 000064433 default 052471469 +000000118 000463554 000093604 default 067012917 +000000118 000507414 000257907 default 045339708 +000000118 000535296 000264816 default 092880019 +000000118 000566836 000346200 default 064503376 +000000118 000640457 000635278 default 012188122 +000000118 000699492 000642560 default 017978911 +000000118 000778651 000750852 default 017830072 +000000118 000887822 000967058 default 013654132 +000000119 000097635 000063537 default 080665876 +000000119 000124634 000102450 default 072604456 +000000119 000148703 000187128 default 002955999 +000000119 000244969 000194934 default 072062218 +000000119 000362889 000302903 default 084551053 +000000119 000547179 000368216 default 028640417 +000000119 000625129 000372129 default 057538851 +000000119 000746381 000632839 default 047806698 +000000119 000844350 000926883 default 066327457 +000000119 000941162 000930808 default 000662921 +000000120 000158115 000050177 default 098775310 +000000120 000200753 000135706 default 057949288 +000000120 000205945 000152017 default 025691399 +000000120 000293405 000180643 default 077581295 +000000120 000371952 000414582 default 047926420 +000000120 000395298 000492537 default 040554979 +000000120 000431977 000569523 default 038901197 +000000120 000466462 000599684 default 008507790 +000000120 000704060 000799236 default 038914222 +000000120 000993525 000873898 default 082346341 +000000121 000122351 000036376 default 075818732 +000000121 000214367 000138257 default 000783070 +000000121 000215020 000159198 default 054176896 +000000121 000242369 000279636 default 064424022 +000000121 000601299 000604038 default 013901074 +000000121 000650138 000747846 default 058635091 +000000121 000693577 000837504 default 092739125 +000000121 000831521 000931464 default 035960619 +000000121 000868450 000948568 default 060979035 +000000121 000950821 000957007 default 010295475 +000000122 000101179 000165662 default 083393402 +000000122 000135451 000239852 default 082007978 +000000122 000180409 000315439 default 045506600 +000000122 000574743 000512106 default 096406198 +000000122 000686763 000516395 default 059420551 +000000122 000690524 000557373 default 080421893 +000000122 000785669 000857336 default 088432967 +000000122 000814242 000890505 default 019877824 +000000122 000843884 000902252 default 023889038 +000000122 000947304 000996824 default 066086634 +000000123 000027206 000082850 default 015904807 +000000123 000065665 000088259 default 017357598 +000000123 000124447 000189943 default 030009713 +000000123 000264099 000229658 default 038478170 +000000123 000287033 000342387 default 039876212 +000000123 000532568 000468343 default 038102410 +000000123 000565555 000706726 default 057104206 +000000123 000771264 000944781 default 020948395 +000000123 000775909 000946348 default 038629994 +000000123 000950911 000952356 default 057740685 +000000124 000052407 000104276 default 090414200 +000000124 000210052 000248926 default 071232946 +000000124 000372524 000284327 default 014286098 +000000124 000374405 000340316 default 003919070 +000000124 000471329 000417541 default 019264619 +000000124 000593180 000419085 default 044689782 +000000124 000748927 000492506 default 083074043 +000000124 000751225 000614485 default 095493303 +000000124 000866905 000734220 default 018947713 +000000124 000941087 000847095 default 016963162 +000000125 000142226 000010232 default 095600211 +000000125 000324718 000172070 default 079551344 +000000125 000407575 000220479 default 051950291 +000000125 000464308 000224446 default 047286561 +000000125 000503388 000486085 default 024808569 +000000125 000524170 000542504 default 048274803 +000000125 000551067 000714364 default 059040790 +000000125 000694003 000793362 default 093693115 +000000125 000763610 000824538 default 017109395 +000000125 000881183 000986074 default 068253539 +000000126 000010242 000116887 default 003554937 +000000126 000025995 000136400 default 007013468 +000000126 000344284 000207523 default 072176355 +000000126 000499041 000638370 default 040233670 +000000126 000504739 000660873 default 064223072 +000000126 000519546 000675371 default 082997897 +000000126 000626031 000696024 default 082753722 +000000126 000635686 000758981 default 048458445 +000000126 000822136 000775571 default 044312457 +000000126 000822520 000938405 default 091628445 +000000127 000008884 000007496 default 095312763 +000000127 000065851 000049048 default 064801065 +000000127 000072883 000063692 default 077530133 +000000127 000173537 000232880 default 044752905 +000000127 000261902 000333059 default 038449518 +000000127 000378994 000433199 default 061436466 +000000127 000461725 000707794 default 055077267 +000000127 000556315 000788621 default 084136727 +000000127 000700204 000826110 default 095607637 +000000127 000904682 000990428 default 004036052 +000000128 000194722 000025625 default 016271567 +000000128 000238745 000288962 default 032611712 +000000128 000260313 000303662 default 009130609 +000000128 000279127 000308537 default 089609696 +000000128 000309771 000524391 default 018999497 +000000128 000452914 000624895 default 071992208 +000000128 000510756 000691949 default 021220960 +000000128 000562018 000783396 default 000380635 +000000128 000761707 000849435 default 075554568 +000000128 000971010 000985684 default 089339177 +000000129 000054381 000040300 default 068585130 +000000129 000068733 000099128 default 082558021 +000000129 000110595 000351338 default 049789770 +000000129 000172922 000416435 default 064702696 +000000129 000440775 000504982 default 070792759 +000000129 000679639 000628140 default 090203205 +000000129 000786699 000824521 default 067662804 +000000129 000837429 000859215 default 047140464 +000000129 000895842 000995003 default 093607888 +000000129 000981687 000999663 default 040160527 +000000130 000013000 000039970 default 043546150 +000000130 000275527 000111378 default 037796360 +000000130 000488636 000116509 default 017177056 +000000130 000580121 000184246 default 047728570 +000000130 000698513 000252991 default 020391602 +000000130 000706435 000418159 default 082161112 +000000130 000761992 000664044 default 058477364 +000000130 000770724 000702254 default 067718182 +000000130 000923103 000856438 default 067708899 +000000130 000945502 000895883 default 037560928 +000000131 000006885 000373197 default 016231509 +000000131 000014883 000432187 default 011969216 +000000131 000272323 000440495 default 074555024 +000000131 000303627 000531643 default 007460019 +000000131 000322919 000546879 default 071715350 +000000131 000467040 000610751 default 066537089 +000000131 000576228 000632372 default 082860302 +000000131 000617208 000691270 default 045889374 +000000131 000738967 000699505 default 026784662 +000000131 000943329 000922815 default 096221216 +000000132 000348019 000085814 default 056689371 +000000132 000370135 000158720 default 049424293 +000000132 000381115 000286892 default 046704820 +000000132 000531799 000386884 default 035241389 +000000132 000631283 000509547 default 012192838 +000000132 000725235 000519537 default 074898893 +000000132 000752516 000619644 default 038284318 +000000132 000851945 000763520 default 059228903 +000000132 000863763 000803741 default 013844349 +000000132 000910802 000971271 default 014788811 +000000133 000045369 000019629 default 062903099 +000000133 000073941 000310895 default 051539201 +000000133 000230606 000327393 default 012154310 +000000133 000273711 000459096 default 041078863 +000000133 000304080 000558788 default 011658356 +000000133 000369151 000629773 default 055003895 +000000133 000428723 000639137 default 017520526 +000000133 000628539 000689501 default 065396097 +000000133 000666203 000701889 default 017568153 +000000133 000867384 000881976 default 081793169 +000000134 000030034 000070392 default 088981113 +000000134 000420322 000123704 default 025938079 +000000134 000473663 000215329 default 073131427 +000000134 000499013 000348718 default 094168052 +000000134 000499962 000378205 default 094759139 +000000134 000595625 000413675 default 005767496 +000000134 000731859 000458782 default 050801068 +000000134 000763238 000648347 default 091914041 +000000134 000770538 000945237 default 005456255 +000000134 000801886 000971053 default 065995395 +000000135 000169779 000144333 default 049078903 +000000135 000204924 000170617 default 056212011 +000000135 000283879 000185107 default 013955737 +000000135 000374280 000541368 default 019275301 +000000135 000436304 000595794 default 084437203 +000000135 000545337 000664370 default 070560657 +000000135 000713407 000680637 default 055576608 +000000135 000748344 000737247 default 095024751 +000000135 000877434 000738641 default 005216763 +000000135 000989662 000954737 default 001676681 +000000136 000006020 000040179 default 009122086 +000000136 000207772 000076801 default 075567359 +000000136 000321276 000092361 default 048348546 +000000136 000349651 000194730 default 006968859 +000000136 000377527 000262342 default 058993985 +000000136 000591349 000313508 default 055198906 +000000136 000715744 000482123 default 016034687 +000000136 000820319 000692254 default 002246640 +000000136 000929638 000819916 default 023455099 +000000136 000972162 000963286 default 080354661 +000000137 000007296 000086734 default 034614445 +000000137 000108511 000098462 default 093667205 +000000137 000156925 000125880 default 097913585 +000000137 000163151 000269817 default 020801290 +000000137 000215876 000360876 default 038840489 +000000137 000549845 000518879 default 092895765 +000000137 000629411 000580357 default 096726212 +000000137 000862172 000804987 default 097224938 +000000137 000976991 000867678 default 098939115 +000000137 000996113 000985318 default 035685376 +000000138 000198851 000211665 default 053254972 +000000138 000229423 000380162 default 026571009 +000000138 000255547 000434671 default 005496004 +000000138 000271324 000469406 default 038690708 +000000138 000556133 000481576 default 083131523 +000000138 000708179 000558703 default 068897430 +000000138 000724741 000692621 default 012640029 +000000138 000738468 000746124 default 040150389 +000000138 000865036 000963914 default 015534943 +000000138 000969504 000979833 default 092543244 +000000139 000000384 000009267 default 085246160 +000000139 000124482 000031491 default 047726745 +000000139 000184577 000177903 default 059982586 +000000139 000267606 000188293 default 055710356 +000000139 000402426 000253495 default 024511253 +000000139 000591965 000619791 default 041881378 +000000139 000593424 000738528 default 011199621 +000000139 000619756 000782790 default 050132945 +000000139 000701542 000827397 default 020957141 +000000139 000828328 000931405 default 008333652 +000000140 000057790 000031741 default 032745694 +000000140 000068745 000051555 default 067980945 +000000140 000161056 000080017 default 069382969 +000000140 000190803 000264120 default 029795865 +000000140 000351263 000649371 default 082841043 +000000140 000506866 000680530 default 059930612 +000000140 000630032 000727284 default 078549751 +000000140 000742410 000742954 default 054015256 +000000140 000790707 000879190 default 076932420 +000000140 000866486 000920261 default 049447087 +000000141 000043497 000144434 default 083195458 +000000141 000119462 000148987 default 042655043 +000000141 000126341 000246380 default 071689007 +000000141 000241220 000492870 default 068802084 +000000141 000244104 000640065 default 079148835 +000000141 000577548 000671193 default 041307011 +000000141 000610516 000875071 default 075640039 +000000141 000610875 000895661 default 084143362 +000000141 000929338 000914062 default 093768926 +000000141 000992346 000945909 default 040001077 +000000142 000018222 000030115 default 064983956 +000000142 000097214 000091019 default 041695953 +000000142 000612242 000382878 default 019437214 +000000142 000634963 000473650 default 086585531 +000000142 000827308 000534484 default 028619309 +000000142 000869551 000540611 default 010346602 +000000142 000892372 000564499 default 050997930 +000000142 000908074 000569803 default 029746203 +000000142 000908932 000602044 default 074101598 +000000142 000926659 000934160 default 059972993 +000000143 000238776 000048451 default 041145536 +000000143 000305351 000157789 default 036208603 +000000143 000338827 000350351 default 018907603 +000000143 000368074 000401618 default 046682593 +000000143 000382576 000542739 default 020405436 +000000143 000409221 000555055 default 045952713 +000000143 000473915 000603220 default 000311445 +000000143 000519495 000664982 default 083985102 +000000143 000846072 000743649 default 053019719 +000000143 000939262 000895446 default 095522363 +000000144 000012481 000012884 default 035381705 +000000144 000016554 000025119 default 006629110 +000000144 000197815 000083060 default 091252596 +000000144 000300509 000191711 default 074492106 +000000144 000369303 000218296 default 070686322 +000000144 000401978 000235327 default 096815713 +000000144 000529703 000384210 default 034863824 +000000144 000579925 000540636 default 006382904 +000000144 000663124 000788847 default 081366040 +000000144 000672493 000828516 default 044798156 +000000145 000154385 000049682 default 086006701 +000000145 000374076 000228729 default 072280721 +000000145 000383717 000234618 default 031921921 +000000145 000458668 000251176 default 093178632 +000000145 000538606 000264474 default 088649841 +000000145 000568528 000311872 default 038942567 +000000145 000691631 000571489 default 074896949 +000000145 000837168 000891753 default 076541375 +000000145 000870009 000961591 default 081299123 +000000145 000993337 000963802 default 037225660 +000000146 000166539 000085041 default 010167388 +000000146 000183076 000192687 default 025267362 +000000146 000318611 000200680 default 045482736 +000000146 000368442 000241488 default 082375280 +000000146 000412211 000286650 default 026689674 +000000146 000555342 000317683 default 094528462 +000000146 000649728 000444105 default 001562413 +000000146 000699132 000444915 default 025155936 +000000146 000815950 000789100 default 061207167 +000000146 000837956 000814195 default 047312049 +000000147 000108067 000075355 default 052725169 +000000147 000172094 000169803 default 057193758 +000000147 000205547 000180899 default 023116176 +000000147 000222737 000217676 default 018941595 +000000147 000362121 000509722 default 088464278 +000000147 000412636 000608564 default 032274932 +000000147 000447041 000739225 default 027665543 +000000147 000499187 000982397 default 028352482 +000000147 000593370 000987850 default 055607943 +000000147 000795046 000996889 default 039218826 +000000148 000158867 000254376 default 067134294 +000000148 000163160 000348533 default 032812493 +000000148 000167600 000469548 default 054760940 +000000148 000183408 000599588 default 066868489 +000000148 000252653 000746421 default 076788191 +000000148 000363908 000774733 default 095450835 +000000148 000668696 000822842 default 090961002 +000000148 000867634 000905732 default 003736310 +000000148 000904146 000924754 default 096877631 +000000148 000936656 000991789 default 004220235 +000000149 000120394 000057433 default 056572541 +000000149 000229979 000252267 default 085618597 +000000149 000243990 000330880 default 082808653 +000000149 000252183 000627706 default 060582007 +000000149 000350762 000741102 default 002643085 +000000149 000461818 000762115 default 046599930 +000000149 000518930 000862895 default 041892965 +000000149 000614590 000922866 default 002186467 +000000149 000730873 000924516 default 015123181 +000000149 000882988 000982706 default 086472843 +000000150 000004958 000072740 default 066318783 +000000150 000079949 000130076 default 069918127 +000000150 000119396 000131732 default 066797369 +000000150 000154485 000177422 default 023360388 +000000150 000211893 000202898 default 029045461 +000000150 000290693 000206829 default 051319053 +000000150 000812705 000487305 default 049726483 +000000150 000859239 000528272 default 054957833 +000000150 000866608 000667298 default 070747389 +000000150 000890986 000777257 default 003504319 +000000151 000037744 000030590 default 087738715 +000000151 000176060 000095565 default 049392244 +000000151 000287822 000186139 default 088066066 +000000151 000394274 000237436 default 088780238 +000000151 000411811 000283360 default 080216926 +000000151 000684654 000310717 default 059896131 +000000151 000741050 000339840 default 054793129 +000000151 000823684 000491488 default 000001998 +000000151 000844464 000685837 default 030121751 +000000151 000923370 000977279 default 064318328 +000000152 000005404 000051576 default 026935606 +000000152 000039024 000286250 default 092563743 +000000152 000061791 000403376 default 096720867 +000000152 000228398 000433087 default 045304590 +000000152 000258244 000598248 default 028170287 +000000152 000278573 000631355 default 077483809 +000000152 000303177 000748030 default 075938356 +000000152 000310938 000793197 default 054551578 +000000152 000581007 000865803 default 045687043 +000000152 000760421 000982274 default 064090634 +000000153 000008554 000086227 default 031930413 +000000153 000033013 000152953 default 080736344 +000000153 000035366 000433075 default 048675349 +000000153 000044577 000485715 default 093989495 +000000153 000088089 000489727 default 018874877 +000000153 000207565 000602268 default 082434843 +000000153 000279908 000691480 default 022924257 +000000153 000296878 000732459 default 091659553 +000000153 000677446 000761927 default 038453194 +000000153 000836923 000919844 default 058324315 +000000154 000147839 000139548 default 063031754 +000000154 000185626 000176732 default 094645191 +000000154 000211425 000232503 default 067873259 +000000154 000339577 000283922 default 028562092 +000000154 000386352 000365656 default 010399484 +000000154 000486593 000635540 default 083981594 +000000154 000490093 000680654 default 090321811 +000000154 000708759 000690674 default 053980868 +000000154 000711799 000813321 default 063284878 +000000154 000859380 000949458 default 099070038 +000000155 000194984 000020580 default 058607586 +000000155 000229242 000030448 default 067195445 +000000155 000239541 000033810 default 063880099 +000000155 000373980 000109203 default 063359121 +000000155 000546502 000552989 default 088269699 +000000155 000591056 000594283 default 022053392 +000000155 000702464 000607071 default 084379827 +000000155 000750069 000660893 default 020740024 +000000155 000819908 000723556 default 056754506 +000000155 000823186 000743704 default 081493034 +000000156 000109024 000015038 default 054391299 +000000156 000236683 000331724 default 032147330 +000000156 000279184 000340872 default 068309946 +000000156 000312857 000348493 default 037977007 +000000156 000499885 000404614 default 086734321 +000000156 000568463 000766205 default 017669915 +000000156 000712090 000837585 default 053598404 +000000156 000729722 000867194 default 019786555 +000000156 000754234 000878007 default 073527927 +000000156 000878046 000976825 default 072897911 +000000157 000002412 000064278 default 003434711 +000000157 000007888 000298398 default 036847651 +000000157 000320936 000338526 default 048304490 +000000157 000454780 000366943 default 096189065 +000000157 000592086 000445697 default 036272740 +000000157 000608708 000568582 default 059895118 +000000157 000680605 000593907 default 057776461 +000000157 000874429 000784904 default 059995439 +000000157 000919907 000826823 default 033839143 +000000157 000968426 000893438 default 016768238 +000000158 000063227 000123631 default 003230474 +000000158 000380650 000299085 default 017000688 +000000158 000448829 000408772 default 084121150 +000000158 000481860 000413669 default 074781479 +000000158 000515938 000495965 default 079350258 +000000158 000643125 000538764 default 075343028 +000000158 000659997 000820542 default 084374896 +000000158 000703510 000840596 default 074284032 +000000158 000718865 000856361 default 031384779 +000000158 000725888 000891679 default 091751130 +000000159 000081112 000163347 default 095270766 +000000159 000281509 000462265 default 048810588 +000000159 000287046 000510839 default 005498866 +000000159 000394035 000634621 default 092304906 +000000159 000447292 000665299 default 083077741 +000000159 000448175 000766695 default 041414813 +000000159 000703571 000880527 default 025711671 +000000159 000821721 000919050 default 059661445 +000000159 000849910 000932282 default 025537056 +000000159 000854015 000999841 default 041074151 +000000160 000023960 000070730 default 028543463 +000000160 000039548 000094909 default 006881532 +000000160 000108545 000233904 default 021032948 +000000160 000202805 000267527 default 068127792 +000000160 000309340 000285123 default 041808284 +000000160 000339069 000361538 default 061369728 +000000160 000697845 000473938 default 029813670 +000000160 000699332 000532817 default 023549461 +000000160 000788680 000933656 default 042006623 +000000160 000797227 000980476 default 060723409 +000000161 000057031 000095146 default 065424577 +000000161 000353738 000156459 default 093608986 +000000161 000379572 000277884 default 016644136 +000000161 000748111 000511886 default 037451255 +000000161 000757681 000587982 default 010795913 +000000161 000778041 000679761 default 022680855 +000000161 000791304 000690294 default 051402187 +000000161 000885213 000804626 default 035024713 +000000161 000897889 000903179 default 092079281 +000000161 000988617 000937087 default 092670974 +000000162 000047935 000055626 default 080740561 +000000162 000197766 000077792 default 003933500 +000000162 000218641 000113279 default 013831417 +000000162 000430141 000353848 default 030932391 +000000162 000442657 000408191 default 076672089 +000000162 000540996 000651442 default 047635162 +000000162 000548910 000665673 default 079269751 +000000162 000673601 000710442 default 019297263 +000000162 000865366 000842642 default 017326058 +000000162 000871678 000861039 default 025930354 +000000163 000100570 000063268 default 021620862 +000000163 000151335 000286610 default 010432157 +000000163 000179503 000305115 default 079562145 +000000163 000339305 000344515 default 076151174 +000000163 000519280 000403616 default 039964482 +000000163 000722994 000409146 default 035653655 +000000163 000757090 000452541 default 081887180 +000000163 000930625 000524993 default 010515182 +000000163 000935377 000743466 default 031848303 +000000163 000986595 000990645 default 083220436 +000000164 000022339 000003853 default 036214895 +000000164 000346903 000305122 default 025311654 +000000164 000560731 000313687 default 077537906 +000000164 000614662 000386425 default 091887097 +000000164 000750934 000468374 default 049388121 +000000164 000765130 000507453 default 059077690 +000000164 000899079 000521871 default 061919980 +000000164 000914058 000730811 default 047901595 +000000164 000928084 000741403 default 078197278 +000000164 000950699 000811150 default 052292647 +000000165 000091059 000125695 default 057775679 +000000165 000138842 000198137 default 074235902 +000000165 000149043 000308836 default 021381750 +000000165 000191808 000376102 default 060728595 +000000165 000383446 000466658 default 093337452 +000000165 000446334 000483102 default 081641207 +000000165 000493268 000592544 default 067644393 +000000165 000605694 000778512 default 056526526 +000000165 000940339 000880994 default 012766088 +000000165 000980297 000891913 default 076737237 +000000166 000049600 000200320 default 071451129 +000000166 000075054 000240980 default 023542232 +000000166 000166419 000280538 default 043018040 +000000166 000172144 000287876 default 079964031 +000000166 000179070 000430457 default 027537621 +000000166 000289909 000431667 default 064069327 +000000166 000365309 000467231 default 020334891 +000000166 000606607 000783760 default 017186552 +000000166 000754803 000820595 default 001939836 +000000166 000965757 000842236 default 029012353 +000000167 000116258 000024193 default 017130385 +000000167 000187929 000083458 default 012240433 +000000167 000236906 000322614 default 083049487 +000000167 000336685 000390338 default 093593195 +000000167 000426421 000419817 default 073257410 +000000167 000449158 000490756 default 030587031 +000000167 000515835 000675350 default 090980059 +000000167 000537857 000748202 default 091364095 +000000167 000650797 000793062 default 017892934 +000000167 000920175 000894872 default 038483669 +000000168 000001887 000013096 default 013405248 +000000168 000035529 000340222 default 006286549 +000000168 000038723 000457640 default 037276307 +000000168 000100041 000575674 default 017557146 +000000168 000140702 000585194 default 019505188 +000000168 000277795 000646940 default 064782436 +000000168 000690427 000679298 default 002549334 +000000168 000718049 000705669 default 072746354 +000000168 000931262 000875777 default 038994220 +000000168 000950475 000892681 default 025701138 +000000169 000434733 000027290 default 095486494 +000000169 000437419 000060659 default 050210510 +000000169 000447156 000147558 default 050083185 +000000169 000519631 000240644 default 020738072 +000000169 000529264 000287882 default 031455306 +000000169 000572886 000293170 default 000714721 +000000169 000726757 000449607 default 095236138 +000000169 000777982 000470194 default 068470145 +000000169 000829529 000599581 default 025159942 +000000169 000964330 000615804 default 088441679 +000000170 000007943 000120538 default 058122011 +000000170 000129582 000121859 default 019587094 +000000170 000345961 000291060 default 083131916 +000000170 000477183 000440968 default 001272588 +000000170 000559352 000535137 default 067336264 +000000170 000572505 000579647 default 008956898 +000000170 000572619 000642995 default 018204176 +000000170 000685859 000656800 default 006991026 +000000170 000731281 000850595 default 014309417 +000000170 000993229 000936844 default 050766880 +000000171 000028619 000167441 default 007624327 +000000171 000122307 000199246 default 049630795 +000000171 000165091 000278320 default 023590657 +000000171 000264586 000352455 default 007967979 +000000171 000280074 000359063 default 007245304 +000000171 000330842 000487244 default 060451585 +000000171 000503979 000585318 default 006006518 +000000171 000523477 000680318 default 037974458 +000000171 000530916 000694926 default 039896636 +000000171 000903318 000880424 default 049761450 +000000172 000057059 000136538 default 093007885 +000000172 000155855 000148580 default 012710301 +000000172 000388210 000392866 default 076598349 +000000172 000452376 000405990 default 021994152 +000000172 000472401 000612754 default 063750797 +000000172 000502319 000661933 default 090301973 +000000172 000685733 000697089 default 051682690 +000000172 000695919 000716476 default 064404663 +000000172 000913587 000792612 default 082868345 +000000172 000925173 000888736 default 076679319 +000000173 000046600 000010808 default 050346505 +000000173 000049240 000026274 default 004651326 +000000173 000268341 000416447 default 009927908 +000000173 000435486 000521062 default 055790447 +000000173 000476817 000575525 default 096758097 +000000173 000678527 000621193 default 021225963 +000000173 000739241 000677223 default 087551895 +000000173 000761544 000805275 default 051267548 +000000173 000871816 000882379 default 062819315 +000000173 000969523 000906325 default 087640111 +000000174 000160751 000023608 default 015199719 +000000174 000201713 000070814 default 005751749 +000000174 000223207 000106835 default 083347116 +000000174 000227890 000115625 default 057542692 +000000174 000643093 000398121 default 052776969 +000000174 000696986 000476469 default 003979140 +000000174 000741980 000508667 default 090685256 +000000174 000762161 000633784 default 077586352 +000000174 000880722 000731581 default 043552326 +000000174 000896837 000914021 default 005293696 +000000175 000034101 000197775 default 055036156 +000000175 000065962 000220243 default 083457821 +000000175 000258939 000304358 default 001704103 +000000175 000274725 000374210 default 065670208 +000000175 000356191 000387234 default 044038183 +000000175 000497948 000698063 default 070721375 +000000175 000566672 000778938 default 025241127 +000000175 000574735 000799880 default 055920890 +000000175 000686418 000846022 default 039911911 +000000175 000689033 000933114 default 083528218 +000000176 000152610 000128097 default 088351021 +000000176 000331971 000140920 default 079586832 +000000176 000442459 000292466 default 000864872 +000000176 000451296 000306186 default 063987997 +000000176 000519558 000322407 default 070748738 +000000176 000546583 000449121 default 049493117 +000000176 000604569 000492857 default 095034455 +000000176 000694383 000691315 default 025586888 +000000176 000736943 000826134 default 005006931 +000000176 000899518 000967788 default 012794323 +000000177 000013311 000013011 default 012766114 +000000177 000103920 000249701 default 051341322 +000000177 000114777 000346031 default 055237817 +000000177 000153167 000450621 default 044907658 +000000177 000223796 000455945 default 093114455 +000000177 000255698 000678932 default 012856046 +000000177 000303795 000726285 default 081528677 +000000177 000522236 000814111 default 034485588 +000000177 000657818 000841040 default 022380225 +000000177 000664958 000936529 default 054488616 +000000178 000031184 000001607 default 077095019 +000000178 000326005 000067070 default 091009037 +000000178 000473668 000142353 default 056594140 +000000178 000518120 000233423 default 008936553 +000000178 000587463 000486722 default 046669268 +000000178 000825074 000547861 default 078992832 +000000178 000844795 000724314 default 061808447 +000000178 000904703 000752028 default 000417486 +000000178 000927040 000898764 default 035492817 +000000178 000971374 000964287 default 031690510 +000000179 000002233 000037982 default 011726289 +000000179 000023196 000041078 default 078406201 +000000179 000059890 000078923 default 016366837 +000000179 000207596 000205812 default 000803188 +000000179 000224598 000207598 default 098083025 +000000179 000565554 000218123 default 028204540 +000000179 000590661 000489798 default 019211050 +000000179 000655708 000762339 default 008162812 +000000179 000710484 000770403 default 029630760 +000000179 000840797 000858353 default 004116176 +000000180 000011822 000110413 default 022745770 +000000180 000051071 000247939 default 029385207 +000000180 000169790 000434689 default 069250474 +000000180 000197278 000437830 default 012678049 +000000180 000287880 000441817 default 010092658 +000000180 000397455 000525635 default 081431744 +000000180 000800831 000555660 default 060086161 +000000180 000817126 000609537 default 028184302 +000000180 000857831 000853649 default 067685990 +000000180 000883273 000907456 default 045593610 +000000181 000029512 000225647 default 067068617 +000000181 000052749 000301128 default 070785663 +000000181 000186334 000487179 default 035960238 +000000181 000228121 000499811 default 027508639 +000000181 000403134 000574634 default 053012054 +000000181 000607874 000660739 default 058752535 +000000181 000785100 000779545 default 037718097 +000000181 000849215 000848715 default 033855917 +000000181 000922320 000912824 default 065855288 +000000181 000930645 000991408 default 028707453 +000000182 000002022 000012922 default 013789379 +000000182 000257235 000014691 default 089973467 +000000182 000463064 000235516 default 037879501 +000000182 000639923 000248871 default 094559950 +000000182 000688631 000403375 default 048628758 +000000182 000695804 000420389 default 039430552 +000000182 000738216 000449252 default 014542091 +000000182 000837227 000597979 default 047562101 +000000182 000840669 000797532 default 031700112 +000000182 000934069 000932228 default 091719620 +000000183 000148660 000010937 default 004607613 +000000183 000240944 000046432 default 047483398 +000000183 000539178 000352451 default 045921166 +000000183 000550277 000362665 default 029693775 +000000183 000661664 000480559 default 027067877 +000000183 000671714 000554838 default 000809770 +000000183 000868204 000574771 default 043547673 +000000183 000913613 000839894 default 065689058 +000000183 000948720 000900127 default 066035055 +000000183 000998925 000914123 default 021015884 +000000184 000049678 000331587 default 076875148 +000000184 000133078 000383252 default 069114845 +000000184 000153936 000385811 default 083439971 +000000184 000194995 000489502 default 046895176 +000000184 000380019 000638275 default 024019826 +000000184 000625819 000646182 default 065682214 +000000184 000751242 000670692 default 058061128 +000000184 000754739 000672110 default 027044977 +000000184 000765762 000723031 default 085953318 +000000184 000896719 000973305 default 091638057 +000000185 000041020 000020113 default 049695781 +000000185 000054149 000138978 default 091633352 +000000185 000101800 000255447 default 076607538 +000000185 000144372 000273474 default 043057305 +000000185 000479017 000390490 default 085161640 +000000185 000525688 000611344 default 046929819 +000000185 000570170 000643166 default 042504127 +000000185 000649197 000647064 default 085129603 +000000185 000847789 000884710 default 060165080 +000000185 000900709 000885253 default 049418060 +000000186 000040253 000004815 default 067078557 +000000186 000056040 000163502 default 016486381 +000000186 000072291 000269488 default 005236121 +000000186 000280979 000288913 default 097438609 +000000186 000318080 000426474 default 052026247 +000000186 000631114 000466487 default 054455636 +000000186 000681027 000562981 default 020207788 +000000186 000895384 000643611 default 007815440 +000000186 000895627 000821938 default 034206292 +000000186 000961482 000962507 default 070275174 +000000187 000176767 000059234 default 038136393 +000000187 000272464 000155086 default 069849218 +000000187 000341425 000220293 default 077998944 +000000187 000351916 000518766 default 031987998 +000000187 000365446 000529455 default 079899790 +000000187 000475141 000532930 default 047032207 +000000187 000536747 000619011 default 080102987 +000000187 000885861 000733469 default 032037412 +000000187 000930868 000755275 default 089818149 +000000187 000989765 000958407 default 080660954 +000000188 000080313 000143066 default 016419650 +000000188 000168634 000207128 default 063217943 +000000188 000447613 000227281 default 076481962 +000000188 000505612 000349293 default 044275736 +000000188 000566402 000491471 default 055354413 +000000188 000570145 000561051 default 026314869 +000000188 000648637 000665194 default 017691983 +000000188 000908800 000695861 default 071481533 +000000188 000951074 000832955 default 057735655 +000000188 000958706 000881981 default 057686839 +000000189 000234465 000088372 default 000047009 +000000189 000244391 000266629 default 088178216 +000000189 000342758 000271843 default 067402533 +000000189 000460750 000528395 default 011318426 +000000189 000484032 000601833 default 000379000 +000000189 000540863 000620113 default 045168734 +000000189 000573020 000842166 default 009289343 +000000189 000763481 000883360 default 051334949 +000000189 000979250 000946906 default 043574977 +000000189 000991717 000976348 default 015627525 +000000190 000209715 000032521 default 051684693 +000000190 000217185 000081270 default 047463183 +000000190 000342954 000322343 default 058220935 +000000190 000424087 000452723 default 076383382 +000000190 000454055 000467141 default 074626299 +000000190 000679679 000489209 default 045555414 +000000190 000799192 000556000 default 097984038 +000000190 000918851 000687295 default 020723864 +000000190 000967131 000925306 default 022247431 +000000190 000969804 000985818 default 040993900 +000000191 000026321 000128707 default 085592598 +000000191 000044843 000415526 default 057641806 +000000191 000072103 000462877 default 084205449 +000000191 000163297 000485222 default 074333991 +000000191 000462251 000563655 default 071606115 +000000191 000708106 000605821 default 061917472 +000000191 000757816 000808199 default 005418789 +000000191 000773207 000854029 default 028311231 +000000191 000892339 000941619 default 037757076 +000000191 000904942 000954779 default 072116067 +000000192 000130350 000003090 default 056698815 +000000192 000225135 000166038 default 014182946 +000000192 000376392 000181197 default 046877232 +000000192 000437560 000478944 default 035786938 +000000192 000463378 000848629 default 063047937 +000000192 000544552 000919496 default 033064694 +000000192 000687119 000949702 default 050599919 +000000192 000701803 000950619 default 008717231 +000000192 000920456 000977978 default 084227511 +000000192 000963163 000979527 default 047077778 +000000193 000100233 000024553 default 019578003 +000000193 000165175 000040104 default 096361747 +000000193 000221464 000156837 default 060444511 +000000193 000385686 000187556 default 041208575 +000000193 000478970 000365543 default 090379053 +000000193 000624514 000373474 default 073656734 +000000193 000760854 000407555 default 002125813 +000000193 000882481 000509101 default 017270591 +000000193 000980089 000523811 default 033015864 +000000193 000996858 000961587 default 067723823 +000000194 000202107 000014217 default 052291865 +000000194 000210363 000284822 default 060485081 +000000194 000276644 000316896 default 096138194 +000000194 000391222 000470834 default 083837506 +000000194 000417857 000487957 default 019125688 +000000194 000476139 000529263 default 009330127 +000000194 000679954 000579165 default 025620208 +000000194 000701811 000866469 default 018470613 +000000194 000810644 000881781 default 068973287 +000000194 000933519 000990189 default 025776921 +000000195 000059271 000072492 default 014423918 +000000195 000176991 000292841 default 058400168 +000000195 000193526 000315721 default 047815238 +000000195 000219113 000416357 default 048355966 +000000195 000332053 000498194 default 033884773 +000000195 000353603 000805352 default 098962424 +000000195 000431417 000815869 default 069070787 +000000195 000672530 000865164 default 064680918 +000000195 000677182 000898870 default 056699477 +000000195 000941741 000901198 default 062247265 +000000196 000036909 000035189 default 015482125 +000000196 000047207 000129364 default 098885916 +000000196 000181649 000130165 default 010130097 +000000196 000319949 000274895 default 048591712 +000000196 000426543 000330992 default 049755617 +000000196 000642650 000427040 default 064516327 +000000196 000751035 000435785 default 031179099 +000000196 000831023 000514084 default 089341474 +000000196 000834429 000823279 default 002952577 +000000196 000872405 000887207 default 086115673 +000000197 000036996 000192537 default 038295818 +000000197 000257320 000287119 default 099753861 +000000197 000276785 000300398 default 093144109 +000000197 000402276 000309782 default 065983148 +000000197 000479213 000386485 default 010512596 +000000197 000542051 000388785 default 003015351 +000000197 000543594 000532382 default 060442674 +000000197 000648793 000650128 default 029762874 +000000197 000815388 000993921 default 038361273 +000000197 000987401 000998388 default 085414495 +000000198 000002260 000056748 default 003309406 +000000198 000085243 000062738 default 018756806 +000000198 000165041 000075765 default 065063508 +000000198 000167686 000135588 default 043159664 +000000198 000234879 000171474 default 094402234 +000000198 000263298 000182522 default 091749898 +000000198 000311769 000291532 default 091718881 +000000198 000317986 000355060 default 089793270 +000000198 000635990 000508732 default 040416594 +000000198 000754130 000787769 default 058071308 +000000199 000068595 000141738 default 080617253 +000000199 000175302 000223074 default 060326526 +000000199 000391445 000332480 default 020957318 +000000199 000413102 000379000 default 088432898 +000000199 000494776 000453141 default 000943688 +000000199 000495000 000502460 default 092102993 +000000199 000765126 000510427 default 020265983 +000000199 000891678 000696408 default 092918276 +000000199 000954280 000704895 default 086060164 +000000199 000963610 000997740 default 078696339 +000000200 000066358 000164364 default 020806968 +000000200 000098474 000233218 default 062517779 +000000200 000252718 000250399 default 089107691 +000000200 000335694 000319686 default 028603677 +000000200 000388078 000597350 default 012141455 +000000200 000412129 000676253 default 052149440 +000000200 000429128 000694363 default 018060228 +000000200 000479935 000711439 default 077596810 +000000200 000602069 000797748 default 071826720 +000000200 000962613 000812556 default 038350711 +000000201 000078560 000058615 default 000664246 +000000201 000143285 000191492 default 066031164 +000000201 000162953 000209309 default 017633857 +000000201 000259758 000561712 default 037737752 +000000201 000300443 000611404 default 075706431 +000000201 000302522 000622643 default 070375915 +000000201 000346137 000623149 default 033634967 +000000201 000406164 000732516 default 087732314 +000000201 000654498 000827713 default 030530172 +000000201 000826800 000930856 default 085194467 +000000202 000100227 000153541 default 036724593 +000000202 000266073 000273703 default 063928214 +000000202 000276713 000422308 default 082415050 +000000202 000424481 000516264 default 006325645 +000000202 000693434 000619938 default 060848906 +000000202 000715604 000700116 default 049624947 +000000202 000740421 000797600 default 098636409 +000000202 000841614 000873087 default 093840517 +000000202 000877887 000931211 default 091844808 +000000202 000975582 000970296 default 071043758 +000000203 000023292 000006063 default 042319566 +000000203 000200870 000141080 default 096909410 +000000203 000308396 000202343 default 055013203 +000000203 000630189 000515677 default 063374800 +000000203 000691510 000600766 default 065604655 +000000203 000750740 000657235 default 026297950 +000000203 000788021 000776958 default 061596418 +000000203 000905318 000800042 default 013761249 +000000203 000951327 000842927 default 037770197 +000000203 000961157 000920640 default 025360063 +000000204 000019070 000145063 default 016203433 +000000204 000051237 000198841 default 089270093 +000000204 000064926 000275967 default 049914143 +000000204 000136452 000301958 default 079685842 +000000204 000179283 000307750 default 035964511 +000000204 000481703 000506985 default 037351029 +000000204 000630841 000684489 default 099109988 +000000204 000684122 000692577 default 021354386 +000000204 000805283 000769259 default 068859222 +000000204 000939831 000961919 default 068147340 +000000205 000148900 000435101 default 032778752 +000000205 000329643 000490755 default 055429662 +000000205 000482090 000504893 default 060558910 +000000205 000483806 000688450 default 020183303 +000000205 000510192 000713737 default 044706034 +000000205 000582515 000731012 default 078383222 +000000205 000824359 000752514 default 011575297 +000000205 000874899 000949812 default 074586366 +000000205 000885643 000955814 default 005179302 +000000205 000951795 000975885 default 098146718 +000000206 000067497 000118734 default 056528204 +000000206 000068132 000126925 default 064042622 +000000206 000213802 000138302 default 063701845 +000000206 000278494 000246244 default 030241771 +000000206 000320343 000337186 default 054052269 +000000206 000555954 000356499 default 079083146 +000000206 000564122 000686623 default 048202724 +000000206 000726831 000760401 default 096217800 +000000206 000826740 000760680 default 033130099 +000000206 000936627 000788329 default 089228042 +000000207 000016872 000014462 default 020308925 +000000207 000080637 000049177 default 012745844 +000000207 000081378 000135198 default 014890910 +000000207 000176964 000203652 default 075467599 +000000207 000217314 000415750 default 047899058 +000000207 000352927 000576732 default 077444651 +000000207 000364692 000624289 default 068147462 +000000207 000600788 000663075 default 049777974 +000000207 000687874 000843374 default 014258250 +000000207 000918274 000991609 default 042434280 +000000208 000222844 000147930 default 033624222 +000000208 000456252 000216123 default 028828528 +000000208 000598726 000369610 default 084061776 +000000208 000643170 000421792 default 003746441 +000000208 000723663 000566506 default 093151765 +000000208 000776073 000647732 default 035740287 +000000208 000816754 000713815 default 061460832 +000000208 000880918 000757205 default 083711404 +000000208 000883893 000948491 default 094336288 +000000208 000899592 000958768 default 083935889 +000000209 000352513 000015890 default 079634683 +000000209 000374548 000067914 default 005589095 +000000209 000374652 000174217 default 065170415 +000000209 000565806 000319936 default 010053206 +000000209 000660602 000367496 default 068662750 +000000209 000677559 000373606 default 089899144 +000000209 000723680 000479317 default 004083134 +000000209 000801715 000635718 default 053134583 +000000209 000882840 000803146 default 051950200 +000000209 000939328 000885213 default 038356097 +000000210 000241419 000136681 default 001914969 +000000210 000388173 000574335 default 093180691 +000000210 000439945 000598548 default 075895256 +000000210 000480037 000624058 default 024616109 +000000210 000526317 000634356 default 038159944 +000000210 000532691 000714558 default 041432028 +000000210 000646139 000770505 default 004167729 +000000210 000689262 000959572 default 016423864 +000000210 000802278 000973858 default 066688241 +000000210 000908279 000997046 default 061439130 +000000211 000121180 000229868 default 045474787 +000000211 000133478 000326720 default 032702454 +000000211 000211541 000416756 default 088892205 +000000211 000224624 000538844 default 065532991 +000000211 000379797 000610275 default 063105831 +000000211 000614630 000638299 default 086828819 +000000211 000660647 000810965 default 032335302 +000000211 000779366 000821459 default 070999404 +000000211 000802189 000892410 default 016620227 +000000211 000864604 000908308 default 073827793 +000000212 000116207 000006180 default 069767647 +000000212 000137509 000065999 default 031201919 +000000212 000175607 000469940 default 044586209 +000000212 000215140 000469968 default 093469076 +000000212 000386457 000518149 default 065667790 +000000212 000429148 000709549 default 080326734 +000000212 000430903 000823234 default 096688243 +000000212 000578654 000844716 default 067446350 +000000212 000668080 000846653 default 089040988 +000000212 000976181 000969294 default 034780444 +000000213 000008405 000035511 default 043805514 +000000213 000072138 000043357 default 066533648 +000000213 000076488 000087905 default 063138892 +000000213 000302043 000306811 default 070884448 +000000213 000334661 000451729 default 055143521 +000000213 000436800 000564803 default 083264656 +000000213 000464506 000612576 default 033306086 +000000213 000625436 000641208 default 002801852 +000000213 000725090 000739740 default 041689089 +000000213 000725398 000953338 default 029844079 +000000214 000039002 000091205 default 026859264 +000000214 000102984 000197811 default 064008218 +000000214 000590671 000198783 default 067275455 +000000214 000630601 000246009 default 058598453 +000000214 000704753 000298034 default 037773693 +000000214 000728106 000338228 default 042732559 +000000214 000821259 000392026 default 099535176 +000000214 000975391 000571016 default 083367015 +000000214 000984235 000638782 default 046668989 +000000214 000990885 000964666 default 034779334 +000000215 000010283 000052443 default 052334276 +000000215 000187500 000171315 default 059745499 +000000215 000353291 000194778 default 070812629 +000000215 000526392 000362915 default 096066471 +000000215 000651324 000459223 default 028112801 +000000215 000672408 000541133 default 079172559 +000000215 000695367 000543348 default 089544935 +000000215 000758791 000571786 default 046595848 +000000215 000914955 000672862 default 098707008 +000000215 000937163 000709005 default 013146292 +000000216 000058390 000260719 default 051885057 +000000216 000149181 000320752 default 071328455 +000000216 000224340 000354574 default 054956132 +000000216 000301763 000374414 default 059995646 +000000216 000513787 000596978 default 064893726 +000000216 000606551 000662743 default 012386908 +000000216 000717073 000680727 default 065913863 +000000216 000804355 000734469 default 034464907 +000000216 000819024 000887791 default 056847582 +000000216 000896266 000948542 default 094750526 +000000217 000078690 000012124 default 067879249 +000000217 000114061 000173109 default 006422601 +000000217 000239541 000322272 default 058288900 +000000217 000270390 000560086 default 000666188 +000000217 000297688 000584378 default 033162615 +000000217 000319006 000665425 default 044325087 +000000217 000391204 000714468 default 001438927 +000000217 000657010 000721328 default 069418202 +000000217 000719599 000757683 default 036178771 +000000217 000933796 000901382 default 035096027 +000000218 000055804 000034314 default 035389487 +000000218 000132233 000042699 default 027442484 +000000218 000193532 000099197 default 064011967 +000000218 000215722 000242585 default 027645732 +000000218 000280582 000390753 default 001164785 +000000218 000336464 000397550 default 099658955 +000000218 000557351 000657243 default 065305909 +000000218 000680018 000722954 default 057810105 +000000218 000701856 000842137 default 085062642 +000000218 000912395 000926116 default 048148317 +000000219 000007112 000278737 default 027402315 +000000219 000013038 000279039 default 028746702 +000000219 000028217 000354962 default 014246754 +000000219 000092141 000393781 default 069324054 +000000219 000157500 000625616 default 002166093 +000000219 000489740 000637235 default 062292137 +000000219 000812538 000655711 default 073810911 +000000219 000869276 000658461 default 015766574 +000000219 000874012 000714748 default 080191178 +000000219 000972522 000971747 default 082722480 +000000220 000022844 000234054 default 022970151 +000000220 000032530 000354830 default 007572418 +000000220 000190885 000431334 default 036648354 +000000220 000268672 000618375 default 069663421 +000000220 000450533 000698402 default 065211797 +000000220 000705118 000717449 default 041402290 +000000220 000733067 000728451 default 031807782 +000000220 000827292 000794718 default 098286809 +000000220 000927522 000828541 default 036497972 +000000220 000936273 000931264 default 074744447 +000000221 000030306 000020226 default 075974041 +000000221 000053822 000022703 default 092474823 +000000221 000124091 000206409 default 019789170 +000000221 000252596 000361133 default 025357085 +000000221 000469615 000771675 default 005745361 +000000221 000849514 000773307 default 076843980 +000000221 000901609 000919135 default 054037569 +000000221 000916128 000949415 default 061764650 +000000221 000938954 000978428 default 047933281 +000000221 000994736 000990837 default 073009846 +000000222 000024800 000139124 default 064708627 +000000222 000099220 000191764 default 002275108 +000000222 000265864 000257886 default 021969045 +000000222 000383703 000274182 default 061799769 +000000222 000401403 000450358 default 012126981 +000000222 000457038 000506790 default 083907683 +000000222 000509324 000562505 default 030944820 +000000222 000516955 000566979 default 015580962 +000000222 000619256 000611070 default 032369748 +000000222 000744122 000763819 default 080923557 +000000223 000004592 000040405 default 061138964 +000000223 000223327 000193497 default 081552631 +000000223 000327534 000227848 default 049871194 +000000223 000447877 000336221 default 097698588 +000000223 000458316 000594110 default 032652476 +000000223 000514903 000713897 default 028034536 +000000223 000594938 000743481 default 078228298 +000000223 000694127 000853778 default 022169004 +000000223 000898405 000870252 default 041500361 +000000223 000923424 000951591 default 069845636 +000000224 000019166 000077493 default 079989617 +000000224 000058543 000162800 default 045719835 +000000224 000103171 000406352 default 072601458 +000000224 000367196 000409129 default 034211450 +000000224 000411694 000451482 default 034013847 +000000224 000480290 000557601 default 085790235 +000000224 000686310 000634266 default 061150132 +000000224 000858062 000826956 default 011804124 +000000224 000881832 000878581 default 084936107 +000000224 000889737 000911637 default 078567785 +000000225 000132979 000272974 default 059402452 +000000225 000156710 000318589 default 067192365 +000000225 000260421 000361101 default 090430413 +000000225 000595947 000407328 default 059252491 +000000225 000604785 000529930 default 049421014 +000000225 000605364 000582265 default 027151629 +000000225 000649909 000796138 default 099696354 +000000225 000747626 000839002 default 020404133 +000000225 000773914 000943432 default 096281528 +000000225 000933356 000952831 default 038036590 +000000226 000000576 000074114 default 027415461 +000000226 000032084 000400218 default 024148895 +000000226 000137889 000408163 default 055188516 +000000226 000186703 000506174 default 023333130 +000000226 000188003 000546221 default 012744836 +000000226 000469927 000557328 default 070084283 +000000226 000520810 000621652 default 043932038 +000000226 000805553 000749411 default 019519985 +000000226 000880830 000768874 default 009391078 +000000226 000917380 000838644 default 049359081 +000000227 000019814 000207407 default 013098206 +000000227 000076127 000382890 default 084029047 +000000227 000231772 000409697 default 050683745 +000000227 000241476 000525450 default 095853292 +000000227 000267240 000584754 default 012724313 +000000227 000393458 000662391 default 022359468 +000000227 000505740 000865342 default 015062816 +000000227 000563419 000937108 default 074188882 +000000227 000584921 000940565 default 060641269 +000000227 000758413 000997079 default 013849597 +000000228 000071495 000023220 default 023811156 +000000228 000378268 000029687 default 082387526 +000000228 000475302 000042538 default 094544618 +000000228 000529999 000133560 default 065120524 +000000228 000746651 000165870 default 085807679 +000000228 000763212 000300946 default 017269317 +000000228 000868658 000417420 default 089802308 +000000228 000891537 000454968 default 003331340 +000000228 000922654 000820414 default 035764208 +000000228 000931839 000890939 default 063581438 +000000229 000077539 000350710 default 023638230 +000000229 000081307 000595624 default 029565632 +000000229 000126901 000611128 default 034791937 +000000229 000130326 000629992 default 046186795 +000000229 000368343 000664052 default 020923093 +000000229 000467614 000763652 default 084328692 +000000229 000560388 000863893 default 048913046 +000000229 000648558 000877091 default 090628357 +000000229 000774413 000879985 default 080202220 +000000229 000947646 000911420 default 060123044 +000000230 000062122 000074660 default 054600075 +000000230 000080963 000286515 default 054570688 +000000230 000213676 000323009 default 024296159 +000000230 000305082 000649243 default 066530229 +000000230 000318766 000652725 default 085581029 +000000230 000326581 000665216 default 009343001 +000000230 000896637 000728781 default 067520994 +000000230 000920499 000796187 default 045392076 +000000230 000928541 000941779 default 045171780 +000000230 000958454 000992939 default 096359084 +000000231 000025055 000137491 default 076586197 +000000231 000057430 000144842 default 001466012 +000000231 000099391 000270554 default 029970930 +000000231 000175543 000388132 default 046250922 +000000231 000181918 000434814 default 082767802 +000000231 000220657 000563129 default 067092763 +000000231 000443169 000578196 default 021792419 +000000231 000513022 000683152 default 080064555 +000000231 000599321 000851432 default 049309932 +000000231 000854406 000932196 default 064493487 +000000232 000084733 000140145 default 009399709 +000000232 000121803 000468535 default 026807590 +000000232 000167580 000733074 default 058355605 +000000232 000280084 000740782 default 080580851 +000000232 000396536 000800752 default 048016387 +000000232 000399351 000906740 default 042385151 +000000232 000463944 000912440 default 041922785 +000000232 000549880 000927763 default 080210230 +000000232 000867985 000963231 default 052643553 +000000232 000891209 000998890 default 020635149 +000000233 000172351 000030972 default 062060451 +000000233 000188990 000197748 default 009306144 +000000233 000203902 000289272 default 056037143 +000000233 000352495 000338511 default 094644970 +000000233 000421851 000377492 default 021938178 +000000233 000485526 000495792 default 051427174 +000000233 000625532 000709635 default 072563158 +000000233 000655508 000837307 default 092705836 +000000233 000701610 000879014 default 030117160 +000000233 000702597 000905307 default 084957251 +000000234 000035522 000152180 default 060130874 +000000234 000181495 000152570 default 094489300 +000000234 000308232 000163906 default 037687885 +000000234 000428707 000224145 default 067700238 +000000234 000526915 000267410 default 012484091 +000000234 000579803 000348643 default 059650523 +000000234 000611947 000576205 default 058027836 +000000234 000701377 000665744 default 078265244 +000000234 000704520 000706621 default 073984328 +000000234 000851229 000851638 default 048804756 +000000235 000122763 000026496 default 059271736 +000000235 000373164 000048432 default 036829403 +000000235 000395429 000197494 default 014496413 +000000235 000422084 000251319 default 094012500 +000000235 000708943 000339838 default 029132328 +000000235 000757199 000552393 default 071006235 +000000235 000806686 000561091 default 012522789 +000000235 000834074 000636505 default 020845096 +000000235 000863121 000682723 default 030871409 +000000235 000975788 000812990 default 086889053 +000000236 000223003 000048129 default 012072206 +000000236 000257621 000107688 default 051037074 +000000236 000344369 000318665 default 071025183 +000000236 000534607 000440875 default 024400463 +000000236 000537403 000538426 default 067011772 +000000236 000559656 000556304 default 018682054 +000000236 000759980 000576509 default 025259388 +000000236 000869894 000727624 default 018546130 +000000236 000931953 000901239 default 092086406 +000000236 000985586 000985363 default 068570059 +000000237 000120347 000106210 default 000000820 +000000237 000272874 000221649 default 087532413 +000000237 000310150 000238634 default 070597890 +000000237 000364464 000349235 default 073346785 +000000237 000551681 000388467 default 028485847 +000000237 000629273 000395205 default 020143495 +000000237 000648971 000433036 default 062946729 +000000237 000743282 000572727 default 090397360 +000000237 000801897 000800451 default 096562151 +000000237 000898851 000926529 default 010499428 +000000238 000254042 000108443 default 013412590 +000000238 000283412 000148046 default 039477550 +000000238 000290365 000204161 default 087941689 +000000238 000305617 000278710 default 016958051 +000000238 000337236 000465049 default 051595567 +000000238 000381391 000481760 default 062806323 +000000238 000500743 000544531 default 011277559 +000000238 000755025 000751856 default 098087638 +000000238 000947151 000852603 default 047773721 +000000238 000976725 000952592 default 013256052 +000000239 000007091 000074412 default 085919102 +000000239 000043430 000136275 default 075756229 +000000239 000474019 000208970 default 063653620 +000000239 000636729 000259788 default 056126849 +000000239 000663074 000392958 default 006267610 +000000239 000679322 000484354 default 085811161 +000000239 000707980 000735375 default 082460212 +000000239 000729102 000808206 default 021204011 +000000239 000851472 000847293 default 091761896 +000000239 000882521 000942534 default 055108184 +000000240 000015736 000111371 default 042573213 +000000240 000050513 000125658 default 028922572 +000000240 000712636 000264670 default 049291119 +000000240 000764725 000302041 default 049911073 +000000240 000771007 000311303 default 058911829 +000000240 000806388 000451380 default 020714005 +000000240 000822801 000774015 default 009163701 +000000240 000887481 000778634 default 056957856 +000000240 000914624 000911529 default 044956776 +000000240 000932210 000990522 default 010293850 +000000241 000058608 000269252 default 076874617 +000000241 000257024 000533367 default 088915432 +000000241 000366016 000627552 default 051386951 +000000241 000387809 000693813 default 036691972 +000000241 000716125 000713993 default 045264140 +000000241 000736222 000775906 default 046801060 +000000241 000844599 000796693 default 009245124 +000000241 000875352 000843837 default 085112280 +000000241 000955609 000916696 default 090373586 +000000241 000967216 000972576 default 084697238 +000000242 000143542 000027654 default 029715856 +000000242 000177624 000122417 default 017638674 +000000242 000352597 000320619 default 078303473 +000000242 000466550 000344217 default 099876901 +000000242 000506080 000485576 default 030569109 +000000242 000507772 000587576 default 034860280 +000000242 000543074 000694795 default 064180906 +000000242 000581478 000787865 default 047607619 +000000242 000604853 000807667 default 029947477 +000000242 000605965 000824756 default 044758761 +000000243 000176504 000198113 default 065678878 +000000243 000238672 000201230 default 014234550 +000000243 000404832 000254483 default 028439784 +000000243 000515871 000421648 default 078363458 +000000243 000515998 000583330 default 001411983 +000000243 000576329 000657131 default 011168395 +000000243 000592865 000667436 default 081623435 +000000243 000654650 000815564 default 091592177 +000000243 000936498 000831536 default 059787325 +000000243 000941934 000926657 default 060896974 +000000244 000091812 000165398 default 069903824 +000000244 000119715 000209484 default 090245349 +000000244 000160595 000240174 default 077795482 +000000244 000230841 000316079 default 046186758 +000000244 000248787 000521665 default 094695105 +000000244 000251794 000564674 default 011207420 +000000244 000398215 000703885 default 095121839 +000000244 000403877 000732055 default 050869860 +000000244 000883471 000947090 default 055609253 +000000244 000885839 000960670 default 052485327 +000000245 000014687 000039889 default 038004194 +000000245 000121967 000124328 default 093604821 +000000245 000169165 000237692 default 026050887 +000000245 000238783 000405024 default 026779516 +000000245 000385489 000486362 default 023271694 +000000245 000475379 000562326 default 098326233 +000000245 000701778 000587896 default 003386028 +000000245 000743793 000635811 default 037428599 +000000245 000833591 000821874 default 083678483 +000000245 000969869 000846640 default 033617137 +000000246 000013021 000068914 default 089925756 +000000246 000097607 000114472 default 015134259 +000000246 000101739 000144418 default 050343427 +000000246 000299984 000200481 default 080859552 +000000246 000400669 000411527 default 055420903 +000000246 000476071 000572674 default 005550663 +000000246 000665080 000719069 default 027149094 +000000246 000692572 000780686 default 019322381 +000000246 000904925 000899661 default 012456629 +000000246 000986001 000932081 default 090674502 +000000247 000000167 000109027 default 064390511 +000000247 000097806 000141054 default 086897596 +000000247 000154924 000446423 default 016465892 +000000247 000165108 000493072 default 010797891 +000000247 000429162 000669812 default 080499688 +000000247 000634469 000751416 default 074568490 +000000247 000679190 000763333 default 042941912 +000000247 000862842 000771686 default 080154230 +000000247 000864754 000860947 default 032239136 +000000247 000877211 000992606 default 072537035 +000000248 000060998 000118709 default 037377488 +000000248 000240422 000225099 default 053850012 +000000248 000359812 000252657 default 099043487 +000000248 000450016 000274956 default 031647495 +000000248 000450727 000315880 default 061538960 +000000248 000488740 000419566 default 075195408 +000000248 000501247 000424576 default 002515862 +000000248 000563942 000484161 default 064304779 +000000248 000655250 000522755 default 092655457 +000000248 000743071 000823303 default 040918330 +000000249 000057011 000047465 default 070206857 +000000249 000360132 000172926 default 072974799 +000000249 000386774 000226983 default 016880265 +000000249 000416390 000277645 default 033879069 +000000249 000418223 000744726 default 090827254 +000000249 000631089 000785485 default 066030015 +000000249 000689400 000884207 default 019932375 +000000249 000818824 000894247 default 069031169 +000000249 000929852 000906235 default 010479202 +000000249 000936673 000964805 default 060420757 +000000250 000031316 000057855 default 016424590 +000000250 000055358 000213576 default 035403245 +000000250 000137721 000385613 default 039991080 +000000250 000138930 000425050 default 012701730 +000000250 000165420 000458049 default 089106071 +000000250 000236312 000707207 default 052266891 +000000250 000644131 000809881 default 036392203 +000000250 000792810 000861653 default 077308659 +000000250 000944946 000964520 default 078509020 +000000250 000962156 000983605 default 001062303 +000000251 000151690 000017150 default 099068186 +000000251 000326975 000531097 default 004250140 +000000251 000373522 000548214 default 087351787 +000000251 000374491 000690329 default 078493186 +000000251 000396391 000772153 default 005357255 +000000251 000459574 000784675 default 020519124 +000000251 000483500 000848715 default 048484377 +000000251 000563960 000873163 default 089125750 +000000251 000670731 000951385 default 082132843 +000000251 000892790 000992001 default 076255075 +000000252 000268195 000116797 default 026519380 +000000252 000420803 000309390 default 095385812 +000000252 000508449 000400502 default 014849077 +000000252 000515742 000416169 default 027513929 +000000252 000518937 000559932 default 087643078 +000000252 000748779 000658961 default 015112514 +000000252 000756173 000729867 default 069898441 +000000252 000855546 000746610 default 074721365 +000000252 000867008 000753536 default 054204855 +000000252 000983305 000796148 default 078948348 +000000253 000005960 000117424 default 055930073 +000000253 000115007 000343329 default 041945060 +000000253 000119354 000525350 default 013472468 +000000253 000246293 000705264 default 018885371 +000000253 000366311 000782748 default 016684696 +000000253 000452750 000785701 default 098595288 +000000253 000551060 000811459 default 086131492 +000000253 000585594 000830716 default 049845739 +000000253 000592744 000838977 default 040293762 +000000253 000999856 000988426 default 002243099 +000000254 000061577 000351267 default 072886997 +000000254 000237238 000432988 default 009445349 +000000254 000322958 000454632 default 004189660 +000000254 000447033 000489047 default 081878212 +000000254 000585064 000541665 default 099073527 +000000254 000646966 000554609 default 040296739 +000000254 000668495 000664320 default 069545781 +000000254 000690667 000788691 default 088956371 +000000254 000877652 000864127 default 005897788 +000000254 000966395 000943198 default 030000312 +000000255 000069101 000130756 default 018105886 +000000255 000147695 000188806 default 016915418 +000000255 000203894 000336622 default 002770831 +000000255 000323324 000392577 default 056263988 +000000255 000432916 000488005 default 002857916 +000000255 000510918 000565492 default 070607142 +000000255 000564461 000600033 default 027788709 +000000255 000633899 000607442 default 062183401 +000000255 000728886 000724191 default 018685583 +000000255 000729520 000945351 default 074906543 +000000256 000268926 000066067 default 021341447 +000000256 000277263 000178119 default 092736733 +000000256 000346855 000239542 default 080445113 +000000256 000414335 000430984 default 077983225 +000000256 000546682 000498469 default 069966036 +000000256 000710526 000648241 default 002333772 +000000256 000743057 000669032 default 090108335 +000000256 000863578 000687156 default 023103795 +000000256 000941553 000696731 default 035231636 +000000256 000979346 000926398 default 065648656 +000000257 000161495 000074026 default 053837328 +000000257 000275133 000147941 default 032816366 +000000257 000399584 000325925 default 013849926 +000000257 000536746 000484176 default 037181786 +000000257 000657064 000587249 default 033477881 +000000257 000791533 000592144 default 059406529 +000000257 000807408 000734297 default 040785812 +000000257 000832826 000760132 default 035168986 +000000257 000875176 000939331 default 092246663 +000000257 000914175 000965177 default 035696670 +000000258 000107538 000113543 default 020793212 +000000258 000374030 000119062 default 037599893 +000000258 000441935 000130662 default 088596210 +000000258 000528002 000170016 default 063954033 +000000258 000545435 000279573 default 019603250 +000000258 000620329 000521657 default 008508107 +000000258 000822489 000581817 default 047131048 +000000258 000830519 000593445 default 072733084 +000000258 000915324 000686715 default 042106122 +000000258 000953442 000706111 default 046900508 +000000259 000025631 000237978 default 003540876 +000000259 000027940 000247120 default 017264331 +000000259 000057176 000303307 default 010009057 +000000259 000361974 000369678 default 088517288 +000000259 000408192 000470103 default 055625546 +000000259 000443335 000668271 default 089956189 +000000259 000455914 000789151 default 047882142 +000000259 000582748 000893496 default 084542558 +000000259 000807243 000904976 default 080214843 +000000259 000929416 000964476 default 039126790 +000000260 000063751 000047960 default 029347300 +000000260 000064452 000105626 default 029518961 +000000260 000067384 000107691 default 085462814 +000000260 000509493 000148352 default 038441014 +000000260 000601321 000278225 default 009763171 +000000260 000720417 000554523 default 072860847 +000000260 000750272 000646994 default 037762155 +000000260 000754030 000652794 default 056661100 +000000260 000892779 000901544 default 038372894 +000000260 000912851 000948540 default 053807668 +000000261 000045872 000016223 default 000370668 +000000261 000182308 000022088 default 011014303 +000000261 000469540 000070977 default 030719470 +000000261 000486150 000156712 default 088283979 +000000261 000624510 000401456 default 009748756 +000000261 000691982 000500889 default 009755478 +000000261 000796732 000645893 default 049793300 +000000261 000871751 000727977 default 002886557 +000000261 000915361 000844168 default 046773917 +000000261 000954248 000867920 default 083758664 +000000262 000066631 000030795 default 004066104 +000000262 000090842 000086700 default 030272092 +000000262 000152205 000110581 default 008313784 +000000262 000342746 000192309 default 099844561 +000000262 000358006 000292852 default 079264136 +000000262 000374526 000323027 default 061544249 +000000262 000536192 000842662 default 054132418 +000000262 000554159 000848634 default 083235978 +000000262 000832242 000886936 default 043829830 +000000262 000943941 000989964 default 017795542 +000000263 000093908 000074202 default 093124878 +000000263 000190841 000092706 default 073000431 +000000263 000353876 000150204 default 064017653 +000000263 000394931 000275251 default 080576397 +000000263 000446064 000302652 default 073839480 +000000263 000555813 000352721 default 044321070 +000000263 000567347 000475103 default 049585639 +000000263 000605208 000728518 default 069581458 +000000263 000621858 000820024 default 008854424 +000000263 000834660 000945530 default 057153840 +000000264 000041789 000041797 default 077401716 +000000264 000150496 000206474 default 047248631 +000000264 000262332 000287391 default 048556389 +000000264 000404144 000289895 default 068448233 +000000264 000492226 000356604 default 025853980 +000000264 000592196 000363935 default 069971852 +000000264 000612657 000381865 default 045004922 +000000264 000686883 000401836 default 007951126 +000000264 000819525 000498443 default 061468691 +000000264 000956130 000623592 default 010290066 +000000265 000047550 000014083 default 046437071 +000000265 000155731 000137333 default 028225279 +000000265 000235909 000184783 default 074805877 +000000265 000274294 000253978 default 035020595 +000000265 000284994 000401274 default 019847194 +000000265 000499967 000455047 default 065357654 +000000265 000522554 000469859 default 015202078 +000000265 000600138 000555076 default 076978119 +000000265 000792358 000640726 default 047234325 +000000265 000983967 000870323 default 080758752 +000000266 000009462 000003732 default 021980973 +000000266 000138947 000147276 default 004581696 +000000266 000148825 000187995 default 035237875 +000000266 000161409 000191789 default 024103309 +000000266 000397571 000217968 default 097314506 +000000266 000484175 000406473 default 066538273 +000000266 000666378 000542289 default 003583757 +000000266 000695644 000547104 default 032198848 +000000266 000873054 000738488 default 023557860 +000000266 000975215 000957129 default 002159412 +000000267 000056238 000011671 default 047984416 +000000267 000221847 000036520 default 018333103 +000000267 000267788 000154416 default 023164678 +000000267 000327096 000302357 default 053581539 +000000267 000643339 000327148 default 025350359 +000000267 000677788 000568986 default 019382258 +000000267 000706365 000606765 default 071011199 +000000267 000743651 000627925 default 056968074 +000000267 000830124 000735574 default 096051903 +000000267 000962770 000989151 default 091049677 +000000268 000000946 000090977 default 050941891 +000000268 000104499 000145660 default 003030330 +000000268 000179389 000258605 default 050457869 +000000268 000280975 000260326 default 094329142 +000000268 000425996 000641578 default 005262566 +000000268 000577346 000670023 default 009470956 +000000268 000589071 000670131 default 074834886 +000000268 000754843 000737399 default 002132328 +000000268 000778075 000738882 default 071612530 +000000268 000848827 000883324 default 020077907 +000000269 000011877 000082690 default 036611738 +000000269 000137799 000083133 default 079657904 +000000269 000141569 000146184 default 022019253 +000000269 000278492 000311337 default 050899464 +000000269 000314427 000327638 default 079802634 +000000269 000616364 000421885 default 006411577 +000000269 000710410 000680725 default 023011584 +000000269 000856612 000722206 default 094809570 +000000269 000878089 000793120 default 088320398 +000000269 000889981 000879543 default 099758991 +000000270 000081418 000049861 default 088470404 +000000270 000122350 000090962 default 034956793 +000000270 000126112 000287713 default 028489090 +000000270 000128808 000317996 default 019254295 +000000270 000432365 000362870 default 005316776 +000000270 000484643 000675376 default 030794659 +000000270 000559592 000743781 default 021542853 +000000270 000611900 000749691 default 022038052 +000000270 000777175 000763029 default 015407038 +000000270 000948022 000975597 default 094965435 +000000271 000025771 000034251 default 089497723 +000000271 000172706 000352244 default 076244841 +000000271 000176320 000426203 default 055820543 +000000271 000422163 000460473 default 051973609 +000000271 000482013 000729970 default 016991560 +000000271 000725214 000843968 default 027755311 +000000271 000754417 000864797 default 057122680 +000000271 000767371 000890271 default 063287051 +000000271 000812640 000973085 default 016002810 +000000271 000906704 000975460 default 005255384 +000000272 000023047 000050588 default 023423477 +000000272 000043275 000070961 default 063632398 +000000272 000049827 000109901 default 077000753 +000000272 000131911 000210922 default 099647781 +000000272 000287198 000264355 default 014348290 +000000272 000335564 000349655 default 025576571 +000000272 000423164 000355871 default 048245575 +000000272 000441335 000439839 default 083821170 +000000272 000461455 000450404 default 010303664 +000000272 000704242 000789955 default 057142136 +000000273 000074999 000226693 default 013237738 +000000273 000093739 000237272 default 039971619 +000000273 000134101 000370451 default 026355675 +000000273 000171667 000451477 default 043808967 +000000273 000419906 000471407 default 033137051 +000000273 000488831 000531149 default 048287301 +000000273 000501609 000570334 default 029937071 +000000273 000797167 000622079 default 056486419 +000000273 000845096 000661572 default 087341926 +000000273 000960080 000842024 default 097960884 +000000274 000159314 000221080 default 019599898 +000000274 000423527 000450855 default 070225717 +000000274 000575216 000510124 default 084726265 +000000274 000827702 000560408 default 099333580 +000000274 000852299 000747704 default 097817021 +000000274 000862623 000762090 default 042098248 +000000274 000871284 000770029 default 031862388 +000000274 000889633 000895838 default 017675872 +000000274 000953323 000907657 default 083346537 +000000274 000963069 000999607 default 024622884 +000000275 000063196 000007579 default 077829007 +000000275 000065133 000058173 default 074033854 +000000275 000080673 000109730 default 076128696 +000000275 000123063 000159048 default 047107757 +000000275 000365306 000484992 default 075936761 +000000275 000445467 000580790 default 026082903 +000000275 000548701 000619687 default 010342564 +000000275 000607502 000734548 default 060404822 +000000275 000643632 000762232 default 074766604 +000000275 000802179 000988581 default 036467144 +000000276 000039944 000159412 default 083099677 +000000276 000168226 000326193 default 047838687 +000000276 000284756 000504359 default 086728563 +000000276 000412937 000529933 default 023863617 +000000276 000719254 000851715 default 093831739 +000000276 000746187 000853594 default 040363596 +000000276 000759081 000868513 default 085080284 +000000276 000795159 000875655 default 021050473 +000000276 000838393 000883093 default 001199175 +000000276 000934426 000967879 default 004723070 +000000277 000251323 000064478 default 048526175 +000000277 000319157 000074239 default 077795979 +000000277 000321917 000166206 default 063944868 +000000277 000337778 000314202 default 013939045 +000000277 000396347 000328958 default 093625451 +000000277 000478877 000570069 default 052641924 +000000277 000705246 000589713 default 063221427 +000000277 000746003 000907558 default 056636331 +000000277 000827463 000937623 default 020734187 +000000277 000915522 000997430 default 023650195 +000000278 000093422 000046521 default 093653128 +000000278 000097092 000258376 default 027964406 +000000278 000099577 000364650 default 035378609 +000000278 000232274 000428938 default 046367226 +000000278 000310582 000447509 default 079975819 +000000278 000363811 000457015 default 068143789 +000000278 000375244 000478043 default 008971221 +000000278 000564350 000706848 default 071735242 +000000278 000575859 000808060 default 029781278 +000000278 000945242 000921048 default 050822770 +000000279 000052342 000191398 default 041848894 +000000279 000190944 000195967 default 083277577 +000000279 000193295 000433674 default 058832880 +000000279 000255864 000501725 default 074381950 +000000279 000440075 000561004 default 030919905 +000000279 000661406 000662085 default 083191892 +000000279 000705137 000818640 default 046102917 +000000279 000837494 000853953 default 035080379 +000000279 000866331 000881278 default 092352178 +000000279 000879988 000889150 default 032945685 +000000280 000019515 000057085 default 057031399 +000000280 000054771 000072408 default 027620002 +000000280 000135834 000180853 default 049195283 +000000280 000299570 000231340 default 068622661 +000000280 000362777 000305848 default 080423879 +000000280 000408862 000397837 default 089751761 +000000280 000464886 000566769 default 066667700 +000000280 000762618 000812292 default 039557415 +000000280 000789249 000857998 default 070090178 +000000280 000954663 000971175 default 005615791 +000000281 000077276 000193586 default 088671606 +000000281 000082743 000327303 default 024863376 +000000281 000104805 000435197 default 096331427 +000000281 000109754 000514305 default 008346579 +000000281 000262478 000561629 default 038634504 +000000281 000265037 000593009 default 018938573 +000000281 000466734 000627404 default 051241374 +000000281 000665628 000693630 default 097369690 +000000281 000722587 000696220 default 069756125 +000000281 000967052 000722253 default 019436626 +000000282 000089863 000008701 default 047594263 +000000282 000179214 000175889 default 090699008 +000000282 000271516 000286629 default 034356222 +000000282 000277071 000315869 default 067398809 +000000282 000338075 000364793 default 048807076 +000000282 000383137 000867224 default 080344802 +000000282 000548314 000916658 default 044975259 +000000282 000632610 000934028 default 069534280 +000000282 000761260 000942729 default 031693727 +000000282 000814209 000991792 default 062461200 +000000283 000053177 000142188 default 035853608 +000000283 000122615 000214634 default 094058470 +000000283 000132070 000326501 default 084567994 +000000283 000170764 000371986 default 011188108 +000000283 000197396 000391092 default 030598699 +000000283 000456301 000424358 default 060579274 +000000283 000457219 000524769 default 031297126 +000000283 000658792 000630941 default 048185022 +000000283 000662508 000766425 default 016545995 +000000283 000779277 000897697 default 038440808 +000000284 000107773 000007810 default 064100343 +000000284 000138302 000066543 default 018972689 +000000284 000210859 000111817 default 041756725 +000000284 000255393 000309661 default 078707221 +000000284 000283050 000384652 default 084915821 +000000284 000536944 000472302 default 070663527 +000000284 000579439 000612505 default 011419861 +000000284 000741663 000707471 default 007938826 +000000284 000783837 000762351 default 089117250 +000000284 000824606 000770897 default 027152406 +000000285 000076395 000052225 default 052509660 +000000285 000115494 000077217 default 033261507 +000000285 000151462 000332922 default 004686876 +000000285 000247758 000383857 default 030818564 +000000285 000293270 000404369 default 016999258 +000000285 000377827 000415055 default 090547522 +000000285 000712321 000419203 default 042978060 +000000285 000757312 000488437 default 097290646 +000000285 000768304 000832790 default 081182423 +000000285 000959918 000918487 default 042511567 +000000286 000028841 000213271 default 008370483 +000000286 000065593 000236964 default 043026009 +000000286 000253316 000437164 default 090169945 +000000286 000347817 000512467 default 055795472 +000000286 000347922 000632534 default 084315726 +000000286 000439074 000653143 default 012547640 +000000286 000924341 000683250 default 010788747 +000000286 000937155 000845901 default 002627554 +000000286 000988760 000963684 default 046654249 +000000286 000989709 000982772 default 008486191 +000000287 000108108 000097405 default 021371273 +000000287 000120024 000159776 default 050685325 +000000287 000296796 000378182 default 040941511 +000000287 000481173 000381474 default 044220794 +000000287 000701490 000525366 default 082808812 +000000287 000728263 000570608 default 070850355 +000000287 000813495 000625212 default 081996973 +000000287 000946265 000741032 default 033727900 +000000287 000971017 000903031 default 023393297 +000000287 000990578 000981894 default 012226496 +000000288 000047557 000090930 default 022136246 +000000288 000091609 000126056 default 007411597 +000000288 000146604 000158654 default 023604092 +000000288 000151628 000191155 default 091314871 +000000288 000327798 000261468 default 030522244 +000000288 000366648 000363907 default 051214527 +000000288 000537816 000601351 default 081966278 +000000288 000576173 000621386 default 034571093 +000000288 000678665 000673112 default 028029654 +000000288 000730522 000986627 default 038537380 +000000289 000080743 000005620 default 048412538 +000000289 000098228 000113002 default 012161784 +000000289 000245620 000130982 default 092165138 +000000289 000473360 000160556 default 075017243 +000000289 000490760 000191994 default 043470114 +000000289 000829280 000272746 default 097032699 +000000289 000835106 000596373 default 025124203 +000000289 000887030 000724603 default 003351169 +000000289 000897275 000923347 default 031127132 +000000289 000901508 000927845 default 001694827 +000000290 000155921 000055794 default 034982776 +000000290 000489987 000259140 default 005808919 +000000290 000594086 000479518 default 045314890 +000000290 000654436 000533903 default 083736299 +000000290 000690333 000642440 default 034141973 +000000290 000710042 000664811 default 020611136 +000000290 000732326 000699151 default 096773911 +000000290 000888490 000762895 default 069578665 +000000290 000940997 000875730 default 098189515 +000000290 000979175 000991134 default 095481198 +000000291 000023030 000289672 default 097300542 +000000291 000217452 000317697 default 014971540 +000000291 000335243 000356849 default 036609554 +000000291 000342312 000532622 default 062305430 +000000291 000472396 000548984 default 064142551 +000000291 000649541 000588617 default 085671730 +000000291 000767976 000750817 default 035115329 +000000291 000820148 000765247 default 061368066 +000000291 000913104 000773368 default 070621204 +000000291 000964720 000819247 default 032968153 +000000292 000165780 000106460 default 046179699 +000000292 000249481 000250627 default 001955395 +000000292 000410598 000490948 default 065600064 +000000292 000417625 000612908 default 028246015 +000000292 000458296 000671564 default 069342293 +000000292 000609041 000739464 default 037434073 +000000292 000610507 000806067 default 045603158 +000000292 000649214 000860408 default 080733197 +000000292 000699933 000868913 default 059263442 +000000292 000931418 000946971 default 010987393 +000000293 000090985 000060857 default 078654631 +000000293 000144014 000178393 default 048526536 +000000293 000294882 000351127 default 095589216 +000000293 000358150 000357571 default 036902593 +000000293 000434639 000365291 default 045500016 +000000293 000486665 000614210 default 004915107 +000000293 000619521 000632403 default 006342025 +000000293 000632796 000673318 default 076770070 +000000293 000698938 000981791 default 089650860 +000000293 000707023 000982746 default 098222771 +000000294 000059824 000229719 default 084597391 +000000294 000100260 000332549 default 082757871 +000000294 000131856 000418759 default 031450843 +000000294 000270714 000457807 default 093055776 +000000294 000497193 000540022 default 068288135 +000000294 000522417 000565267 default 082360512 +000000294 000576007 000628680 default 031826357 +000000294 000587491 000712173 default 097524245 +000000294 000782901 000772235 default 019977279 +000000294 000955225 000927867 default 020753508 +000000295 000035780 000156195 default 011796167 +000000295 000065585 000230610 default 030243025 +000000295 000080763 000255146 default 059697247 +000000295 000213936 000285870 default 038944323 +000000295 000309742 000519602 default 055313714 +000000295 000328699 000637182 default 007393181 +000000295 000334778 000682461 default 077668165 +000000295 000496711 000787832 default 017109356 +000000295 000731853 000858480 default 014750760 +000000295 000861719 000959917 default 004769956 +000000296 000091854 000128603 default 081838449 +000000296 000270036 000153925 default 094840385 +000000296 000348071 000224771 default 023342878 +000000296 000484281 000369691 default 033754232 +000000296 000495007 000375804 default 019734529 +000000296 000517128 000434473 default 000601092 +000000296 000646719 000448935 default 022911618 +000000296 000880715 000501737 default 024562113 +000000296 000892931 000618691 default 013572543 +000000296 000997884 000855798 default 059568981 +000000297 000055486 000015254 default 030804370 +000000297 000165945 000125154 default 026912998 +000000297 000399846 000595301 default 034240991 +000000297 000413929 000618905 default 082697410 +000000297 000463357 000748449 default 006549685 +000000297 000594406 000828524 default 086574225 +000000297 000598947 000847479 default 020987592 +000000297 000863552 000921409 default 081880710 +000000297 000933049 000951450 default 068647126 +000000297 000973902 000978306 default 007040094 +000000298 000009811 000010424 default 075420003 +000000298 000045543 000105759 default 032878121 +000000298 000224950 000230540 default 034690490 +000000298 000226449 000344904 default 052094576 +000000298 000437466 000602113 default 098181779 +000000298 000603693 000676154 default 060082786 +000000298 000748255 000757669 default 010883598 +000000298 000837056 000812147 default 010398663 +000000298 000895342 000872501 default 014785150 +000000298 000947644 000999068 default 013740536 +000000299 000053020 000057040 default 059590131 +000000299 000140509 000097923 default 020928413 +000000299 000328213 000099452 default 032833693 +000000299 000331624 000237536 default 075579892 +000000299 000477180 000393864 default 020406721 +000000299 000561185 000576640 default 015058481 +000000299 000602273 000771295 default 029404830 +000000299 000849602 000825342 default 099403786 +000000299 000935231 000902237 default 079075217 +000000299 000948884 000918353 default 007837120 +000000300 000199712 000258499 default 057771170 +000000300 000258298 000260031 default 061240014 +000000300 000359391 000365722 default 008460638 +000000300 000531264 000432961 default 099493168 +000000300 000550899 000597442 default 064391644 +000000300 000599779 000798238 default 092610638 +000000300 000784320 000810785 default 014152323 +000000300 000821598 000813162 default 063062891 +000000300 000829843 000955384 default 003931512 +000000300 000920519 000986437 default 046913057 +000000301 000007897 000011709 default 084688142 +000000301 000080742 000036747 default 057666069 +000000301 000255598 000133796 default 099451880 +000000301 000267516 000146538 default 072718592 +000000301 000342274 000177448 default 073544670 +000000301 000496836 000232064 default 017455943 +000000301 000554146 000402897 default 087575202 +000000301 000572240 000730641 default 090924905 +000000301 000594554 000809126 default 074515169 +000000301 000982091 000889597 default 002226511 +000000302 000335331 000034040 default 002238320 +000000302 000454826 000126755 default 099312951 +000000302 000552304 000216469 default 036292571 +000000302 000625473 000222825 default 054189000 +000000302 000647229 000237786 default 062164523 +000000302 000759538 000312168 default 026869399 +000000302 000785982 000329204 default 082623991 +000000302 000888158 000481991 default 017826407 +000000302 000919595 000722762 default 040840721 +000000302 000937043 000723855 default 032789174 +000000303 000025183 000060719 default 053655894 +000000303 000131331 000203177 default 063901995 +000000303 000332513 000290053 default 086497376 +000000303 000431425 000429138 default 038962550 +000000303 000497901 000669940 default 037050396 +000000303 000566724 000689658 default 066548312 +000000303 000748224 000704375 default 094667790 +000000303 000777647 000802887 default 098177700 +000000303 000849743 000803847 default 042816550 +000000303 000894493 000956455 default 000428347 +000000304 000214886 000113804 default 067518735 +000000304 000359051 000137152 default 077578482 +000000304 000375961 000151103 default 098582100 +000000304 000387993 000187829 default 030889146 +000000304 000441067 000238579 default 078450783 +000000304 000446123 000379660 default 042980232 +000000304 000756858 000438060 default 088887318 +000000304 000826619 000502018 default 071495388 +000000304 000845533 000893084 default 038917747 +000000304 000859860 000951737 default 034190937 +000000305 000101715 000053706 default 097199902 +000000305 000211963 000203025 default 060305500 +000000305 000260199 000211532 default 012650055 +000000305 000332958 000283751 default 047905386 +000000305 000413112 000601916 default 071415209 +000000305 000454513 000716877 default 004146384 +000000305 000596879 000830741 default 037868955 +000000305 000615738 000894223 default 066534477 +000000305 000818093 000915418 default 035240091 +000000305 000875142 000940323 default 083797437 +000000306 000061053 000107825 default 066338723 +000000306 000061834 000162145 default 078818854 +000000306 000126909 000231877 default 007605505 +000000306 000194419 000258419 default 027540827 +000000306 000267934 000293192 default 001520393 +000000306 000365846 000684570 default 048037551 +000000306 000416366 000760747 default 052242678 +000000306 000466592 000810530 default 033709060 +000000306 000506407 000889745 default 021216790 +000000306 000860943 000922597 default 074302202 +000000307 000088588 000223824 default 040632156 +000000307 000089224 000278591 default 003437388 +000000307 000093311 000416114 default 013294025 +000000307 000422051 000426845 default 041449065 +000000307 000549941 000441021 default 046013143 +000000307 000707081 000590101 default 095955361 +000000307 000823022 000687035 default 023929197 +000000307 000860938 000724344 default 039764849 +000000307 000878530 000749811 default 006541638 +000000307 000889848 000876074 default 018563964 +000000308 000268133 000056869 default 041817823 +000000308 000349153 000225726 default 044691511 +000000308 000351270 000301590 default 087333318 +000000308 000408419 000335332 default 056796451 +000000308 000533580 000363851 default 085056198 +000000308 000594338 000393914 default 004513338 +000000308 000736792 000644287 default 052823656 +000000308 000773128 000695645 default 086294928 +000000308 000844712 000747138 default 041947816 +000000308 000862895 000894453 default 092613465 +000000309 000056504 000063840 default 021377965 +000000309 000081045 000182287 default 084633805 +000000309 000142012 000216099 default 079596024 +000000309 000175388 000263603 default 057784856 +000000309 000183201 000277976 default 094486421 +000000309 000227289 000385986 default 000006692 +000000309 000352408 000515060 default 099204377 +000000309 000580338 000763309 default 037510328 +000000309 000727515 000776848 default 006766122 +000000309 000776246 000785434 default 055967765 +000000310 000179722 000028620 default 001715668 +000000310 000311211 000176352 default 005367585 +000000310 000315152 000252366 default 047202794 +000000310 000473277 000350278 default 042079326 +000000310 000514685 000536726 default 083732663 +000000310 000596210 000650509 default 055324477 +000000310 000638977 000852887 default 031776965 +000000310 000700607 000876746 default 009951586 +000000310 000757195 000905582 default 088632582 +000000310 000942887 000961597 default 084500684 +000000311 000189933 000052786 default 091885882 +000000311 000393346 000169910 default 017931207 +000000311 000458382 000180096 default 020920726 +000000311 000471008 000283680 default 047030062 +000000311 000474923 000310755 default 034654578 +000000311 000505226 000408187 default 099581136 +000000311 000623917 000700384 default 003320361 +000000311 000691160 000727069 default 070540102 +000000311 000850890 000806261 default 026418256 +000000311 000997067 000859963 default 030486244 +000000312 000244629 000067764 default 000211809 +000000312 000271984 000093865 default 064867257 +000000312 000306764 000114394 default 060476112 +000000312 000342430 000127314 default 065884631 +000000312 000444867 000169814 default 069507445 +000000312 000454060 000278042 default 015621190 +000000312 000584321 000427478 default 069150116 +000000312 000890716 000471717 default 077977092 +000000312 000922008 000510955 default 017523011 +000000312 000984401 000865559 default 049472783 +000000313 000080330 000036445 default 051997400 +000000313 000159763 000096924 default 051931452 +000000313 000389586 000442168 default 087283494 +000000313 000514566 000442238 default 018169540 +000000313 000646997 000626518 default 043560695 +000000313 000659399 000670294 default 009159416 +000000313 000694995 000775175 default 050748056 +000000313 000763419 000875190 default 050524006 +000000313 000840498 000916239 default 052900393 +000000313 000911970 000977677 default 009478851 +000000314 000417214 000035694 default 086025465 +000000314 000417991 000234458 default 001491795 +000000314 000480611 000262321 default 033200397 +000000314 000537109 000566553 default 081370547 +000000314 000649853 000624845 default 012065150 +000000314 000789405 000654633 default 072343041 +000000314 000825734 000677455 default 027748893 +000000314 000833931 000940353 default 008487113 +000000314 000837472 000944484 default 058510396 +000000314 000981288 000977921 default 051757845 +000000315 000160808 000047108 default 075600726 +000000315 000171244 000275336 default 096154444 +000000315 000362519 000322901 default 098719229 +000000315 000365134 000372394 default 097060991 +000000315 000584229 000413595 default 098812066 +000000315 000595423 000620369 default 017172135 +000000315 000608441 000628926 default 009747448 +000000315 000721631 000644326 default 072416870 +000000315 000758551 000785173 default 055327132 +000000315 000800153 000975253 default 027486802 +000000316 000153218 000049804 default 013751194 +000000316 000166544 000147518 default 096659345 +000000316 000184760 000287711 default 019248465 +000000316 000263858 000375625 default 067534465 +000000316 000577530 000412770 default 009863269 +000000316 000646052 000445538 default 081704798 +000000316 000673655 000449223 default 004882810 +000000316 000711316 000528718 default 037175421 +000000316 000842074 000628121 default 016295608 +000000316 000926739 000859146 default 048890752 +000000317 000111855 000000302 default 037375927 +000000317 000127783 000180452 default 058721608 +000000317 000194663 000202878 default 067027442 +000000317 000221370 000351978 default 043072327 +000000317 000308905 000409394 default 084177157 +000000317 000431842 000420016 default 018986158 +000000317 000446516 000504526 default 044321398 +000000317 000516081 000725847 default 081259409 +000000317 000810414 000895533 default 028777218 +000000317 000983041 000911873 default 010741995 +000000318 000044905 000002942 default 058822197 +000000318 000072821 000213189 default 070685008 +000000318 000098946 000304152 default 031959275 +000000318 000218600 000339832 default 065228362 +000000318 000230865 000384146 default 042058941 +000000318 000351775 000419854 default 030718961 +000000318 000638089 000500248 default 069054625 +000000318 000655849 000595783 default 004012255 +000000318 000758980 000876914 default 067602113 +000000318 000900707 000963237 default 004119700 +000000319 000100891 000013400 default 070749486 +000000319 000130649 000270996 default 082127627 +000000319 000131550 000312549 default 033129969 +000000319 000234620 000355238 default 051121028 +000000319 000249974 000652570 default 033257775 +000000319 000265083 000691425 default 005323962 +000000319 000435277 000777520 default 087038495 +000000319 000662840 000806044 default 090355346 +000000319 000688330 000838317 default 061670012 +000000319 000972132 000978183 default 024663147 +000000320 000289021 000043157 default 046779038 +000000320 000346426 000106123 default 067120320 +000000320 000427103 000162487 default 039214269 +000000320 000506490 000277587 default 027267226 +000000320 000562366 000335089 default 084039587 +000000320 000694233 000510952 default 027400158 +000000320 000694800 000755780 default 080778838 +000000320 000960753 000818560 default 065497063 +000000320 000986067 000841083 default 024732864 +000000320 000995522 000901829 default 022219917 +000000321 000000794 000279241 default 042651791 +000000321 000069507 000408270 default 062309101 +000000321 000073773 000420476 default 022424151 +000000321 000159905 000455569 default 026063193 +000000321 000442730 000486886 default 086455474 +000000321 000454180 000493786 default 081220780 +000000321 000484970 000512695 default 074418200 +000000321 000644225 000539424 default 081830209 +000000321 000846935 000781433 default 083225308 +000000321 000953543 000848052 default 038437642 +000000322 000149649 000025174 default 015513254 +000000322 000198194 000126596 default 090905314 +000000322 000251288 000250294 default 033525809 +000000322 000312177 000311175 default 087201146 +000000322 000568274 000632993 default 018075722 +000000322 000710668 000707694 default 076490408 +000000322 000788387 000713384 default 090537163 +000000322 000807433 000740117 default 046011504 +000000322 000861053 000766360 default 099307764 +000000322 000889054 000950001 default 036409341 +000000323 000008404 000038371 default 036336426 +000000323 000094841 000090251 default 070259301 +000000323 000107418 000122882 default 044731882 +000000323 000222809 000296790 default 035043622 +000000323 000624891 000304954 default 095687222 +000000323 000700914 000309930 default 001690295 +000000323 000724796 000324575 default 092158620 +000000323 000800311 000345805 default 043659562 +000000323 000976146 000456271 default 063651131 +000000323 000985878 000481877 default 003989538 +000000324 000043089 000072045 default 006828024 +000000324 000063400 000100654 default 061029081 +000000324 000246615 000225885 default 023005021 +000000324 000359470 000260698 default 096791604 +000000324 000447407 000290826 default 065232162 +000000324 000640726 000389180 default 065848275 +000000324 000781972 000535957 default 095382120 +000000324 000831405 000631228 default 093756670 +000000324 000947268 000965786 default 050218253 +000000324 000953656 000992392 default 018785328 +000000325 000100126 000109784 default 026313963 +000000325 000189347 000246094 default 094329637 +000000325 000192436 000486450 default 046691099 +000000325 000345108 000520536 default 080150556 +000000325 000378469 000571435 default 091925372 +000000325 000390115 000603903 default 072613485 +000000325 000661149 000673005 default 094930450 +000000325 000774372 000691712 default 080283821 +000000325 000889361 000907746 default 018446935 +000000325 000921383 000998898 default 083066138 +000000326 000076745 000030315 default 075652381 +000000326 000256777 000122107 default 039385660 +000000326 000473097 000138518 default 077916182 +000000326 000521157 000146508 default 053796720 +000000326 000567149 000150411 default 084279621 +000000326 000890555 000423056 default 053439672 +000000326 000899212 000516255 default 018204472 +000000326 000902267 000704689 default 080010289 +000000326 000920936 000729471 default 044934422 +000000326 000934336 000962044 default 076291135 +000000327 000096491 000005888 default 090003821 +000000327 000134624 000114926 default 098003309 +000000327 000140989 000143873 default 000081947 +000000327 000412094 000231287 default 097977473 +000000327 000510865 000331232 default 083060509 +000000327 000612424 000333717 default 027267733 +000000327 000672771 000342781 default 003952316 +000000327 000697841 000549412 default 009977585 +000000327 000803420 000729619 default 080479456 +000000327 000888002 000987620 default 065504276 +000000328 000296632 000187248 default 012901445 +000000328 000309433 000216580 default 023701696 +000000328 000347978 000281282 default 073843094 +000000328 000466883 000287359 default 043714909 +000000328 000469766 000492107 default 001919321 +000000328 000501993 000581895 default 061592117 +000000328 000647409 000605223 default 021105668 +000000328 000712811 000708051 default 004094923 +000000328 000828203 000782839 default 086098128 +000000328 000984456 000794316 default 064428231 +000000329 000043324 000027881 default 049734004 +000000329 000254415 000134534 default 090179200 +000000329 000273022 000149244 default 011879942 +000000329 000290165 000209736 default 095042680 +000000329 000411543 000565881 default 019897789 +000000329 000414855 000630506 default 081168742 +000000329 000549119 000728557 default 070745152 +000000329 000574980 000865767 default 062076862 +000000329 000968678 000868263 default 087420374 +000000329 000978316 000939753 default 079942605 +000000330 000050880 000018672 default 092805701 +000000330 000101919 000055965 default 063538046 +000000330 000214441 000420315 default 098514184 +000000330 000335318 000522567 default 042456308 +000000330 000357408 000530487 default 047411683 +000000330 000472070 000532767 default 037355641 +000000330 000854008 000638249 default 030427834 +000000330 000872961 000678707 default 062005228 +000000330 000918848 000697878 default 034356709 +000000330 000935651 000795139 default 076121017 +000000331 000086246 000003534 default 042587626 +000000331 000089625 000090429 default 041091423 +000000331 000335488 000249955 default 015798514 +000000331 000398627 000386481 default 031493131 +000000331 000460528 000390411 default 014777650 +000000331 000467494 000396882 default 061512857 +000000331 000476513 000427415 default 088419735 +000000331 000719086 000564412 default 055561583 +000000331 000780999 000938619 default 055278717 +000000331 000985084 000963647 default 004237463 +000000332 000215927 000135457 default 091386881 +000000332 000219793 000172306 default 060827089 +000000332 000445075 000275579 default 031375288 +000000332 000467089 000322482 default 023936104 +000000332 000722701 000435707 default 084565344 +000000332 000754451 000683898 default 014210673 +000000332 000815348 000686380 default 096929766 +000000332 000864524 000711396 default 028489633 +000000332 000895187 000851645 default 079979788 +000000332 000939965 000895707 default 054606167 +000000333 000066778 000120173 default 066524851 +000000333 000078698 000272510 default 007571684 +000000333 000303343 000466552 default 076376703 +000000333 000322273 000535211 default 020912372 +000000333 000409952 000560639 default 010872894 +000000333 000614454 000725469 default 011064409 +000000333 000699136 000822632 default 006861544 +000000333 000771241 000862053 default 080894443 +000000333 000775859 000862800 default 017967926 +000000333 000841408 000902624 default 085263409 +000000334 000019631 000098206 default 084026332 +000000334 000021445 000120756 default 068809071 +000000334 000077500 000158254 default 093035490 +000000334 000363316 000290774 default 052263296 +000000334 000556633 000350942 default 076844549 +000000334 000580567 000506034 default 012879370 +000000334 000731638 000514447 default 003515960 +000000334 000825676 000743750 default 059079482 +000000334 000848122 000787415 default 050836754 +000000334 000919472 000916277 default 079375409 +000000335 000273139 000019785 default 088027173 +000000335 000390000 000023688 default 062714549 +000000335 000412751 000111137 default 003443518 +000000335 000443787 000187298 default 012504190 +000000335 000601749 000415521 default 005352976 +000000335 000629855 000484901 default 026512649 +000000335 000792740 000606761 default 083916782 +000000335 000866975 000667097 default 052271690 +000000335 000902295 000677834 default 083117395 +000000335 000936492 000894101 default 068618240 +000000336 000099078 000183044 default 088218782 +000000336 000213136 000208054 default 093547868 +000000336 000436075 000210586 default 082564633 +000000336 000475087 000266111 default 055808320 +000000336 000493054 000276505 default 047859703 +000000336 000635391 000310676 default 082742963 +000000336 000750520 000512805 default 034813632 +000000336 000790978 000538441 default 031946559 +000000336 000920488 000782893 default 090315609 +000000336 000975519 000819716 default 017201553 +000000337 000007348 000085742 default 033443089 +000000337 000097747 000102186 default 058897360 +000000337 000248823 000133546 default 034903659 +000000337 000416321 000163652 default 020893430 +000000337 000471321 000259157 default 079469076 +000000337 000648254 000420331 default 015914004 +000000337 000764842 000512276 default 022405919 +000000337 000819813 000558520 default 062072556 +000000337 000880064 000704032 default 091389138 +000000337 000880526 000773736 default 015578370 +000000338 000184961 000030948 default 082031543 +000000338 000189861 000211360 default 052510897 +000000338 000213374 000276914 default 084147620 +000000338 000233248 000286464 default 076424678 +000000338 000461418 000433869 default 084282190 +000000338 000520812 000526047 default 011755655 +000000338 000782083 000775447 default 058186677 +000000338 000797405 000873221 default 091608026 +000000338 000859800 000918253 default 051897737 +000000338 000881106 000949523 default 091185384 +000000339 000066757 000145916 default 066267982 +000000339 000143921 000162085 default 078663924 +000000339 000378272 000206669 default 032565279 +000000339 000429327 000299555 default 032962958 +000000339 000693156 000540897 default 072770195 +000000339 000726671 000666160 default 027939948 +000000339 000741468 000669174 default 006569784 +000000339 000769930 000725779 default 075934592 +000000339 000845060 000750000 default 051128865 +000000339 000933691 000996613 default 044515665 +000000340 000103945 000041680 default 082032037 +000000340 000218640 000144465 default 034315542 +000000340 000549572 000177623 default 076178740 +000000340 000575059 000224364 default 033285194 +000000340 000577487 000387717 default 063175845 +000000340 000607058 000409175 default 091820903 +000000340 000645811 000509989 default 086137458 +000000340 000683026 000785865 default 062228374 +000000340 000885290 000862243 default 013588668 +000000340 000994317 000920747 default 007728180 +000000341 000081370 000085513 default 036475556 +000000341 000195320 000338596 default 093405460 +000000341 000317487 000340010 default 069813265 +000000341 000393706 000557348 default 085603396 +000000341 000438851 000650439 default 099698751 +000000341 000478486 000731590 default 014775706 +000000341 000678983 000733918 default 092268482 +000000341 000682168 000811614 default 082021809 +000000341 000758737 000866341 default 011503085 +000000341 000865860 000953217 default 072724862 +000000342 000034529 000049028 default 035532780 +000000342 000080678 000237791 default 016844301 +000000342 000096002 000253430 default 010792021 +000000342 000111354 000254532 default 091698629 +000000342 000241841 000344061 default 010197055 +000000342 000265442 000549160 default 035988435 +000000342 000269615 000561064 default 051214049 +000000342 000732360 000643910 default 004663401 +000000342 000755116 000839800 default 067008290 +000000342 000947227 000980816 default 005358456 +000000343 000069669 000064405 default 059015510 +000000343 000274014 000141064 default 013027010 +000000343 000288026 000275796 default 050481657 +000000343 000307849 000338470 default 082796213 +000000343 000528506 000345715 default 097091875 +000000343 000563916 000764629 default 083950373 +000000343 000655664 000769852 default 055019327 +000000343 000674485 000785033 default 096665664 +000000343 000809242 000956541 default 041062219 +000000343 000983789 000965822 default 015698245 +000000344 000165986 000372503 default 096677381 +000000344 000202696 000382034 default 011943567 +000000344 000307277 000543427 default 011824622 +000000344 000377773 000576673 default 081392200 +000000344 000413669 000585837 default 093505090 +000000344 000539514 000838900 default 002721008 +000000344 000813738 000893892 default 046860774 +000000344 000820692 000910851 default 051778974 +000000344 000840267 000947893 default 026581932 +000000344 000894867 000953019 default 052895865 +000000345 000050440 000009531 default 040790995 +000000345 000150937 000065443 default 095799535 +000000345 000338375 000253377 default 048220789 +000000345 000399626 000619464 default 050149717 +000000345 000445541 000621991 default 041453390 +000000345 000732442 000623759 default 064052662 +000000345 000827508 000786313 default 014996420 +000000345 000852725 000803293 default 043953208 +000000345 000860243 000840760 default 099945267 +000000345 000942032 000951308 default 063237542 +000000346 000143598 000016524 default 086765753 +000000346 000221832 000198985 default 090829101 +000000346 000248176 000381574 default 043846488 +000000346 000533377 000427289 default 023833895 +000000346 000555136 000477167 default 050511188 +000000346 000607676 000510767 default 053373065 +000000346 000737818 000637625 default 060936559 +000000346 000803407 000762578 default 023618218 +000000346 000911509 000771308 default 070954912 +000000346 000933540 000937719 default 053494039 +000000347 000206741 000192416 default 011197027 +000000347 000240682 000201671 default 044372114 +000000347 000362791 000354882 default 042832051 +000000347 000410994 000423779 default 020590730 +000000347 000423932 000449259 default 011738612 +000000347 000633557 000575213 default 046833636 +000000347 000701756 000657657 default 075311193 +000000347 000911803 000703584 default 065552392 +000000347 000927377 000765648 default 044658664 +000000347 000952200 000794266 default 076286948 +000000348 000198424 000041593 default 003803969 +000000348 000237248 000211830 default 023583124 +000000348 000304068 000299104 default 007949604 +000000348 000381127 000407944 default 020162544 +000000348 000562015 000483939 default 064825535 +000000348 000631252 000571942 default 086637613 +000000348 000651505 000811604 default 031242334 +000000348 000813043 000881247 default 025338952 +000000348 000910780 000889880 default 043884787 +000000348 000990581 000941626 default 010806905 +000000349 000024663 000108987 default 098333445 +000000349 000030659 000238486 default 095612089 +000000349 000118826 000339853 default 000274897 +000000349 000194124 000545770 default 088060731 +000000349 000269024 000558301 default 035885563 +000000349 000327476 000640491 default 052176645 +000000349 000413810 000681914 default 093956277 +000000349 000939298 000771142 default 073431966 +000000349 000947940 000812737 default 026076839 +000000349 000972594 000852893 default 027348085 +000000350 000090036 000055507 default 084746314 +000000350 000253302 000238837 default 044364432 +000000350 000255627 000387107 default 009047347 +000000350 000362235 000457760 default 089182888 +000000350 000638236 000632028 default 080059747 +000000350 000790377 000696279 default 002848057 +000000350 000850848 000818645 default 003311224 +000000350 000867602 000831980 default 037908881 +000000350 000908614 000833361 default 068440766 +000000350 000922188 000854707 default 065641577 +000000351 000055519 000070679 default 009971365 +000000351 000068920 000127927 default 039180016 +000000351 000142859 000156710 default 004083191 +000000351 000221886 000205237 default 049434420 +000000351 000305103 000269507 default 004418992 +000000351 000331443 000391084 default 094032697 +000000351 000359023 000595867 default 081061404 +000000351 000384852 000628033 default 069759693 +000000351 000638164 000900737 default 091719655 +000000351 000707085 000902448 default 062378308 +000000352 000076502 000049623 default 014978462 +000000352 000099584 000335155 default 066948969 +000000352 000219576 000467072 default 096545591 +000000352 000229909 000596667 default 009039912 +000000352 000252854 000634956 default 079009575 +000000352 000491342 000838781 default 029262126 +000000352 000512310 000839781 default 026010486 +000000352 000583237 000849661 default 099295386 +000000352 000657200 000893652 default 005650116 +000000352 000757214 000902810 default 020752356 +000000353 000074861 000058484 default 038816890 +000000353 000218771 000189126 default 028806519 +000000353 000316649 000433924 default 085659159 +000000353 000546213 000625238 default 045057920 +000000353 000547130 000699661 default 033090192 +000000353 000580903 000719942 default 038011128 +000000353 000595372 000742562 default 074993168 +000000353 000808288 000749815 default 067064250 +000000353 000902526 000782681 default 092860267 +000000353 000969994 000889009 default 089164634 +000000354 000006652 000026975 default 021770270 +000000354 000223767 000199485 default 088044080 +000000354 000333911 000210588 default 017039215 +000000354 000431853 000372340 default 069678666 +000000354 000448394 000390750 default 099936435 +000000354 000526568 000548373 default 038111237 +000000354 000560607 000565734 default 004482475 +000000354 000897850 000786763 default 018184802 +000000354 000905053 000808680 default 019785325 +000000354 000997199 000827070 default 091688511 +000000355 000243879 000001969 default 024393921 +000000355 000399892 000020986 default 087727556 +000000355 000427392 000059859 default 069473808 +000000355 000462232 000096625 default 005000234 +000000355 000522131 000328788 default 031317115 +000000355 000545499 000329014 default 073153918 +000000355 000606350 000447941 default 002233473 +000000355 000847880 000499455 default 097044027 +000000355 000881404 000508169 default 078822249 +000000355 000913561 000573565 default 078848909 +000000356 000016645 000013276 default 094023005 +000000356 000087310 000107892 default 013658797 +000000356 000152676 000113116 default 030304847 +000000356 000219888 000174957 default 001991146 +000000356 000355910 000391106 default 028896605 +000000356 000407329 000399173 default 052277966 +000000356 000879244 000471229 default 091877430 +000000356 000911068 000745883 default 096580951 +000000356 000942687 000880943 default 007117985 +000000356 000964296 000994749 default 007951424 +000000357 000038627 000004513 default 000952310 +000000357 000099213 000155418 default 010502348 +000000357 000118134 000167768 default 011889303 +000000357 000239919 000284336 default 000639086 +000000357 000339537 000315200 default 092452474 +000000357 000434564 000423607 default 009070459 +000000357 000702931 000550823 default 043452743 +000000357 000737738 000783808 default 065650998 +000000357 000862646 000905810 default 039563895 +000000357 000927426 000954926 default 017922415 +000000358 000094904 000017871 default 039964824 +000000358 000157725 000145958 default 045651656 +000000358 000307590 000163538 default 090806556 +000000358 000395556 000163926 default 043238889 +000000358 000398350 000242094 default 089881438 +000000358 000438105 000260964 default 029818475 +000000358 000505151 000300452 default 037269143 +000000358 000517254 000546924 default 050614400 +000000358 000540927 000593475 default 079462882 +000000358 000658880 000899319 default 016220236 +000000359 000146991 000011790 default 074022479 +000000359 000312412 000216831 default 010069413 +000000359 000321354 000358121 default 068077025 +000000359 000463941 000393788 default 057135025 +000000359 000531852 000533686 default 084950431 +000000359 000548835 000586511 default 015737028 +000000359 000551973 000631317 default 062095183 +000000359 000871404 000679813 default 006753594 +000000359 000947592 000720744 default 037883801 +000000359 000966685 000868373 default 015962107 +000000360 000044091 000081164 default 055757801 +000000360 000244377 000106182 default 090335282 +000000360 000379959 000189590 default 044202807 +000000360 000502337 000201961 default 079713302 +000000360 000526609 000235843 default 018692264 +000000360 000608705 000352807 default 079864087 +000000360 000662404 000381874 default 079403939 +000000360 000670097 000389061 default 013644674 +000000360 000826650 000775852 default 090936346 +000000360 000976074 000946852 default 026607503 +000000361 000066181 000141150 default 029212302 +000000361 000235146 000256577 default 004717378 +000000361 000276803 000313560 default 034180987 +000000361 000376942 000374924 default 022014156 +000000361 000516560 000434672 default 027907373 +000000361 000693957 000534148 default 052739922 +000000361 000741006 000583061 default 093403493 +000000361 000750622 000631958 default 035716222 +000000361 000840794 000769819 default 095109288 +000000361 000864911 000834169 default 020839475 +000000362 000121795 000014800 default 080548643 +000000362 000137030 000185593 default 019573731 +000000362 000172328 000274833 default 079355869 +000000362 000310528 000294488 default 022342063 +000000362 000472686 000326366 default 096160319 +000000362 000525805 000600749 default 004112344 +000000362 000571279 000752229 default 027380615 +000000362 000810735 000788904 default 077284999 +000000362 000880452 000937576 default 098378994 +000000362 000910590 000997365 default 056495448 +000000363 000047084 000024186 default 049133271 +000000363 000065627 000121423 default 066872211 +000000363 000483993 000244221 default 091552655 +000000363 000564355 000272823 default 049385507 +000000363 000792922 000734198 default 099806593 +000000363 000796148 000769933 default 014454992 +000000363 000827674 000855506 default 085055898 +000000363 000874419 000936257 default 042977506 +000000363 000901206 000942298 default 033215846 +000000363 000921634 000967303 default 049058602 +000000364 000153263 000009405 default 094773153 +000000364 000168619 000129208 default 026145301 +000000364 000172619 000340326 default 010012139 +000000364 000493812 000350207 default 011034354 +000000364 000618768 000459237 default 001346938 +000000364 000645086 000576063 default 074250954 +000000364 000829121 000833604 default 042027846 +000000364 000946868 000899610 default 004176601 +000000364 000952017 000909125 default 003959801 +000000364 000962384 000970395 default 040015088 +000000365 000119068 000007377 default 093348139 +000000365 000154413 000166648 default 073172495 +000000365 000258526 000191909 default 072864585 +000000365 000391014 000304174 default 097490039 +000000365 000425543 000404955 default 014677733 +000000365 000623608 000487415 default 049678081 +000000365 000625505 000617340 default 088136575 +000000365 000776181 000725415 default 068159974 +000000365 000933134 000800828 default 055726651 +000000365 000996847 000870927 default 016528452 +000000366 000009833 000041938 default 071084759 +000000366 000127194 000191270 default 097496586 +000000366 000178253 000218349 default 013435738 +000000366 000239148 000336282 default 049261029 +000000366 000262236 000387266 default 032914931 +000000366 000294674 000409978 default 049530716 +000000366 000321687 000454298 default 019624864 +000000366 000386723 000597648 default 066437804 +000000366 000498206 000642187 default 009924571 +000000366 000744749 000870207 default 085364422 +000000367 000027111 000208033 default 027420239 +000000367 000036878 000237534 default 028093933 +000000367 000062680 000294102 default 084923636 +000000367 000087467 000451941 default 043887795 +000000367 000301633 000467985 default 013799981 +000000367 000359728 000474496 default 089370304 +000000367 000440365 000501466 default 058536097 +000000367 000463819 000541791 default 033229091 +000000367 000540746 000624410 default 055837071 +000000367 000787963 000848231 default 059424903 +000000368 000246588 000132728 default 091336741 +000000368 000298586 000434709 default 054411475 +000000368 000408649 000444227 default 088217643 +000000368 000525522 000550003 default 096815409 +000000368 000651316 000592909 default 007520804 +000000368 000660009 000684273 default 029116495 +000000368 000706700 000781509 default 071906863 +000000368 000900241 000951666 default 053431763 +000000368 000924861 000962523 default 042490738 +000000368 000975639 000999677 default 089896745 +000000369 000305613 000039052 default 046246551 +000000369 000420823 000039822 default 024993958 +000000369 000440773 000152452 default 016418218 +000000369 000491791 000228157 default 020195053 +000000369 000526575 000291110 default 071238906 +000000369 000580718 000394561 default 036308114 +000000369 000660624 000432189 default 041678361 +000000369 000683645 000579559 default 005104684 +000000369 000783278 000714301 default 034567331 +000000369 000930101 000869723 default 042159486 +000000370 000044118 000155372 default 050539070 +000000370 000102143 000161224 default 022912996 +000000370 000138031 000207707 default 081540811 +000000370 000158836 000305424 default 041745742 +000000370 000204962 000417235 default 042302210 +000000370 000312665 000470537 default 018791978 +000000370 000390108 000740932 default 039626782 +000000370 000460622 000860503 default 003067446 +000000370 000770911 000897360 default 068534311 +000000370 000894673 000906200 default 043281444 +000000371 000193681 000027554 default 055513296 +000000371 000381027 000117252 default 029423298 +000000371 000424905 000215087 default 014109768 +000000371 000492687 000226653 default 033835515 +000000371 000499863 000259258 default 066831972 +000000371 000598195 000478482 default 089337826 +000000371 000681827 000503555 default 093272698 +000000371 000726585 000588131 default 027622373 +000000371 000794208 000695760 default 049718408 +000000371 000837048 000975406 default 050691031 +000000372 000032956 000055379 default 011629176 +000000372 000230064 000143754 default 067634477 +000000372 000246387 000255037 default 018031011 +000000372 000333373 000304085 default 040159533 +000000372 000498355 000350417 default 094843641 +000000372 000571743 000531968 default 033867003 +000000372 000636360 000824818 default 052335887 +000000372 000644771 000864776 default 048903265 +000000372 000769501 000890373 default 008943112 +000000372 000821738 000964603 default 060540124 +000000373 000010148 000139023 default 010523266 +000000373 000042726 000173680 default 012124115 +000000373 000462317 000198351 default 064879498 +000000373 000557568 000256479 default 090575156 +000000373 000558189 000434066 default 064171374 +000000373 000745766 000501819 default 084136926 +000000373 000790728 000524839 default 089402877 +000000373 000794449 000733682 default 076819105 +000000373 000841683 000802394 default 003661196 +000000373 000915430 000851341 default 055454549 +000000374 000038030 000078202 default 053814713 +000000374 000124338 000258449 default 077292700 +000000374 000186411 000278772 default 091242498 +000000374 000211886 000362037 default 072014358 +000000374 000493161 000431772 default 044996460 +000000374 000552582 000436381 default 012123400 +000000374 000775331 000519487 default 090958462 +000000374 000821555 000663918 default 049757433 +000000374 000840088 000742301 default 016966241 +000000374 000975427 000923178 default 063229198 +000000375 000038901 000130982 default 038692856 +000000375 000041295 000183331 default 095000309 +000000375 000093036 000217241 default 054524165 +000000375 000143903 000321280 default 032434732 +000000375 000246047 000331201 default 071370563 +000000375 000310728 000398709 default 020432767 +000000375 000326498 000567817 default 049297785 +000000375 000372810 000641234 default 083163532 +000000375 000422054 000731682 default 000544345 +000000375 000675561 000801642 default 060229399 +000000376 000070577 000087920 default 007601709 +000000376 000254279 000331476 default 002139716 +000000376 000254478 000431283 default 032681453 +000000376 000265823 000497864 default 056188659 +000000376 000334395 000527621 default 022690023 +000000376 000355992 000554251 default 022925684 +000000376 000402093 000597905 default 044798069 +000000376 000591606 000763677 default 052493891 +000000376 000602232 000900585 default 093555912 +000000376 000796687 000918250 default 014226836 +000000377 000229659 000016182 default 067494444 +000000377 000248494 000019733 default 008324105 +000000377 000261305 000558431 default 076331439 +000000377 000279834 000672930 default 063234767 +000000377 000672040 000676541 default 025017293 +000000377 000685920 000692191 default 047841482 +000000377 000757966 000720646 default 088531125 +000000377 000794939 000812323 default 063192055 +000000377 000845832 000954605 default 091166507 +000000377 000926999 000956049 default 009084626 +000000378 000050300 000018658 default 085990878 +000000378 000173450 000181761 default 002803161 +000000378 000336029 000191375 default 070042530 +000000378 000437103 000353253 default 035459120 +000000378 000447367 000421902 default 042238240 +000000378 000476796 000690323 default 010805668 +000000378 000477655 000709252 default 042244764 +000000378 000585142 000742568 default 073102592 +000000378 000594800 000760776 default 015491297 +000000378 000598380 000970189 default 074566476 +000000379 000004493 000060804 default 039855743 +000000379 000118085 000161551 default 020903740 +000000379 000204915 000179421 default 000404905 +000000379 000248439 000221829 default 020023720 +000000379 000253524 000269439 default 055000041 +000000379 000304061 000572733 default 048781363 +000000379 000793593 000604342 default 015576809 +000000379 000825344 000632694 default 022820443 +000000379 000856077 000657620 default 058490521 +000000379 000922480 000736252 default 021000094 +000000380 000010943 000010943 default 022771027 +000000380 000021484 000107551 default 006880964 +000000380 000278377 000117478 default 004203470 +000000380 000392097 000183674 default 088945144 +000000380 000401053 000333053 default 012539735 +000000380 000450036 000349952 default 009703857 +000000380 000532810 000471478 default 046030375 +000000380 000588503 000475244 default 082178685 +000000380 000783568 000609136 default 031141692 +000000380 000830991 000998910 default 088945244 +000000381 000075984 000050077 default 018225073 +000000381 000313380 000104944 default 007617246 +000000381 000356827 000136244 default 041837469 +000000381 000425903 000250467 default 094275056 +000000381 000445620 000493688 default 001301102 +000000381 000453062 000516348 default 057968177 +000000381 000475376 000516797 default 088180134 +000000381 000550294 000669099 default 035087749 +000000381 000777368 000707451 default 046534424 +000000381 000974713 000785211 default 080190009 +000000382 000115571 000193965 default 079072635 +000000382 000140960 000257876 default 011513656 +000000382 000303112 000334872 default 015366044 +000000382 000306877 000430721 default 027885772 +000000382 000310849 000645016 default 006649300 +000000382 000340229 000686620 default 032158672 +000000382 000370219 000833388 default 015941436 +000000382 000378750 000850443 default 063027989 +000000382 000446930 000856107 default 061289985 +000000382 000689275 000868980 default 057033415 +000000383 000184447 000145365 default 044767261 +000000383 000235655 000343631 default 048601705 +000000383 000244642 000398067 default 068312943 +000000383 000337765 000485498 default 013887943 +000000383 000426569 000516840 default 007434258 +000000383 000460044 000526045 default 056659103 +000000383 000602834 000553761 default 089394856 +000000383 000776657 000606503 default 042133389 +000000383 000905520 000617230 default 096487828 +000000383 000998488 000925012 default 038302738 +000000384 000031061 000132472 default 034414443 +000000384 000060718 000455122 default 093635573 +000000384 000188507 000550820 default 052888340 +000000384 000226238 000613478 default 046881558 +000000384 000230555 000637621 default 048906308 +000000384 000370773 000680717 default 058566576 +000000384 000693856 000792644 default 029650093 +000000384 000846676 000855220 default 093083848 +000000384 000922660 000893989 default 049388781 +000000384 000933789 000914905 default 000951061 +000000385 000039102 000000302 default 074682045 +000000385 000271890 000079199 default 069861332 +000000385 000274791 000095521 default 094410692 +000000385 000300238 000129086 default 012563357 +000000385 000370535 000164878 default 003475297 +000000385 000625743 000216363 default 059869036 +000000385 000643006 000223381 default 080347862 +000000385 000676199 000407926 default 016603069 +000000385 000855046 000520842 default 076442990 +000000385 000968429 000843468 default 055509320 +000000386 000181680 000029087 default 046770687 +000000386 000238451 000034641 default 067808604 +000000386 000306214 000058129 default 076339927 +000000386 000402334 000209311 default 092107740 +000000386 000494791 000234189 default 055274504 +000000386 000549340 000420618 default 011149248 +000000386 000606530 000651334 default 089027907 +000000386 000751150 000720345 default 075636556 +000000386 000796798 000804720 default 084035914 +000000386 000905125 000909634 default 067302765 +000000387 000066665 000005371 default 052144323 +000000387 000237944 000124008 default 079733669 +000000387 000268001 000132083 default 052009053 +000000387 000459898 000227998 default 048136224 +000000387 000656095 000265533 default 063540849 +000000387 000832793 000383865 default 072876411 +000000387 000858311 000392208 default 077867223 +000000387 000884366 000480974 default 005229589 +000000387 000905580 000679331 default 021673475 +000000387 000910798 000815503 default 020359857 +000000388 000174130 000084526 default 087761937 +000000388 000180121 000226749 default 045937223 +000000388 000184949 000328966 default 065420077 +000000388 000267111 000395260 default 073944693 +000000388 000291459 000477939 default 058068847 +000000388 000388653 000494078 default 050887087 +000000388 000795389 000591670 default 040846526 +000000388 000836573 000645809 default 028617648 +000000388 000910807 000754193 default 058441632 +000000388 000941815 000881493 default 079794844 +000000389 000161565 000107018 default 082761828 +000000389 000190264 000154172 default 026028225 +000000389 000614322 000352380 default 029413588 +000000389 000644006 000522407 default 053763018 +000000389 000781379 000578418 default 036060374 +000000389 000795311 000867036 default 082553842 +000000389 000816627 000875954 default 044465293 +000000389 000820026 000920840 default 050769397 +000000389 000837281 000953711 default 009716601 +000000389 000846051 000998838 default 093187246 +000000390 000062323 000139996 default 077028935 +000000390 000094955 000222516 default 000051030 +000000390 000269637 000270802 default 069289693 +000000390 000337536 000355925 default 022547196 +000000390 000362231 000421375 default 068796893 +000000390 000396284 000550511 default 052060948 +000000390 000431618 000574398 default 011148525 +000000390 000468437 000719026 default 055303151 +000000390 000506027 000771889 default 001132289 +000000390 000747770 000935396 default 014344219 +000000391 000188220 000131484 default 053662008 +000000391 000292077 000214930 default 034088856 +000000391 000428112 000225059 default 008757445 +000000391 000515886 000250968 default 033447505 +000000391 000655634 000310735 default 083539671 +000000391 000673680 000846616 default 065920656 +000000391 000818006 000852991 default 016679175 +000000391 000837967 000888074 default 029974925 +000000391 000909582 000912177 default 068714283 +000000391 000927894 000921833 default 020447995 +000000392 000042115 000240013 default 007024600 +000000392 000135947 000266322 default 076091216 +000000392 000174864 000384295 default 016221317 +000000392 000246245 000442298 default 088156497 +000000392 000343961 000445292 default 080698595 +000000392 000540671 000675955 default 086061422 +000000392 000676229 000687359 default 012534675 +000000392 000736457 000762750 default 011303143 +000000392 000957882 000868259 default 008858577 +000000392 000974368 000911486 default 036860869 +000000393 000081945 000196362 default 001861174 +000000393 000293755 000327952 default 045260508 +000000393 000364202 000439863 default 078788469 +000000393 000390533 000445379 default 026322115 +000000393 000400843 000518303 default 026008204 +000000393 000506872 000636096 default 024758402 +000000393 000584765 000670620 default 090394477 +000000393 000787123 000722998 default 000129976 +000000393 000837735 000951032 default 001267489 +000000393 000962657 000992158 default 003689468 +000000394 000023841 000153585 default 088618294 +000000394 000113706 000156538 default 008024941 +000000394 000199296 000215714 default 071614560 +000000394 000205737 000249334 default 067682294 +000000394 000267634 000372370 default 040124324 +000000394 000426903 000499842 default 000743523 +000000394 000462119 000522983 default 099365578 +000000394 000493558 000526564 default 094419256 +000000394 000532662 000723936 default 077536980 +000000394 000738780 000888756 default 018616400 +000000395 000059619 000029156 default 039264652 +000000395 000253891 000052512 default 063907979 +000000395 000297589 000217939 default 021384694 +000000395 000379482 000219371 default 018562869 +000000395 000438875 000515531 default 035019643 +000000395 000442206 000585697 default 020160760 +000000395 000489731 000623982 default 022405800 +000000395 000745807 000630275 default 054582612 +000000395 000807951 000707410 default 062323893 +000000395 000859832 000747424 default 006488771 +000000396 000037391 000259538 default 033613011 +000000396 000206962 000307565 default 035912827 +000000396 000225709 000411645 default 017110487 +000000396 000333541 000515556 default 094110904 +000000396 000569544 000663424 default 099000450 +000000396 000603864 000716579 default 099945144 +000000396 000624857 000762908 default 057319252 +000000396 000769684 000910211 default 089591697 +000000396 000795450 000968721 default 010216963 +000000396 000896589 000991836 default 038263565 +000000397 000047556 000158728 default 038425688 +000000397 000187892 000304726 default 055197573 +000000397 000207968 000313398 default 086999083 +000000397 000260467 000416108 default 027818557 +000000397 000372538 000446909 default 073809724 +000000397 000389662 000457051 default 077135572 +000000397 000403452 000802315 default 078726609 +000000397 000422597 000805512 default 083219140 +000000397 000958701 000928297 default 061278287 +000000397 000989707 000985856 default 079608353 +000000398 000097204 000040284 default 004383804 +000000398 000137734 000077069 default 079672370 +000000398 000368636 000126313 default 076004360 +000000398 000412997 000169322 default 034381595 +000000398 000639485 000267802 default 034374525 +000000398 000681503 000292958 default 058912530 +000000398 000774394 000350593 default 096065155 +000000398 000901652 000410170 default 041063972 +000000398 000917912 000869823 default 057831439 +000000398 000955839 000876665 default 052542624 +000000399 000091596 000014249 default 023178341 +000000399 000148128 000083160 default 007917133 +000000399 000226125 000151461 default 074198281 +000000399 000275536 000222436 default 072389897 +000000399 000536240 000241963 default 019091846 +000000399 000605664 000413388 default 095274670 +000000399 000611368 000629327 default 028819248 +000000399 000683043 000787926 default 038723352 +000000399 000949591 000854914 default 023249987 +000000399 000961411 000986929 default 050311628 +000000400 000017465 000051674 default 008292032 +000000400 000086163 000117522 default 076291945 +000000400 000292242 000129142 default 008078996 +000000400 000327074 000348138 default 086667069 +000000400 000339897 000488525 default 034309094 +000000400 000448048 000586783 default 037331976 +000000400 000473440 000681117 default 050506966 +000000400 000606580 000875492 default 011327493 +000000400 000926811 000920234 default 095835963 +000000400 000938728 000961294 default 072738769 +000000401 000154670 000001069 default 062530899 +000000401 000216258 000008229 default 039021706 +000000401 000407410 000033446 default 035719151 +000000401 000698084 000048572 default 047772393 +000000401 000746764 000352260 default 092655075 +000000401 000772221 000439197 default 062125339 +000000401 000811135 000458784 default 025719918 +000000401 000874870 000593631 default 042616523 +000000401 000941022 000640235 default 093016156 +000000401 000990304 000907791 default 038591379 +000000402 000061862 000005272 default 041946523 +000000402 000091885 000024346 default 031061369 +000000402 000172000 000226810 default 082398646 +000000402 000296260 000298372 default 074808017 +000000402 000381417 000301841 default 021228075 +000000402 000427995 000395415 default 051071346 +000000402 000474898 000418456 default 065727303 +000000402 000891925 000430409 default 074035512 +000000402 000893347 000593992 default 054515998 +000000402 000909936 000987645 default 053315008 +000000403 000438469 000149258 default 002211760 +000000403 000481851 000164856 default 043270399 +000000403 000674853 000240237 default 079274282 +000000403 000686912 000394827 default 053278483 +000000403 000743050 000408699 default 078733963 +000000403 000791289 000485612 default 008044177 +000000403 000811624 000604513 default 002686563 +000000403 000852033 000636827 default 037482558 +000000403 000862134 000736423 default 075275405 +000000403 000902509 000861422 default 088518077 +000000404 000058706 000027033 default 040234561 +000000404 000270248 000062600 default 021152043 +000000404 000315859 000288553 default 069501447 +000000404 000316169 000387848 default 097385981 +000000404 000408855 000510815 default 087675414 +000000404 000456384 000571187 default 029741916 +000000404 000573272 000625667 default 056462440 +000000404 000576519 000841342 default 048764918 +000000404 000604476 000910569 default 028787744 +000000404 000918910 000936150 default 050470146 +000000405 000110258 000017271 default 029977040 +000000405 000205220 000225404 default 029665279 +000000405 000424960 000243262 default 073084057 +000000405 000472870 000266392 default 034517418 +000000405 000685836 000399696 default 061869982 +000000405 000773282 000604724 default 053058333 +000000405 000793257 000644156 default 068943094 +000000405 000899856 000652871 default 001434454 +000000405 000930825 000912068 default 098702427 +000000405 000947016 000988481 default 065783629 +000000406 000047753 000091618 default 023256576 +000000406 000056030 000108871 default 016908745 +000000406 000217299 000207063 default 069571993 +000000406 000227200 000289011 default 059186818 +000000406 000232096 000613545 default 067235165 +000000406 000300152 000639047 default 040969379 +000000406 000354147 000703110 default 084746324 +000000406 000368635 000789514 default 053161695 +000000406 000371187 000865711 default 031595846 +000000406 000554214 000926108 default 014685854 +000000407 000004043 000009041 default 042408594 +000000407 000028175 000113337 default 073484943 +000000407 000145464 000201960 default 018322351 +000000407 000191477 000325944 default 094770493 +000000407 000382454 000347995 default 089834245 +000000407 000431132 000412432 default 009169846 +000000407 000501212 000466268 default 078174222 +000000407 000782929 000934234 default 070509673 +000000407 000900187 000934901 default 019742444 +000000407 000937403 000960467 default 032867859 +000000408 000011240 000021142 default 080553528 +000000408 000195983 000058340 default 084262357 +000000408 000365750 000148765 default 002207971 +000000408 000367493 000157328 default 075721510 +000000408 000369671 000349534 default 003706395 +000000408 000495010 000445536 default 007216314 +000000408 000522472 000492751 default 065842433 +000000408 000523653 000580508 default 063000808 +000000408 000563868 000852185 default 005198404 +000000408 000983176 000950986 default 003944955 +000000409 000360297 000156142 default 026270134 +000000409 000478389 000193257 default 085884274 +000000409 000492582 000271705 default 014679819 +000000409 000547650 000491030 default 052050232 +000000409 000553459 000656799 default 065933100 +000000409 000660212 000722574 default 002294811 +000000409 000745580 000791860 default 032827703 +000000409 000810661 000896712 default 090513974 +000000409 000825357 000949395 default 060583532 +000000409 000947761 000993176 default 043264678 +000000410 000178442 000123390 default 082821285 +000000410 000199482 000159854 default 006857595 +000000410 000253087 000324583 default 032454441 +000000410 000272981 000383323 default 059335470 +000000410 000464656 000420425 default 050998169 +000000410 000468224 000434707 default 028427900 +000000410 000618721 000515483 default 074900018 +000000410 000635361 000730364 default 081421297 +000000410 000708636 000802057 default 033551129 +000000410 000896660 000889979 default 031826294 +000000411 000133448 000094015 default 036555468 +000000411 000151955 000161045 default 078922634 +000000411 000195892 000322759 default 034004935 +000000411 000312455 000494354 default 059128406 +000000411 000504621 000513303 default 038425475 +000000411 000504844 000576495 default 009841815 +000000411 000549459 000773639 default 069307962 +000000411 000913153 000792803 default 001222970 +000000411 000918990 000856039 default 010852182 +000000411 000991296 000994809 default 054108700 +000000412 000129553 000058114 default 054480632 +000000412 000143667 000080428 default 037556532 +000000412 000152277 000170892 default 028963456 +000000412 000512769 000295870 default 022275500 +000000412 000626440 000405061 default 053869718 +000000412 000663649 000462275 default 069524764 +000000412 000775114 000526429 default 085638784 +000000412 000805194 000576752 default 030829605 +000000412 000912654 000602125 default 012717010 +000000412 000999608 000944733 default 021593995 +000000413 000085139 000005756 default 017667384 +000000413 000105491 000036086 default 050455887 +000000413 000179440 000049828 default 016378770 +000000413 000194548 000212429 default 005799787 +000000413 000309873 000232915 default 072992065 +000000413 000647539 000242665 default 007759072 +000000413 000785520 000307832 default 036783781 +000000413 000815595 000540336 default 076710611 +000000413 000922959 000590968 default 043199687 +000000413 000968719 000919869 default 032480569 +000000414 000100185 000024350 default 093021327 +000000414 000296844 000095274 default 049520240 +000000414 000351624 000141816 default 095323934 +000000414 000422530 000287302 default 046823757 +000000414 000423426 000333215 default 084565927 +000000414 000457106 000665642 default 051384028 +000000414 000521289 000670794 default 064011058 +000000414 000531379 000811851 default 033422308 +000000414 000692581 000847598 default 057142022 +000000414 000842193 000854799 default 079977697 +000000415 000031961 000046243 default 067227749 +000000415 000068726 000414393 default 062629763 +000000415 000160278 000421099 default 039856742 +000000415 000604188 000421766 default 056078692 +000000415 000691718 000569111 default 097146886 +000000415 000758652 000628720 default 091308355 +000000415 000864389 000737687 default 028066950 +000000415 000873199 000738239 default 081744562 +000000415 000900913 000775309 default 096939829 +000000415 000959288 000821906 default 055607630 +000000416 000113267 000130511 default 091898152 +000000416 000267227 000322664 default 096398254 +000000416 000285444 000345355 default 023201383 +000000416 000393284 000425475 default 071700265 +000000416 000406341 000529702 default 062700541 +000000416 000491313 000705248 default 002530397 +000000416 000639740 000739655 default 084599242 +000000416 000724606 000742122 default 084887734 +000000416 000940402 000810104 default 058128749 +000000416 000960570 000873434 default 071745941 +000000417 000040955 000008776 default 081034096 +000000417 000060755 000354447 default 069533159 +000000417 000151682 000355242 default 083397093 +000000417 000260030 000364977 default 026332751 +000000417 000378708 000374325 default 010455486 +000000417 000536412 000601017 default 046766670 +000000417 000671928 000639743 default 041011498 +000000417 000829039 000901905 default 016121713 +000000417 000929964 000910653 default 011167867 +000000417 000973276 000947831 default 065330431 +000000418 000035996 000011638 default 013115568 +000000418 000125313 000043106 default 063494263 +000000418 000189763 000091149 default 050712520 +000000418 000249837 000147121 default 091693529 +000000418 000420039 000389677 default 045275743 +000000418 000470489 000404330 default 077459089 +000000418 000586724 000559817 default 026135208 +000000418 000633173 000595169 default 088094853 +000000418 000818096 000610496 default 091279004 +000000418 000992929 000702996 default 008777060 +000000419 000001092 000013735 default 080443864 +000000419 000207804 000088608 default 053785806 +000000419 000268950 000130976 default 092071109 +000000419 000328773 000276267 default 075609366 +000000419 000455159 000508143 default 051000514 +000000419 000535654 000843315 default 002957364 +000000419 000537150 000853123 default 040562207 +000000419 000566813 000860045 default 031009518 +000000419 000784439 000913248 default 036112600 +000000419 000865477 000996553 default 011100887 +000000420 000233290 000366647 default 010558008 +000000420 000276561 000395573 default 006076238 +000000420 000430739 000493145 default 057360832 +000000420 000430920 000495009 default 093787752 +000000420 000458470 000511243 default 034852288 +000000420 000471976 000577261 default 081467621 +000000420 000593741 000621493 default 091971644 +000000420 000596832 000694358 default 089623224 +000000420 000762201 000732877 default 024363414 +000000420 000846500 000773129 default 068138736 +000000421 000176888 000005692 default 083540230 +000000421 000406799 000025830 default 065442294 +000000421 000474226 000248951 default 042482777 +000000421 000646329 000284048 default 069742169 +000000421 000656648 000318127 default 040329021 +000000421 000775830 000341316 default 063542541 +000000421 000778181 000485968 default 086133813 +000000421 000911430 000723850 default 085523146 +000000421 000925758 000796531 default 006606038 +000000421 000996658 000957481 default 039611904 +000000422 000122033 000038678 default 098706346 +000000422 000155651 000085853 default 062423494 +000000422 000320979 000383167 default 053465320 +000000422 000339817 000387503 default 061032275 +000000422 000439927 000401049 default 089679570 +000000422 000497043 000444967 default 009528209 +000000422 000554766 000472668 default 058081750 +000000422 000658402 000507789 default 018984438 +000000422 000922659 000587730 default 070080978 +000000422 000930723 000899619 default 017441611 +000000423 000079865 000080954 default 032376575 +000000423 000113648 000133666 default 068564657 +000000423 000263788 000154482 default 046716418 +000000423 000322444 000236562 default 021039191 +000000423 000427290 000386910 default 036529705 +000000423 000560900 000557833 default 062262464 +000000423 000675718 000561109 default 024412417 +000000423 000697063 000810788 default 005808802 +000000423 000837189 000858758 default 042811748 +000000423 000987192 000894031 default 036866218 +000000424 000028800 000066546 default 021143293 +000000424 000061782 000106213 default 078815093 +000000424 000319442 000142826 default 092416103 +000000424 000389551 000405326 default 027236628 +000000424 000632410 000482507 default 083591457 +000000424 000708701 000491214 default 029320073 +000000424 000826738 000749984 default 027810759 +000000424 000896598 000838657 default 018615972 +000000424 000979950 000928445 default 008415038 +000000424 000985341 000966557 default 020869515 +000000425 000238175 000058135 default 026888903 +000000425 000256744 000090828 default 037302022 +000000425 000416231 000210905 default 077501171 +000000425 000422114 000301928 default 005663494 +000000425 000509055 000321066 default 038643365 +000000425 000571834 000336369 default 010115014 +000000425 000827650 000354028 default 072304190 +000000425 000936642 000476351 default 063231409 +000000425 000940335 000570152 default 005519452 +000000425 000945596 000769987 default 067824920 +000000426 000114945 000010903 default 033530986 +000000426 000171789 000021102 default 062372366 +000000426 000259588 000038314 default 061299686 +000000426 000268483 000180561 default 090788802 +000000426 000399857 000323036 default 012801211 +000000426 000462929 000326510 default 067532596 +000000426 000747065 000589946 default 041280575 +000000426 000757295 000621238 default 074638381 +000000426 000823217 000776029 default 090867080 +000000426 000933399 000852127 default 058516107 +000000427 000076877 000051970 default 016306260 +000000427 000272942 000082690 default 090197480 +000000427 000317500 000330160 default 069977609 +000000427 000349175 000415380 default 059534234 +000000427 000543658 000417159 default 026769910 +000000427 000593204 000419541 default 019287704 +000000427 000594115 000586729 default 055572066 +000000427 000605150 000611481 default 021709203 +000000427 000674655 000693747 default 004767886 +000000427 000771572 000882598 default 002733449 +000000428 000104143 000075405 default 038917758 +000000428 000128797 000179433 default 080777413 +000000428 000173540 000227046 default 018323600 +000000428 000346025 000291851 default 059237181 +000000428 000422021 000319179 default 098461882 +000000428 000518674 000327225 default 033562761 +000000428 000715559 000542808 default 008734525 +000000428 000912726 000647068 default 014387499 +000000428 000940577 000707335 default 036836956 +000000428 000950279 000987928 default 071762380 +000000429 000073376 000244251 default 027177435 +000000429 000111519 000249015 default 038346724 +000000429 000137623 000267370 default 058984704 +000000429 000174719 000315021 default 061851639 +000000429 000290885 000532084 default 055017810 +000000429 000293588 000591217 default 076674677 +000000429 000480458 000642606 default 082663000 +000000429 000855425 000977359 default 012308112 +000000429 000856788 000994247 default 046918775 +000000429 000958397 000997137 default 059282724 +000000430 000112987 000039329 default 073121158 +000000430 000115738 000075992 default 021267095 +000000430 000174809 000104869 default 011208778 +000000430 000219226 000400231 default 075553547 +000000430 000400847 000474829 default 009695266 +000000430 000461630 000493833 default 031666678 +000000430 000565681 000573774 default 098299388 +000000430 000739426 000618209 default 033941647 +000000430 000763450 000817159 default 033098743 +000000430 000923153 000928574 default 030176943 +000000431 000000073 000006396 default 080358106 +000000431 000115176 000025161 default 014404210 +000000431 000182187 000025606 default 085151903 +000000431 000252744 000027515 default 059783510 +000000431 000261486 000049062 default 053271095 +000000431 000549908 000345108 default 021179663 +000000431 000662408 000542870 default 016304080 +000000431 000768214 000570287 default 064342284 +000000431 000782216 000672201 default 017371655 +000000431 000868572 000996309 default 024541778 +000000432 000045406 000275596 default 042996420 +000000432 000114830 000315472 default 005327542 +000000432 000164926 000322917 default 093574249 +000000432 000248718 000461910 default 051738758 +000000432 000269640 000502576 default 033102066 +000000432 000398277 000703745 default 095542484 +000000432 000424320 000868772 default 012654382 +000000432 000735454 000911378 default 045617189 +000000432 000780218 000920975 default 094298456 +000000432 000963346 000987880 default 001473900 +000000433 000003082 000127354 default 053630455 +000000433 000031501 000141126 default 029616648 +000000433 000376830 000442046 default 035442757 +000000433 000584376 000449973 default 029082169 +000000433 000629006 000523200 default 047384971 +000000433 000636234 000550521 default 088629651 +000000433 000665236 000719282 default 016043879 +000000433 000779044 000730641 default 038390377 +000000433 000817828 000825140 default 050385972 +000000433 000909749 000950719 default 007035684 +000000434 000025064 000121530 default 090523261 +000000434 000057095 000148229 default 085192432 +000000434 000066552 000255832 default 057349448 +000000434 000263070 000549375 default 065888929 +000000434 000411505 000616230 default 077033954 +000000434 000629203 000765766 default 085619913 +000000434 000653917 000792139 default 068740264 +000000434 000897320 000823968 default 049472685 +000000434 000954497 000865620 default 032654862 +000000434 000967194 000872694 default 082954288 +000000435 000001827 000008176 default 000530068 +000000435 000204337 000121428 default 099640820 +000000435 000255580 000199457 default 000913516 +000000435 000317693 000411963 default 073984995 +000000435 000331376 000600703 default 005869968 +000000435 000762427 000608331 default 031080863 +000000435 000764848 000801791 default 051583135 +000000435 000774208 000809304 default 054646060 +000000435 000889955 000832424 default 082081456 +000000435 000918682 000977930 default 032813825 +000000436 000072696 000155279 default 026480797 +000000436 000080338 000294952 default 093475470 +000000436 000253854 000338793 default 009294965 +000000436 000416232 000346936 default 051565479 +000000436 000506166 000382677 default 087813588 +000000436 000559800 000449832 default 052735990 +000000436 000620353 000450249 default 005393185 +000000436 000661716 000807071 default 098588310 +000000436 000734620 000837734 default 005501843 +000000436 000749427 000872898 default 073731009 +000000437 000194767 000035178 default 069084396 +000000437 000231976 000158863 default 023159785 +000000437 000369963 000167705 default 028252811 +000000437 000373935 000564778 default 059423254 +000000437 000393003 000578117 default 073397625 +000000437 000418045 000778469 default 011411519 +000000437 000431137 000855992 default 052915407 +000000437 000628732 000896053 default 035420119 +000000437 000847654 000912536 default 061080150 +000000437 000944280 000947058 default 056167841 +000000438 000000747 000109102 default 067795262 +000000438 000012837 000185898 default 077171794 +000000438 000141295 000257200 default 008839164 +000000438 000173029 000386649 default 011193285 +000000438 000702899 000394577 default 033861029 +000000438 000720010 000463675 default 037798670 +000000438 000794436 000650321 default 092434216 +000000438 000807541 000681794 default 037463389 +000000438 000823087 000730332 default 039048961 +000000438 000909456 000886077 default 040929922 +000000439 000310993 000056837 default 088872124 +000000439 000376084 000339865 default 062029170 +000000439 000376657 000357090 default 028261436 +000000439 000473904 000385581 default 015301786 +000000439 000513537 000447064 default 097558174 +000000439 000593188 000589088 default 022043675 +000000439 000735992 000694719 default 051365466 +000000439 000848159 000859549 default 064710084 +000000439 000889088 000911250 default 066101351 +000000439 000929771 000961386 default 015050871 +000000440 000038706 000041694 default 043419912 +000000440 000133879 000048702 default 063357938 +000000440 000196207 000164191 default 095823143 +000000440 000270766 000261665 default 006588770 +000000440 000662583 000302302 default 026178262 +000000440 000663368 000332318 default 008652938 +000000440 000776802 000352196 default 040851838 +000000440 000825742 000390410 default 086154102 +000000440 000850352 000400698 default 004534690 +000000440 000937324 000493453 default 026271527 +000000441 000075483 000010187 default 064072545 +000000441 000144643 000055199 default 018113117 +000000441 000197984 000161388 default 082909240 +000000441 000210039 000189248 default 099559096 +000000441 000388431 000362118 default 044001454 +000000441 000401361 000445140 default 074406867 +000000441 000571499 000526132 default 024191058 +000000441 000649073 000529176 default 027517723 +000000441 000676713 000736231 default 008575239 +000000441 000869079 000910379 default 070781563 +000000442 000033093 000120438 default 018898447 +000000442 000124948 000362712 default 004338132 +000000442 000469654 000531869 default 049438253 +000000442 000507264 000620993 default 008133083 +000000442 000558542 000657859 default 044816656 +000000442 000560820 000737923 default 002812267 +000000442 000652565 000752612 default 003799758 +000000442 000786091 000808934 default 068765363 +000000442 000886206 000847563 default 018429503 +000000442 000901673 000972570 default 013991549 +000000443 000013643 000151373 default 088987389 +000000443 000076325 000539875 default 064674675 +000000443 000265818 000548064 default 068240397 +000000443 000368572 000635486 default 096302813 +000000443 000392300 000676645 default 019487207 +000000443 000406755 000761642 default 056587543 +000000443 000482317 000788062 default 036808146 +000000443 000603194 000795787 default 046672016 +000000443 000854404 000800270 default 044981660 +000000443 000996444 000949141 default 043587783 +000000444 000118312 000009326 default 021467669 +000000444 000128621 000337469 default 081986260 +000000444 000282553 000365972 default 070921824 +000000444 000302524 000417941 default 021896231 +000000444 000349943 000532914 default 033364656 +000000444 000503308 000536413 default 012791649 +000000444 000523724 000554389 default 080670271 +000000444 000665059 000663065 default 077893094 +000000444 000731520 000670472 default 031950536 +000000444 000989574 000742210 default 056498358 +000000445 000129610 000144604 default 078090912 +000000445 000309616 000145445 default 065047871 +000000445 000434014 000233387 default 028054598 +000000445 000521307 000248659 default 017326250 +000000445 000537985 000361168 default 049317933 +000000445 000544906 000372418 default 081235775 +000000445 000638123 000465767 default 050348425 +000000445 000684922 000789418 default 021459132 +000000445 000840942 000822146 default 062185968 +000000445 000972431 000923089 default 039241146 +000000446 000054847 000009353 default 053325481 +000000446 000169933 000406207 default 013643467 +000000446 000183303 000434564 default 004783362 +000000446 000218149 000469773 default 098579669 +000000446 000248210 000609298 default 073252534 +000000446 000592731 000612823 default 066945224 +000000446 000601485 000650547 default 040803483 +000000446 000618431 000726227 default 003533306 +000000446 000771317 000733473 default 043985605 +000000446 000891620 000846605 default 054688110 +000000447 000027956 000180123 default 005925670 +000000447 000224502 000247932 default 022823975 +000000447 000301289 000346966 default 063923592 +000000447 000496225 000431259 default 069208014 +000000447 000598256 000457753 default 044469084 +000000447 000640483 000473600 default 030384830 +000000447 000768196 000604094 default 051294403 +000000447 000827126 000829018 default 014063135 +000000447 000833975 000954151 default 001881971 +000000447 000861368 000976687 default 021628040 +000000448 000012518 000006778 default 026499521 +000000448 000140617 000063001 default 024476327 +000000448 000164749 000149277 default 033786354 +000000448 000553021 000176859 default 002086741 +000000448 000602132 000225787 default 004974254 +000000448 000647376 000234365 default 052319860 +000000448 000920593 000474262 default 038598584 +000000448 000954875 000752712 default 030653445 +000000448 000974171 000869074 default 037849973 +000000448 000980880 000919388 default 097948980 +000000449 000201956 000018424 default 097472696 +000000449 000267140 000320584 default 037167326 +000000449 000403161 000529563 default 067233214 +000000449 000538572 000717431 default 014397242 +000000449 000634163 000794485 default 046412265 +000000449 000646539 000867788 default 024478439 +000000449 000740630 000880511 default 019821126 +000000449 000782234 000910196 default 020500006 +000000449 000886856 000950243 default 029322376 +000000449 000974555 000950491 default 096846763 +000000450 000028781 000119017 default 061013434 +000000450 000059502 000151309 default 019423645 +000000450 000063584 000336059 default 024376741 +000000450 000195322 000345531 default 032899922 +000000450 000259708 000431928 default 077195820 +000000450 000402224 000462529 default 072744642 +000000450 000456775 000638798 default 064410514 +000000450 000600100 000646231 default 017554516 +000000450 000644486 000655656 default 099775015 +000000450 000880781 000988644 default 079594034 +000000451 000013877 000419278 default 018618299 +000000451 000112324 000426615 default 042621818 +000000451 000177048 000427068 default 017104602 +000000451 000179841 000571544 default 095589307 +000000451 000471466 000683840 default 099557253 +000000451 000581937 000786892 default 038372345 +000000451 000590140 000788392 default 055611276 +000000451 000672871 000812732 default 084965625 +000000451 000937978 000895976 default 005453759 +000000451 000975327 000945422 default 034812550 +000000452 000179127 000146119 default 041202568 +000000452 000187077 000254724 default 014976267 +000000452 000468323 000318230 default 032976364 +000000452 000615544 000326846 default 070364718 +000000452 000641769 000482980 default 022985436 +000000452 000647124 000566580 default 062084114 +000000452 000659435 000643506 default 050392229 +000000452 000685478 000765395 default 076576980 +000000452 000763077 000867572 default 059964269 +000000452 000842849 000990428 default 000744833 +000000453 000007047 000254235 default 065718282 +000000453 000011987 000309119 default 069025626 +000000453 000095423 000479602 default 073412990 +000000453 000105388 000503854 default 009551430 +000000453 000202091 000505293 default 073229169 +000000453 000730398 000521774 default 065133336 +000000453 000787136 000819420 default 004594742 +000000453 000855910 000836607 default 035846635 +000000453 000869363 000887565 default 088803015 +000000453 000955647 000998148 default 067506516 +000000454 000001082 000224841 default 000619009 +000000454 000085625 000238803 default 080400172 +000000454 000236607 000279596 default 056128652 +000000454 000529038 000318037 default 043223303 +000000454 000556116 000356624 default 089488568 +000000454 000558964 000419446 default 060053275 +000000454 000610704 000494165 default 052063010 +000000454 000628574 000674458 default 053902985 +000000454 000758799 000856105 default 089878285 +000000454 000872755 000910131 default 030883083 +000000455 000092389 000019929 default 014871830 +000000455 000173497 000026910 default 051789281 +000000455 000175587 000126263 default 004463991 +000000455 000181484 000325751 default 074078326 +000000455 000488644 000357105 default 056770490 +000000455 000523652 000427543 default 095910120 +000000455 000725705 000633889 default 018364778 +000000455 000957717 000657000 default 049439379 +000000455 000964120 000758675 default 055641704 +000000455 000971652 000942637 default 099862991 +000000456 000058009 000014033 default 012810832 +000000456 000085793 000066069 default 070331768 +000000456 000239971 000120080 default 087595895 +000000456 000320964 000295665 default 018871334 +000000456 000428770 000295957 default 056963625 +000000456 000541080 000322329 default 022778123 +000000456 000599990 000340922 default 050870456 +000000456 000615220 000550926 default 060421715 +000000456 000726712 000787396 default 072415339 +000000456 000977302 000937871 default 048932086 +000000457 000277466 000154923 default 068863952 +000000457 000477714 000433965 default 030824956 +000000457 000517310 000434086 default 052737222 +000000457 000550325 000466005 default 084859032 +000000457 000611078 000487864 default 018925642 +000000457 000632385 000531592 default 032359547 +000000457 000696641 000756475 default 053633598 +000000457 000880746 000786746 default 009040445 +000000457 000925572 000818704 default 089282495 +000000457 000987483 000857905 default 031715457 +000000458 000124930 000015992 default 092647087 +000000458 000137593 000138426 default 077063204 +000000458 000160219 000148530 default 058115242 +000000458 000202251 000218682 default 040498044 +000000458 000216306 000344305 default 084794865 +000000458 000306673 000403148 default 011288521 +000000458 000368695 000751164 default 067654007 +000000458 000643765 000753869 default 093476210 +000000458 000865568 000845264 default 022119161 +000000458 000960100 000925057 default 082004981 +000000459 000008850 000090682 default 092528669 +000000459 000032885 000092223 default 025490602 +000000459 000193666 000149905 default 038079601 +000000459 000314807 000229112 default 003094994 +000000459 000398390 000293873 default 007870760 +000000459 000417154 000386524 default 065926530 +000000459 000498251 000398282 default 020443157 +000000459 000524578 000470666 default 094006225 +000000459 000693095 000872048 default 083483724 +000000459 000896270 000880829 default 063401369 +000000460 000039960 000100593 default 087922354 +000000460 000059557 000178769 default 025049981 +000000460 000103449 000548795 default 010927284 +000000460 000111396 000577804 default 062761662 +000000460 000365777 000692043 default 080971951 +000000460 000568385 000820885 default 029705874 +000000460 000669529 000905033 default 072832650 +000000460 000705932 000907720 default 070690220 +000000460 000731312 000959573 default 034994601 +000000460 000885722 000997828 default 082814316 +000000461 000274063 000028930 default 015235137 +000000461 000278223 000272281 default 008105732 +000000461 000455211 000385988 default 069152570 +000000461 000607382 000394873 default 013428296 +000000461 000630758 000533149 default 085560632 +000000461 000790970 000536074 default 023530926 +000000461 000819485 000560179 default 038053992 +000000461 000844213 000600434 default 036180047 +000000461 000872442 000665317 default 006504313 +000000461 000934831 000975016 default 059639168 +000000462 000132902 000189402 default 038812677 +000000462 000181096 000195269 default 006482266 +000000462 000316217 000258969 default 075332539 +000000462 000359418 000357501 default 057482707 +000000462 000396447 000435607 default 026125733 +000000462 000584854 000464199 default 026621377 +000000462 000757423 000474715 default 030760886 +000000462 000805288 000574463 default 078834289 +000000462 000842862 000821377 default 050968628 +000000462 000875362 000878466 default 070144223 +000000463 000000029 000032570 default 015483590 +000000463 000151341 000051168 default 085626400 +000000463 000179195 000132760 default 033809277 +000000463 000321382 000310700 default 002968224 +000000463 000427046 000334671 default 010449431 +000000463 000581545 000346833 default 097463101 +000000463 000601280 000397856 default 090418063 +000000463 000842035 000756036 default 015916009 +000000463 000870416 000839435 default 054714887 +000000463 000897528 000900084 default 041714560 +000000464 000023892 000013382 default 072427056 +000000464 000063519 000112146 default 031564092 +000000464 000091246 000206629 default 024266622 +000000464 000192914 000234327 default 009570223 +000000464 000252369 000315098 default 033852298 +000000464 000259788 000361360 default 055385673 +000000464 000354387 000661885 default 046469966 +000000464 000661718 000738557 default 078266910 +000000464 000732028 000773772 default 051585703 +000000464 000926335 000867461 default 098144359 +000000465 000053713 000043291 default 021532700 +000000465 000243049 000344139 default 078819217 +000000465 000446861 000406905 default 020400316 +000000465 000590576 000428097 default 073450835 +000000465 000728361 000581354 default 068568726 +000000465 000768276 000625984 default 023971104 +000000465 000781740 000697810 default 050435312 +000000465 000876832 000807145 default 055978157 +000000465 000939775 000823876 default 023105224 +000000465 000987393 000999444 default 049460489 +000000466 000020325 000003869 default 034483608 +000000466 000062109 000022203 default 005694375 +000000466 000115054 000365878 default 066381708 +000000466 000259955 000419952 default 038319899 +000000466 000296770 000596610 default 060201416 +000000466 000507254 000721654 default 002303851 +000000466 000596299 000740448 default 085096833 +000000466 000806120 000773563 default 026746039 +000000466 000831081 000892883 default 013372282 +000000466 000876720 000909137 default 010331513 +000000467 000053832 000034120 default 074864981 +000000467 000107186 000044818 default 035436155 +000000467 000117202 000084062 default 066665200 +000000467 000126731 000111124 default 038054885 +000000467 000232062 000131842 default 054704801 +000000467 000274026 000223897 default 082535462 +000000467 000378236 000244305 default 030673042 +000000467 000505540 000394603 default 052092673 +000000467 000719361 000602290 default 018836134 +000000467 000823745 000900950 default 041146653 +000000468 000438994 000031928 default 070801613 +000000468 000547519 000048293 default 030581067 +000000468 000571245 000049071 default 001376884 +000000468 000578831 000111773 default 044544195 +000000468 000653667 000379218 default 093559578 +000000468 000718883 000541392 default 065761443 +000000468 000884264 000871338 default 039390942 +000000468 000901699 000882451 default 072506143 +000000468 000930098 000966548 default 020452620 +000000468 000973396 000984810 default 011377126 +000000469 000026483 000166678 default 062358693 +000000469 000131225 000353749 default 000825385 +000000469 000231843 000406362 default 002007463 +000000469 000266572 000423212 default 020711111 +000000469 000789713 000444608 default 062513052 +000000469 000807078 000495207 default 008989087 +000000469 000811980 000582861 default 004023977 +000000469 000879594 000658784 default 021040009 +000000469 000896732 000820499 default 091976025 +000000469 000900676 000827801 default 026211269 +000000470 000015585 000305744 default 088004706 +000000470 000091259 000367042 default 008014390 +000000470 000161700 000375815 default 069397322 +000000470 000401949 000448719 default 019459757 +000000470 000546577 000684998 default 063367616 +000000470 000596922 000763584 default 040108371 +000000470 000663613 000805408 default 069720299 +000000470 000666146 000829254 default 026194477 +000000470 000754245 000888610 default 090677106 +000000470 000903317 000952936 default 071561933 +000000471 000005472 000017445 default 087488193 +000000471 000082688 000047389 default 086764328 +000000471 000141586 000136304 default 055753565 +000000471 000280665 000228090 default 007599722 +000000471 000284438 000253975 default 023410944 +000000471 000458904 000295301 default 009293670 +000000471 000730621 000415602 default 013899040 +000000471 000917261 000455730 default 031450786 +000000471 000951539 000550944 default 015570566 +000000471 000996570 000610730 default 055629753 +000000472 000002760 000041810 default 053723432 +000000472 000094049 000054976 default 013526765 +000000472 000099210 000072695 default 091684759 +000000472 000157807 000163180 default 032116818 +000000472 000216162 000227418 default 015877977 +000000472 000454936 000331708 default 014646632 +000000472 000748173 000429405 default 023587008 +000000472 000756788 000615514 default 078725315 +000000472 000824292 000739304 default 010666078 +000000472 000953504 000800913 default 026554922 +000000473 000016085 000124628 default 089530397 +000000473 000105998 000135833 default 093168054 +000000473 000198765 000152675 default 020877409 +000000473 000264779 000268931 default 016766599 +000000473 000282892 000272742 default 002025091 +000000473 000306410 000456331 default 060234756 +000000473 000382278 000459388 default 053713691 +000000473 000526815 000541972 default 053442718 +000000473 000623183 000717904 default 098151510 +000000473 000738549 000872648 default 086768312 +000000474 000153672 000123264 default 059605561 +000000474 000191230 000177862 default 044530106 +000000474 000374013 000366552 default 052043782 +000000474 000467719 000495518 default 023650959 +000000474 000548761 000512450 default 088634704 +000000474 000619792 000549277 default 041463342 +000000474 000702346 000791046 default 033988743 +000000474 000811766 000792467 default 000534590 +000000474 000879562 000909707 default 049530782 +000000474 000923805 000975672 default 054057971 +000000475 000166677 000103443 default 079360920 +000000475 000195482 000224468 default 049828146 +000000475 000342464 000263764 default 047102443 +000000475 000468135 000470273 default 010582461 +000000475 000469719 000489344 default 033117910 +000000475 000511950 000506761 default 092684150 +000000475 000598525 000598395 default 001330602 +000000475 000744885 000605493 default 027581512 +000000475 000820162 000815547 default 052452789 +000000475 000846404 000866714 default 001659189 +000000476 000018075 000017344 default 019105399 +000000476 000294316 000126650 default 039955307 +000000476 000327351 000287952 default 077017420 +000000476 000474954 000340685 default 032707981 +000000476 000495385 000421947 default 042767266 +000000476 000513880 000454489 default 085587269 +000000476 000827194 000480762 default 001499533 +000000476 000911994 000778633 default 087831314 +000000476 000941611 000951262 default 067445885 +000000476 000954162 000999248 default 079027746 +000000477 000034909 000113596 default 067947380 +000000477 000056388 000113929 default 035346356 +000000477 000137628 000290414 default 080251252 +000000477 000236736 000307394 default 092329682 +000000477 000410242 000579390 default 039976804 +000000477 000412764 000760454 default 079294117 +000000477 000417593 000761642 default 039503189 +000000477 000534855 000778517 default 001419860 +000000477 000537852 000815742 default 040297731 +000000477 000550305 000963810 default 056041020 +000000478 000019398 000100177 default 084435510 +000000478 000209514 000134192 default 009876754 +000000478 000427998 000160055 default 021751655 +000000478 000509642 000373755 default 002173195 +000000478 000543132 000458485 default 070128480 +000000478 000595884 000467627 default 022853337 +000000478 000686360 000522346 default 066693951 +000000478 000864391 000544061 default 016391891 +000000478 000888612 000838643 default 004213232 +000000478 000977144 000856398 default 022414155 +000000479 000123533 000013348 default 017392197 +000000479 000150020 000140350 default 088391914 +000000479 000243606 000163732 default 061215933 +000000479 000446508 000361019 default 086504122 +000000479 000554055 000471651 default 026278843 +000000479 000581702 000535936 default 079655727 +000000479 000592196 000746312 default 072887081 +000000479 000682986 000892259 default 030919508 +000000479 000689414 000914620 default 056183190 +000000479 000766862 000916496 default 069117250 +000000480 000112126 000081817 default 047115786 +000000480 000169531 000118947 default 098280281 +000000480 000308017 000148514 default 087530843 +000000480 000327467 000192833 default 077769108 +000000480 000676585 000194539 default 083796061 +000000480 000679711 000316580 default 032066225 +000000480 000771796 000539457 default 002971272 +000000480 000821865 000751607 default 076187557 +000000480 000838454 000860859 default 011787880 +000000480 000958614 000888162 default 017371637 +000000481 000096589 000126094 default 007590025 +000000481 000227669 000129338 default 023761447 +000000481 000301953 000458540 default 005252094 +000000481 000312716 000612129 default 040481415 +000000481 000321234 000658444 default 047769992 +000000481 000586125 000729203 default 073999773 +000000481 000727529 000801475 default 032876374 +000000481 000860167 000870346 default 096657692 +000000481 000879626 000947636 default 062079412 +000000481 000915408 000960211 default 062061287 +000000482 000122236 000003387 default 056161601 +000000482 000189170 000038162 default 010814907 +000000482 000358225 000050543 default 000941326 +000000482 000368661 000200327 default 068427193 +000000482 000370257 000211410 default 047374060 +000000482 000651063 000246425 default 083639349 +000000482 000728311 000400755 default 003434791 +000000482 000814816 000507961 default 084744389 +000000482 000826945 000606396 default 070130702 +000000482 000888759 000807213 default 049842911 +000000483 000020525 000087366 default 081499158 +000000483 000159460 000119845 default 018608106 +000000483 000489223 000126091 default 018608026 +000000483 000626601 000140817 default 070079775 +000000483 000653258 000248737 default 010399433 +000000483 000769932 000465356 default 027814781 +000000483 000816334 000742207 default 063944175 +000000483 000880583 000803816 default 025567998 +000000483 000918255 000941815 default 062579483 +000000483 000958005 000992893 default 088917575 +000000484 000012976 000012042 default 006476801 +000000484 000169067 000095853 default 021517704 +000000484 000534884 000280260 default 002358392 +000000484 000585809 000453568 default 026909505 +000000484 000653853 000606521 default 070494940 +000000484 000690598 000648586 default 089268990 +000000484 000797259 000654428 default 093689891 +000000484 000840982 000679666 default 063575888 +000000484 000852961 000873711 default 046070343 +000000484 000986210 000914605 default 078262202 +000000485 000136619 000219193 default 021226989 +000000485 000180305 000220236 default 027582725 +000000485 000199633 000399762 default 035665976 +000000485 000497270 000423588 default 014266831 +000000485 000665024 000490888 default 082620591 +000000485 000709732 000568007 default 048881200 +000000485 000799253 000840369 default 067612166 +000000485 000831790 000877997 default 080486759 +000000485 000880382 000919048 default 002303044 +000000485 000993527 000949304 default 040266570 +000000486 000010078 000102378 default 009970183 +000000486 000167280 000130703 default 017497094 +000000486 000253502 000149455 default 033210497 +000000486 000502067 000200772 default 080999273 +000000486 000534383 000365706 default 066650892 +000000486 000596564 000471971 default 027584026 +000000486 000659865 000721720 default 044786459 +000000486 000771163 000788797 default 001988807 +000000486 000861924 000889385 default 007065232 +000000486 000889676 000932996 default 034598898 +000000487 000039831 000036113 default 010049774 +000000487 000108795 000175348 default 058921646 +000000487 000258163 000345730 default 000292903 +000000487 000363216 000368661 default 070845917 +000000487 000370124 000395557 default 092234976 +000000487 000407668 000420876 default 078096509 +000000487 000411264 000674384 default 032881277 +000000487 000594086 000688598 default 021834443 +000000487 000610783 000846222 default 099155516 +000000487 000961510 000981770 default 057603634 +000000488 000228851 000247497 default 086434802 +000000488 000240855 000262416 default 082331919 +000000488 000266326 000284673 default 024558747 +000000488 000272406 000371390 default 064970188 +000000488 000364462 000413349 default 099011597 +000000488 000459203 000546335 default 077155982 +000000488 000537466 000602629 default 000904109 +000000488 000548578 000632519 default 077394278 +000000488 000550330 000814228 default 038212495 +000000488 000607528 000932557 default 013010807 +000000489 000009756 000026063 default 000427626 +000000489 000036457 000080287 default 080665479 +000000489 000290811 000101319 default 055704895 +000000489 000410449 000236082 default 012972685 +000000489 000472644 000279627 default 087518892 +000000489 000682411 000580193 default 067831472 +000000489 000742855 000602149 default 055279588 +000000489 000775620 000644815 default 093098231 +000000489 000852219 000866384 default 015330152 +000000489 000883306 000897952 default 064356321 +000000490 000039739 000064494 default 028815822 +000000490 000078461 000313220 default 063696226 +000000490 000102264 000334192 default 057174908 +000000490 000294524 000425388 default 096560342 +000000490 000313514 000554977 default 095104787 +000000490 000612857 000718688 default 062575918 +000000490 000645650 000719016 default 012973942 +000000490 000686193 000729720 default 050880873 +000000490 000887188 000883180 default 022259654 +000000490 000967833 000985795 default 021453983 +000000491 000000119 000077108 default 009401486 +000000491 000414570 000183489 default 005802082 +000000491 000440459 000379228 default 089498379 +000000491 000504447 000483687 default 016881608 +000000491 000549832 000493405 default 096898212 +000000491 000686564 000562335 default 047820416 +000000491 000710350 000870865 default 046857016 +000000491 000742400 000890298 default 081492551 +000000491 000770052 000925096 default 039859788 +000000491 000804134 000984940 default 053989985 +000000492 000106016 000224302 default 041178624 +000000492 000120960 000266921 default 061288807 +000000492 000343666 000304244 default 053035987 +000000492 000549525 000426711 default 040026440 +000000492 000553899 000499117 default 029148741 +000000492 000691299 000528714 default 023399254 +000000492 000705781 000728822 default 076499792 +000000492 000787630 000730526 default 079590694 +000000492 000846658 000844623 default 003139058 +000000492 000897374 000867701 default 020084430 +000000493 000025950 000149586 default 028340857 +000000493 000038031 000236881 default 062199022 +000000493 000053091 000343289 default 068471580 +000000493 000097726 000408718 default 098210290 +000000493 000548513 000603345 default 043256335 +000000493 000640410 000627655 default 089662822 +000000493 000689278 000716107 default 009165184 +000000493 000750460 000787777 default 015069581 +000000493 000881365 000828594 default 002658787 +000000493 000953223 000939692 default 031598076 +000000494 000135476 000056318 default 045836558 +000000494 000147349 000092875 default 082221509 +000000494 000169698 000159540 default 038036033 +000000494 000196246 000206294 default 098198916 +000000494 000207858 000284556 default 003804533 +000000494 000427047 000355579 default 000529019 +000000494 000468854 000657894 default 095542360 +000000494 000568672 000675133 default 051950717 +000000494 000674373 000720513 default 011936137 +000000494 000678728 000748610 default 090682765 +000000495 000089857 000061903 default 050331999 +000000495 000390642 000109562 default 017323570 +000000495 000480236 000165866 default 055816138 +000000495 000517652 000301577 default 083276059 +000000495 000606355 000406282 default 099452985 +000000495 000608039 000457391 default 026132838 +000000495 000639766 000494892 default 084725664 +000000495 000677309 000558665 default 034639403 +000000495 000842902 000753445 default 064589313 +000000495 000923167 000812029 default 020758235 +000000496 000279558 000247360 default 028085546 +000000496 000337607 000274256 default 003821244 +000000496 000346663 000376992 default 000157784 +000000496 000454985 000378748 default 099138370 +000000496 000500159 000418993 default 050203992 +000000496 000565654 000650883 default 055044377 +000000496 000567702 000653203 default 022162796 +000000496 000705354 000698994 default 000798912 +000000496 000816576 000755488 default 005160624 +000000496 000854825 000940832 default 076497552 +000000497 000132068 000007287 default 051177464 +000000497 000133726 000042633 default 060893363 +000000497 000260443 000051284 default 041707109 +000000497 000273311 000375497 default 082757931 +000000497 000655330 000568427 default 047242904 +000000497 000699677 000682591 default 071259787 +000000497 000736713 000747474 default 001231233 +000000497 000856464 000860380 default 006323840 +000000497 000910253 000945578 default 013022749 +000000497 000968800 000962703 default 012457554 +000000498 000180950 000054061 default 065064702 +000000498 000409056 000103242 default 047089588 +000000498 000436267 000103670 default 096347144 +000000498 000522823 000208670 default 035363002 +000000498 000583375 000250358 default 002620666 +000000498 000625120 000252152 default 031380077 +000000498 000659964 000328289 default 044911482 +000000498 000854195 000684438 default 019885498 +000000498 000959343 000686435 default 094832665 +000000498 000994893 000792746 default 062146426 +000000499 000022796 000324685 default 041108959 +000000499 000143825 000462868 default 096582734 +000000499 000222884 000662737 default 041075156 +000000499 000257160 000757491 default 018512331 +000000499 000281746 000825832 default 044204870 +000000499 000368004 000867594 default 021764890 +000000499 000590352 000881344 default 064361255 +000000499 000684625 000937495 default 070505803 +000000499 000775096 000947110 default 063641730 +000000499 000976175 000994222 default 080933149 +000000500 000032268 000009485 default 059582191 +000000500 000050504 000243064 default 085741080 +000000500 000058908 000258899 default 092861859 +000000500 000255517 000334617 default 072462916 +000000500 000514098 000470009 default 011748127 +000000500 000541573 000835116 default 039371935 +000000500 000618680 000892337 default 023649174 +000000500 000647942 000898323 default 004768927 +000000500 000765991 000932967 default 068035137 +000000500 000944737 000980664 default 033180104 +000000501 000066212 000137650 default 031324586 +000000501 000080304 000169163 default 088495044 +000000501 000289391 000605635 default 032309283 +000000501 000292855 000615138 default 039655365 +000000501 000300082 000698754 default 058011531 +000000501 000518451 000823169 default 068899236 +000000501 000540680 000843489 default 050403581 +000000501 000621173 000880653 default 052414296 +000000501 000826390 000917330 default 022778615 +000000501 000849509 000949151 default 019124456 +000000502 000054968 000047240 default 019488590 +000000502 000411908 000056592 default 089951213 +000000502 000443227 000069196 default 007088936 +000000502 000581267 000101376 default 059798691 +000000502 000675584 000107200 default 033283356 +000000502 000683913 000194049 default 066357324 +000000502 000734208 000299959 default 073538484 +000000502 000745927 000623793 default 020127094 +000000502 000888464 000696965 default 065332150 +000000502 000934725 000724414 default 031377500 +000000503 000038476 000208402 default 072268480 +000000503 000039435 000436906 default 052631190 +000000503 000479229 000489206 default 081021987 +000000503 000528474 000494109 default 003103338 +000000503 000598157 000643292 default 048677233 +000000503 000683707 000685366 default 051858597 +000000503 000696673 000709404 default 003590651 +000000503 000812059 000873581 default 031697202 +000000503 000871862 000898404 default 020048343 +000000503 000989710 000962689 default 035470842 +000000504 000030093 000228394 default 066769082 +000000504 000042083 000266774 default 088855488 +000000504 000223573 000423074 default 016902728 +000000504 000261378 000444141 default 095607806 +000000504 000493293 000551338 default 030811720 +000000504 000496013 000569548 default 042138355 +000000504 000600338 000615141 default 041008988 +000000504 000659015 000693513 default 068422118 +000000504 000760842 000848769 default 083627045 +000000504 000847487 000871672 default 018435175 +000000505 000100711 000255965 default 019140053 +000000505 000163276 000477020 default 075055879 +000000505 000328807 000574135 default 078271662 +000000505 000342799 000659240 default 076191379 +000000505 000388204 000672111 default 000965731 +000000505 000536058 000726682 default 030862227 +000000505 000552408 000741157 default 082606761 +000000505 000572538 000793658 default 063244941 +000000505 000934233 000884441 default 013181364 +000000505 000967761 000890370 default 016010689 +000000506 000011943 000005910 default 067274523 +000000506 000050964 000047954 default 081978729 +000000506 000080110 000147949 default 087889839 +000000506 000146940 000224847 default 014082560 +000000506 000251231 000257728 default 004568022 +000000506 000331926 000305940 default 038223037 +000000506 000407924 000338561 default 094064985 +000000506 000408420 000482063 default 028956902 +000000506 000428451 000838808 default 000534799 +000000506 000978069 000851272 default 057533658 +000000507 000021694 000043876 default 070997044 +000000507 000237605 000172511 default 061867280 +000000507 000329291 000510191 default 049894393 +000000507 000362207 000648321 default 081065734 +000000507 000442580 000654904 default 030961328 +000000507 000469270 000683567 default 075362116 +000000507 000493928 000724016 default 005207301 +000000507 000704956 000754783 default 001305928 +000000507 000777499 000769368 default 003457433 +000000507 000970661 000857421 default 012762318 +000000508 000070734 000016580 default 096873251 +000000508 000092859 000068024 default 077523772 +000000508 000123715 000294406 default 009068554 +000000508 000330107 000439632 default 090932908 +000000508 000462097 000517082 default 065653588 +000000508 000561241 000544232 default 016762511 +000000508 000633244 000670168 default 091218195 +000000508 000674510 000833354 default 007993737 +000000508 000903332 000898870 default 055667731 +000000508 000967233 000976900 default 059565275 +000000509 000039603 000020064 default 081241445 +000000509 000221678 000037253 default 002537288 +000000509 000227874 000104866 default 081286550 +000000509 000233984 000415849 default 049644290 +000000509 000301520 000420065 default 036484303 +000000509 000391273 000482866 default 019610838 +000000509 000418949 000779009 default 080814853 +000000509 000663317 000816301 default 061594020 +000000509 000919814 000870974 default 011815964 +000000509 000970265 000935747 default 047620382 +000000510 000077230 000036597 default 052853791 +000000510 000103789 000080767 default 045287019 +000000510 000292928 000165214 default 085063457 +000000510 000335717 000483774 default 007039336 +000000510 000392205 000518576 default 051618599 +000000510 000501899 000554684 default 059775757 +000000510 000686187 000610014 default 043663681 +000000510 000696603 000658551 default 087049291 +000000510 000741007 000734959 default 000268319 +000000510 000958497 000746194 default 035969966 +000000511 000197252 000199060 default 057615696 +000000511 000201140 000234499 default 011913164 +000000511 000279411 000321323 default 052041655 +000000511 000423095 000355989 default 044239724 +000000511 000460094 000414384 default 001902516 +000000511 000463683 000481044 default 046396081 +000000511 000694466 000577773 default 011539014 +000000511 000901587 000729222 default 076321254 +000000511 000901846 000834908 default 058441741 +000000511 000988699 000869629 default 028583765 +000000512 000010326 000001077 default 073343877 +000000512 000130105 000199361 default 092700197 +000000512 000570605 000414317 default 069349668 +000000512 000641183 000511811 default 050819450 +000000512 000696863 000547198 default 043346719 +000000512 000779365 000587112 default 023110839 +000000512 000822586 000681154 default 055565595 +000000512 000903434 000685432 default 039374398 +000000512 000909879 000715415 default 059199143 +000000512 000913222 000716155 default 045672747 +000000513 000099997 000337079 default 051878680 +000000513 000152898 000434034 default 068976205 +000000513 000283966 000475570 default 026224597 +000000513 000413576 000557385 default 056849671 +000000513 000534329 000676335 default 090732540 +000000513 000560734 000710497 default 043048497 +000000513 000596859 000741561 default 057497598 +000000513 000697779 000819312 default 033130064 +000000513 000880393 000929648 default 015351990 +000000513 000905294 000972510 default 030483933 +000000514 000123569 000272482 default 010264275 +000000514 000129938 000390246 default 018529261 +000000514 000348770 000438292 default 084198901 +000000514 000399509 000520613 default 085472810 +000000514 000419555 000626269 default 014539690 +000000514 000430284 000800086 default 006477591 +000000514 000515623 000893759 default 092884882 +000000514 000688609 000951129 default 044763779 +000000514 000694132 000962794 default 026778848 +000000514 000949784 000986177 default 093283884 +000000515 000085820 000212970 default 020871648 +000000515 000096180 000254586 default 094177199 +000000515 000253409 000385349 default 078019471 +000000515 000311051 000388592 default 019565383 +000000515 000340810 000437285 default 039362403 +000000515 000474787 000556887 default 044115686 +000000515 000496697 000577405 default 022019933 +000000515 000565928 000608180 default 090614535 +000000515 000827865 000730321 default 068016792 +000000515 000916184 000965146 default 099378332 +000000516 000049659 000078956 default 081267395 +000000516 000164517 000382966 default 060637893 +000000516 000250118 000410045 default 039393214 +000000516 000253762 000430095 default 011405308 +000000516 000435835 000455577 default 075788544 +000000516 000475171 000539419 default 038021067 +000000516 000709281 000701297 default 053296595 +000000516 000760537 000757547 default 055516268 +000000516 000778677 000983021 default 035362294 +000000516 000921272 000994704 default 088291598 +000000517 000052827 000050151 default 068426292 +000000517 000235881 000058053 default 053772362 +000000517 000278275 000160049 default 091283256 +000000517 000367663 000259798 default 019888120 +000000517 000495310 000275275 default 086774058 +000000517 000603741 000304169 default 025545390 +000000517 000650960 000791364 default 070874011 +000000517 000783561 000809328 default 089599039 +000000517 000946567 000890987 default 016698866 +000000517 000994520 000944868 default 014569937 +000000518 000122269 000039159 default 039565800 +000000518 000226002 000181433 default 026493380 +000000518 000235468 000373579 default 046795757 +000000518 000515560 000449940 default 061460844 +000000518 000720046 000463070 default 013992443 +000000518 000781445 000631766 default 055713443 +000000518 000830976 000861890 default 064433795 +000000518 000867807 000877321 default 077516857 +000000518 000956378 000945031 default 002728031 +000000518 000957281 000990303 default 028549448 +000000519 000028160 000038649 default 090300926 +000000519 000151584 000180540 default 087965844 +000000519 000191025 000488717 default 057345897 +000000519 000243554 000548904 default 045043682 +000000519 000418474 000550204 default 085451691 +000000519 000438875 000652279 default 034383932 +000000519 000463374 000812347 default 063201616 +000000519 000496693 000836823 default 052467057 +000000519 000583915 000936778 default 035699560 +000000519 000791099 000992550 default 027360569 +000000520 000260780 000154379 default 086859655 +000000520 000345484 000233654 default 047906011 +000000520 000354019 000268690 default 037639311 +000000520 000362215 000315694 default 048011330 +000000520 000530432 000544513 default 007413318 +000000520 000625138 000557976 default 064014654 +000000520 000647297 000662773 default 008299431 +000000520 000812144 000690055 default 052583400 +000000520 000819145 000708459 default 058374193 +000000520 000995488 000934132 default 036529803 +000000521 000040660 000166957 default 051579589 +000000521 000101110 000230731 default 089513423 +000000521 000180880 000284732 default 063483709 +000000521 000258803 000373851 default 041396626 +000000521 000438223 000447646 default 084470942 +000000521 000441706 000838544 default 067129963 +000000521 000568441 000846699 default 029097842 +000000521 000678097 000930081 default 039530376 +000000521 000808893 000959158 default 043444514 +000000521 000881916 000964704 default 048050282 +000000522 000012766 000222118 default 055443751 +000000522 000039560 000237927 default 018990670 +000000522 000255127 000274297 default 016003449 +000000522 000262689 000439089 default 004947792 +000000522 000308582 000526114 default 068597615 +000000522 000309275 000623996 default 035977944 +000000522 000425487 000668304 default 083524286 +000000522 000526238 000751235 default 010217607 +000000522 000623386 000880828 default 044722065 +000000522 000950960 000906965 default 051913691 +000000523 000110189 000000454 default 069012088 +000000523 000338548 000280570 default 091322252 +000000523 000367649 000398376 default 069143354 +000000523 000495411 000445754 default 097473618 +000000523 000495854 000740530 default 066595295 +000000523 000694255 000875759 default 031270010 +000000523 000772374 000914043 default 099409325 +000000523 000881642 000952709 default 059413046 +000000523 000990918 000956407 default 081245724 +000000523 000999055 000980866 default 098114439 +000000524 000073494 000027772 default 067197706 +000000524 000078537 000445045 default 013954210 +000000524 000102481 000449547 default 058311955 +000000524 000334319 000579808 default 038018257 +000000524 000494714 000589866 default 063966028 +000000524 000565740 000606220 default 074757995 +000000524 000650088 000737994 default 059872400 +000000524 000730672 000850162 default 037371913 +000000524 000871924 000858446 default 008679815 +000000524 000889695 000867680 default 062106630 +000000525 000028486 000021286 default 047086212 +000000525 000137734 000285331 default 024780003 +000000525 000246881 000330676 default 011801277 +000000525 000368382 000362638 default 042043934 +000000525 000445066 000380490 default 043036737 +000000525 000510732 000484164 default 028473668 +000000525 000794560 000767427 default 027503595 +000000525 000875489 000781261 default 024228268 +000000525 000876517 000840244 default 068384218 +000000525 000878459 000889754 default 085085936 +000000526 000056185 000100699 default 076908177 +000000526 000064824 000238446 default 097316347 +000000526 000224740 000255424 default 044597801 +000000526 000297511 000262195 default 076571907 +000000526 000473521 000374237 default 075825738 +000000526 000504599 000628394 default 015461711 +000000526 000548255 000699102 default 055923785 +000000526 000558075 000725616 default 035501168 +000000526 000709689 000729846 default 002224062 +000000526 000872925 000968890 default 035215121 +000000527 000004988 000041805 default 079358879 +000000527 000069066 000151553 default 017357734 +000000527 000103997 000161852 default 010133599 +000000527 000283500 000321895 default 076736176 +000000527 000444296 000808986 default 061469822 +000000527 000568221 000822381 default 040826465 +000000527 000580630 000862663 default 038825244 +000000527 000637114 000902392 default 082978617 +000000527 000643216 000913729 default 025157083 +000000527 000919763 000984306 default 062599686 +000000528 000008778 000209910 default 001890035 +000000528 000044661 000211484 default 037070111 +000000528 000103439 000277255 default 009067852 +000000528 000191964 000297379 default 025006393 +000000528 000227447 000385964 default 088126092 +000000528 000395968 000599167 default 019278414 +000000528 000588165 000738151 default 091363382 +000000528 000756573 000766840 default 054219148 +000000528 000789792 000842002 default 037574935 +000000528 000852967 000966814 default 090729600 +000000529 000038733 000012597 default 071634822 +000000529 000134886 000057399 default 015173293 +000000529 000260319 000270818 default 082692228 +000000529 000352419 000444978 default 065691494 +000000529 000458322 000493091 default 042872825 +000000529 000608269 000515891 default 030878807 +000000529 000613329 000641058 default 065719472 +000000529 000767054 000728775 default 039872691 +000000529 000899515 000814642 default 012377722 +000000529 000943847 000914952 default 095800670 +000000530 000005282 000094011 default 077928655 +000000530 000145227 000243548 default 050773932 +000000530 000288091 000292303 default 095474139 +000000530 000340241 000438923 default 066346110 +000000530 000349107 000614043 default 018923424 +000000530 000381146 000644522 default 008498724 +000000530 000437586 000738036 default 067180406 +000000530 000496165 000748633 default 057950896 +000000530 000620902 000964037 default 075254150 +000000530 000974993 000999833 default 096723427 +000000531 000185140 000089852 default 017423195 +000000531 000195785 000102724 default 017574809 +000000531 000210541 000160058 default 033208518 +000000531 000334471 000232849 default 055000656 +000000531 000431704 000450928 default 028395147 +000000531 000473554 000612090 default 010323692 +000000531 000575745 000612760 default 089964496 +000000531 000795468 000850791 default 010665262 +000000531 000954808 000862673 default 073869819 +000000531 000974798 000979293 default 065264870 +000000532 000009287 000090773 default 095013821 +000000532 000161430 000169314 default 030859473 +000000532 000191927 000205927 default 008905065 +000000532 000275312 000223817 default 011362123 +000000532 000446133 000341200 default 097544445 +000000532 000641621 000420336 default 029449471 +000000532 000705122 000437355 default 003690212 +000000532 000819491 000563563 default 042845137 +000000532 000858775 000854974 default 070420632 +000000532 000871300 000900315 default 069027381 +000000533 000044988 000021458 default 096147151 +000000533 000103823 000076566 default 056131439 +000000533 000110117 000182151 default 035512076 +000000533 000313085 000193416 default 002128668 +000000533 000351442 000312377 default 091617000 +000000533 000436668 000355962 default 093467720 +000000533 000632195 000489430 default 025292905 +000000533 000667456 000676128 default 085242039 +000000533 000957184 000737331 default 029389306 +000000533 000995248 000972889 default 079176434 +000000534 000136407 000009513 default 053920974 +000000534 000210985 000156583 default 098749238 +000000534 000237736 000206518 default 046751704 +000000534 000378683 000273247 default 083371334 +000000534 000409135 000305366 default 093634625 +000000534 000443362 000636486 default 010543082 +000000534 000532810 000663577 default 008326112 +000000534 000596925 000749711 default 042686667 +000000534 000973090 000751006 default 098925886 +000000534 000991439 000860101 default 097775030 +000000535 000162169 000033240 default 052827173 +000000535 000172454 000056679 default 095994560 +000000535 000240252 000134378 default 032231359 +000000535 000303770 000313466 default 051499767 +000000535 000395996 000421406 default 049490521 +000000535 000414950 000505609 default 025125904 +000000535 000455351 000788092 default 070383981 +000000535 000650640 000828403 default 063397406 +000000535 000692912 000906497 default 070978309 +000000535 000778431 000909993 default 076042664 +000000536 000072851 000195541 default 005254539 +000000536 000133970 000317869 default 021729125 +000000536 000201379 000335370 default 030183347 +000000536 000301622 000504248 default 059193833 +000000536 000302601 000558615 default 063781261 +000000536 000535566 000664076 default 003351958 +000000536 000749244 000766669 default 093460969 +000000536 000816713 000801232 default 023387698 +000000536 000950356 000813683 default 053047794 +000000536 000997190 000955670 default 088850233 +000000537 000091058 000006340 default 095583522 +000000537 000126059 000150808 default 025864134 +000000537 000305165 000246796 default 018774206 +000000537 000532801 000428474 default 072153111 +000000537 000666904 000464703 default 051882587 +000000537 000784103 000515705 default 065320712 +000000537 000877320 000611528 default 057642052 +000000537 000909360 000616461 default 048693613 +000000537 000962989 000776774 default 010464111 +000000537 000985191 000936465 default 065065059 +000000538 000092884 000017795 default 073182309 +000000538 000514222 000130569 default 075912932 +000000538 000616321 000177335 default 060730477 +000000538 000688888 000183199 default 060994966 +000000538 000784318 000388716 default 004920613 +000000538 000786587 000763238 default 026841831 +000000538 000802534 000818076 default 087413580 +000000538 000862884 000850915 default 030126867 +000000538 000922581 000873660 default 015545786 +000000538 000970044 000918577 default 050828344 +000000539 000016310 000010621 default 098875752 +000000539 000181096 000130625 default 097127476 +000000539 000261921 000158282 default 043583354 +000000539 000446696 000250078 default 011397910 +000000539 000513180 000364046 default 010082410 +000000539 000652719 000367331 default 069092172 +000000539 000723558 000424388 default 095342881 +000000539 000788706 000446737 default 056553049 +000000539 000832653 000637408 default 025755904 +000000539 000900131 000741695 default 035245720 +000000540 000059880 000042561 default 017511853 +000000540 000073599 000193735 default 098540031 +000000540 000117024 000259691 default 037543380 +000000540 000265506 000306210 default 082212002 +000000540 000287326 000391163 default 041094751 +000000540 000356652 000456972 default 004129362 +000000540 000583676 000475368 default 024828140 +000000540 000705363 000593167 default 062099664 +000000540 000715403 000760617 default 014571870 +000000540 000918963 000781547 default 011086199 +000000541 000137152 000024763 default 015256379 +000000541 000180280 000330506 default 097296260 +000000541 000273232 000414066 default 016276443 +000000541 000505530 000634201 default 009608887 +000000541 000601473 000667332 default 053988538 +000000541 000623187 000716309 default 059554868 +000000541 000743096 000770341 default 074390577 +000000541 000799753 000887939 default 073051560 +000000541 000927477 000935248 default 007582786 +000000541 000928352 000968705 default 013179464 +000000542 000009894 000039653 default 048027169 +000000542 000088835 000093752 default 073474749 +000000542 000158228 000095385 default 042756499 +000000542 000329495 000192454 default 059026121 +000000542 000405425 000503817 default 054806988 +000000542 000420618 000663919 default 087092027 +000000542 000487037 000673630 default 044620961 +000000542 000709317 000792364 default 019341655 +000000542 000764809 000877560 default 098210401 +000000542 000972918 000966382 default 025805852 +000000543 000115844 000026960 default 037131989 +000000543 000190701 000055316 default 052267639 +000000543 000269135 000255111 default 094071019 +000000543 000302504 000345183 default 046292857 +000000543 000351789 000522266 default 015251485 +000000543 000431326 000533725 default 037686575 +000000543 000454144 000598957 default 093784320 +000000543 000924874 000686842 default 042152760 +000000543 000934518 000697640 default 008820585 +000000543 000981123 000891170 default 079079786 +000000544 000194774 000010685 default 074802385 +000000544 000360633 000144956 default 070408943 +000000544 000427832 000178344 default 021134221 +000000544 000458792 000264195 default 058934002 +000000544 000543782 000403652 default 033443773 +000000544 000625459 000538777 default 010773739 +000000544 000735328 000566079 default 052192711 +000000544 000807597 000623432 default 055214512 +000000544 000866219 000664243 default 069428763 +000000544 000920283 000667534 default 013324266 +000000545 000093020 000217940 default 075303529 +000000545 000178849 000246304 default 045248286 +000000545 000266543 000293807 default 084724130 +000000545 000268781 000326701 default 092457914 +000000545 000399020 000326704 default 046259079 +000000545 000463803 000393709 default 047498934 +000000545 000489477 000578870 default 082329053 +000000545 000575832 000686299 default 042305892 +000000545 000776489 000689801 default 098701271 +000000545 000999132 000748990 default 036905300 +000000546 000098383 000004002 default 053109028 +000000546 000104275 000055272 default 054263513 +000000546 000115384 000191806 default 065845350 +000000546 000178802 000267158 default 089873160 +000000546 000392806 000389331 default 090658775 +000000546 000578949 000433651 default 039415104 +000000546 000579302 000474109 default 094738309 +000000546 000636294 000637037 default 035057273 +000000546 000658657 000745032 default 087486496 +000000546 000972734 000845334 default 092454836 +000000547 000050024 000165304 default 032062480 +000000547 000088429 000182037 default 015075783 +000000547 000264942 000227966 default 065616378 +000000547 000434920 000330369 default 079182627 +000000547 000457722 000625126 default 086651028 +000000547 000469711 000666401 default 030225651 +000000547 000824937 000670334 default 003710781 +000000547 000854249 000781745 default 044910326 +000000547 000919183 000789485 default 082524522 +000000547 000967733 000869585 default 031635871 +000000548 000015796 000075276 default 061620080 +000000548 000022377 000122689 default 011807348 +000000548 000326130 000130163 default 096948672 +000000548 000396102 000379395 default 035491860 +000000548 000424230 000686143 default 004717490 +000000548 000505619 000725457 default 023225839 +000000548 000674350 000727195 default 089637683 +000000548 000903850 000831111 default 038585164 +000000548 000924308 000854910 default 068954422 +000000548 000959633 000988554 default 061467737 +000000549 000039919 000111519 default 076399556 +000000549 000217400 000113387 default 055799931 +000000549 000270340 000122938 default 061617400 +000000549 000690573 000245680 default 019328874 +000000549 000789684 000419655 default 072169108 +000000549 000803034 000466231 default 031722374 +000000549 000843898 000471764 default 024189036 +000000549 000935522 000929217 default 079768516 +000000549 000942224 000959215 default 088180556 +000000549 000979074 000968068 default 065944093 +000000550 000099387 000032973 default 001933542 +000000550 000148843 000259037 default 019804985 +000000550 000354041 000384436 default 087771449 +000000550 000431772 000510942 default 034052268 +000000550 000557942 000553804 default 066091094 +000000550 000625518 000589043 default 032002991 +000000550 000881027 000678249 default 056821890 +000000550 000897868 000768943 default 019527684 +000000550 000907044 000815402 default 040949933 +000000550 000950381 000852551 default 067176584 +000000551 000060774 000151449 default 088998146 +000000551 000471020 000205774 default 016585505 +000000551 000594826 000256675 default 091162087 +000000551 000597698 000274040 default 044087478 +000000551 000675174 000321018 default 079805651 +000000551 000710448 000422907 default 036310182 +000000551 000723835 000547494 default 035084803 +000000551 000765716 000819179 default 095636373 +000000551 000848042 000969182 default 022118589 +000000551 000872089 000986004 default 021903089 +000000552 000115039 000025652 default 010061617 +000000552 000148778 000102294 default 080964682 +000000552 000254709 000224390 default 092762570 +000000552 000399257 000453715 default 083616489 +000000552 000463817 000494896 default 093467467 +000000552 000477963 000547403 default 003975133 +000000552 000799857 000723120 default 020094263 +000000552 000825266 000828843 default 002666006 +000000552 000825962 000907477 default 044222007 +000000552 000922092 000933275 default 052652443 +000000553 000050252 000229521 default 066435594 +000000553 000089219 000294166 default 018516879 +000000553 000169191 000435995 default 041822925 +000000553 000207641 000568424 default 043747028 +000000553 000264222 000588679 default 096405702 +000000553 000303982 000659077 default 081473372 +000000553 000466525 000683631 default 078256118 +000000553 000792567 000809178 default 047257604 +000000553 000811473 000845537 default 076732715 +000000553 000969709 000960060 default 096141782 +000000554 000099439 000100397 default 053961860 +000000554 000105159 000176299 default 086904427 +000000554 000112294 000204431 default 035345419 +000000554 000231365 000258388 default 017451984 +000000554 000279909 000450323 default 039359483 +000000554 000296538 000481034 default 099476773 +000000554 000733132 000497425 default 012431407 +000000554 000799674 000697960 default 064456617 +000000554 000905619 000738220 default 029588723 +000000554 000928918 000843732 default 078944623 +000000555 000020250 000017243 default 071799381 +000000555 000195371 000231803 default 083883649 +000000555 000256352 000469451 default 079846666 +000000555 000390589 000530693 default 064837207 +000000555 000445355 000627782 default 014562721 +000000555 000545608 000663104 default 069436164 +000000555 000842411 000665395 default 079921757 +000000555 000864081 000699180 default 046959142 +000000555 000866109 000849550 default 059432334 +000000555 000970812 000897129 default 069709165 +000000556 000029114 000006775 default 099603654 +000000556 000067071 000241078 default 062630559 +000000556 000114762 000306188 default 098650833 +000000556 000272165 000368486 default 054054992 +000000556 000383298 000400379 default 059294306 +000000556 000408624 000425955 default 037849017 +000000556 000528048 000432547 default 073810364 +000000556 000538918 000588591 default 079407593 +000000556 000603973 000634980 default 016348158 +000000556 000612857 000722239 default 094208787 +000000557 000114633 000170776 default 083859851 +000000557 000146133 000174004 default 046160907 +000000557 000221680 000205001 default 077025763 +000000557 000344553 000339732 default 062019000 +000000557 000379489 000506873 default 007568856 +000000557 000419150 000691597 default 014760132 +000000557 000463740 000696666 default 075387442 +000000557 000697497 000906156 default 054394772 +000000557 000751969 000939292 default 067549397 +000000557 000994783 000971696 default 015765880 +000000558 000001029 000107736 default 059776350 +000000558 000111382 000206126 default 044542276 +000000558 000307131 000294821 default 095249132 +000000558 000406215 000374479 default 044459639 +000000558 000583873 000498155 default 030755607 +000000558 000635564 000567020 default 041645807 +000000558 000692117 000623283 default 003093439 +000000558 000740754 000684363 default 015077036 +000000558 000743846 000768833 default 044326615 +000000558 000907860 000877673 default 067761933 +000000559 000082724 000020147 default 024880814 +000000559 000290453 000070829 default 025133656 +000000559 000331252 000390961 default 079377822 +000000559 000557104 000424710 default 063852327 +000000559 000582239 000459710 default 019049057 +000000559 000675805 000619800 default 003054549 +000000559 000740790 000874069 default 046655553 +000000559 000848033 000895280 default 028581117 +000000559 000889852 000954330 default 087116661 +000000559 000951992 000998008 default 038789590 +000000560 000031648 000023417 default 080462259 +000000560 000094603 000190495 default 061647468 +000000560 000125733 000361630 default 090277424 +000000560 000212217 000477294 default 070199008 +000000560 000221930 000548355 default 075378303 +000000560 000338585 000571897 default 084503566 +000000560 000666836 000658361 default 073181187 +000000560 000667662 000660867 default 095124738 +000000560 000876055 000897291 default 054191230 +000000560 000958595 000997847 default 061789190 +000000561 000070141 000008401 default 016262793 +000000561 000410790 000126329 default 049862553 +000000561 000528412 000184335 default 000747718 +000000561 000557357 000242617 default 010371479 +000000561 000633682 000319244 default 078290680 +000000561 000647556 000358145 default 092099515 +000000561 000649282 000621408 default 075165715 +000000561 000709290 000801276 default 089107812 +000000561 000872497 000860966 default 012144216 +000000561 000959332 000973497 default 097196965 +000000562 000017750 000075181 default 055454592 +000000562 000136536 000139974 default 024496963 +000000562 000334449 000185779 default 055349374 +000000562 000497354 000218456 default 059734242 +000000562 000747301 000265107 default 094182911 +000000562 000801009 000267962 default 085979545 +000000562 000828997 000332495 default 056174040 +000000562 000843601 000368471 default 008430698 +000000562 000944692 000552986 default 046176650 +000000562 000981767 000846056 default 011169682 +000000563 000009231 000055906 default 078017620 +000000563 000056116 000268251 default 032154399 +000000563 000065975 000308182 default 022541674 +000000563 000102891 000328149 default 086936376 +000000563 000441716 000477577 default 067542713 +000000563 000628963 000503460 default 000488104 +000000563 000675988 000550489 default 013427803 +000000563 000791233 000564547 default 052027435 +000000563 000822272 000630136 default 071869932 +000000563 000917574 000947658 default 092207030 +000000564 000074321 000018478 default 021367669 +000000564 000075644 000424408 default 000203082 +000000564 000081791 000458009 default 048271426 +000000564 000083744 000502744 default 023781870 +000000564 000240426 000545987 default 096016147 +000000564 000415974 000658651 default 058568561 +000000564 000463487 000791199 default 061481079 +000000564 000596738 000811401 default 051874773 +000000564 000955312 000875405 default 027382715 +000000564 000987495 000996105 default 021721909 +000000565 000086490 000049648 default 084723347 +000000565 000086558 000115973 default 048551863 +000000565 000339088 000188780 default 052118296 +000000565 000407782 000323201 default 032288563 +000000565 000567348 000583042 default 041426295 +000000565 000571457 000599432 default 089158139 +000000565 000675638 000637273 default 093977960 +000000565 000685593 000662675 default 054822998 +000000565 000871254 000760282 default 086904262 +000000565 000923497 000922474 default 013664361 +000000566 000013611 000030543 default 091770671 +000000566 000119141 000063617 default 095235995 +000000566 000269705 000227198 default 002220940 +000000566 000290916 000246221 default 052724443 +000000566 000389121 000287957 default 083332381 +000000566 000466102 000313014 default 069731128 +000000566 000568204 000410712 default 088134874 +000000566 000672032 000488269 default 054142966 +000000566 000913596 000627938 default 014476766 +000000566 000939640 000915273 default 084154666 +000000567 000257474 000132936 default 052531888 +000000567 000260182 000385880 default 036688254 +000000567 000388125 000429849 default 022166993 +000000567 000438739 000510099 default 059867148 +000000567 000478613 000711712 default 074045440 +000000567 000536658 000755712 default 029302132 +000000567 000671828 000786691 default 047840283 +000000567 000759105 000868160 default 066579004 +000000567 000907449 000951524 default 056312738 +000000567 000977021 000986137 default 051504213 +000000568 000000423 000215796 default 085367135 +000000568 000169378 000310814 default 049957796 +000000568 000316981 000333807 default 048036443 +000000568 000331416 000394460 default 081366420 +000000568 000674371 000576554 default 011108481 +000000568 000684753 000582059 default 028043987 +000000568 000753883 000760374 default 089972306 +000000568 000835555 000934801 default 083770952 +000000568 000854655 000949627 default 091780968 +000000568 000949442 000963918 default 020212953 +000000569 000082064 000180526 default 060335952 +000000569 000176502 000267345 default 058603659 +000000569 000291007 000340732 default 087772634 +000000569 000314111 000419493 default 086612099 +000000569 000391446 000458524 default 036332907 +000000569 000516679 000464710 default 091654116 +000000569 000651326 000482064 default 029333445 +000000569 000744174 000516016 default 007611780 +000000569 000759831 000541867 default 082697712 +000000569 000930505 000967615 default 091357278 +000000570 000027000 000059468 default 021107820 +000000570 000126265 000149445 default 002219109 +000000570 000165945 000196489 default 047625689 +000000570 000300564 000341675 default 075527391 +000000570 000335691 000595909 default 049719620 +000000570 000405521 000664080 default 059018564 +000000570 000668603 000766860 default 002868682 +000000570 000686112 000833211 default 086366282 +000000570 000713153 000924674 default 021168052 +000000570 000843219 000947646 default 022101531 +000000571 000067326 000016207 default 093781882 +000000571 000334816 000177316 default 034261585 +000000571 000447258 000180428 default 053481668 +000000571 000598354 000219353 default 025364610 +000000571 000679814 000397501 default 090810895 +000000571 000700610 000481318 default 019710802 +000000571 000782691 000667484 default 055879484 +000000571 000839186 000759990 default 016294043 +000000571 000906064 000866811 default 075310537 +000000571 000938590 000928116 default 053127176 +000000572 000088074 000020470 default 014874868 +000000572 000245511 000172924 default 047107345 +000000572 000315156 000299455 default 054695699 +000000572 000531569 000415341 default 094971047 +000000572 000628501 000523091 default 008397343 +000000572 000723335 000685445 default 052271386 +000000572 000731150 000773247 default 041678105 +000000572 000753948 000811641 default 015711203 +000000572 000794262 000941560 default 018421019 +000000572 000862084 000962025 default 093294645 +000000573 000112577 000093174 default 062991390 +000000573 000147360 000097611 default 074437363 +000000573 000428093 000159657 default 099995567 +000000573 000539444 000200406 default 034660824 +000000573 000577250 000231201 default 033346675 +000000573 000603913 000525982 default 044795366 +000000573 000642269 000544985 default 030418613 +000000573 000819283 000697132 default 075869758 +000000573 000887934 000717108 default 038498338 +000000573 000977076 000908902 default 020892869 +000000574 000213769 000083201 default 037844503 +000000574 000298592 000099450 default 067444785 +000000574 000356858 000278618 default 051567104 +000000574 000486125 000516519 default 018055918 +000000574 000589521 000741084 default 013630779 +000000574 000762661 000772955 default 047557845 +000000574 000822137 000779034 default 018275442 +000000574 000860042 000801198 default 075473559 +000000574 000903959 000841345 default 087450704 +000000574 000908614 000984780 default 005703481 +000000575 000058900 000037603 default 032647747 +000000575 000129108 000057153 default 058279167 +000000575 000154015 000135583 default 079078830 +000000575 000167976 000143305 default 065947258 +000000575 000290775 000157554 default 011949165 +000000575 000328666 000169684 default 070104002 +000000575 000339023 000199564 default 039116091 +000000575 000486645 000534106 default 025224606 +000000575 000490162 000797649 default 002750796 +000000575 000947841 000814472 default 016423446 +000000576 000023998 000043540 default 057582257 +000000576 000032819 000052223 default 017999078 +000000576 000233248 000275506 default 014312734 +000000576 000255332 000365275 default 028990937 +000000576 000328629 000394774 default 037608149 +000000576 000424221 000589272 default 046969979 +000000576 000569209 000590346 default 062090024 +000000576 000631863 000687919 default 035131054 +000000576 000880065 000766934 default 027696348 +000000576 000995706 000819302 default 053499273 +000000577 000007982 000149501 default 049381633 +000000577 000100677 000298831 default 070502072 +000000577 000117967 000333088 default 071749070 +000000577 000185136 000386008 default 086915931 +000000577 000205038 000492906 default 001060747 +000000577 000609355 000523886 default 043367499 +000000577 000742418 000664356 default 034035393 +000000577 000782371 000785940 default 032471624 +000000577 000823390 000854731 default 059582997 +000000577 000930820 000937546 default 046336744 +000000578 000041856 000229621 default 051583359 +000000578 000078754 000280144 default 085409839 +000000578 000079696 000411383 default 056371081 +000000578 000308137 000454645 default 050897423 +000000578 000703748 000481371 default 050485293 +000000578 000770415 000570973 default 091803701 +000000578 000842895 000709425 default 049844655 +000000578 000846785 000724918 default 049451916 +000000578 000915431 000901773 default 016240030 +000000578 000967686 000922960 default 039117107 +000000579 000163393 000101203 default 094217337 +000000579 000332121 000166748 default 007231602 +000000579 000397609 000486541 default 063931534 +000000579 000416891 000518113 default 009002773 +000000579 000449181 000554923 default 044781823 +000000579 000463053 000614668 default 033813665 +000000579 000591176 000876076 default 048176621 +000000579 000610047 000891289 default 033266592 +000000579 000865997 000914661 default 094521542 +000000579 000954379 000982746 default 093100621 +000000580 000051756 000162050 default 037581815 +000000580 000136320 000306344 default 015538296 +000000580 000160032 000320893 default 077624481 +000000580 000178915 000423799 default 076394357 +000000580 000268488 000482647 default 056179435 +000000580 000375583 000558429 default 019247620 +000000580 000436961 000610551 default 086835412 +000000580 000757051 000733020 default 070820420 +000000580 000827540 000782080 default 041968065 +000000580 000954208 000869211 default 054567638 +000000581 000016303 000004895 default 075461302 +000000581 000103975 000074011 default 094868676 +000000581 000163978 000087642 default 025060159 +000000581 000247528 000409142 default 042036054 +000000581 000316118 000457910 default 060932450 +000000581 000364375 000531852 default 049475009 +000000581 000541032 000610003 default 056160898 +000000581 000637292 000715274 default 058783680 +000000581 000638516 000863627 default 065093780 +000000581 000749522 000983241 default 098026297 +000000582 000017200 000102047 default 090184274 +000000582 000290915 000122932 default 015840921 +000000582 000310352 000124828 default 013973719 +000000582 000332233 000138021 default 035250378 +000000582 000482573 000151955 default 000937228 +000000582 000506265 000181862 default 098850904 +000000582 000718854 000425696 default 002082753 +000000582 000817694 000463539 default 021559104 +000000582 000832613 000538995 default 079593737 +000000582 000833512 000985525 default 095227822 +000000583 000028266 000063993 default 092188821 +000000583 000095967 000065383 default 040175728 +000000583 000209023 000082360 default 054581228 +000000583 000224818 000443583 default 067244845 +000000583 000234928 000465784 default 024038688 +000000583 000611986 000563938 default 011971520 +000000583 000801349 000620253 default 096180926 +000000583 000851586 000644264 default 030550798 +000000583 000910225 000785928 default 018071727 +000000583 000916927 000831226 default 097607693 +000000584 000027142 000053245 default 084387044 +000000584 000139630 000071430 default 076714722 +000000584 000144058 000144028 default 062776494 +000000584 000347764 000196091 default 061445178 +000000584 000417429 000258962 default 084110090 +000000584 000508195 000259085 default 063300287 +000000584 000611182 000405813 default 023174196 +000000584 000678208 000570673 default 030314537 +000000584 000795171 000725413 default 097598912 +000000584 000969229 000766678 default 027239812 +000000585 000172555 000013451 default 033406626 +000000585 000280281 000172755 default 060647847 +000000585 000300813 000188657 default 014363789 +000000585 000340428 000328291 default 018857825 +000000585 000389826 000366539 default 031703696 +000000585 000398082 000507610 default 070508687 +000000585 000512972 000549861 default 092516405 +000000585 000566246 000583765 default 027488869 +000000585 000879120 000762521 default 024216856 +000000585 000895713 000777179 default 003307133 +000000586 000111796 000032847 default 014013497 +000000586 000115850 000044952 default 021075985 +000000586 000162771 000066645 default 069497236 +000000586 000183894 000185089 default 071773645 +000000586 000252346 000442563 default 037974705 +000000586 000588180 000675201 default 084091594 +000000586 000708882 000688275 default 084674246 +000000586 000857310 000696020 default 042106020 +000000586 000892576 000819440 default 017122135 +000000586 000948674 000990296 default 095614136 +000000587 000007299 000163979 default 037821267 +000000587 000045097 000227696 default 050562147 +000000587 000158113 000263961 default 027869037 +000000587 000174151 000346968 default 023191097 +000000587 000319432 000354911 default 034271482 +000000587 000499412 000460259 default 032567062 +000000587 000506059 000546391 default 079409485 +000000587 000709729 000613450 default 082287519 +000000587 000722036 000891856 default 017411033 +000000587 000846774 000946749 default 031549330 +000000588 000003625 000019281 default 091298849 +000000588 000086357 000123913 default 079463989 +000000588 000163212 000196784 default 048985349 +000000588 000269710 000304928 default 034245003 +000000588 000404577 000348398 default 090505772 +000000588 000530047 000464102 default 016445738 +000000588 000558764 000489608 default 057586724 +000000588 000663592 000608350 default 084690792 +000000588 000838965 000767233 default 065960014 +000000588 000931480 000893741 default 059757167 +000000589 000047565 000094899 default 021685551 +000000589 000115940 000158549 default 097516849 +000000589 000272310 000356757 default 005008271 +000000589 000351499 000582191 default 016114242 +000000589 000694848 000693880 default 042621611 +000000589 000779922 000785135 default 054518809 +000000589 000858205 000885189 default 061428585 +000000589 000859556 000894338 default 088269840 +000000589 000872659 000957562 default 024873010 +000000589 000954941 000996108 default 004423367 +000000590 000054671 000078646 default 009850543 +000000590 000107079 000079450 default 004979975 +000000590 000203115 000093643 default 082607977 +000000590 000273482 000191579 default 082641230 +000000590 000520759 000210014 default 015025665 +000000590 000532153 000408999 default 060626010 +000000590 000562146 000470640 default 018923640 +000000590 000671735 000473254 default 021167986 +000000590 000732045 000688543 default 041201753 +000000590 000783703 000722665 default 024865098 +000000591 000125638 000014850 default 092406733 +000000591 000133265 000132871 default 067892399 +000000591 000218810 000159141 default 075752615 +000000591 000305193 000172963 default 032301148 +000000591 000413869 000705457 default 054009125 +000000591 000621860 000739564 default 069355165 +000000591 000758231 000786034 default 066601337 +000000591 000790308 000847306 default 014048188 +000000591 000851572 000976274 default 088702853 +000000591 000880631 000984631 default 058486134 +000000592 000073665 000246411 default 057668266 +000000592 000120340 000503851 default 042686932 +000000592 000211891 000533904 default 001718434 +000000592 000212787 000546252 default 024595896 +000000592 000268677 000554596 default 037368525 +000000592 000381797 000623052 default 052877960 +000000592 000420749 000743316 default 051049602 +000000592 000608175 000848070 default 054039221 +000000592 000658324 000996564 default 022504351 +000000592 000988196 000997966 default 052641158 +000000593 000315742 000019509 default 088462929 +000000593 000322968 000023762 default 099407187 +000000593 000529899 000037864 default 048805438 +000000593 000560696 000116835 default 051505670 +000000593 000681520 000226350 default 079482167 +000000593 000721469 000443739 default 073286014 +000000593 000742693 000705392 default 077890317 +000000593 000775248 000739590 default 054553880 +000000593 000828225 000876513 default 074200134 +000000593 000915242 000988241 default 067718305 +000000594 000049900 000025121 default 035126817 +000000594 000140642 000135389 default 055339013 +000000594 000255468 000257211 default 003440379 +000000594 000361944 000494021 default 001256617 +000000594 000765627 000626720 default 098868452 +000000594 000827508 000728848 default 078484146 +000000594 000846774 000729119 default 031990564 +000000594 000858236 000788055 default 042134955 +000000594 000929291 000956487 default 051832909 +000000594 000933767 000987264 default 006394621 +000000595 000012139 000255370 default 035301532 +000000595 000073300 000307954 default 029988847 +000000595 000140633 000448711 default 032240460 +000000595 000276716 000545604 default 093773598 +000000595 000527314 000674166 default 055279810 +000000595 000551590 000762293 default 098192255 +000000595 000606145 000829713 default 019037513 +000000595 000756551 000854018 default 089642485 +000000595 000778791 000920970 default 054949126 +000000595 000795186 000974380 default 088390669 +000000596 000048981 000163515 default 054286321 +000000596 000141685 000312515 default 095937519 +000000596 000258515 000359027 default 049174231 +000000596 000277394 000459534 default 038303656 +000000596 000563300 000559042 default 089093483 +000000596 000673908 000655389 default 071923572 +000000596 000714983 000816974 default 005301959 +000000596 000816986 000866690 default 041315891 +000000596 000927969 000906341 default 079550154 +000000596 000952989 000932732 default 087729378 +000000597 000200361 000050588 default 092153144 +000000597 000253702 000173656 default 019087416 +000000597 000401498 000181617 default 010213686 +000000597 000603045 000194968 default 054317514 +000000597 000694219 000355975 default 079411699 +000000597 000732979 000401520 default 078759662 +000000597 000773577 000428096 default 029639492 +000000597 000813025 000799456 default 001156821 +000000597 000891495 000828277 default 073699193 +000000597 000967309 000988181 default 069811435 +000000598 000078796 000005899 default 007963041 +000000598 000211541 000109013 default 028284233 +000000598 000254946 000356665 default 042249605 +000000598 000295026 000360156 default 030296320 +000000598 000427994 000466545 default 030128261 +000000598 000449586 000543578 default 087409869 +000000598 000621188 000572011 default 050347060 +000000598 000635412 000679774 default 067273003 +000000598 000667908 000935271 default 059196785 +000000598 000860260 000988105 default 088329896 +000000599 000189173 000012885 default 077332556 +000000599 000233532 000090909 default 034706830 +000000599 000255358 000098878 default 098375201 +000000599 000261139 000164355 default 056939403 +000000599 000318945 000194146 default 062632998 +000000599 000346058 000272772 default 020789003 +000000599 000621711 000348302 default 049315750 +000000599 000670442 000623241 default 036139766 +000000599 000929421 000806525 default 032841793 +000000599 000985383 000831675 default 097196309 +000000600 000097850 000153122 default 067035143 +000000600 000105396 000316369 default 053361704 +000000600 000155438 000362538 default 016747758 +000000600 000177438 000377212 default 058800694 +000000600 000214205 000477663 default 098360610 +000000600 000349992 000556313 default 077432306 +000000600 000384459 000613230 default 099112593 +000000600 000522964 000858706 default 034146859 +000000600 000919207 000944933 default 019041067 +000000600 000998037 000967974 default 007699773 +000000601 000443512 000185698 default 061571819 +000000601 000534123 000205183 default 081212477 +000000601 000538572 000249333 default 010814240 +000000601 000650686 000354640 default 080697111 +000000601 000671325 000516939 default 098192645 +000000601 000686789 000586380 default 038493592 +000000601 000780544 000622956 default 075342130 +000000601 000886484 000649152 default 095497608 +000000601 000937206 000720426 default 051972745 +000000601 000968528 000941993 default 070850734 +000000602 000194475 000094016 default 050089942 +000000602 000243543 000115179 default 085236737 +000000602 000282633 000176903 default 014609111 +000000602 000353542 000321191 default 071141302 +000000602 000374387 000510663 default 005199061 +000000602 000480754 000756310 default 003916177 +000000602 000635201 000765743 default 096320897 +000000602 000770708 000790202 default 039488547 +000000602 000885617 000796358 default 027214742 +000000602 000971441 000956061 default 092803210 +000000603 000092037 000081192 default 009092396 +000000603 000221412 000384157 default 089069153 +000000603 000266628 000395972 default 028344976 +000000603 000330766 000731532 default 027379931 +000000603 000346936 000735213 default 082979995 +000000603 000358401 000788425 default 052358129 +000000603 000419097 000818655 default 017164494 +000000603 000435744 000844377 default 031655802 +000000603 000484091 000849002 default 089896229 +000000603 000620405 000852913 default 041709663 +000000604 000136796 000065982 default 039147294 +000000604 000158474 000181276 default 016009696 +000000604 000326723 000220859 default 038469854 +000000604 000490274 000305954 default 035797969 +000000604 000577164 000374454 default 019004462 +000000604 000614270 000616539 default 021352668 +000000604 000623376 000667830 default 040277305 +000000604 000668775 000725067 default 060580467 +000000604 000818056 000828891 default 042752874 +000000604 000879758 000913893 default 029984325 +000000605 000019278 000000857 default 037736517 +000000605 000065618 000024497 default 063565233 +000000605 000076700 000109247 default 070847034 +000000605 000191339 000305495 default 055242683 +000000605 000320460 000305935 default 071649213 +000000605 000373830 000651421 default 004971393 +000000605 000461970 000750455 default 020197952 +000000605 000803649 000832983 default 006020929 +000000605 000900100 000846736 default 088124209 +000000605 000977571 000865474 default 079407497 +000000606 000016374 000053825 default 046674573 +000000606 000032685 000317849 default 074218603 +000000606 000110823 000409508 default 022540165 +000000606 000150944 000580920 default 041412812 +000000606 000300451 000699868 default 087220843 +000000606 000538024 000915668 default 045371724 +000000606 000750103 000926477 default 024961794 +000000606 000765723 000966342 default 068994389 +000000606 000976630 000983424 default 065975995 +000000606 000982420 000989295 default 077463236 +000000607 000052778 000046219 default 081184868 +000000607 000058102 000294718 default 078986846 +000000607 000200722 000612602 default 067866411 +000000607 000243859 000700110 default 086563233 +000000607 000519727 000707179 default 025437569 +000000607 000520370 000768493 default 001036250 +000000607 000621371 000776624 default 019650029 +000000607 000733795 000839459 default 068126939 +000000607 000785729 000941749 default 088461704 +000000607 000945325 000952671 default 011953651 +000000608 000015784 000102741 default 090175862 +000000608 000031297 000260673 default 042599802 +000000608 000034565 000477000 default 065389243 +000000608 000172431 000503793 default 036285370 +000000608 000237152 000623938 default 078069176 +000000608 000399788 000658724 default 075578679 +000000608 000526030 000777592 default 081597192 +000000608 000618287 000875366 default 015703504 +000000608 000814510 000979615 default 071193145 +000000608 000906570 000984840 default 012644220 +000000609 000045127 000113858 default 087334296 +000000609 000134337 000135071 default 009405493 +000000609 000270540 000206766 default 098473588 +000000609 000424498 000314938 default 037375122 +000000609 000450196 000324561 default 017971875 +000000609 000582555 000327109 default 051652408 +000000609 000816420 000641691 default 005436271 +000000609 000863545 000772771 default 021286303 +000000609 000918162 000822258 default 012560877 +000000609 000964834 000932561 default 050569120 +000000610 000215161 000030437 default 045772866 +000000610 000250098 000046762 default 060334001 +000000610 000271484 000101463 default 055820845 +000000610 000441090 000322543 default 093065811 +000000610 000477407 000589006 default 008624384 +000000610 000488229 000616321 default 071314444 +000000610 000545968 000700263 default 080659357 +000000610 000552250 000724331 default 031535617 +000000610 000715657 000780924 default 073272615 +000000610 000815742 000981320 default 046810155 +000000611 000072167 000066202 default 079804447 +000000611 000082154 000192284 default 088247365 +000000611 000092689 000240330 default 043074460 +000000611 000135423 000249290 default 035978281 +000000611 000252610 000275296 default 041239599 +000000611 000455851 000455228 default 038170811 +000000611 000700601 000551372 default 041391889 +000000611 000837847 000641097 default 054707104 +000000611 000890619 000724606 default 066197667 +000000611 000995447 000823549 default 096176750 +000000612 000019362 000186652 default 026868831 +000000612 000052932 000358303 default 059602450 +000000612 000456244 000406697 default 050945665 +000000612 000516496 000651558 default 048245203 +000000612 000645778 000667051 default 091523785 +000000612 000706282 000712511 default 011593417 +000000612 000864240 000829106 default 086568362 +000000612 000906433 000919313 default 015835852 +000000612 000991729 000929069 default 075859583 +000000612 000997278 000997370 default 021553563 +000000613 000001672 000035012 default 067038220 +000000613 000072036 000058387 default 091105349 +000000613 000116205 000204239 default 013256170 +000000613 000139961 000286083 default 047304773 +000000613 000233769 000295977 default 041067448 +000000613 000259089 000508849 default 068682143 +000000613 000292160 000641719 default 009456492 +000000613 000507600 000708502 default 023468498 +000000613 000614945 000775449 default 082306538 +000000613 000702353 000831801 default 040349837 +000000614 000296948 000087330 default 072924332 +000000614 000380133 000247508 default 010355148 +000000614 000412935 000398434 default 096418398 +000000614 000444606 000445104 default 071296664 +000000614 000539592 000457163 default 059530808 +000000614 000619997 000522783 default 006632530 +000000614 000783955 000597134 default 048520628 +000000614 000792675 000625450 default 021626479 +000000614 000864467 000647311 default 059783272 +000000614 000875981 000948976 default 016964508 +000000615 000015013 000156067 default 089890217 +000000615 000065424 000350199 default 034551985 +000000615 000185176 000413399 default 078836913 +000000615 000189133 000430244 default 050753810 +000000615 000345331 000481930 default 091025029 +000000615 000537254 000600383 default 012789751 +000000615 000615094 000637093 default 023689427 +000000615 000638420 000659014 default 024310428 +000000615 000658447 000674115 default 023737280 +000000615 000897142 000902269 default 034876073 +000000616 000395150 000051384 default 036074011 +000000616 000436028 000062292 default 044442798 +000000616 000593432 000075056 default 000853115 +000000616 000642594 000075861 default 007170620 +000000616 000783723 000103325 default 001759763 +000000616 000783891 000195734 default 002532135 +000000616 000802560 000415955 default 081212323 +000000616 000897671 000801651 default 034740315 +000000616 000935600 000827099 default 032179852 +000000616 000953041 000914712 default 055590938 +000000617 000063986 000082285 default 037326238 +000000617 000160213 000284770 default 069889645 +000000617 000355274 000393992 default 044312793 +000000617 000399899 000535182 default 032431704 +000000617 000625446 000587213 default 065240331 +000000617 000660569 000705982 default 086224136 +000000617 000688249 000728564 default 060951974 +000000617 000868174 000884493 default 053457899 +000000617 000910068 000905115 default 076625856 +000000617 000956615 000954449 default 086141237 +000000618 000148643 000264028 default 037310845 +000000618 000413029 000357253 default 008201418 +000000618 000430475 000384943 default 019632732 +000000618 000430850 000504893 default 096612159 +000000618 000468103 000755657 default 022246332 +000000618 000585438 000757694 default 005110103 +000000618 000726518 000763078 default 030648776 +000000618 000780989 000809348 default 066942477 +000000618 000827863 000842946 default 005244629 +000000618 000967459 000853055 default 085078758 +000000619 000133481 000178675 default 063501422 +000000619 000154295 000211547 default 088846279 +000000619 000159074 000281022 default 057450300 +000000619 000245801 000360471 default 085447172 +000000619 000257667 000415290 default 050134450 +000000619 000323245 000448015 default 071282548 +000000619 000332032 000719348 default 070793786 +000000619 000405086 000857257 default 016444179 +000000619 000523189 000958943 default 075627469 +000000619 000621181 000991675 default 050030879 +000000620 000128346 000150261 default 058042410 +000000620 000242511 000299892 default 044979768 +000000620 000421343 000412586 default 041616059 +000000620 000516712 000594120 default 053425035 +000000620 000537393 000781685 default 081535248 +000000620 000786114 000829803 default 083149456 +000000620 000818964 000866463 default 082386566 +000000620 000861212 000871215 default 031149506 +000000620 000928512 000874360 default 075702644 +000000620 000987251 000966016 default 079398974 +000000621 000025628 000020474 default 037640030 +000000621 000060258 000024080 default 057407146 +000000621 000101738 000073208 default 008447825 +000000621 000117865 000258144 default 094458610 +000000621 000333998 000401709 default 094338959 +000000621 000465460 000519619 default 065170767 +000000621 000593812 000527737 default 069043189 +000000621 000696215 000906140 default 018420095 +000000621 000724034 000976268 default 055100361 +000000621 000801357 000981107 default 080236625 +000000622 000239284 000261069 default 024150020 +000000622 000265047 000322744 default 087653389 +000000622 000420460 000350512 default 083483269 +000000622 000448520 000424621 default 060973435 +000000622 000559621 000523297 default 031340298 +000000622 000647719 000661909 default 021115764 +000000622 000700812 000682287 default 099713963 +000000622 000715229 000687933 default 021775237 +000000622 000758104 000732332 default 059323200 +000000622 000859792 000817487 default 048032160 +000000623 000089736 000265307 default 015739657 +000000623 000161831 000373830 default 087391048 +000000623 000202635 000390272 default 063016017 +000000623 000317798 000604243 default 029430109 +000000623 000319587 000735141 default 000144740 +000000623 000328150 000762046 default 049147631 +000000623 000330054 000809934 default 021641592 +000000623 000861062 000907550 default 090168087 +000000623 000914128 000929052 default 032756875 +000000623 000954778 000960035 default 072133085 +000000624 000196930 000188399 default 030894817 +000000624 000315424 000358499 default 075171969 +000000624 000351439 000476415 default 083823114 +000000624 000380938 000504990 default 049805724 +000000624 000568241 000541707 default 057193374 +000000624 000588050 000609772 default 011742427 +000000624 000627544 000805416 default 063848523 +000000624 000769386 000859227 default 082697243 +000000624 000925130 000881233 default 087136214 +000000624 000981734 000917700 default 058585310 +000000625 000144439 000162779 default 056203107 +000000625 000225494 000175882 default 029248611 +000000625 000400278 000183967 default 040046710 +000000625 000408058 000257229 default 057665882 +000000625 000517599 000478271 default 005339495 +000000625 000541837 000510769 default 040678892 +000000625 000615469 000513542 default 039915336 +000000625 000704112 000608791 default 042049419 +000000625 000916788 000653116 default 048021761 +000000625 000972711 000853461 default 037731251 +000000626 000206162 000033058 default 098195826 +000000626 000304495 000223113 default 087284127 +000000626 000411068 000240990 default 027788614 +000000626 000509044 000275728 default 030473405 +000000626 000591904 000368321 default 079789244 +000000626 000652224 000398650 default 071471819 +000000626 000725981 000599613 default 076160639 +000000626 000735490 000600340 default 047950914 +000000626 000865112 000810559 default 023485214 +000000626 000973255 000970075 default 090777715 +000000627 000060421 000228835 default 024546577 +000000627 000081892 000266845 default 022705770 +000000627 000313943 000305958 default 042790174 +000000627 000349070 000403734 default 079439071 +000000627 000353582 000442627 default 084842729 +000000627 000466038 000451178 default 019883579 +000000627 000551762 000727503 default 076383409 +000000627 000585184 000729131 default 034123145 +000000627 000823265 000729961 default 042435592 +000000627 000928387 000961930 default 035830363 +000000628 000003132 000065055 default 007374336 +000000628 000108524 000175318 default 063024115 +000000628 000203842 000345899 default 015529509 +000000628 000222572 000356792 default 076565885 +000000628 000323029 000381692 default 022481798 +000000628 000412560 000566457 default 024345457 +000000628 000414591 000787843 default 002722017 +000000628 000492709 000791271 default 091711054 +000000628 000559055 000929692 default 093712990 +000000628 000891292 000954558 default 056479698 +000000629 000129026 000003426 default 078262878 +000000629 000211387 000100777 default 073102232 +000000629 000328719 000172205 default 081144291 +000000629 000474063 000242522 default 086260189 +000000629 000484751 000343379 default 093013883 +000000629 000545796 000380091 default 000960128 +000000629 000554451 000429664 default 041905549 +000000629 000764983 000513677 default 086105773 +000000629 000812754 000811247 default 054599177 +000000629 000968443 000880198 default 053238797 +000000630 000105250 000066966 default 065012653 +000000630 000153957 000202776 default 096236469 +000000630 000271532 000232862 default 030639713 +000000630 000331240 000545288 default 069976659 +000000630 000459321 000576981 default 028466150 +000000630 000531731 000585394 default 096266314 +000000630 000682799 000616445 default 014821118 +000000630 000697957 000695787 default 037945148 +000000630 000748788 000729978 default 098288040 +000000630 000969016 000997119 default 046476840 +000000631 000083305 000352270 default 018476879 +000000631 000089750 000392424 default 047845518 +000000631 000146670 000555664 default 042068386 +000000631 000152640 000605268 default 073350992 +000000631 000298273 000606202 default 025214214 +000000631 000301567 000617466 default 058856135 +000000631 000306879 000636722 default 030531018 +000000631 000517143 000745469 default 071445406 +000000631 000650275 000768787 default 049232990 +000000631 000974044 000901793 default 057940459 +000000632 000039022 000081701 default 045055095 +000000632 000156295 000142512 default 063083338 +000000632 000177400 000278678 default 029284700 +000000632 000219081 000284366 default 024405969 +000000632 000232328 000330674 default 032395235 +000000632 000630745 000419114 default 018134193 +000000632 000668199 000472264 default 028198217 +000000632 000697540 000482638 default 061154393 +000000632 000865858 000770412 default 092633726 +000000632 000992513 000861466 default 099697500 +000000633 000032003 000087965 default 051763228 +000000633 000088702 000144165 default 079820104 +000000633 000119101 000148014 default 075992972 +000000633 000186377 000188581 default 037363342 +000000633 000451518 000189699 default 095317868 +000000633 000502724 000267047 default 060467033 +000000633 000552692 000477311 default 016298242 +000000633 000567103 000726499 default 073964656 +000000633 000572103 000769900 default 007129843 +000000633 000967533 000788780 default 017136060 +000000634 000053123 000207161 default 081612323 +000000634 000079953 000228492 default 001104336 +000000634 000087395 000440745 default 056186182 +000000634 000463001 000450556 default 080550705 +000000634 000541942 000509535 default 046484700 +000000634 000553325 000538907 default 054287729 +000000634 000819369 000712670 default 067563779 +000000634 000956796 000756762 default 000666199 +000000634 000963173 000856213 default 091113896 +000000634 000989521 000910213 default 015489962 +000000635 000152874 000228176 default 013536587 +000000635 000261069 000256966 default 030622448 +000000635 000420182 000393716 default 095739427 +000000635 000427968 000459490 default 073178246 +000000635 000535958 000473114 default 055133147 +000000635 000713834 000491653 default 021725446 +000000635 000765918 000504834 default 008067479 +000000635 000841666 000538627 default 087943860 +000000635 000952933 000682138 default 077896168 +000000635 000973684 000847402 default 056150751 +000000636 000056601 000001372 default 080455624 +000000636 000360434 000159131 default 002741434 +000000636 000375353 000257720 default 096191515 +000000636 000411415 000303137 default 088078843 +000000636 000437881 000369453 default 085717994 +000000636 000531856 000425663 default 051717488 +000000636 000734731 000487253 default 055844177 +000000636 000766252 000545033 default 021653262 +000000636 000769662 000641294 default 015098839 +000000636 000944242 000731957 default 072338909 +000000637 000070134 000010762 default 015681892 +000000637 000239480 000053043 default 054291865 +000000637 000250167 000133122 default 046668619 +000000637 000429996 000241684 default 065171250 +000000637 000476465 000344837 default 098363879 +000000637 000565613 000417868 default 070261505 +000000637 000609355 000703258 default 048448089 +000000637 000743383 000818141 default 070758616 +000000637 000758769 000819749 default 012965873 +000000637 000968222 000923682 default 012112613 +000000638 000043416 000003999 default 057830242 +000000638 000246245 000029715 default 039317127 +000000638 000248804 000058309 default 042212076 +000000638 000364680 000136430 default 073992877 +000000638 000571354 000549964 default 058423586 +000000638 000620905 000553696 default 068063067 +000000638 000633471 000594194 default 017818171 +000000638 000660053 000703224 default 073620438 +000000638 000816002 000858838 default 023067578 +000000638 000947808 000983631 default 059446952 +000000639 000072299 000027471 default 034689186 +000000639 000149381 000082924 default 005597130 +000000639 000165295 000181870 default 027016758 +000000639 000541585 000333267 default 039411537 +000000639 000557730 000409461 default 009665547 +000000639 000586409 000503869 default 085940759 +000000639 000807373 000844845 default 087259190 +000000639 000841622 000847651 default 082542603 +000000639 000888968 000938084 default 020304340 +000000639 000987069 000957844 default 040379274 +000000640 000044317 000208191 default 048210491 +000000640 000254439 000264372 default 056065682 +000000640 000288015 000285980 default 054477432 +000000640 000312258 000342497 default 073649516 +000000640 000423220 000427148 default 075530931 +000000640 000503280 000457376 default 099250233 +000000640 000614971 000553500 default 040525285 +000000640 000712723 000806246 default 013511566 +000000640 000907180 000969414 default 034209071 +000000640 000952419 000979522 default 036151632 +000000641 000053727 000301365 default 007107677 +000000641 000126602 000349319 default 058148463 +000000641 000213636 000420231 default 006699986 +000000641 000346629 000468606 default 029623647 +000000641 000416284 000489159 default 060159106 +000000641 000546328 000625876 default 089373133 +000000641 000580080 000807568 default 060607236 +000000641 000618730 000847595 default 077204157 +000000641 000795358 000904532 default 063239653 +000000641 000924439 000942029 default 051749748 +000000642 000141588 000043902 default 072328530 +000000642 000307810 000114908 default 020054787 +000000642 000563934 000272027 default 070274620 +000000642 000578331 000292499 default 091644784 +000000642 000659033 000353600 default 048762200 +000000642 000675589 000594819 default 051724586 +000000642 000858634 000730222 default 002972075 +000000642 000974024 000852636 default 090865960 +000000642 000974360 000931860 default 095585550 +000000642 000984123 000987932 default 079311356 +000000643 000003610 000101722 default 036750377 +000000643 000033800 000147854 default 001197806 +000000643 000039701 000164095 default 089114431 +000000643 000181153 000229280 default 043639883 +000000643 000473536 000286187 default 084956415 +000000643 000520184 000429413 default 088153540 +000000643 000530687 000508220 default 066019543 +000000643 000695242 000552807 default 077675538 +000000643 000738338 000626890 default 024172174 +000000643 000897978 000942521 default 028930642 +000000644 000084918 000020479 default 004019869 +000000644 000219881 000079232 default 028882581 +000000644 000545062 000184477 default 005180515 +000000644 000564886 000239089 default 090114152 +000000644 000566197 000505308 default 022071622 +000000644 000567825 000542296 default 002319626 +000000644 000754832 000544740 default 090036725 +000000644 000818662 000555965 default 097581417 +000000644 000830576 000670411 default 095143532 +000000644 000866617 000930285 default 011520480 +000000645 000087233 000000695 default 049883227 +000000645 000221211 000043211 default 039084520 +000000645 000243497 000316248 default 098698838 +000000645 000264368 000349011 default 082289122 +000000645 000407404 000451861 default 033241555 +000000645 000441017 000472015 default 019458951 +000000645 000546456 000646957 default 048534836 +000000645 000584878 000647109 default 049485369 +000000645 000621107 000707316 default 003858878 +000000645 000918616 000901790 default 072884468 +000000646 000013165 000060981 default 029090124 +000000646 000067310 000182566 default 046542584 +000000646 000075840 000345500 default 005156981 +000000646 000147203 000392617 default 037964048 +000000646 000339432 000443246 default 010079824 +000000646 000396862 000500702 default 074308030 +000000646 000462364 000742630 default 020855812 +000000646 000596858 000781658 default 093610872 +000000646 000823572 000812874 default 093059949 +000000646 000899446 000956442 default 006915634 +000000647 000132340 000100362 default 049339790 +000000647 000155414 000138612 default 095322404 +000000647 000187414 000278353 default 052977240 +000000647 000471873 000291070 default 028118598 +000000647 000479178 000372139 default 084648019 +000000647 000496306 000671896 default 019107338 +000000647 000509938 000676523 default 071167427 +000000647 000551335 000713886 default 028078884 +000000647 000671060 000908992 default 048910246 +000000647 000904956 000951262 default 094558742 +000000648 000021658 000033960 default 013573730 +000000648 000128253 000251929 default 080466094 +000000648 000189515 000283267 default 020125546 +000000648 000437575 000302733 default 022665603 +000000648 000490967 000581424 default 043890674 +000000648 000538301 000636997 default 006431563 +000000648 000600962 000697433 default 094843072 +000000648 000605096 000771774 default 049523299 +000000648 000737593 000782167 default 027925914 +000000648 000955606 000896070 default 077612815 +000000649 000001626 000002296 default 056786949 +000000649 000228142 000006619 default 052489078 +000000649 000272470 000109623 default 066138932 +000000649 000399028 000392284 default 058943997 +000000649 000468884 000481667 default 024180626 +000000649 000496328 000550478 default 074771395 +000000649 000772315 000571861 default 071996094 +000000649 000826313 000635252 default 081463870 +000000649 000924171 000765188 default 028581972 +000000649 000990429 000826525 default 049330970 +000000650 000223829 000012354 default 047942195 +000000650 000363294 000110292 default 068965763 +000000650 000412618 000361346 default 063461050 +000000650 000433379 000371087 default 084956467 +000000650 000484213 000495957 default 016173235 +000000650 000643778 000544325 default 051405662 +000000650 000671893 000560565 default 025257674 +000000650 000714206 000575280 default 059866216 +000000650 000827350 000621307 default 074251484 +000000650 000995595 000712372 default 002163468 +000000651 000242795 000296571 default 034054157 +000000651 000255172 000580661 default 056189288 +000000651 000305056 000634699 default 042804125 +000000651 000514621 000665794 default 038524419 +000000651 000583368 000753358 default 091571143 +000000651 000807020 000761029 default 061689278 +000000651 000848192 000872857 default 058260248 +000000651 000874052 000975976 default 009519445 +000000651 000973666 000992678 default 088165168 +000000651 000977629 000997686 default 051260218 +000000652 000049907 000111851 default 041945215 +000000652 000146089 000138636 default 069216800 +000000652 000192066 000150289 default 009973981 +000000652 000199434 000258056 default 042726174 +000000652 000644206 000281573 default 095695400 +000000652 000799432 000414303 default 083485806 +000000652 000917392 000629140 default 083726156 +000000652 000973461 000669569 default 023879831 +000000652 000976748 000784501 default 090232981 +000000652 000987925 000973241 default 076019431 +000000653 000003265 000019148 default 043300903 +000000653 000064965 000100123 default 091563758 +000000653 000255124 000160603 default 084926952 +000000653 000269004 000533675 default 048613155 +000000653 000404512 000568136 default 064484017 +000000653 000453366 000759454 default 030021476 +000000653 000478113 000883694 default 096000799 +000000653 000588686 000925930 default 023288545 +000000653 000706138 000927790 default 074738178 +000000653 000827505 000948699 default 054570400 +000000654 000011457 000150882 default 051581032 +000000654 000343361 000168588 default 055319934 +000000654 000401386 000214340 default 005826849 +000000654 000449553 000359010 default 019895339 +000000654 000585344 000432680 default 069861151 +000000654 000716129 000631596 default 084648508 +000000654 000753841 000661563 default 008626296 +000000654 000849687 000743813 default 075297904 +000000654 000899398 000941378 default 008414421 +000000654 000930863 000946973 default 086928006 +000000655 000124450 000257067 default 042280422 +000000655 000199261 000410313 default 060548783 +000000655 000334306 000483703 default 006007435 +000000655 000408695 000489056 default 017835984 +000000655 000418420 000601633 default 012267661 +000000655 000460852 000691540 default 043527368 +000000655 000508157 000701918 default 046606265 +000000655 000572775 000817699 default 067620751 +000000655 000921668 000884314 default 098358011 +000000655 000987433 000934944 default 048523212 +000000656 000222743 000028811 default 074575059 +000000656 000268120 000094018 default 029473066 +000000656 000370507 000322819 default 004706915 +000000656 000463267 000336140 default 084623335 +000000656 000509765 000475443 default 057242007 +000000656 000846167 000483700 default 024019302 +000000656 000848910 000727726 default 049819925 +000000656 000854238 000792824 default 003993488 +000000656 000875239 000813882 default 004729854 +000000656 000916856 000918340 default 017680606 +000000657 000010576 000062410 default 037988091 +000000657 000120023 000074828 default 050148723 +000000657 000175173 000143103 default 023839347 +000000657 000191910 000169295 default 091626163 +000000657 000387619 000174400 default 073451492 +000000657 000771398 000302866 default 084924107 +000000657 000849835 000379937 default 030090511 +000000657 000864309 000651147 default 005360001 +000000657 000923895 000937841 default 049905289 +000000657 000956788 000964415 default 003785900 +000000658 000387047 000169203 default 056739665 +000000658 000413089 000248670 default 087033335 +000000658 000417685 000282058 default 086779104 +000000658 000608759 000651332 default 049675081 +000000658 000652585 000669211 default 083475983 +000000658 000706737 000767520 default 065602834 +000000658 000709471 000800970 default 071720990 +000000658 000859890 000816432 default 059151111 +000000658 000947395 000888407 default 012567361 +000000658 000981417 000952293 default 026661160 +000000659 000013909 000005694 default 090866764 +000000659 000089990 000040373 default 049716945 +000000659 000118608 000060897 default 073488798 +000000659 000272398 000143628 default 048187402 +000000659 000276611 000290456 default 041782597 +000000659 000367292 000301575 default 026150091 +000000659 000744400 000431026 default 056194200 +000000659 000757351 000542787 default 068816353 +000000659 000896345 000626549 default 005799648 +000000659 000914298 000724165 default 006771341 +000000660 000019934 000060493 default 007148398 +000000660 000044573 000061317 default 075322421 +000000660 000281086 000106506 default 075057408 +000000660 000547783 000209640 default 050171941 +000000660 000651171 000382094 default 097334206 +000000660 000852113 000384901 default 028185961 +000000660 000867619 000456517 default 052787045 +000000660 000905054 000682354 default 077985613 +000000660 000914663 000767398 default 003306322 +000000660 000990002 000920088 default 028437086 +000000661 000021983 000016378 default 016675097 +000000661 000042146 000023308 default 046824681 +000000661 000390453 000151069 default 093042686 +000000661 000518972 000279391 default 085493176 +000000661 000531634 000554139 default 076297373 +000000661 000684585 000616090 default 052372470 +000000661 000809273 000662867 default 020478223 +000000661 000902867 000695830 default 095275802 +000000661 000965671 000796237 default 005959726 +000000661 000967068 000821335 default 015618219 +000000662 000013130 000355166 default 023842208 +000000662 000105614 000428206 default 071979990 +000000662 000295455 000644325 default 034836819 +000000662 000454598 000805407 default 037511296 +000000662 000520015 000845577 default 090244468 +000000662 000542892 000912056 default 049385323 +000000662 000702639 000912215 default 039759216 +000000662 000845164 000917932 default 076978617 +000000662 000900505 000968492 default 059105718 +000000662 000930142 000970457 default 043302227 +000000663 000048061 000024974 default 031195349 +000000663 000097079 000041321 default 019335739 +000000663 000180128 000099088 default 010034732 +000000663 000324444 000576067 default 040061868 +000000663 000516451 000714105 default 059813267 +000000663 000779429 000716507 default 042552807 +000000663 000899565 000783447 default 019862160 +000000663 000919847 000783488 default 095144782 +000000663 000974252 000877881 default 073866683 +000000663 000990524 000906621 default 056893160 +000000664 000040019 000037103 default 018390285 +000000664 000134212 000058984 default 032586750 +000000664 000223982 000095465 default 039032733 +000000664 000332083 000129323 default 014090892 +000000664 000422787 000141213 default 016726918 +000000664 000579138 000155320 default 074883166 +000000664 000602069 000171107 default 010125339 +000000664 000642896 000363725 default 035280530 +000000664 000690521 000539333 default 053530371 +000000664 000770218 000565492 default 047884051 +000000665 000038769 000148218 default 055137234 +000000665 000039784 000218946 default 017718803 +000000665 000060237 000266121 default 067747552 +000000665 000106045 000394149 default 082712926 +000000665 000233892 000433628 default 004456208 +000000665 000368482 000440099 default 039712073 +000000665 000668335 000480414 default 041271311 +000000665 000739906 000520270 default 039292947 +000000665 000846307 000718375 default 008601687 +000000665 000958581 000872414 default 070225185 +000000666 000102218 000098962 default 070871388 +000000666 000124077 000188170 default 081971718 +000000666 000194857 000294981 default 063019759 +000000666 000282503 000417677 default 081234496 +000000666 000315463 000441535 default 055150505 +000000666 000628367 000744710 default 029200307 +000000666 000745185 000830239 default 088174372 +000000666 000879589 000859002 default 022191553 +000000666 000921625 000864842 default 044398880 +000000666 000979114 000873875 default 019796160 +000000667 000115602 000141372 default 036063056 +000000667 000163404 000146977 default 061465174 +000000667 000215686 000268973 default 037277679 +000000667 000226156 000286473 default 077822618 +000000667 000250412 000570748 default 071078602 +000000667 000294242 000733524 default 049865853 +000000667 000444897 000810908 default 015252454 +000000667 000447673 000956442 default 011773393 +000000667 000452920 000976572 default 096634753 +000000667 000958080 000998511 default 055064278 +000000668 000008664 000018891 default 040919394 +000000668 000083361 000246299 default 058823750 +000000668 000145140 000252704 default 079638242 +000000668 000191875 000268554 default 044160857 +000000668 000547377 000363172 default 001570339 +000000668 000575931 000478651 default 061616998 +000000668 000653371 000635160 default 004221835 +000000668 000671232 000638189 default 058422544 +000000668 000728512 000676179 default 019109507 +000000668 000942095 000800421 default 066737995 +000000669 000152663 000161078 default 009029764 +000000669 000347253 000174132 default 094100990 +000000669 000396664 000471949 default 082999315 +000000669 000434660 000752051 default 082848314 +000000669 000535857 000808886 default 079660427 +000000669 000614637 000821285 default 073050356 +000000669 000738167 000844556 default 040825555 +000000669 000917923 000934633 default 021034541 +000000669 000954561 000946920 default 064004737 +000000669 000967688 000963436 default 067441134 +000000670 000323651 000141278 default 067763647 +000000670 000402105 000266208 default 082501980 +000000670 000428022 000362424 default 026118502 +000000670 000445524 000460014 default 091359630 +000000670 000467773 000485196 default 061725411 +000000670 000702506 000488488 default 027047305 +000000670 000764910 000496250 default 068155625 +000000670 000835129 000496564 default 065643258 +000000670 000882444 000586362 default 025113998 +000000670 000980098 000608306 default 049212369 +000000671 000026834 000066958 default 073784072 +000000671 000092585 000086922 default 053205204 +000000671 000161218 000268811 default 038192465 +000000671 000275712 000361790 default 090723984 +000000671 000444116 000405029 default 075962447 +000000671 000659670 000463653 default 063479770 +000000671 000670108 000732105 default 016556863 +000000671 000681399 000750941 default 096023512 +000000671 000849206 000819764 default 049678719 +000000671 000924359 000900388 default 016824412 +000000672 000144046 000108946 default 052384029 +000000672 000319627 000195589 default 046840113 +000000672 000435145 000238687 default 014395762 +000000672 000476998 000262425 default 047531810 +000000672 000519815 000324835 default 096833359 +000000672 000618069 000444895 default 000515616 +000000672 000836919 000772606 default 046091054 +000000672 000852736 000790224 default 094369178 +000000672 000927665 000843675 default 090872010 +000000672 000961568 000865286 default 009892286 +000000673 000012083 000055037 default 052114600 +000000673 000133038 000073635 default 074138369 +000000673 000345888 000173929 default 054918323 +000000673 000491005 000401342 default 089061126 +000000673 000565396 000419680 default 085460008 +000000673 000732226 000453289 default 028651797 +000000673 000885931 000681723 default 070905540 +000000673 000949040 000772539 default 006485685 +000000673 000954630 000854240 default 043383332 +000000673 000958829 000945818 default 038042429 +000000674 000017651 000049669 default 049880238 +000000674 000165227 000328631 default 042326210 +000000674 000234076 000644481 default 086649948 +000000674 000314959 000660966 default 004712658 +000000674 000560484 000674034 default 007657654 +000000674 000589714 000771841 default 084811144 +000000674 000616464 000836279 default 009209929 +000000674 000647983 000884636 default 040022275 +000000674 000689434 000953863 default 059164119 +000000674 000843311 000961057 default 015011236 +000000675 000094985 000148097 default 064942332 +000000675 000127911 000406680 default 068618411 +000000675 000181555 000415249 default 012664449 +000000675 000218155 000488789 default 005558015 +000000675 000260255 000503416 default 005984168 +000000675 000363790 000610383 default 096419177 +000000675 000496925 000659888 default 005462303 +000000675 000527730 000811145 default 066331890 +000000675 000629699 000929098 default 027855852 +000000675 000806360 000969815 default 099128479 +000000676 000149078 000071083 default 093011741 +000000676 000199701 000098156 default 020667795 +000000676 000239068 000107660 default 095582431 +000000676 000435085 000133544 default 020992865 +000000676 000439706 000338265 default 098980992 +000000676 000460973 000687301 default 076267648 +000000676 000669998 000751592 default 022901305 +000000676 000672572 000813063 default 087661817 +000000676 000822587 000947212 default 032796157 +000000676 000850173 000995029 default 037883992 +000000677 000219115 000072102 default 009606902 +000000677 000229291 000236605 default 091141013 +000000677 000348593 000295361 default 043035880 +000000677 000353680 000379617 default 084672293 +000000677 000394055 000396241 default 065266823 +000000677 000543171 000455941 default 092851099 +000000677 000689248 000694726 default 014654638 +000000677 000700659 000824788 default 078945831 +000000677 000733370 000847729 default 014878721 +000000677 000965769 000939102 default 048371398 +000000678 000135002 000182813 default 054735893 +000000678 000208799 000234609 default 072288286 +000000678 000257636 000338666 default 092684610 +000000678 000373423 000383405 default 046512492 +000000678 000380770 000593071 default 008663801 +000000678 000556520 000625948 default 087117318 +000000678 000572990 000654395 default 021983594 +000000678 000727918 000771165 default 059533445 +000000678 000737064 000921307 default 053376681 +000000678 000866593 000982102 default 066896796 +000000679 000208373 000032237 default 060140697 +000000679 000458101 000049239 default 014554896 +000000679 000581497 000055888 default 090058636 +000000679 000640123 000180753 default 034495463 +000000679 000640359 000238494 default 075059234 +000000679 000705998 000267153 default 073115219 +000000679 000898423 000517231 default 087136282 +000000679 000945529 000615870 default 099222832 +000000679 000959137 000833438 default 096289797 +000000679 000959982 000843189 default 051437116 +000000680 000017871 000125340 default 077771880 +000000680 000057629 000192026 default 080468099 +000000680 000200637 000230267 default 054544065 +000000680 000358614 000368443 default 036210656 +000000680 000375100 000408969 default 078984825 +000000680 000503644 000443636 default 077911833 +000000680 000620732 000467367 default 076449321 +000000680 000661430 000560185 default 070018629 +000000680 000752237 000698801 default 066521740 +000000680 000909373 000788307 default 055669765 +000000681 000054273 000032408 default 024751446 +000000681 000257633 000235881 default 094711216 +000000681 000501689 000384912 default 008407668 +000000681 000538714 000406872 default 068010790 +000000681 000574602 000476210 default 063113614 +000000681 000624250 000605536 default 020872153 +000000681 000830398 000687269 default 043842400 +000000681 000889335 000776178 default 021652410 +000000681 000897756 000828641 default 030714196 +000000681 000899201 000879988 default 006750276 +000000682 000044809 000150242 default 009773592 +000000682 000202815 000204861 default 001793001 +000000682 000303422 000230855 default 035358421 +000000682 000311527 000334692 default 023692683 +000000682 000349633 000362730 default 067674976 +000000682 000368355 000481171 default 030606169 +000000682 000412735 000513741 default 055854090 +000000682 000716031 000532663 default 084874310 +000000682 000732440 000799523 default 034581626 +000000682 000938798 000835447 default 000451411 +000000683 000023449 000187534 default 079943602 +000000683 000078601 000318400 default 034103822 +000000683 000274738 000410281 default 003563392 +000000683 000303831 000515492 default 015363083 +000000683 000426625 000527767 default 032775815 +000000683 000564321 000570516 default 016981468 +000000683 000619831 000592501 default 097925299 +000000683 000621208 000626005 default 041769856 +000000683 000729203 000819232 default 081561428 +000000683 000911621 000884565 default 066549656 +000000684 000160723 000033724 default 014016751 +000000684 000514994 000133117 default 096926618 +000000684 000536243 000215508 default 018669481 +000000684 000734329 000346427 default 042435723 +000000684 000755599 000422747 default 034917754 +000000684 000758922 000428704 default 011726053 +000000684 000769627 000538732 default 053318928 +000000684 000845835 000747420 default 074274086 +000000684 000926228 000911635 default 074151277 +000000684 000974576 000960085 default 013812830 +000000685 000037801 000089663 default 086709499 +000000685 000088807 000241423 default 015541572 +000000685 000149058 000304072 default 007823465 +000000685 000236410 000354362 default 092067497 +000000685 000354923 000383100 default 025950179 +000000685 000367670 000447310 default 060784528 +000000685 000474688 000498768 default 076639608 +000000685 000482794 000679421 default 055245508 +000000685 000511072 000796073 default 041877137 +000000685 000738274 000897690 default 054053212 +000000686 000040411 000006970 default 011320005 +000000686 000134795 000238887 default 054373407 +000000686 000184042 000270320 default 026457460 +000000686 000326434 000325437 default 087212940 +000000686 000391703 000364593 default 019991000 +000000686 000518981 000526565 default 092767847 +000000686 000550451 000664013 default 059275354 +000000686 000877320 000689042 default 024039310 +000000686 000914187 000783551 default 035655265 +000000686 000950893 000877001 default 092313380 +000000687 000182180 000080643 default 011165658 +000000687 000260820 000176557 default 039872292 +000000687 000296765 000198314 default 050606859 +000000687 000317596 000258094 default 034774190 +000000687 000574145 000300676 default 027263949 +000000687 000664064 000314166 default 095295283 +000000687 000732514 000443570 default 052268587 +000000687 000741939 000842955 default 043346769 +000000687 000878731 000856716 default 094873740 +000000687 000972207 000923396 default 016846443 +000000688 000057977 000041394 default 046353162 +000000688 000259196 000213890 default 015876541 +000000688 000305164 000367549 default 062347029 +000000688 000424475 000420524 default 026183940 +000000688 000552622 000449788 default 001276915 +000000688 000738098 000542893 default 000298375 +000000688 000836344 000589176 default 041865694 +000000688 000837233 000665918 default 076056012 +000000688 000883993 000757796 default 003444465 +000000688 000912807 000862541 default 037673443 +000000689 000182331 000060693 default 095810534 +000000689 000203734 000139914 default 014575426 +000000689 000332965 000185128 default 058212488 +000000689 000480754 000245247 default 087694578 +000000689 000754532 000303184 default 028260429 +000000689 000774728 000425456 default 068988839 +000000689 000811597 000699397 default 000807728 +000000689 000817241 000856457 default 069401159 +000000689 000823671 000874058 default 095040964 +000000689 000972154 000991678 default 015806735 +000000690 000114382 000115391 default 091112052 +000000690 000237465 000135237 default 050448585 +000000690 000253477 000229349 default 029425243 +000000690 000302855 000257662 default 038971070 +000000690 000581406 000438338 default 035750218 +000000690 000584403 000491760 default 012823975 +000000690 000662004 000736779 default 041118996 +000000690 000802338 000792603 default 091424183 +000000690 000823468 000892952 default 097390562 +000000690 000998047 000923853 default 017849436 +000000691 000010977 000015163 default 066406021 +000000691 000122243 000150544 default 074800129 +000000691 000220878 000225604 default 009528759 +000000691 000266423 000239656 default 089208576 +000000691 000409361 000325977 default 055062623 +000000691 000624933 000647885 default 042648188 +000000691 000681975 000678444 default 003840704 +000000691 000823825 000761313 default 025894764 +000000691 000871547 000786505 default 044799108 +000000691 000880281 000927000 default 009926817 +000000692 000349417 000181492 default 044764286 +000000692 000373239 000255811 default 021655533 +000000692 000382704 000354779 default 014248399 +000000692 000453826 000364031 default 057871584 +000000692 000470025 000418295 default 049306413 +000000692 000569903 000472816 default 047392004 +000000692 000628300 000624698 default 072986236 +000000692 000831096 000691117 default 031986213 +000000692 000880912 000844582 default 067427595 +000000692 000888720 000854325 default 049587186 +000000693 000228977 000175263 default 037746842 +000000693 000360854 000241243 default 036185165 +000000693 000408542 000403085 default 087595203 +000000693 000420306 000517611 default 012104775 +000000693 000432326 000575909 default 023239170 +000000693 000435704 000616275 default 063988508 +000000693 000711041 000681498 default 007678416 +000000693 000792124 000788646 default 059222832 +000000693 000916071 000799902 default 057173051 +000000693 000917870 000956960 default 022277546 +000000694 000029625 000148507 default 099752563 +000000694 000099235 000205832 default 044893756 +000000694 000329109 000242391 default 076850230 +000000694 000418400 000274503 default 065304894 +000000694 000469994 000420447 default 087129923 +000000694 000510164 000505480 default 030466065 +000000694 000730890 000640524 default 074994674 +000000694 000736710 000731704 default 034881766 +000000694 000942705 000795572 default 029208873 +000000694 000970810 000869328 default 058055206 +000000695 000066410 000134035 default 037466802 +000000695 000086517 000200847 default 061832664 +000000695 000103901 000336971 default 092930357 +000000695 000149906 000593558 default 097669048 +000000695 000478624 000649916 default 029844952 +000000695 000534224 000735205 default 089713221 +000000695 000613882 000775061 default 046470468 +000000695 000680986 000782144 default 042355066 +000000695 000801577 000870257 default 038927875 +000000695 000956739 000933193 default 007855012 +000000696 000011243 000050482 default 021265900 +000000696 000385806 000157686 default 065831059 +000000696 000419220 000208058 default 096772058 +000000696 000649213 000272852 default 067268755 +000000696 000700193 000325883 default 046368018 +000000696 000757819 000348384 default 047127010 +000000696 000894333 000411917 default 097577814 +000000696 000953146 000552610 default 057678382 +000000696 000967346 000594685 default 096289911 +000000696 000977041 000887135 default 084103550 +000000697 000125493 000110401 default 077542548 +000000697 000322903 000334683 default 025128106 +000000697 000373858 000409684 default 052991112 +000000697 000375280 000442514 default 034265317 +000000697 000419746 000452906 default 039794771 +000000697 000424026 000555058 default 085587426 +000000697 000528271 000787275 default 020081091 +000000697 000664527 000839221 default 081982398 +000000697 000841482 000844673 default 009660504 +000000697 000916409 000983852 default 055456505 +000000698 000045629 000015858 default 073304630 +000000698 000093046 000189677 default 015437700 +000000698 000173254 000254296 default 073175382 +000000698 000211146 000261871 default 079305169 +000000698 000271209 000369241 default 092798246 +000000698 000437899 000596602 default 028316929 +000000698 000445020 000633042 default 074202917 +000000698 000451418 000823796 default 085249975 +000000698 000463724 000830148 default 069513847 +000000698 000720459 000886792 default 002305099 +000000699 000137521 000071712 default 092129002 +000000699 000270761 000341051 default 073908624 +000000699 000409135 000402075 default 006470229 +000000699 000527303 000451832 default 043224200 +000000699 000561386 000505397 default 078805623 +000000699 000665649 000695302 default 090495349 +000000699 000770814 000781400 default 086624087 +000000699 000847645 000824137 default 000208348 +000000699 000878713 000832964 default 070767532 +000000699 000959851 000843223 default 013769150 +000000700 000030330 000000652 default 086665666 +000000700 000124771 000037749 default 030341688 +000000700 000379290 000046145 default 075132461 +000000700 000459820 000275414 default 059196033 +000000700 000533949 000397014 default 012290694 +000000700 000785601 000419472 default 023849121 +000000700 000880056 000630323 default 059501370 +000000700 000906537 000645016 default 012023592 +000000700 000921908 000751201 default 044928141 +000000700 000950229 000994120 default 085758554 +000000701 000015877 000038993 default 003722371 +000000701 000218973 000308289 default 079326682 +000000701 000382722 000378515 default 003404648 +000000701 000407450 000487023 default 088993268 +000000701 000482641 000565685 default 077098925 +000000701 000555350 000650860 default 045767726 +000000701 000614202 000689266 default 007609481 +000000701 000658053 000813712 default 051133301 +000000701 000739997 000842278 default 066664606 +000000701 000925662 000943179 default 045518398 +000000702 000035074 000109381 default 085462926 +000000702 000143486 000166950 default 045474173 +000000702 000239976 000276640 default 020973599 +000000702 000451862 000457013 default 042355754 +000000702 000542075 000554159 default 008397517 +000000702 000807547 000643210 default 028971029 +000000702 000872196 000689980 default 075558381 +000000702 000876211 000734460 default 066047790 +000000702 000884751 000739983 default 013821611 +000000702 000955626 000949756 default 074039178 +000000703 000056623 000054096 default 000777949 +000000703 000164227 000084051 default 087047853 +000000703 000248370 000129469 default 030415275 +000000703 000269949 000139914 default 043665494 +000000703 000343801 000532491 default 081965213 +000000703 000461280 000625847 default 016647042 +000000703 000582969 000724070 default 014123106 +000000703 000933101 000796103 default 069901117 +000000703 000950433 000886790 default 037578230 +000000703 000977938 000954000 default 051203709 +000000704 000145856 000002304 default 049290137 +000000704 000474073 000053818 default 049712415 +000000704 000566068 000074262 default 037498691 +000000704 000587006 000113847 default 051753130 +000000704 000626833 000119138 default 070946348 +000000704 000693783 000244914 default 072119886 +000000704 000799115 000630053 default 050489748 +000000704 000815201 000678710 default 066505052 +000000704 000842554 000832455 default 058457418 +000000704 000945149 000886934 default 036352097 +000000705 000080968 000189686 default 058242031 +000000705 000341075 000209230 default 075356207 +000000705 000365493 000209594 default 067114605 +000000705 000450133 000336675 default 040240527 +000000705 000548766 000338012 default 093272387 +000000705 000562761 000355918 default 056816797 +000000705 000665377 000377875 default 023540348 +000000705 000684760 000720634 default 000604767 +000000705 000882203 000760169 default 030839111 +000000705 000997819 000903256 default 098733800 +000000706 000033504 000173468 default 014126832 +000000706 000128432 000292068 default 087806209 +000000706 000183877 000444845 default 094917665 +000000706 000200355 000476889 default 087208266 +000000706 000203879 000534558 default 065652177 +000000706 000412946 000537965 default 045596258 +000000706 000604574 000557761 default 068935115 +000000706 000903604 000564776 default 077615292 +000000706 000930783 000672356 default 012184327 +000000706 000962733 000776423 default 032295918 +000000707 000054921 000053579 default 046131398 +000000707 000098403 000146971 default 016289341 +000000707 000164082 000153721 default 073168897 +000000707 000179493 000166715 default 007900831 +000000707 000620557 000182480 default 033877705 +000000707 000637717 000193275 default 073276132 +000000707 000683830 000359950 default 057931853 +000000707 000743128 000529290 default 094815521 +000000707 000887456 000733608 default 078446799 +000000707 000962612 000763843 default 070981635 +000000708 000043010 000044194 default 056412137 +000000708 000074051 000240567 default 071864802 +000000708 000102893 000263185 default 072597243 +000000708 000148300 000337506 default 069996838 +000000708 000332416 000374071 default 043331552 +000000708 000501979 000451863 default 006022374 +000000708 000536985 000526123 default 078056078 +000000708 000579150 000555398 default 051996527 +000000708 000750174 000829507 default 073532363 +000000708 000921280 000865428 default 064892762 +000000709 000021879 000324330 default 064648850 +000000709 000194047 000371084 default 038507554 +000000709 000260255 000380318 default 042347101 +000000709 000271691 000464520 default 068252749 +000000709 000273095 000510839 default 052858217 +000000709 000300260 000561777 default 017916101 +000000709 000380556 000583784 default 049134148 +000000709 000475945 000648408 default 070514913 +000000709 000764072 000886316 default 061968307 +000000709 000853588 000987792 default 000157533 +000000710 000078586 000246464 default 074702518 +000000710 000160836 000389326 default 077027787 +000000710 000227639 000452494 default 007088107 +000000710 000231117 000542703 default 099809635 +000000710 000273877 000561306 default 065551988 +000000710 000620300 000646378 default 097081037 +000000710 000630370 000671557 default 056077598 +000000710 000727908 000690274 default 008831102 +000000710 000790458 000735057 default 063620889 +000000710 000974970 000834893 default 045140569 +000000711 000027064 000057402 default 021413384 +000000711 000324351 000081676 default 061336451 +000000711 000609849 000162370 default 089854510 +000000711 000637618 000241494 default 083361989 +000000711 000642166 000571668 default 001940261 +000000711 000649346 000573279 default 033215317 +000000711 000790456 000826321 default 051499608 +000000711 000881555 000871501 default 059398755 +000000711 000902405 000949110 default 044991417 +000000711 000950068 000964297 default 071726432 +000000712 000089544 000001847 default 033179970 +000000712 000097317 000064020 default 080526269 +000000712 000195288 000228911 default 085811486 +000000712 000422346 000348708 default 019933918 +000000712 000482834 000475076 default 038180813 +000000712 000614650 000649575 default 045460035 +000000712 000630893 000708151 default 062091779 +000000712 000859822 000819272 default 062187924 +000000712 000963985 000856676 default 020123365 +000000712 000979033 000971937 default 035378542 +000000713 000002764 000031525 default 088245724 +000000713 000159725 000087443 default 048527348 +000000713 000185565 000141325 default 076852534 +000000713 000371365 000219020 default 071739264 +000000713 000429054 000411654 default 087156190 +000000713 000514226 000433804 default 010960717 +000000713 000550652 000547347 default 063325595 +000000713 000686884 000709341 default 064168460 +000000713 000821052 000834814 default 018361909 +000000713 000986202 000839089 default 077035657 +000000714 000071055 000237924 default 051225747 +000000714 000211505 000247172 default 054938803 +000000714 000228951 000293368 default 040342242 +000000714 000246069 000435995 default 002476976 +000000714 000273842 000487221 default 048268574 +000000714 000295277 000558368 default 043380448 +000000714 000560880 000843763 default 004071537 +000000714 000681795 000905766 default 027904747 +000000714 000688136 000931778 default 079388968 +000000714 000862399 000973712 default 023582533 +000000715 000047693 000046007 default 010979574 +000000715 000108326 000126110 default 007130913 +000000715 000119601 000132061 default 064566798 +000000715 000193394 000234001 default 028963640 +000000715 000284957 000327818 default 053731377 +000000715 000330023 000579012 default 045831902 +000000715 000748537 000699860 default 093379070 +000000715 000905766 000773536 default 062850945 +000000715 000921478 000796281 default 078085807 +000000715 000927731 000971542 default 039964059 +000000716 000072581 000090364 default 068837436 +000000716 000098307 000182348 default 047989299 +000000716 000161722 000465247 default 060799933 +000000716 000324266 000500794 default 081399201 +000000716 000349124 000507180 default 028057067 +000000716 000669364 000554669 default 065028450 +000000716 000775551 000642436 default 059096802 +000000716 000799587 000809578 default 085446853 +000000716 000813263 000860485 default 091425423 +000000716 000973526 000894245 default 073916648 +000000717 000018108 000359985 default 051631097 +000000717 000018910 000589522 default 062224911 +000000717 000062936 000596950 default 047592192 +000000717 000104260 000657631 default 050571316 +000000717 000144558 000779055 default 025842291 +000000717 000161793 000853305 default 067045868 +000000717 000232573 000856422 default 059871238 +000000717 000400793 000866844 default 075207638 +000000717 000516417 000878939 default 004630098 +000000717 000879725 000988173 default 080806659 +000000718 000007669 000080585 default 014031748 +000000718 000391721 000514635 default 049380826 +000000718 000480452 000569655 default 031008130 +000000718 000558651 000581131 default 051879967 +000000718 000619744 000706702 default 013336318 +000000718 000817855 000748899 default 051937221 +000000718 000855104 000790366 default 047325596 +000000718 000943485 000801299 default 063078337 +000000718 000958888 000819149 default 065700836 +000000718 000959790 000833541 default 032353065 +000000719 000012751 000106855 default 087146829 +000000719 000292987 000272661 default 029394350 +000000719 000545786 000325933 default 098692861 +000000719 000572378 000524276 default 085452868 +000000719 000592428 000530521 default 065182775 +000000719 000643456 000537387 default 084554146 +000000719 000713547 000552326 default 071328985 +000000719 000741872 000590514 default 050858903 +000000719 000760515 000732510 default 080814521 +000000719 000883941 000841312 default 037508208 +000000720 000017127 000079746 default 082651992 +000000720 000153823 000101037 default 006497867 +000000720 000157864 000143021 default 072328586 +000000720 000195019 000255513 default 089200904 +000000720 000212427 000325337 default 093071395 +000000720 000358295 000336713 default 074118495 +000000720 000492794 000545001 default 062015699 +000000720 000548716 000549115 default 029757327 +000000720 000580802 000733357 default 022770081 +000000720 000619915 000940320 default 083806086 +000000721 000224759 000012653 default 045043368 +000000721 000240761 000042001 default 023353943 +000000721 000292113 000079964 default 090236530 +000000721 000374370 000122414 default 042500057 +000000721 000437224 000287241 default 088037446 +000000721 000553473 000287358 default 029385613 +000000721 000802365 000638365 default 099713814 +000000721 000827144 000758682 default 092553929 +000000721 000872924 000917240 default 065801977 +000000721 000975933 000950970 default 069870564 +000000722 000076688 000134819 default 081384917 +000000722 000127745 000169424 default 036495286 +000000722 000225264 000191543 default 019105956 +000000722 000573250 000195326 default 053933526 +000000722 000594123 000503708 default 098964385 +000000722 000668736 000545850 default 005987542 +000000722 000682167 000733810 default 074193511 +000000722 000701988 000750891 default 064376218 +000000722 000746531 000794956 default 029716092 +000000722 000906649 000905735 default 004839560 +000000723 000146186 000081521 default 046972627 +000000723 000168842 000181707 default 060462026 +000000723 000209804 000432988 default 006800113 +000000723 000299337 000494646 default 067723744 +000000723 000312205 000541841 default 027833016 +000000723 000322690 000619965 default 050977623 +000000723 000337528 000714951 default 009075340 +000000723 000516297 000742582 default 078295787 +000000723 000884632 000768917 default 091521545 +000000723 000967878 000905196 default 077345820 +000000724 000070271 000049167 default 081426264 +000000724 000133319 000079819 default 053724414 +000000724 000151995 000165204 default 069783352 +000000724 000265769 000200080 default 031675149 +000000724 000275733 000202651 default 092453221 +000000724 000570093 000299577 default 079230181 +000000724 000597041 000589835 default 090435539 +000000724 000651615 000715986 default 077887295 +000000724 000804689 000808212 default 060965530 +000000724 000984686 000813961 default 075789822 +000000725 000085602 000064057 default 038725194 +000000725 000124498 000239369 default 021260147 +000000725 000165146 000257666 default 055247981 +000000725 000228422 000506767 default 033693250 +000000725 000242046 000620375 default 045554803 +000000725 000301141 000695383 default 021046680 +000000725 000659387 000706896 default 086841754 +000000725 000720342 000740879 default 010503223 +000000725 000737943 000942970 default 075464026 +000000725 000959857 000981626 default 019434078 +000000726 000237363 000019718 default 047742165 +000000726 000368523 000337942 default 059616645 +000000726 000424571 000439651 default 069709262 +000000726 000597107 000580725 default 016287165 +000000726 000677357 000668804 default 091778711 +000000726 000716078 000726466 default 073358080 +000000726 000812169 000867213 default 010575712 +000000726 000816996 000907158 default 080523363 +000000726 000823122 000910727 default 038991498 +000000726 000916557 000955614 default 091806720 +000000727 000207423 000126324 default 023987132 +000000727 000451835 000140490 default 032737779 +000000727 000498058 000199052 default 078926419 +000000727 000572381 000409423 default 043428156 +000000727 000609407 000553203 default 083070829 +000000727 000682861 000572517 default 084130576 +000000727 000779062 000835343 default 056494012 +000000727 000821257 000867856 default 097453990 +000000727 000895413 000974745 default 023196189 +000000727 000921042 000999807 default 032148411 +000000728 000003714 000091866 default 013031796 +000000728 000266315 000106181 default 099332726 +000000728 000290561 000106912 default 068248009 +000000728 000423907 000186949 default 042012446 +000000728 000490986 000292195 default 039127640 +000000728 000616653 000347666 default 016228168 +000000728 000899529 000453412 default 042816882 +000000728 000934215 000871101 default 048060827 +000000728 000987841 000908417 default 093472748 +000000728 000990676 000929871 default 045950446 +000000729 000153253 000079772 default 096554219 +000000729 000177722 000103565 default 082679852 +000000729 000213883 000180170 default 034955714 +000000729 000431501 000276804 default 032632171 +000000729 000601346 000386416 default 064187405 +000000729 000639140 000668715 default 005111176 +000000729 000678316 000754598 default 086348530 +000000729 000839022 000766300 default 074405497 +000000729 000861744 000894974 default 077912698 +000000729 000949902 000996988 default 079094121 +000000730 000061786 000010217 default 078457514 +000000730 000338525 000180958 default 082828894 +000000730 000410170 000299871 default 097291985 +000000730 000421339 000333557 default 081032042 +000000730 000426598 000384870 default 074793127 +000000730 000481176 000463180 default 045662392 +000000730 000574950 000553664 default 073759890 +000000730 000681260 000685374 default 046951460 +000000730 000917120 000908189 default 002660227 +000000730 000917396 000915972 default 083346642 +000000731 000130039 000111474 default 094879064 +000000731 000144144 000149269 default 007626531 +000000731 000238611 000161822 default 082823567 +000000731 000696831 000164871 default 060830688 +000000731 000766987 000220533 default 006408252 +000000731 000881546 000297377 default 040869769 +000000731 000887441 000578178 default 015681925 +000000731 000921303 000578571 default 016211910 +000000731 000929510 000812935 default 075429296 +000000731 000946408 000863105 default 032524536 +000000732 000117553 000235581 default 018196860 +000000732 000225246 000238593 default 019629706 +000000732 000260795 000348305 default 041208058 +000000732 000263674 000365197 default 053139084 +000000732 000306910 000523272 default 074810981 +000000732 000499902 000593093 default 048930081 +000000732 000742248 000738463 default 067729061 +000000732 000745666 000752257 default 027036375 +000000732 000896476 000782567 default 029935866 +000000732 000960890 000978991 default 042349187 +000000733 000016950 000125776 default 085828899 +000000733 000178632 000134758 default 004451372 +000000733 000217042 000394732 default 084079477 +000000733 000228884 000404841 default 065178118 +000000733 000416717 000464110 default 086217405 +000000733 000528893 000564427 default 068498823 +000000733 000662176 000588300 default 064295696 +000000733 000665563 000795097 default 006192743 +000000733 000770096 000839137 default 025867382 +000000733 000931685 000968640 default 054619060 +000000734 000006542 000086788 default 061631549 +000000734 000045604 000110220 default 047694899 +000000734 000079922 000271470 default 005665140 +000000734 000087157 000331638 default 008291173 +000000734 000426410 000451222 default 038261323 +000000734 000783761 000507026 default 058245464 +000000734 000836854 000526371 default 026141122 +000000734 000873225 000651069 default 009195156 +000000734 000953566 000792797 default 024445098 +000000734 000986864 000861928 default 059562851 +000000735 000007381 000212288 default 093083771 +000000735 000155791 000284479 default 030636967 +000000735 000238798 000309793 default 027941593 +000000735 000309394 000356275 default 068546514 +000000735 000552831 000691200 default 046809377 +000000735 000596679 000726688 default 046584508 +000000735 000860775 000733964 default 045334772 +000000735 000922771 000931501 default 010080624 +000000735 000943092 000934545 default 074776700 +000000735 000958744 000940394 default 072252375 +000000736 000118536 000302900 default 034737919 +000000736 000127171 000372810 default 073992512 +000000736 000139899 000385835 default 040014308 +000000736 000185902 000568036 default 049709747 +000000736 000245112 000627241 default 048861759 +000000736 000257412 000682227 default 062596111 +000000736 000275429 000762463 default 012772582 +000000736 000296280 000858392 default 018878765 +000000736 000333157 000951171 default 057067393 +000000736 000569885 000969295 default 031317650 +000000737 000009507 000022528 default 007976128 +000000737 000262915 000190983 default 001004835 +000000737 000383410 000220643 default 067679345 +000000737 000548350 000275068 default 087574327 +000000737 000632048 000312514 default 063781988 +000000737 000640398 000409796 default 099706324 +000000737 000718894 000543229 default 006133645 +000000737 000746095 000543808 default 000141321 +000000737 000859185 000756455 default 026502972 +000000737 000892061 000941783 default 009602211 +000000738 000185590 000174382 default 002942663 +000000738 000392657 000360556 default 031808055 +000000738 000411506 000492093 default 058131891 +000000738 000470386 000686523 default 079802922 +000000738 000497544 000702825 default 069455010 +000000738 000504385 000786129 default 016175478 +000000738 000522029 000787111 default 065591967 +000000738 000700417 000853406 default 095532425 +000000738 000815031 000935015 default 018563228 +000000738 000917558 000942350 default 042605183 +000000739 000125711 000137687 default 065548481 +000000739 000550585 000178970 default 065767232 +000000739 000600942 000256500 default 096108213 +000000739 000610383 000338846 default 073111364 +000000739 000758320 000359009 default 042013842 +000000739 000849054 000499543 default 062786739 +000000739 000857404 000557362 default 091829862 +000000739 000939483 000660747 default 036356490 +000000739 000973464 000681478 default 009736531 +000000739 000979666 000934680 default 030133897 +000000740 000058253 000020536 default 052523834 +000000740 000071625 000053255 default 023202228 +000000740 000153875 000069477 default 042701742 +000000740 000225662 000092254 default 050767881 +000000740 000301121 000409497 default 097229530 +000000740 000402169 000786993 default 069785384 +000000740 000668564 000826735 default 014070340 +000000740 000785613 000858106 default 009312602 +000000740 000793285 000874438 default 039445250 +000000740 000952486 000972947 default 065164568 +000000741 000036032 000008025 default 036180907 +000000741 000150777 000138022 default 025847119 +000000741 000595537 000288039 default 076614009 +000000741 000636636 000289450 default 025429233 +000000741 000662436 000401641 default 029878826 +000000741 000730661 000551958 default 096716522 +000000741 000894562 000627672 default 070446985 +000000741 000911395 000771686 default 058547500 +000000741 000948887 000776367 default 047353796 +000000741 000977404 000845846 default 052738164 +000000742 000153334 000001182 default 073974083 +000000742 000197095 000354627 default 032424103 +000000742 000248970 000539184 default 020748015 +000000742 000473963 000597844 default 043523893 +000000742 000549102 000609847 default 048343103 +000000742 000591678 000625545 default 089204764 +000000742 000718329 000778357 default 027447344 +000000742 000845098 000797686 default 091501436 +000000742 000938530 000850226 default 008574976 +000000742 000994899 000855591 default 043845772 +000000743 000083330 000493282 default 064157895 +000000743 000150286 000515152 default 099130085 +000000743 000339084 000631838 default 036052928 +000000743 000535754 000659422 default 034106692 +000000743 000691855 000707881 default 073243784 +000000743 000715913 000807610 default 078559400 +000000743 000737960 000866782 default 025191716 +000000743 000743943 000871783 default 077189040 +000000743 000852076 000929179 default 021839418 +000000743 000897852 000936753 default 074867485 +000000744 000014702 000099875 default 054340326 +000000744 000556731 000115986 default 051130640 +000000744 000602554 000116860 default 013594207 +000000744 000655586 000234086 default 057327033 +000000744 000690243 000375049 default 082039946 +000000744 000796386 000555045 default 041029499 +000000744 000893299 000657045 default 090099012 +000000744 000914099 000722272 default 057256592 +000000744 000941846 000774929 default 015776365 +000000744 000998608 000922702 default 049236144 +000000745 000010210 000012986 default 073392456 +000000745 000173189 000138788 default 043180810 +000000745 000201593 000190341 default 073801866 +000000745 000229189 000318318 default 009216065 +000000745 000705447 000575573 default 088500513 +000000745 000761703 000602942 default 011354068 +000000745 000765713 000662856 default 073625215 +000000745 000859196 000730956 default 093368841 +000000745 000972631 000820678 default 021686869 +000000745 000979001 000983404 default 047636332 +000000746 000143828 000063535 default 074597779 +000000746 000224112 000209250 default 087297826 +000000746 000315430 000221993 default 036860490 +000000746 000418653 000392856 default 050655720 +000000746 000493016 000668073 default 040733545 +000000746 000510148 000691027 default 017832746 +000000746 000767484 000696821 default 004195230 +000000746 000793958 000834083 default 008051994 +000000746 000889683 000953972 default 080582262 +000000746 000997223 000955570 default 021810388 +000000747 000025210 000003834 default 036836978 +000000747 000127201 000131059 default 046713132 +000000747 000171056 000260712 default 057896174 +000000747 000200553 000390187 default 053886091 +000000747 000296169 000420408 default 050716358 +000000747 000422519 000429699 default 087364688 +000000747 000424203 000476683 default 003936642 +000000747 000432914 000670843 default 000491582 +000000747 000485769 000923865 default 043186621 +000000747 000617056 000986846 default 071044586 +000000748 000179504 000085400 default 084464434 +000000748 000212495 000112847 default 049382242 +000000748 000272112 000114387 default 079793179 +000000748 000277549 000228493 default 015849790 +000000748 000501179 000273633 default 063588066 +000000748 000512590 000332212 default 044653631 +000000748 000636558 000332760 default 017964521 +000000748 000795774 000418327 default 093656619 +000000748 000830160 000865643 default 095533110 +000000748 000882775 000992160 default 060913902 +000000749 000001807 000009945 default 056999267 +000000749 000017822 000086563 default 005409789 +000000749 000038437 000143180 default 054907118 +000000749 000051745 000277702 default 089965456 +000000749 000217556 000330097 default 042887793 +000000749 000267712 000371097 default 047358460 +000000749 000481582 000381736 default 061460481 +000000749 000560490 000564855 default 094504069 +000000749 000623196 000646789 default 021963360 +000000749 000922869 000775708 default 061187721 +000000750 000003012 000121800 default 007880683 +000000750 000036428 000127536 default 048249434 +000000750 000066616 000197091 default 059932784 +000000750 000155768 000269208 default 021326813 +000000750 000167264 000372852 default 077950986 +000000750 000173856 000621469 default 062865138 +000000750 000439902 000713723 default 078879154 +000000750 000649075 000904560 default 037615130 +000000750 000697739 000971568 default 066870704 +000000750 000756510 000987986 default 009804553 +000000751 000024836 000045932 default 040891891 +000000751 000348833 000053925 default 097144053 +000000751 000399601 000096819 default 027628664 +000000751 000430494 000368110 default 051659967 +000000751 000470119 000393527 default 056661592 +000000751 000587474 000546599 default 041709650 +000000751 000752140 000564352 default 021370143 +000000751 000781017 000655992 default 069059893 +000000751 000891797 000877193 default 004112071 +000000751 000954058 000903971 default 027954384 +000000752 000069240 000079883 default 062555821 +000000752 000323513 000239802 default 031851896 +000000752 000349806 000273423 default 032445166 +000000752 000560872 000389865 default 085842809 +000000752 000567534 000392753 default 006233837 +000000752 000604056 000521224 default 099764882 +000000752 000653703 000537709 default 017499615 +000000752 000812481 000849979 default 010277803 +000000752 000900639 000972315 default 032486530 +000000752 000972674 000978233 default 082376855 +000000753 000147713 000054144 default 010647760 +000000753 000202441 000297338 default 063462999 +000000753 000223222 000351804 default 053680658 +000000753 000237190 000430280 default 071321679 +000000753 000363892 000487435 default 054796572 +000000753 000571333 000589773 default 069950928 +000000753 000660806 000737535 default 038550444 +000000753 000699591 000742985 default 032555981 +000000753 000779583 000753659 default 021321078 +000000753 000824146 000870617 default 027501949 +000000754 000153796 000009769 default 091913944 +000000754 000274916 000028402 default 030205574 +000000754 000481794 000226307 default 079031057 +000000754 000504429 000304230 default 000871628 +000000754 000569894 000403101 default 075840604 +000000754 000682745 000779163 default 072888624 +000000754 000843046 000790863 default 069940642 +000000754 000853105 000891308 default 005968516 +000000754 000926239 000905549 default 013515389 +000000754 000987080 000938262 default 041309470 +000000755 000128812 000092730 default 099036312 +000000755 000408352 000124847 default 030423989 +000000755 000411723 000171885 default 057234784 +000000755 000466122 000197341 default 054936526 +000000755 000466148 000274652 default 081906204 +000000755 000522018 000469736 default 008392836 +000000755 000524817 000670702 default 019156607 +000000755 000561915 000760649 default 044445722 +000000755 000927743 000805995 default 088923101 +000000755 000974415 000923894 default 039970929 +000000756 000048917 000063417 default 085185512 +000000756 000205863 000085418 default 095907168 +000000756 000306455 000095898 default 028836650 +000000756 000395667 000128813 default 020776178 +000000756 000399285 000421359 default 068172746 +000000756 000421001 000463217 default 038134462 +000000756 000426724 000731665 default 020726950 +000000756 000571233 000755344 default 086884360 +000000756 000841154 000937539 default 052911609 +000000756 000866568 000960451 default 081748060 +000000757 000165517 000078950 default 055977022 +000000757 000220009 000259673 default 039034225 +000000757 000349343 000311575 default 036691625 +000000757 000426848 000390706 default 026383245 +000000757 000487344 000394901 default 056401692 +000000757 000563259 000471699 default 064325115 +000000757 000639323 000565797 default 012915294 +000000757 000707766 000626523 default 030974465 +000000757 000732271 000667285 default 000815570 +000000757 000846621 000996330 default 092029639 +000000758 000049448 000102251 default 040618488 +000000758 000107563 000118839 default 068971230 +000000758 000136772 000170474 default 070709803 +000000758 000171222 000704096 default 088072957 +000000758 000207407 000706865 default 063142345 +000000758 000258693 000756637 default 026310514 +000000758 000573955 000757852 default 004529231 +000000758 000683808 000784607 default 010929119 +000000758 000765600 000903910 default 042524671 +000000758 000928241 000979732 default 096741704 +000000759 000165367 000157394 default 012437282 +000000759 000228640 000178809 default 039938502 +000000759 000281587 000264581 default 032415901 +000000759 000376356 000320370 default 004443847 +000000759 000492773 000383546 default 008467070 +000000759 000535376 000477171 default 010617294 +000000759 000540204 000683487 default 077035661 +000000759 000696320 000765181 default 064168321 +000000759 000805398 000913935 default 063228944 +000000759 000859538 000937336 default 040702147 +000000760 000115501 000029868 default 039564515 +000000760 000191579 000141271 default 093350258 +000000760 000266528 000230680 default 009456308 +000000760 000351457 000246980 default 021150328 +000000760 000537533 000370087 default 065257154 +000000760 000577768 000762800 default 042117486 +000000760 000647860 000770023 default 095632502 +000000760 000664169 000841642 default 014300716 +000000760 000744055 000875648 default 083475105 +000000760 000848599 000987308 default 012187292 +000000761 000134228 000079211 default 096896326 +000000761 000222962 000278951 default 080325414 +000000761 000494508 000349067 default 090485626 +000000761 000499066 000387886 default 022301223 +000000761 000614913 000583247 default 050789152 +000000761 000642813 000722575 default 092000880 +000000761 000732321 000728421 default 096604518 +000000761 000878580 000781764 default 061745099 +000000761 000940776 000842058 default 016557810 +000000761 000996782 000916635 default 051552828 +000000762 000080689 000014762 default 020811982 +000000762 000113397 000136116 default 018963421 +000000762 000255665 000210674 default 047448240 +000000762 000589128 000232793 default 098931400 +000000762 000598130 000245010 default 034152970 +000000762 000663940 000445687 default 070907909 +000000762 000744033 000495912 default 093961557 +000000762 000787415 000616558 default 021962345 +000000762 000803709 000664212 default 066982157 +000000762 000867893 000806785 default 032468487 +000000763 000057335 000036469 default 039445693 +000000763 000148721 000084066 default 051961679 +000000763 000167861 000121359 default 017598698 +000000763 000181549 000208127 default 098639046 +000000763 000253858 000210730 default 019425747 +000000763 000260964 000220289 default 065217211 +000000763 000268463 000402001 default 004583666 +000000763 000699645 000440565 default 048045564 +000000763 000969822 000601242 default 087679129 +000000763 000998824 000953765 default 049453006 +000000764 000128953 000027966 default 013215631 +000000764 000165168 000161610 default 001822792 +000000764 000377702 000293559 default 097942150 +000000764 000448706 000323627 default 006142552 +000000764 000554665 000546831 default 037633225 +000000764 000730157 000731049 default 035836690 +000000764 000753892 000904311 default 060010773 +000000764 000839180 000906537 default 004731649 +000000764 000973943 000941274 default 026400313 +000000764 000994099 000977814 default 012971791 +000000765 000095981 000019336 default 076023572 +000000765 000158564 000068807 default 097921784 +000000765 000179310 000185206 default 050240057 +000000765 000357087 000348125 default 047900936 +000000765 000363303 000349537 default 054987706 +000000765 000370432 000460555 default 014257263 +000000765 000541074 000535241 default 023919220 +000000765 000633772 000600010 default 069441588 +000000765 000649196 000906269 default 000945625 +000000765 000902244 000990432 default 050955090 +000000766 000037024 000079736 default 050393302 +000000766 000107272 000104454 default 051456253 +000000766 000209367 000210249 default 032147330 +000000766 000309234 000236493 default 021078485 +000000766 000388001 000254136 default 070418843 +000000766 000393364 000442474 default 048729726 +000000766 000538297 000462472 default 084875838 +000000766 000599449 000589312 default 034751742 +000000766 000741253 000604347 default 076028531 +000000766 000999003 000913606 default 040256170 +000000767 000026997 000261830 default 090754203 +000000767 000078961 000270871 default 069484844 +000000767 000315997 000348917 default 091475797 +000000767 000363488 000391287 default 011867736 +000000767 000398025 000430001 default 063086236 +000000767 000576000 000754108 default 021434607 +000000767 000638449 000792794 default 089648661 +000000767 000709719 000873379 default 089253140 +000000767 000744412 000908398 default 048788944 +000000767 000769035 000992292 default 071461088 +000000768 000092763 000150804 default 023459780 +000000768 000190284 000184826 default 028113858 +000000768 000205621 000325694 default 004837914 +000000768 000314142 000400192 default 008095020 +000000768 000512769 000560449 default 048012296 +000000768 000588041 000582405 default 033529449 +000000768 000590545 000659240 default 032543729 +000000768 000626144 000711434 default 024062238 +000000768 000715034 000773463 default 096522195 +000000768 000751627 000814096 default 020407144 +000000769 000017041 000073481 default 040401215 +000000769 000067215 000107163 default 093825689 +000000769 000391716 000261762 default 089191253 +000000769 000662028 000361622 default 040105116 +000000769 000715990 000438209 default 051092680 +000000769 000787195 000510124 default 091003688 +000000769 000840914 000598677 default 080102434 +000000769 000872611 000828076 default 030556557 +000000769 000900396 000905097 default 080593201 +000000769 000963853 000934464 default 055714887 +000000770 000047212 000002345 default 019906711 +000000770 000114748 000031120 default 056858627 +000000770 000216795 000038211 default 035105801 +000000770 000232146 000153832 default 059640944 +000000770 000557659 000172455 default 000395683 +000000770 000760946 000284963 default 011037420 +000000770 000770322 000378971 default 074811723 +000000770 000845118 000504743 default 085339371 +000000770 000863829 000651400 default 070522547 +000000770 000933499 000699570 default 056019395 +000000771 000083651 000137878 default 048456408 +000000771 000203266 000254379 default 059348722 +000000771 000221153 000394344 default 024159783 +000000771 000381300 000461694 default 081525120 +000000771 000436783 000463709 default 015040571 +000000771 000662292 000506173 default 054887538 +000000771 000703270 000674844 default 046394607 +000000771 000743087 000726668 default 072469418 +000000771 000911730 000774346 default 068766801 +000000771 000977973 000954005 default 083735784 +000000772 000055805 000016826 default 097221114 +000000772 000164254 000123306 default 018793013 +000000772 000259089 000129710 default 073142441 +000000772 000371428 000439301 default 083382824 +000000772 000638139 000467443 default 029835375 +000000772 000722618 000469970 default 061773931 +000000772 000871589 000472663 default 096233374 +000000772 000882027 000641931 default 048468828 +000000772 000940467 000685328 default 041972268 +000000772 000975882 000776372 default 072284328 +000000773 000056642 000048293 default 062417661 +000000773 000218050 000126003 default 065434958 +000000773 000298280 000134679 default 073864429 +000000773 000348516 000141164 default 057155187 +000000773 000407135 000168289 default 058302831 +000000773 000518550 000220561 default 003152081 +000000773 000564059 000324109 default 038551275 +000000773 000711320 000667203 default 026402511 +000000773 000871997 000714566 default 022794514 +000000773 000881779 000936507 default 055869500 +000000774 000057520 000105776 default 059973921 +000000774 000060983 000145601 default 088351582 +000000774 000153952 000168060 default 085826454 +000000774 000249615 000356499 default 023509451 +000000774 000335942 000415992 default 002541240 +000000774 000413772 000468152 default 097320331 +000000774 000415358 000752401 default 063243144 +000000774 000671964 000856532 default 098907567 +000000774 000672797 000873290 default 036625539 +000000774 000689342 000905080 default 083575513 +000000775 000082172 000001480 default 092427352 +000000775 000350100 000147058 default 026215299 +000000775 000432605 000159206 default 003279351 +000000775 000445342 000215776 default 035394706 +000000775 000536892 000246509 default 098642240 +000000775 000544381 000317625 default 003193105 +000000775 000666706 000337902 default 053991663 +000000775 000895411 000377980 default 017478031 +000000775 000901743 000704248 default 017947527 +000000775 000939348 000826962 default 049898185 +000000776 000121342 000062152 default 051569524 +000000776 000169996 000075755 default 059801340 +000000776 000208372 000154561 default 042153453 +000000776 000236410 000334280 default 032490722 +000000776 000333547 000503089 default 000477545 +000000776 000334162 000637717 default 095395297 +000000776 000398536 000641560 default 007886826 +000000776 000545608 000691101 default 069700109 +000000776 000616499 000822948 default 007543133 +000000776 000665786 000993102 default 045794753 +000000777 000018455 000029373 default 096278316 +000000777 000181845 000071928 default 075534687 +000000777 000201560 000246166 default 038844647 +000000777 000209926 000351379 default 006025811 +000000777 000362981 000465881 default 033203339 +000000777 000452023 000597033 default 004023429 +000000777 000452636 000762265 default 059753710 +000000777 000530202 000834250 default 055275198 +000000777 000561924 000925640 default 019049376 +000000777 000691611 000992232 default 036743297 +000000778 000010470 000003674 default 033292659 +000000778 000171957 000197760 default 042718938 +000000778 000251616 000372667 default 004596578 +000000778 000608979 000408272 default 060806104 +000000778 000635371 000601320 default 038638139 +000000778 000640181 000626059 default 098141186 +000000778 000669555 000705316 default 026969652 +000000778 000752636 000824138 default 042176493 +000000778 000791217 000892654 default 043526227 +000000778 000866003 000893457 default 046907999 +000000779 000153055 000053195 default 054145474 +000000779 000475209 000202873 default 088195906 +000000779 000508797 000311545 default 071072279 +000000779 000524440 000394381 default 048454623 +000000779 000530573 000474994 default 078079545 +000000779 000759124 000537936 default 015995603 +000000779 000816085 000723310 default 092587041 +000000779 000846401 000809161 default 086656284 +000000779 000877392 000817913 default 097172147 +000000779 000891128 000880896 default 070490940 +000000780 000098290 000122443 default 073615741 +000000780 000161766 000241897 default 082872598 +000000780 000219782 000342496 default 027943791 +000000780 000299721 000343256 default 027300027 +000000780 000304656 000376760 default 062940534 +000000780 000363910 000377590 default 071148793 +000000780 000418714 000390002 default 092927938 +000000780 000537478 000591443 default 085244915 +000000780 000623315 000654398 default 083443178 +000000780 000759530 000838057 default 020544253 +000000781 000288326 000125600 default 043482802 +000000781 000407613 000132547 default 026526753 +000000781 000487888 000306444 default 026815768 +000000781 000489310 000510876 default 035627751 +000000781 000552548 000543673 default 037498770 +000000781 000566432 000794205 default 044480085 +000000781 000727699 000898054 default 083848727 +000000781 000784998 000912443 default 020585593 +000000781 000788208 000934840 default 090673833 +000000781 000878340 000992964 default 061491806 +000000782 000273253 000154289 default 068009890 +000000782 000410358 000222878 default 008439377 +000000782 000453097 000355699 default 092332908 +000000782 000576943 000409474 default 077650841 +000000782 000786129 000504266 default 078504460 +000000782 000877357 000552702 default 066885474 +000000782 000958834 000724491 default 034667139 +000000782 000967923 000780244 default 002843246 +000000782 000989041 000971998 default 090338206 +000000782 000991566 000992106 default 064954315 +000000783 000226303 000070024 default 056661265 +000000783 000237979 000077504 default 087863595 +000000783 000336142 000211696 default 098483582 +000000783 000364528 000463947 default 093959754 +000000783 000386599 000510452 default 031567467 +000000783 000399321 000607606 default 000528550 +000000783 000520985 000769293 default 084344192 +000000783 000764264 000854535 default 068941173 +000000783 000765337 000867904 default 005234665 +000000783 000881357 000981883 default 083728954 +000000784 000151015 000048223 default 067529546 +000000784 000155962 000059241 default 028303627 +000000784 000428423 000084859 default 022462159 +000000784 000527892 000155793 default 083811260 +000000784 000553223 000344643 default 004721504 +000000784 000620095 000512378 default 074198983 +000000784 000714891 000535757 default 069262754 +000000784 000731761 000732935 default 080973581 +000000784 000742746 000766108 default 068445923 +000000784 000854619 000940150 default 099786710 +000000785 000035351 000146443 default 060665522 +000000785 000207456 000177766 default 046327078 +000000785 000222495 000186453 default 073281041 +000000785 000256907 000285122 default 014538141 +000000785 000317641 000348940 default 073052194 +000000785 000650529 000636003 default 092229462 +000000785 000699306 000641448 default 087082356 +000000785 000841718 000659447 default 083138699 +000000785 000871870 000814675 default 068460687 +000000785 000903758 000998915 default 068025251 +000000786 000163031 000042191 default 064267039 +000000786 000230115 000257783 default 041033291 +000000786 000279779 000336560 default 009995945 +000000786 000394637 000393334 default 027562772 +000000786 000420527 000398098 default 062010975 +000000786 000466184 000541378 default 008523653 +000000786 000557241 000545452 default 079454010 +000000786 000561855 000574227 default 003933487 +000000786 000565574 000847637 default 060307154 +000000786 000955565 000892932 default 076381401 +000000787 000015608 000001896 default 066784655 +000000787 000141554 000086957 default 075768731 +000000787 000202007 000182514 default 064593589 +000000787 000262457 000186962 default 081473897 +000000787 000393360 000193865 default 049853306 +000000787 000577295 000458694 default 063897267 +000000787 000603501 000507160 default 021020965 +000000787 000723059 000560733 default 062331137 +000000787 000862228 000728654 default 057821357 +000000787 000907186 000974051 default 045943815 +000000788 000052798 000036005 default 059693145 +000000788 000351450 000166076 default 011869206 +000000788 000368431 000182632 default 020427010 +000000788 000405565 000209684 default 031465531 +000000788 000457695 000223360 default 056044126 +000000788 000613559 000403176 default 001077933 +000000788 000775075 000493809 default 089975345 +000000788 000793031 000545931 default 002181013 +000000788 000803279 000833714 default 092735282 +000000788 000846865 000886946 default 024129553 +000000789 000019889 000255407 default 091292494 +000000789 000299345 000293197 default 016065177 +000000789 000426512 000328595 default 082884641 +000000789 000468616 000437968 default 006224189 +000000789 000529026 000666440 default 025632633 +000000789 000560385 000876572 default 063222722 +000000789 000734262 000905909 default 075070129 +000000789 000751573 000935992 default 096570241 +000000789 000751949 000952763 default 083503750 +000000789 000895353 000979302 default 013677265 +000000790 000052678 000007164 default 087378341 +000000790 000103518 000078517 default 039412072 +000000790 000276585 000094428 default 011850262 +000000790 000365362 000439456 default 031775698 +000000790 000406085 000620255 default 078472112 +000000790 000427719 000634651 default 056692775 +000000790 000756748 000637592 default 049853749 +000000790 000792272 000698848 default 052697854 +000000790 000878078 000811520 default 013868391 +000000790 000951651 000976526 default 022916504 +000000791 000089109 000024636 default 055735444 +000000791 000110309 000068222 default 078963293 +000000791 000116819 000119017 default 041514542 +000000791 000123626 000394775 default 020589464 +000000791 000191532 000418889 default 077932099 +000000791 000429918 000483787 default 053461772 +000000791 000564356 000545445 default 036262042 +000000791 000610066 000650930 default 022986344 +000000791 000659578 000840553 default 077542331 +000000791 000848558 000975965 default 025869860 +000000792 000091276 000068087 default 026661274 +000000792 000135955 000106385 default 000999106 +000000792 000289901 000289999 default 016236053 +000000792 000307992 000292488 default 076493409 +000000792 000339949 000368161 default 036642735 +000000792 000552743 000485905 default 067799545 +000000792 000878252 000598664 default 071605342 +000000792 000935008 000677990 default 065335713 +000000792 000943652 000694268 default 089302529 +000000792 000996318 000775995 default 061805322 +000000793 000236382 000063212 default 086969240 +000000793 000426007 000163118 default 013705413 +000000793 000583974 000206910 default 016984219 +000000793 000695106 000285344 default 098450958 +000000793 000697748 000453008 default 063897689 +000000793 000712441 000509999 default 054402160 +000000793 000762960 000656116 default 070913264 +000000793 000777542 000736496 default 080369971 +000000793 000780737 000773550 default 086174341 +000000793 000997772 000866414 default 024832080 +000000794 000063289 000103369 default 036069323 +000000794 000067888 000123045 default 055480937 +000000794 000180616 000155508 default 047223514 +000000794 000364821 000273346 default 076397878 +000000794 000525005 000429909 default 085470828 +000000794 000701678 000529639 default 019217216 +000000794 000836996 000566321 default 021852409 +000000794 000908477 000629616 default 089019200 +000000794 000927265 000675385 default 042098307 +000000794 000983906 000710542 default 028257466 +000000795 000031870 000111675 default 026390969 +000000795 000137094 000122561 default 077593108 +000000795 000387091 000402693 default 092635909 +000000795 000397864 000426524 default 045782973 +000000795 000444714 000571842 default 000709945 +000000795 000611527 000652873 default 001360417 +000000795 000649540 000763728 default 063028641 +000000795 000815970 000826891 default 024041785 +000000795 000934220 000969329 default 025587534 +000000795 000988088 000993071 default 083824572 +000000796 000063169 000021325 default 083738649 +000000796 000219909 000076515 default 082390188 +000000796 000224319 000332060 default 009064563 +000000796 000261755 000489643 default 099945527 +000000796 000408510 000539592 default 042818359 +000000796 000416651 000607637 default 084854683 +000000796 000692436 000707739 default 057433032 +000000796 000808876 000859139 default 021520477 +000000796 000889746 000925944 default 049082723 +000000796 000911660 000998686 default 011903935 +000000797 000094565 000239151 default 069357481 +000000797 000101718 000239389 default 094439129 +000000797 000102114 000451199 default 005359594 +000000797 000323326 000533004 default 023226094 +000000797 000346768 000534370 default 088377422 +000000797 000443158 000695651 default 010230383 +000000797 000562426 000781470 default 015549609 +000000797 000769874 000883557 default 054655617 +000000797 000920946 000925266 default 041816232 +000000797 000963875 000964559 default 075347873 +000000798 000000162 000051616 default 092841328 +000000798 000336911 000148193 default 008641000 +000000798 000341757 000178882 default 077287327 +000000798 000502693 000364043 default 056459557 +000000798 000611345 000443254 default 014110272 +000000798 000724110 000481415 default 086664262 +000000798 000771383 000648465 default 005637032 +000000798 000832823 000907443 default 049448049 +000000798 000899679 000923801 default 084315680 +000000798 000991304 000978952 default 074455274 +000000799 000030294 000104218 default 068958316 +000000799 000124558 000122970 default 048541788 +000000799 000153618 000341392 default 004432645 +000000799 000296308 000344290 default 074971467 +000000799 000400107 000357654 default 014929607 +000000799 000524380 000541565 default 021790075 +000000799 000533820 000692246 default 023545060 +000000799 000771259 000714952 default 004433048 +000000799 000904678 000715147 default 004620843 +000000799 000929796 000923767 default 087588503 +000000800 000115960 000015176 default 033191848 +000000800 000224999 000098692 default 061402114 +000000800 000258455 000245717 default 073066452 +000000800 000280403 000521799 default 042831646 +000000800 000305845 000547923 default 042462399 +000000800 000327500 000709493 default 098712377 +000000800 000340707 000836505 default 027573731 +000000800 000740113 000862307 default 058845658 +000000800 000776330 000863122 default 066159121 +000000800 000813262 000979743 default 038437627 +000000801 000007270 000031198 default 018558757 +000000801 000308026 000147647 default 014208381 +000000801 000396538 000155131 default 039563275 +000000801 000407006 000509223 default 086799525 +000000801 000418037 000550548 default 020712970 +000000801 000508473 000611616 default 070708283 +000000801 000740215 000677123 default 073585514 +000000801 000823579 000750325 default 016509608 +000000801 000836505 000846479 default 023503240 +000000801 000845533 000850985 default 031465898 +000000802 000041298 000006169 default 026303097 +000000802 000087566 000180799 default 064255619 +000000802 000222328 000197767 default 073407136 +000000802 000385573 000200883 default 019110768 +000000802 000415914 000288489 default 094589358 +000000802 000659334 000350675 default 054016431 +000000802 000819994 000417640 default 090582997 +000000802 000846250 000470557 default 080517714 +000000802 000859639 000570465 default 060372164 +000000802 000942937 000629507 default 069021207 +000000803 000033208 000274729 default 094942537 +000000803 000056216 000560219 default 034202263 +000000803 000081209 000577536 default 026276916 +000000803 000314763 000578942 default 090610805 +000000803 000504144 000729487 default 082166186 +000000803 000522883 000752613 default 089707831 +000000803 000601101 000821189 default 075296974 +000000803 000750398 000854811 default 059348779 +000000803 000796261 000932597 default 015503473 +000000803 000984082 000999912 default 055102105 +000000804 000144252 000083880 default 036942049 +000000804 000270905 000104731 default 052105027 +000000804 000374899 000243655 default 033897384 +000000804 000529285 000264153 default 055213094 +000000804 000536588 000367917 default 013911961 +000000804 000591285 000390742 default 089445998 +000000804 000615856 000452089 default 000466897 +000000804 000639256 000705085 default 057630310 +000000804 000736660 000863687 default 003518974 +000000804 000917922 000918088 default 092441818 +000000805 000056691 000174062 default 081163297 +000000805 000068247 000226596 default 090200115 +000000805 000372192 000227816 default 018868701 +000000805 000397690 000235214 default 009306945 +000000805 000437566 000291761 default 091793666 +000000805 000524154 000426204 default 035152347 +000000805 000620940 000428161 default 041054809 +000000805 000672870 000453250 default 078129746 +000000805 000693922 000631156 default 086805397 +000000805 000808628 000945074 default 092061139 +000000806 000035934 000311638 default 047328431 +000000806 000047229 000370421 default 004950469 +000000806 000078298 000531926 default 075545014 +000000806 000152041 000557405 default 015779991 +000000806 000426344 000565709 default 032687801 +000000806 000732988 000634847 default 039965446 +000000806 000804293 000853036 default 000842734 +000000806 000840983 000943206 default 050667941 +000000806 000954125 000979683 default 079617751 +000000806 000969070 000995765 default 069887761 +000000807 000195796 000156393 default 036482511 +000000807 000391498 000194559 default 099781018 +000000807 000420687 000237027 default 042725870 +000000807 000595355 000275980 default 099561513 +000000807 000634715 000672296 default 032109700 +000000807 000718036 000702230 default 003441622 +000000807 000748994 000727372 default 089016098 +000000807 000804888 000807346 default 073825201 +000000807 000905822 000821343 default 056635443 +000000807 000913077 000826956 default 048414190 +000000808 000051039 000222256 default 030788644 +000000808 000519509 000238163 default 095175310 +000000808 000636537 000391966 default 054182567 +000000808 000656624 000398687 default 050857077 +000000808 000682343 000468602 default 042925027 +000000808 000759136 000569380 default 050556454 +000000808 000820244 000622371 default 077461876 +000000808 000894536 000647837 default 005068121 +000000808 000924493 000843586 default 001067991 +000000808 000938061 000872584 default 048676951 +000000809 000072890 000155998 default 042339356 +000000809 000182907 000158316 default 081353736 +000000809 000243332 000193367 default 052440974 +000000809 000350149 000288352 default 074638513 +000000809 000587834 000318256 default 057585632 +000000809 000645102 000393968 default 012305999 +000000809 000669412 000573866 default 028739896 +000000809 000721337 000764444 default 037364551 +000000809 000737716 000804125 default 052674660 +000000809 000905009 000959563 default 096479238 +000000810 000036838 000188558 default 028229321 +000000810 000264715 000256169 default 091280650 +000000810 000337775 000340427 default 009801528 +000000810 000399521 000402142 default 085774570 +000000810 000461145 000416548 default 021008235 +000000810 000523480 000525813 default 051292667 +000000810 000538831 000574038 default 082897020 +000000810 000560780 000601745 default 012359609 +000000810 000598125 000856354 default 048505862 +000000810 000976786 000909942 default 024261755 +000000811 000019483 000019840 default 043478063 +000000811 000090348 000025486 default 071053241 +000000811 000139731 000173938 default 046873881 +000000811 000336205 000281144 default 007082755 +000000811 000350319 000318211 default 000142014 +000000811 000558067 000380306 default 013780233 +000000811 000577423 000498138 default 022158086 +000000811 000625826 000545885 default 088675304 +000000811 000872252 000914276 default 063193318 +000000811 000980314 000944165 default 010934420 +000000812 000002805 000056200 default 084398197 +000000812 000200431 000200703 default 061003838 +000000812 000250912 000408960 default 094675152 +000000812 000456820 000547402 default 034269427 +000000812 000483056 000587589 default 013851848 +000000812 000631929 000814103 default 087563221 +000000812 000765138 000874381 default 083197658 +000000812 000777543 000934963 default 014664477 +000000812 000986841 000967498 default 096999370 +000000812 000989791 000989253 default 072667346 +000000813 000102901 000040832 default 065593317 +000000813 000192842 000140615 default 070395276 +000000813 000314206 000259440 default 030694653 +000000813 000443286 000331033 default 069536953 +000000813 000560320 000372018 default 054578279 +000000813 000645991 000594126 default 042751528 +000000813 000652004 000624751 default 006817818 +000000813 000818120 000685970 default 033550377 +000000813 000856769 000765684 default 003889374 +000000813 000985023 000895845 default 008403550 +000000814 000070321 000085648 default 037942585 +000000814 000096150 000095618 default 045636402 +000000814 000475084 000101476 default 066274289 +000000814 000720616 000316400 default 064526924 +000000814 000724235 000575142 default 007740988 +000000814 000760015 000579106 default 060273350 +000000814 000811770 000647502 default 024930141 +000000814 000813096 000728761 default 035701553 +000000814 000980085 000794162 default 067958438 +000000814 000995300 000975950 default 022504497 +000000815 000221111 000004737 default 040212839 +000000815 000253404 000013310 default 082337587 +000000815 000402073 000076642 default 047204292 +000000815 000419255 000099265 default 006388142 +000000815 000503854 000197255 default 059846210 +000000815 000548381 000441603 default 022421994 +000000815 000587482 000771707 default 045128248 +000000815 000735352 000871264 default 095481287 +000000815 000848416 000887678 default 067764874 +000000815 000850853 000968389 default 043419657 +000000816 000041958 000003301 default 069226112 +000000816 000096366 000104576 default 065593216 +000000816 000438320 000278333 default 079657726 +000000816 000599867 000305204 default 028163566 +000000816 000726480 000363305 default 051881543 +000000816 000735558 000467304 default 048329761 +000000816 000775907 000504953 default 052228171 +000000816 000869718 000589818 default 010249419 +000000816 000921965 000708400 default 030593413 +000000816 000964155 000911066 default 056420941 +000000817 000042543 000075383 default 021989391 +000000817 000109540 000150835 default 036434899 +000000817 000153581 000285332 default 078335186 +000000817 000163397 000472033 default 040729774 +000000817 000299219 000491676 default 056436794 +000000817 000420110 000496946 default 055698199 +000000817 000434787 000582876 default 022410385 +000000817 000753544 000586445 default 000410601 +000000817 000937354 000670727 default 026842621 +000000817 000987614 000967632 default 032165807 +000000818 000049390 000191991 default 008614333 +000000818 000197863 000214315 default 084964503 +000000818 000227603 000431247 default 024158840 +000000818 000323452 000442643 default 072951586 +000000818 000380710 000632519 default 045089725 +000000818 000455080 000686414 default 008184043 +000000818 000749023 000728251 default 025402799 +000000818 000780295 000748664 default 054043471 +000000818 000828074 000948439 default 025840222 +000000818 000835205 000976309 default 010315632 +000000819 000104290 000128452 default 044126493 +000000819 000173704 000220826 default 010005068 +000000819 000178645 000354113 default 018756757 +000000819 000309579 000475269 default 041572289 +000000819 000385753 000602844 default 088596018 +000000819 000527597 000765659 default 057826512 +000000819 000599955 000782907 default 099188671 +000000819 000682967 000799244 default 072173258 +000000819 000732182 000799924 default 033095450 +000000819 000811695 000859793 default 032806906 +000000820 000135213 000107259 default 025931117 +000000820 000158901 000292974 default 047291478 +000000820 000303416 000304952 default 077676875 +000000820 000313774 000383012 default 068902885 +000000820 000468124 000413128 default 074470633 +000000820 000477363 000687521 default 057144191 +000000820 000745022 000783365 default 050668202 +000000820 000889545 000800713 default 069647286 +000000820 000939321 000858983 default 061255041 +000000820 000954700 000897138 default 066940142 +000000821 000057091 000089371 default 026047635 +000000821 000180268 000267924 default 073668270 +000000821 000556276 000353805 default 065369878 +000000821 000558408 000389325 default 032479585 +000000821 000662187 000397660 default 080052421 +000000821 000662900 000433176 default 007959535 +000000821 000667430 000437263 default 062991286 +000000821 000739298 000497065 default 083176333 +000000821 000872706 000534636 default 023249552 +000000821 000886793 000766677 default 097643225 +000000822 000098320 000112507 default 058037871 +000000822 000141808 000114070 default 064204535 +000000822 000289932 000629396 default 071294563 +000000822 000506493 000650620 default 036772033 +000000822 000511762 000655949 default 057245910 +000000822 000553868 000725138 default 079261972 +000000822 000607578 000749408 default 000114566 +000000822 000613261 000755370 default 016354135 +000000822 000722198 000924637 default 039688338 +000000822 000876357 000929049 default 009935448 +000000823 000074090 000018435 default 095479473 +000000823 000229006 000032528 default 078743339 +000000823 000374414 000117736 default 074180850 +000000823 000416355 000137260 default 039471230 +000000823 000516958 000220786 default 072236440 +000000823 000580253 000294140 default 075006573 +000000823 000611008 000489317 default 076212917 +000000823 000719135 000747118 default 016665246 +000000823 000749242 000823151 default 028846359 +000000823 000838251 000852980 default 040423542 +000000824 000078362 000103175 default 035725030 +000000824 000089032 000285144 default 015982641 +000000824 000138751 000632752 default 049849444 +000000824 000454333 000644543 default 009422280 +000000824 000585991 000668272 default 075987928 +000000824 000594768 000739222 default 045591993 +000000824 000598618 000739562 default 089726946 +000000824 000598833 000790067 default 070651003 +000000824 000840852 000819860 default 029909896 +000000824 000862067 000879382 default 003842595 +000000825 000029379 000026142 default 005046434 +000000825 000155254 000212749 default 004448021 +000000825 000273377 000251750 default 019471760 +000000825 000433622 000369460 default 097183128 +000000825 000500498 000421934 default 043057973 +000000825 000540114 000487653 default 073148822 +000000825 000708443 000503367 default 061833636 +000000825 000793297 000797908 default 096662104 +000000825 000863509 000868573 default 055127679 +000000825 000944001 000891654 default 030960552 +000000826 000109182 000043322 default 060634443 +000000826 000146010 000073984 default 023810671 +000000826 000187816 000349352 default 087922386 +000000826 000239170 000504850 default 020773740 +000000826 000324182 000519928 default 013265917 +000000826 000645869 000583269 default 080668457 +000000826 000670087 000670637 default 070653287 +000000826 000734876 000774742 default 067580088 +000000826 000920636 000925966 default 013646664 +000000826 000923597 000993268 default 086693041 +000000827 000315264 000077855 default 095713268 +000000827 000315560 000121400 default 012060654 +000000827 000327930 000142864 default 029413326 +000000827 000669790 000218483 default 042763743 +000000827 000728858 000439019 default 056804119 +000000827 000898386 000504658 default 037929661 +000000827 000907186 000521457 default 081542361 +000000827 000913420 000857697 default 067999149 +000000827 000956339 000914709 default 002691901 +000000827 000980776 000943776 default 078417481 +000000828 000004764 000012507 default 080056491 +000000828 000047984 000065391 default 050661643 +000000828 000141938 000181838 default 078178981 +000000828 000227248 000396836 default 042606120 +000000828 000245183 000460615 default 010980500 +000000828 000458894 000498426 default 050842269 +000000828 000574973 000504990 default 085009386 +000000828 000615386 000564991 default 043024768 +000000828 000641833 000611389 default 023125750 +000000828 000769783 000663022 default 000698288 +000000829 000000539 000172128 default 008496763 +000000829 000096785 000334374 default 039794507 +000000829 000263473 000391721 default 065204008 +000000829 000377598 000418466 default 086537663 +000000829 000715597 000433641 default 038686236 +000000829 000717316 000442470 default 059650137 +000000829 000797519 000567970 default 071389043 +000000829 000799868 000579743 default 042564011 +000000829 000876669 000717035 default 061488555 +000000829 000979136 000770941 default 023452321 +000000830 000024295 000051037 default 044894458 +000000830 000121914 000112466 default 000989257 +000000830 000131600 000579862 default 056392723 +000000830 000136783 000666009 default 020657655 +000000830 000327757 000670626 default 034273748 +000000830 000404219 000765276 default 061095074 +000000830 000564330 000792727 default 095610671 +000000830 000675410 000929556 default 008330582 +000000830 000706837 000957383 default 076850856 +000000830 000733681 000992733 default 063272604 +000000831 000118082 000074330 default 023307791 +000000831 000235194 000152719 default 047827990 +000000831 000291890 000200749 default 060171889 +000000831 000560222 000255488 default 028372436 +000000831 000614854 000295612 default 010338478 +000000831 000657717 000509885 default 087735387 +000000831 000842241 000535404 default 090437079 +000000831 000872017 000586870 default 004599836 +000000831 000909688 000650136 default 094029818 +000000831 000991904 000835866 default 080369262 +000000832 000063753 000241809 default 081134280 +000000832 000206486 000290655 default 050500412 +000000832 000225601 000381565 default 073436471 +000000832 000248869 000496775 default 056080230 +000000832 000401182 000591803 default 028758654 +000000832 000487653 000700392 default 011008234 +000000832 000766414 000701075 default 049971346 +000000832 000794130 000756918 default 070406269 +000000832 000798365 000871949 default 010662742 +000000832 000878786 000899911 default 093731447 +000000833 000019158 000049190 default 046455553 +000000833 000056127 000058459 default 090822677 +000000833 000075556 000206165 default 034043598 +000000833 000155470 000346030 default 077687042 +000000833 000222821 000349872 default 038733341 +000000833 000550665 000440508 default 032375192 +000000833 000591529 000631961 default 081114723 +000000833 000681736 000865583 default 011108243 +000000833 000830457 000927645 default 084897076 +000000833 000843768 000980015 default 049811798 +000000834 000006997 000148060 default 049146301 +000000834 000215535 000351674 default 089289119 +000000834 000243570 000478758 default 029025352 +000000834 000341604 000516880 default 035573668 +000000834 000454017 000556300 default 004833603 +000000834 000516331 000565661 default 004950591 +000000834 000627547 000573250 default 017076853 +000000834 000686981 000615190 default 094641236 +000000834 000704880 000709631 default 046528310 +000000834 000835909 000727963 default 078191108 +000000835 000052388 000021534 default 017297114 +000000835 000054700 000064890 default 077617430 +000000835 000054815 000414306 default 013414462 +000000835 000081289 000527123 default 024676703 +000000835 000092455 000567598 default 043683205 +000000835 000183967 000602357 default 041984369 +000000835 000249331 000650997 default 028061741 +000000835 000455002 000914705 default 048249676 +000000835 000472500 000966932 default 020474936 +000000835 000841261 000982633 default 038531431 +000000836 000156180 000050790 default 091875972 +000000836 000209853 000194292 default 005866919 +000000836 000300511 000233626 default 096054027 +000000836 000377967 000284267 default 055866921 +000000836 000532859 000324077 default 035348492 +000000836 000572063 000393329 default 005347855 +000000836 000807769 000615710 default 054523321 +000000836 000816371 000731695 default 043866625 +000000836 000855092 000738311 default 055947469 +000000836 000924143 000909311 default 033872257 +000000837 000199816 000174470 default 058852501 +000000837 000252033 000283514 default 030955479 +000000837 000301998 000409015 default 053511185 +000000837 000398857 000435346 default 069224222 +000000837 000531465 000444978 default 024870200 +000000837 000620931 000709406 default 060535773 +000000837 000647611 000860751 default 096193453 +000000837 000671581 000901061 default 018765242 +000000837 000932919 000958529 default 016006388 +000000837 000966582 000970781 default 093293951 +000000838 000098944 000143108 default 029699023 +000000838 000393185 000414388 default 064709676 +000000838 000470483 000424158 default 070647319 +000000838 000635459 000426837 default 022190653 +000000838 000641389 000578833 default 094439949 +000000838 000812654 000751691 default 061751333 +000000838 000825736 000753544 default 031911590 +000000838 000863573 000767462 default 046676522 +000000838 000889668 000846241 default 003294468 +000000838 000913465 000876756 default 004536587 +000000839 000072388 000231121 default 058438883 +000000839 000160852 000288000 default 029400315 +000000839 000366267 000440756 default 080577288 +000000839 000443504 000444202 default 041156127 +000000839 000500686 000520545 default 098915495 +000000839 000556401 000568800 default 094644381 +000000839 000584963 000612699 default 091329899 +000000839 000626782 000653759 default 012653351 +000000839 000970535 000770721 default 017423847 +000000839 000977839 000834362 default 022739559 +000000840 000027349 000200491 default 052939096 +000000840 000098517 000231250 default 095154943 +000000840 000184865 000399177 default 012065065 +000000840 000340773 000413626 default 021713903 +000000840 000372193 000444423 default 051568477 +000000840 000407641 000551956 default 033358754 +000000840 000463552 000561478 default 032447053 +000000840 000471241 000730324 default 025795450 +000000840 000674965 000751481 default 033497639 +000000840 000723987 000960773 default 096256164 +000000841 000257084 000117476 default 078927059 +000000841 000290626 000263967 default 014759875 +000000841 000355994 000304912 default 014393835 +000000841 000359368 000422459 default 072880005 +000000841 000506728 000632481 default 049681957 +000000841 000670677 000714550 default 005085784 +000000841 000770096 000778209 default 070003300 +000000841 000832722 000793296 default 012788257 +000000841 000847951 000881556 default 027517919 +000000841 000957328 000944975 default 030707535 +000000842 000056500 000097564 default 009318024 +000000842 000229669 000175887 default 042460745 +000000842 000326249 000245345 default 060691439 +000000842 000450485 000257078 default 018710185 +000000842 000506869 000274420 default 009818613 +000000842 000508107 000275255 default 096503484 +000000842 000602661 000320677 default 019389909 +000000842 000743672 000325713 default 080351163 +000000842 000798476 000843339 default 047114517 +000000842 000889684 000950890 default 019476399 +000000843 000233574 000165162 default 006549360 +000000843 000286535 000198374 default 040659502 +000000843 000344399 000373162 default 069215237 +000000843 000364679 000505940 default 052180203 +000000843 000453540 000508040 default 061235239 +000000843 000482381 000694897 default 081905557 +000000843 000609573 000740714 default 055408741 +000000843 000675860 000771932 default 048090683 +000000843 000728880 000927552 default 078403606 +000000843 000938210 000934878 default 010741243 +000000844 000019839 000068941 default 025374828 +000000844 000190589 000090265 default 071152826 +000000844 000196447 000134466 default 064845948 +000000844 000212307 000281564 default 025810695 +000000844 000320997 000421773 default 040443769 +000000844 000458669 000528947 default 019615248 +000000844 000463978 000578572 default 047845417 +000000844 000552812 000593922 default 072773744 +000000844 000679288 000613150 default 057065863 +000000844 000703078 000929447 default 070670507 +000000845 000184224 000160740 default 069438651 +000000845 000342722 000296173 default 015986922 +000000845 000398109 000431571 default 019880049 +000000845 000434937 000449158 default 085128353 +000000845 000646058 000720351 default 059712436 +000000845 000693691 000739148 default 094014102 +000000845 000790928 000746267 default 081030475 +000000845 000814327 000776517 default 065958784 +000000845 000895686 000785774 default 041390433 +000000845 000900649 000909605 default 012515981 +000000846 000063845 000075616 default 065754540 +000000846 000211961 000231757 default 075394164 +000000846 000473507 000271205 default 042650756 +000000846 000754556 000325672 default 032571729 +000000846 000792834 000354126 default 066633472 +000000846 000851461 000432292 default 017323571 +000000846 000909462 000816258 default 088516600 +000000846 000926709 000837410 default 023642140 +000000846 000949594 000838467 default 004354156 +000000846 000984370 000918577 default 067015788 +000000847 000164479 000318420 default 001386437 +000000847 000235176 000327383 default 023981131 +000000847 000316106 000408451 default 065455473 +000000847 000438597 000416249 default 023427296 +000000847 000445996 000480608 default 031259588 +000000847 000556462 000598885 default 056200236 +000000847 000720860 000783034 default 095074784 +000000847 000813761 000795128 default 071373356 +000000847 000850681 000851669 default 084943192 +000000847 000946968 000977303 default 054172522 +000000848 000031468 000266874 default 018685639 +000000848 000330719 000368763 default 096026188 +000000848 000446247 000379311 default 080550433 +000000848 000477433 000510239 default 056022913 +000000848 000496511 000555437 default 004370501 +000000848 000580891 000646775 default 049570203 +000000848 000592138 000717277 default 051730960 +000000848 000695047 000800703 default 016043280 +000000848 000707974 000840016 default 039267253 +000000848 000786048 000903265 default 063915448 +000000849 000025967 000011304 default 092606783 +000000849 000055000 000042432 default 014210919 +000000849 000126675 000229481 default 034071981 +000000849 000402589 000311857 default 024525170 +000000849 000485139 000442429 default 004534861 +000000849 000523016 000582321 default 044294071 +000000849 000540996 000618190 default 019584904 +000000849 000592342 000640653 default 071462906 +000000849 000872751 000774311 default 076463022 +000000849 000991560 000981226 default 033512899 +000000850 000118337 000009416 default 045055749 +000000850 000194388 000079581 default 074768262 +000000850 000194769 000202095 default 048075021 +000000850 000286180 000424386 default 033208512 +000000850 000506275 000437600 default 028095777 +000000850 000662715 000472685 default 094199050 +000000850 000679775 000587037 default 026613194 +000000850 000743676 000588007 default 090336419 +000000850 000980881 000791191 default 020843893 +000000850 000983665 000898651 default 049405681 +000000851 000039809 000104413 default 098951632 +000000851 000053249 000273288 default 033280769 +000000851 000072873 000277208 default 062478274 +000000851 000498110 000596554 default 029605915 +000000851 000567788 000600267 default 004918940 +000000851 000690179 000644309 default 001196290 +000000851 000743005 000849727 default 095871944 +000000851 000807468 000851937 default 078825429 +000000851 000866317 000910677 default 049482020 +000000851 000970709 000936754 default 089324573 +000000852 000016844 000022626 default 027578598 +000000852 000245924 000200849 default 052277193 +000000852 000288887 000332653 default 042682236 +000000852 000304798 000333299 default 017824520 +000000852 000361740 000397598 default 035686572 +000000852 000372936 000467044 default 096677740 +000000852 000434712 000476199 default 049350036 +000000852 000437550 000544339 default 033019157 +000000852 000527678 000636122 default 068369303 +000000852 000868498 000662894 default 029447519 +000000853 000001552 000052666 default 043407148 +000000853 000115459 000067659 default 046088980 +000000853 000122489 000243502 default 067839425 +000000853 000295580 000282908 default 045600626 +000000853 000342438 000404556 default 026409833 +000000853 000372923 000609967 default 057871229 +000000853 000373533 000637210 default 081341704 +000000853 000809602 000658825 default 011675372 +000000853 000818392 000869774 default 072013867 +000000853 000895002 000891933 default 095547097 +000000854 000116213 000047443 default 048130107 +000000854 000390654 000226485 default 026941257 +000000854 000627139 000253530 default 051396874 +000000854 000648511 000623746 default 018720473 +000000854 000692644 000704292 default 084192042 +000000854 000821959 000712616 default 037349894 +000000854 000829255 000914466 default 001832931 +000000854 000846662 000918797 default 090274362 +000000854 000948556 000949591 default 083320402 +000000854 000962193 000998337 default 048834349 +000000855 000178248 000165863 default 075033637 +000000855 000189845 000186175 default 007018192 +000000855 000250721 000196447 default 024591527 +000000855 000371938 000251524 default 045146700 +000000855 000462474 000435734 default 066401261 +000000855 000579605 000473331 default 067623577 +000000855 000639017 000603843 default 005738037 +000000855 000688288 000656091 default 009262411 +000000855 000688578 000762836 default 014261144 +000000855 000984430 000837862 default 013284331 +000000856 000076789 000012275 default 080381142 +000000856 000149977 000116501 default 095203315 +000000856 000215738 000119913 default 094386915 +000000856 000217413 000194902 default 005049341 +000000856 000230244 000266254 default 025334894 +000000856 000261644 000568005 default 070949504 +000000856 000433274 000597343 default 071587834 +000000856 000531707 000765931 default 042692126 +000000856 000920340 000869127 default 086443732 +000000856 000988340 000870867 default 099177570 +000000857 000157920 000048081 default 017365306 +000000857 000180049 000163086 default 045505626 +000000857 000195180 000218369 default 006251742 +000000857 000330519 000223755 default 086350670 +000000857 000487767 000285019 default 005198952 +000000857 000556847 000326597 default 077608821 +000000857 000583602 000618141 default 091388115 +000000857 000629997 000659447 default 040923350 +000000857 000671334 000687955 default 091956359 +000000857 000761028 000923161 default 028351339 +000000858 000195965 000025285 default 015879473 +000000858 000217074 000326625 default 057504965 +000000858 000420917 000395061 default 086209942 +000000858 000453582 000466328 default 018155340 +000000858 000457696 000474277 default 013094007 +000000858 000504276 000511280 default 026570967 +000000858 000578281 000547939 default 035950678 +000000858 000689335 000566170 default 003011564 +000000858 000871054 000909169 default 033704963 +000000858 000916220 000924330 default 000640606 +000000859 000090818 000126798 default 025455636 +000000859 000130770 000216550 default 018595247 +000000859 000132120 000446106 default 063969590 +000000859 000213200 000525484 default 006586478 +000000859 000349316 000554670 default 008833753 +000000859 000432512 000578049 default 084431442 +000000859 000438605 000600119 default 066467247 +000000859 000532230 000677568 default 046586522 +000000859 000881937 000819715 default 008021855 +000000859 000912317 000948099 default 092693180 +000000860 000092636 000088538 default 097912805 +000000860 000188498 000439499 default 009576044 +000000860 000197826 000523876 default 027572232 +000000860 000268422 000570867 default 063511232 +000000860 000400812 000681776 default 007156244 +000000860 000477079 000830306 default 046249405 +000000860 000514604 000865587 default 031838705 +000000860 000850420 000937764 default 041409127 +000000860 000858650 000981681 default 033164962 +000000860 000908215 000998868 default 042079383 +000000861 000229654 000137397 default 002157598 +000000861 000270417 000155670 default 019880384 +000000861 000611764 000390541 default 098226302 +000000861 000730672 000417310 default 096299838 +000000861 000733969 000455452 default 087445160 +000000861 000808708 000621629 default 084110642 +000000861 000814963 000783211 default 063522479 +000000861 000946656 000809462 default 008655704 +000000861 000959445 000906306 default 074483113 +000000861 000993624 000969074 default 051548749 +000000862 000055315 000122305 default 022083809 +000000862 000074346 000207492 default 003397264 +000000862 000084789 000292695 default 000820804 +000000862 000145250 000381985 default 034231714 +000000862 000372182 000472741 default 056096351 +000000862 000401336 000608273 default 084960377 +000000862 000459988 000834380 default 065393114 +000000862 000479307 000883001 default 002549349 +000000862 000554778 000972526 default 054068560 +000000862 000827236 000994690 default 063028345 +000000863 000019670 000033290 default 005988859 +000000863 000070432 000047440 default 000453202 +000000863 000173466 000220369 default 085987039 +000000863 000223896 000320674 default 016976458 +000000863 000258771 000483139 default 054018226 +000000863 000429257 000534820 default 014098439 +000000863 000534639 000635017 default 091433922 +000000863 000657530 000765298 default 064418520 +000000863 000708097 000816800 default 074295623 +000000863 000749043 000977347 default 061328591 +000000864 000009170 000055284 default 055067299 +000000864 000021400 000112589 default 050684145 +000000864 000064185 000116826 default 068082460 +000000864 000165093 000186795 default 039382862 +000000864 000197715 000247302 default 060179914 +000000864 000199689 000339435 default 005394317 +000000864 000420718 000346017 default 053446654 +000000864 000718580 000434237 default 092329866 +000000864 000828796 000970209 default 054647914 +000000864 000945706 000987827 default 012750960 +000000865 000141923 000329810 default 082211303 +000000865 000179976 000339141 default 047723167 +000000865 000239781 000415139 default 093280315 +000000865 000240796 000546239 default 078234391 +000000865 000253984 000623966 default 013431023 +000000865 000447161 000717503 default 043916211 +000000865 000585159 000726518 default 026383998 +000000865 000784850 000802569 default 075989575 +000000865 000817683 000804103 default 066260230 +000000865 000936563 000985163 default 088364817 +000000866 000005521 000217643 default 092028394 +000000866 000160081 000338576 default 076432272 +000000866 000189508 000342402 default 009571238 +000000866 000234233 000455284 default 015050130 +000000866 000273731 000493035 default 059619703 +000000866 000397576 000684714 default 017957375 +000000866 000487506 000711475 default 034695961 +000000866 000560467 000811926 default 094949365 +000000866 000639664 000837395 default 008085484 +000000866 000775648 000924489 default 029433451 +000000867 000068620 000062504 default 017782405 +000000867 000214496 000299634 default 013250738 +000000867 000392624 000474726 default 061000962 +000000867 000429918 000519392 default 025918275 +000000867 000446259 000785496 default 056432622 +000000867 000464562 000825796 default 021569471 +000000867 000516547 000856611 default 084467934 +000000867 000692880 000909776 default 056580616 +000000867 000756275 000945897 default 093968100 +000000867 000957258 000985079 default 036355426 +000000868 000069804 000258116 default 030967325 +000000868 000246483 000470637 default 042765463 +000000868 000281827 000560297 default 039999537 +000000868 000415532 000770939 default 098479696 +000000868 000457619 000810142 default 046532603 +000000868 000652360 000849943 default 054831397 +000000868 000706226 000890157 default 062469878 +000000868 000786288 000914257 default 008769112 +000000868 000858630 000958847 default 004314994 +000000868 000872079 000964975 default 071759689 +000000869 000171448 000004040 default 001415956 +000000869 000259804 000239118 default 089396869 +000000869 000453600 000305468 default 016130906 +000000869 000636806 000499997 default 010484888 +000000869 000689706 000526663 default 040444936 +000000869 000730052 000574672 default 017446830 +000000869 000747572 000606762 default 015761464 +000000869 000785333 000609393 default 002880216 +000000869 000969381 000690511 default 047787728 +000000869 000979044 000990949 default 014388899 +000000870 000003079 000136014 default 077706980 +000000870 000153511 000188427 default 077680818 +000000870 000180275 000360833 default 003949709 +000000870 000219370 000361139 default 084682833 +000000870 000341662 000363361 default 029815738 +000000870 000355595 000410246 default 011808741 +000000870 000359897 000413404 default 086273803 +000000870 000398076 000509115 default 000348052 +000000870 000458880 000632521 default 065921673 +000000870 000943975 000763356 default 029138714 +000000871 000216624 000104385 default 000607057 +000000871 000227649 000143093 default 077388611 +000000871 000381440 000369433 default 016444385 +000000871 000395865 000438265 default 010083672 +000000871 000416405 000511181 default 073597707 +000000871 000423775 000530737 default 083817541 +000000871 000536092 000568036 default 012555698 +000000871 000543663 000669517 default 032457572 +000000871 000662330 000877857 default 084193282 +000000871 000795371 000894016 default 038769206 +000000872 000089420 000058354 default 035702906 +000000872 000116343 000085169 default 059597330 +000000872 000141124 000207961 default 059760424 +000000872 000160220 000271043 default 070740946 +000000872 000283370 000313817 default 019308211 +000000872 000308289 000467013 default 099524561 +000000872 000606168 000670640 default 055361988 +000000872 000793676 000708347 default 024600567 +000000872 000965153 000865793 default 017939660 +000000872 000999516 000994494 default 091434687 +000000873 000053166 000007282 default 067502932 +000000873 000073785 000038737 default 003765922 +000000873 000175014 000093919 default 022620504 +000000873 000176598 000326109 default 029465538 +000000873 000272178 000348489 default 056888478 +000000873 000577457 000391875 default 074018666 +000000873 000658295 000463871 default 035216220 +000000873 000671874 000539045 default 043587489 +000000873 000702499 000725687 default 002293560 +000000873 000976552 000871033 default 092682490 +000000874 000160102 000098235 default 056846334 +000000874 000288332 000131739 default 088753673 +000000874 000311402 000144010 default 048953029 +000000874 000344990 000247688 default 080801882 +000000874 000672452 000400208 default 075857693 +000000874 000772899 000403460 default 093293644 +000000874 000812196 000605434 default 076055764 +000000874 000868420 000776345 default 003583585 +000000874 000946486 000841700 default 022023207 +000000874 000973127 000952752 default 035454500 +000000875 000019274 000078775 default 095774143 +000000875 000090681 000185544 default 020660946 +000000875 000136426 000418858 default 036323730 +000000875 000182277 000480003 default 096608859 +000000875 000267715 000510975 default 044338580 +000000875 000386401 000658583 default 011559274 +000000875 000656269 000709906 default 046866593 +000000875 000669239 000753875 default 005397985 +000000875 000876533 000856471 default 022637127 +000000875 000930427 000998760 default 078816024 +000000876 000116504 000306498 default 034985702 +000000876 000357590 000325957 default 057452046 +000000876 000575841 000362648 default 066785463 +000000876 000651522 000380926 default 059646789 +000000876 000657753 000401390 default 065919012 +000000876 000682453 000404386 default 046836164 +000000876 000726731 000419566 default 042927156 +000000876 000801339 000675489 default 020420763 +000000876 000808059 000750470 default 046577716 +000000876 000883393 000849225 default 084152193 +000000877 000230767 000040546 default 046268703 +000000877 000310678 000313033 default 066714261 +000000877 000322500 000509283 default 060688096 +000000877 000397767 000525601 default 075165846 +000000877 000441967 000619574 default 041129292 +000000877 000652145 000716367 default 071497732 +000000877 000714164 000810372 default 057073965 +000000877 000720455 000814853 default 037765289 +000000877 000732738 000889372 default 010661489 +000000877 000736291 000974375 default 028341490 +000000878 000007629 000054537 default 059363766 +000000878 000196417 000120017 default 008347695 +000000878 000222156 000250404 default 006217709 +000000878 000312514 000297824 default 056716057 +000000878 000353290 000353613 default 037361095 +000000878 000391482 000394139 default 000807378 +000000878 000549165 000412994 default 094003075 +000000878 000696909 000450262 default 033888526 +000000878 000811437 000578337 default 003876957 +000000878 000917931 000879817 default 063383626 +000000879 000135331 000024625 default 052769511 +000000879 000161932 000052105 default 026793439 +000000879 000185159 000055209 default 031402041 +000000879 000225105 000137516 default 059432707 +000000879 000508551 000246000 default 094699177 +000000879 000597159 000361934 default 097573768 +000000879 000746591 000382141 default 063231377 +000000879 000757040 000461392 default 056936030 +000000879 000860298 000538730 default 061508955 +000000879 000938714 000552977 default 017455605 +000000880 000125183 000022693 default 055994726 +000000880 000442505 000074945 default 071221176 +000000880 000457759 000090248 default 096139647 +000000880 000492328 000098033 default 036837323 +000000880 000499772 000132147 default 047761106 +000000880 000504660 000329764 default 050775306 +000000880 000618916 000379354 default 035801218 +000000880 000704895 000467634 default 045838909 +000000880 000859477 000575127 default 081290900 +000000880 000958115 000618101 default 017653752 +000000881 000011645 000161332 default 075339208 +000000881 000184553 000263795 default 056250288 +000000881 000224076 000366099 default 089812787 +000000881 000306822 000402632 default 005547164 +000000881 000446481 000567058 default 070998841 +000000881 000464251 000594732 default 054492218 +000000881 000665886 000604110 default 068916505 +000000881 000688646 000687126 default 040351689 +000000881 000760670 000710481 default 038527098 +000000881 000970955 000748771 default 036606067 +000000882 000002381 000195005 default 046387038 +000000882 000070892 000253086 default 094290696 +000000882 000095913 000287018 default 031142011 +000000882 000146400 000369528 default 018961591 +000000882 000288931 000521208 default 082119128 +000000882 000307232 000539899 default 075789665 +000000882 000312339 000586411 default 079533765 +000000882 000358965 000638587 default 004071387 +000000882 000676065 000684281 default 039619910 +000000882 000828359 000704318 default 054307464 +000000883 000032147 000000992 default 097866910 +000000883 000087566 000075848 default 046163599 +000000883 000147634 000088319 default 006145329 +000000883 000169659 000149930 default 010338243 +000000883 000382890 000294271 default 060108962 +000000883 000399846 000305259 default 059968692 +000000883 000415215 000413577 default 046614147 +000000883 000608252 000441161 default 085057930 +000000883 000830985 000515039 default 019648757 +000000883 000870442 000740659 default 077358995 +000000884 000090260 000196981 default 076908058 +000000884 000126755 000244335 default 021831541 +000000884 000245446 000456587 default 051758258 +000000884 000250399 000477432 default 012469742 +000000884 000388432 000483833 default 065712031 +000000884 000453433 000517897 default 060703700 +000000884 000820086 000545680 default 075006504 +000000884 000827006 000750038 default 041055840 +000000884 000836454 000786982 default 036124366 +000000884 000847667 000949716 default 007798607 +000000885 000087882 000024312 default 060177296 +000000885 000111284 000082291 default 011548401 +000000885 000175756 000182428 default 006012842 +000000885 000317355 000521379 default 085486147 +000000885 000478186 000528637 default 008988847 +000000885 000487679 000565868 default 033089480 +000000885 000720133 000775634 default 031685138 +000000885 000724817 000853460 default 097521340 +000000885 000759281 000908824 default 066026340 +000000885 000906431 000910188 default 096097630 +000000886 000200644 000115299 default 029413170 +000000886 000204404 000205836 default 030891452 +000000886 000298877 000206954 default 023414210 +000000886 000352008 000299783 default 003901321 +000000886 000394756 000621264 default 055186709 +000000886 000420082 000658178 default 030517079 +000000886 000612984 000802485 default 043408190 +000000886 000651627 000901170 default 031084778 +000000886 000700780 000936054 default 034590678 +000000886 000976343 000984716 default 002111929 +000000887 000089241 000220993 default 073249567 +000000887 000127782 000407464 default 088324517 +000000887 000237421 000473036 default 067090170 +000000887 000254552 000542724 default 079402276 +000000887 000289155 000616111 default 043312278 +000000887 000317628 000631015 default 028930678 +000000887 000540613 000793954 default 093160025 +000000887 000542258 000803686 default 007208640 +000000887 000660657 000876056 default 041937772 +000000887 000940442 000907641 default 081633701 +000000888 000047565 000000820 default 050702587 +000000888 000141323 000095414 default 054757270 +000000888 000248151 000102454 default 091754932 +000000888 000423415 000131086 default 071972931 +000000888 000569895 000139766 default 003593858 +000000888 000678951 000259251 default 001561040 +000000888 000682970 000281338 default 051976224 +000000888 000769257 000300607 default 071079880 +000000888 000951879 000543442 default 089101114 +000000888 000961362 000726619 default 065448884 +000000889 000047149 000075023 default 097230214 +000000889 000061448 000172205 default 080508857 +000000889 000064075 000260332 default 054806319 +000000889 000128219 000323189 default 078300778 +000000889 000132601 000401611 default 016562183 +000000889 000179778 000538305 default 077455864 +000000889 000225862 000599908 default 099225496 +000000889 000454255 000716479 default 059448763 +000000889 000476830 000808851 default 094967488 +000000889 000594959 000878337 default 073086840 +000000890 000047676 000236636 default 014115571 +000000890 000108464 000362859 default 062777983 +000000890 000409107 000572199 default 071774441 +000000890 000461195 000614731 default 095339532 +000000890 000513217 000652902 default 058503369 +000000890 000650088 000710109 default 005484543 +000000890 000717661 000716026 default 071908913 +000000890 000729537 000753342 default 084774820 +000000890 000944321 000757817 default 075081261 +000000890 000979596 000974769 default 041206778 +000000891 000019581 000322001 default 028353235 +000000891 000100451 000459837 default 058348466 +000000891 000406683 000483587 default 011489312 +000000891 000412864 000518289 default 026247038 +000000891 000553307 000534378 default 002152028 +000000891 000591622 000588624 default 076902841 +000000891 000842546 000820051 default 031138490 +000000891 000893986 000887396 default 077316908 +000000891 000921933 000910644 default 012284070 +000000891 000997535 000951635 default 038434322 +000000892 000110946 000111889 default 055199211 +000000892 000259554 000487491 default 052790786 +000000892 000263240 000523356 default 034796516 +000000892 000266331 000538661 default 098884035 +000000892 000283136 000591998 default 077757057 +000000892 000319022 000629201 default 055538591 +000000892 000542690 000790168 default 084987054 +000000892 000602859 000850118 default 072106876 +000000892 000654732 000996977 default 007076659 +000000892 000704073 000998183 default 030064851 +000000893 000105464 000057438 default 024865234 +000000893 000264347 000090188 default 020071413 +000000893 000329027 000109406 default 053669167 +000000893 000403104 000273617 default 099187183 +000000893 000464683 000302962 default 047883507 +000000893 000482052 000435943 default 076412527 +000000893 000723950 000733140 default 024153323 +000000893 000807060 000863416 default 031165357 +000000893 000811240 000900471 default 079757905 +000000893 000819483 000970541 default 074891802 +000000894 000163131 000114963 default 059101018 +000000894 000381636 000120129 default 016556706 +000000894 000509746 000155787 default 024660636 +000000894 000663110 000391138 default 032525989 +000000894 000695515 000420664 default 011280712 +000000894 000850308 000432804 default 060117909 +000000894 000859440 000564141 default 065977211 +000000894 000875462 000845284 default 040917117 +000000894 000919220 000874271 default 095930069 +000000894 000939193 000949796 default 080453752 +000000895 000124246 000029702 default 064037007 +000000895 000219561 000046040 default 021511836 +000000895 000230514 000109261 default 096463542 +000000895 000252506 000184107 default 083998645 +000000895 000278743 000251847 default 037715398 +000000895 000364919 000333547 default 092173041 +000000895 000649022 000618098 default 072546297 +000000895 000846909 000778049 default 006543774 +000000895 000863173 000854810 default 088821070 +000000895 000924810 000870210 default 018520368 +000000896 000050556 000240247 default 079060109 +000000896 000068283 000250718 default 019155808 +000000896 000147669 000299162 default 033783867 +000000896 000411574 000533853 default 033069753 +000000896 000534378 000552586 default 086010125 +000000896 000735548 000722196 default 027037054 +000000896 000740893 000760527 default 042638239 +000000896 000772347 000845498 default 031171766 +000000896 000877352 000855723 default 001638640 +000000896 000890843 000860311 default 025468674 +000000897 000221777 000004569 default 054516982 +000000897 000379001 000065367 default 058676434 +000000897 000394444 000453859 default 057444810 +000000897 000396908 000473572 default 034590890 +000000897 000477554 000501900 default 099633552 +000000897 000499683 000619655 default 096722926 +000000897 000569496 000692611 default 065205167 +000000897 000595550 000841058 default 095769346 +000000897 000818435 000897698 default 042406185 +000000897 000995445 000994065 default 003913658 +000000898 000156557 000051383 default 018768174 +000000898 000194303 000137649 default 012781104 +000000898 000268006 000226083 default 006403062 +000000898 000296019 000436501 default 002621730 +000000898 000331515 000524858 default 063523530 +000000898 000476802 000768874 default 098148196 +000000898 000585618 000824386 default 000975721 +000000898 000674305 000873201 default 043420282 +000000898 000745978 000937454 default 097140847 +000000898 000829539 000990695 default 096252039 +000000899 000008824 000091161 default 001486249 +000000899 000230813 000237354 default 070643583 +000000899 000422948 000328083 default 060302380 +000000899 000475917 000440001 default 024253601 +000000899 000580190 000485092 default 045552318 +000000899 000856628 000524520 default 074178175 +000000899 000934174 000573444 default 015723848 +000000899 000945289 000602003 default 045273959 +000000899 000960114 000759735 default 028408683 +000000899 000961057 000858319 default 071699400 +000000900 000024179 000019479 default 051558584 +000000900 000074341 000056792 default 045300557 +000000900 000314226 000150550 default 068477394 +000000900 000354776 000151412 default 034276331 +000000900 000376367 000273194 default 007036269 +000000900 000490486 000311184 default 091727523 +000000900 000619261 000470871 default 043722697 +000000900 000751783 000657998 default 046233972 +000000900 000909212 000734977 default 058415922 +000000900 000955686 000865800 default 011715762 +000000901 000018179 000395627 default 045153423 +000000901 000154195 000482966 default 098600102 +000000901 000248236 000570671 default 056425602 +000000901 000275409 000604730 default 066409967 +000000901 000515294 000737037 default 017308392 +000000901 000567533 000777153 default 013901175 +000000901 000636160 000813775 default 047528048 +000000901 000890061 000848505 default 041022095 +000000901 000926293 000876378 default 061998651 +000000901 000941625 000928112 default 072859671 +000000902 000237140 000253625 default 002292477 +000000902 000243090 000268911 default 051733598 +000000902 000299905 000337897 default 029343417 +000000902 000544847 000431352 default 076538953 +000000902 000593792 000620998 default 042261899 +000000902 000783356 000642478 default 012805310 +000000902 000849308 000730492 default 015439828 +000000902 000852784 000744571 default 017726612 +000000902 000895745 000917860 default 019589737 +000000902 000954886 000959448 default 096683432 +000000903 000172111 000034956 default 023829437 +000000903 000209567 000035651 default 015951064 +000000903 000272758 000474315 default 056008083 +000000903 000324728 000497597 default 003165956 +000000903 000476612 000528882 default 025990866 +000000903 000699507 000530434 default 099626262 +000000903 000745627 000674570 default 052699066 +000000903 000763376 000906433 default 035611634 +000000903 000831400 000960136 default 034416578 +000000903 000899996 000972885 default 036097698 +000000904 000140286 000053756 default 014033976 +000000904 000193911 000137700 default 058692511 +000000904 000313964 000217637 default 070841998 +000000904 000423888 000234283 default 038764184 +000000904 000506261 000254296 default 042290071 +000000904 000576321 000362515 default 058078967 +000000904 000635042 000596591 default 032849466 +000000904 000715680 000606927 default 077435985 +000000904 000785181 000671674 default 017446450 +000000904 000967318 000993741 default 097859924 +000000905 000059775 000013993 default 064378937 +000000905 000091363 000023905 default 095279359 +000000905 000346945 000101162 default 013660311 +000000905 000391112 000104826 default 006974357 +000000905 000396081 000371328 default 063898405 +000000905 000624681 000617749 default 049278098 +000000905 000777313 000629967 default 047600540 +000000905 000810504 000726419 default 002989565 +000000905 000872097 000883372 default 004625026 +000000905 000951825 000952532 default 041915843 +000000906 000007738 000183187 default 055350790 +000000906 000250754 000310664 default 002418330 +000000906 000584357 000573225 default 021186750 +000000906 000663954 000632158 default 015887579 +000000906 000776399 000735753 default 088160982 +000000906 000856108 000745201 default 016606896 +000000906 000932853 000792718 default 001391337 +000000906 000943959 000938436 default 012081254 +000000906 000999068 000959630 default 030574983 +000000906 000999132 000996284 default 019870883 +000000907 000000978 000068146 default 032473724 +000000907 000104940 000159815 default 072484702 +000000907 000122155 000169541 default 038991458 +000000907 000129722 000427792 default 048024455 +000000907 000289554 000460262 default 095967589 +000000907 000342521 000465713 default 031737291 +000000907 000412307 000596889 default 022727636 +000000907 000494716 000677439 default 026846477 +000000907 000633651 000696621 default 083311240 +000000907 000640586 000828901 default 003946223 +000000908 000048011 000341407 default 056935516 +000000908 000069278 000399719 default 052187401 +000000908 000279897 000402566 default 013438453 +000000908 000352631 000524944 default 044399225 +000000908 000471155 000569141 default 032212746 +000000908 000639500 000682808 default 080819066 +000000908 000738218 000818993 default 041531394 +000000908 000779052 000821074 default 044327459 +000000908 000856301 000931038 default 029111087 +000000908 000952865 000980896 default 061368741 +000000909 000050666 000041313 default 047315916 +000000909 000168139 000045807 default 041206259 +000000909 000175816 000465243 default 080995100 +000000909 000388356 000548085 default 069661073 +000000909 000479140 000567732 default 013261757 +000000909 000530940 000611906 default 032687028 +000000909 000562494 000615857 default 068193434 +000000909 000672493 000617796 default 098897043 +000000909 000853890 000671810 default 016707280 +000000909 000886984 000792584 default 050012899 +000000910 000052743 000037763 default 065281592 +000000910 000108918 000107703 default 064701690 +000000910 000224107 000320708 default 027259805 +000000910 000296425 000336411 default 061142265 +000000910 000446080 000343699 default 056557984 +000000910 000667817 000430258 default 020087132 +000000910 000762670 000540809 default 071485126 +000000910 000764933 000735867 default 022552518 +000000910 000864391 000751226 default 080010910 +000000910 000908549 000785924 default 095773770 +000000911 000058333 000014033 default 066412522 +000000911 000122713 000258253 default 057827448 +000000911 000183604 000358817 default 032422798 +000000911 000240692 000439435 default 007235427 +000000911 000283297 000483939 default 067649966 +000000911 000496799 000502013 default 015858910 +000000911 000583034 000518246 default 042593560 +000000911 000634537 000594939 default 048548427 +000000911 000939635 000855271 default 006448436 +000000911 000975704 000917037 default 046446727 +000000912 000085382 000164208 default 059926959 +000000912 000101501 000281929 default 015375951 +000000912 000173433 000317389 default 094220741 +000000912 000347034 000401743 default 013863152 +000000912 000381711 000446437 default 000963058 +000000912 000585898 000465172 default 059224230 +000000912 000751265 000620313 default 044401008 +000000912 000820440 000731142 default 061966478 +000000912 000994178 000740864 default 028354777 +000000912 000996411 000853014 default 081979792 +000000913 000041811 000076879 default 071554681 +000000913 000118373 000083608 default 078753228 +000000913 000133766 000145855 default 006959170 +000000913 000189843 000152185 default 012075111 +000000913 000216053 000238705 default 029313171 +000000913 000559750 000348732 default 017686976 +000000913 000809434 000389794 default 020284324 +000000913 000861475 000803857 default 024420849 +000000913 000863682 000915301 default 084343787 +000000913 000925751 000989282 default 044851103 +000000914 000152606 000025086 default 093749650 +000000914 000236030 000232968 default 052315762 +000000914 000280849 000277877 default 071548722 +000000914 000293182 000323286 default 005195704 +000000914 000312736 000506040 default 060739278 +000000914 000361969 000634480 default 096486887 +000000914 000398821 000656046 default 075565370 +000000914 000499982 000687535 default 002610903 +000000914 000682783 000723181 default 080499761 +000000914 000844351 000929921 default 002066263 +000000915 000123360 000041000 default 036474240 +000000915 000240057 000270537 default 065384201 +000000915 000328982 000288462 default 077320577 +000000915 000343068 000377071 default 044340923 +000000915 000511964 000646523 default 020718651 +000000915 000679385 000762564 default 075648140 +000000915 000685878 000877360 default 018764055 +000000915 000806331 000952050 default 042442795 +000000915 000872334 000956147 default 021538200 +000000915 000882008 000957281 default 029067192 +000000916 000234281 000009590 default 054562902 +000000916 000243298 000077370 default 015569367 +000000916 000280149 000447195 default 051726558 +000000916 000402818 000547401 default 034235053 +000000916 000432586 000599627 default 030725443 +000000916 000493265 000606170 default 071414858 +000000916 000663864 000803204 default 023415770 +000000916 000946106 000841614 default 013259436 +000000916 000946692 000966476 default 091786057 +000000916 000992793 000988579 default 004015874 +000000917 000126931 000005789 default 026155168 +000000917 000142089 000295467 default 001525832 +000000917 000281529 000391182 default 092195541 +000000917 000323497 000408823 default 058489875 +000000917 000459326 000484103 default 010193385 +000000917 000651673 000529247 default 016603156 +000000917 000687020 000588290 default 008470753 +000000917 000786710 000626007 default 034747669 +000000917 000884815 000736407 default 096062475 +000000917 000998942 000862190 default 086491936 +000000918 000005972 000161541 default 004569223 +000000918 000056536 000266171 default 035443355 +000000918 000111067 000281133 default 049626513 +000000918 000247490 000319459 default 025218364 +000000918 000618999 000367469 default 077269883 +000000918 000679871 000379066 default 065470941 +000000918 000818465 000425912 default 086814352 +000000918 000821214 000461964 default 079359658 +000000918 000905887 000566233 default 003991251 +000000918 000992630 000992327 default 079439858 +000000919 000264892 000010314 default 005174655 +000000919 000269896 000108675 default 066665083 +000000919 000329512 000211220 default 042636914 +000000919 000373340 000249815 default 021807812 +000000919 000423195 000396320 default 084946373 +000000919 000433208 000473379 default 010250275 +000000919 000654768 000492509 default 088880345 +000000919 000777612 000715583 default 086715481 +000000919 000849324 000833202 default 095871617 +000000919 000951404 000934269 default 096097713 +000000920 000078546 000119686 default 011108867 +000000920 000104012 000140958 default 063089755 +000000920 000129786 000206992 default 088923957 +000000920 000207887 000446390 default 019976746 +000000920 000487404 000680680 default 033706081 +000000920 000627287 000774257 default 030771095 +000000920 000699560 000791424 default 065482471 +000000920 000751287 000823986 default 006621999 +000000920 000883216 000834470 default 027509025 +000000920 000929638 000907559 default 026550386 +000000921 000001761 000011087 default 044851813 +000000921 000218911 000244871 default 012684259 +000000921 000285858 000465515 default 051190515 +000000921 000367483 000557806 default 056099757 +000000921 000534027 000634547 default 080878736 +000000921 000598734 000696075 default 039206682 +000000921 000668642 000796522 default 027660441 +000000921 000775424 000882066 default 080773023 +000000921 000843841 000936566 default 091158614 +000000921 000963451 000948229 default 032431531 +000000922 000208134 000068100 default 008751347 +000000922 000220365 000240753 default 036902682 +000000922 000374247 000242815 default 017934713 +000000922 000485354 000330035 default 023612014 +000000922 000620248 000536142 default 002309889 +000000922 000705696 000605454 default 047570678 +000000922 000824570 000660952 default 007274408 +000000922 000834930 000778685 default 083327819 +000000922 000858023 000804803 default 098620291 +000000922 000941093 000875646 default 069906710 +000000923 000029622 000133331 default 079151604 +000000923 000204832 000188584 default 012995735 +000000923 000277855 000317567 default 008061814 +000000923 000381114 000326393 default 059987401 +000000923 000463429 000687492 default 020698015 +000000923 000482022 000700859 default 084998832 +000000923 000748894 000709660 default 021376035 +000000923 000824953 000839349 default 069763619 +000000923 000942999 000880670 default 007184646 +000000923 000955431 000957135 default 047060793 +000000924 000085460 000277004 default 007285860 +000000924 000168261 000329475 default 088210747 +000000924 000219484 000401795 default 078339291 +000000924 000309546 000584591 default 051299833 +000000924 000450595 000638624 default 075160748 +000000924 000498213 000659670 default 034710881 +000000924 000652183 000773692 default 008626238 +000000924 000867802 000801620 default 055643668 +000000924 000899668 000955296 default 075622740 +000000924 000903068 000999449 default 099049613 +000000925 000014275 000022408 default 020053059 +000000925 000064106 000024751 default 062056005 +000000925 000068943 000162558 default 065742294 +000000925 000341843 000163784 default 046942917 +000000925 000550486 000398618 default 023713249 +000000925 000562079 000556433 default 089580910 +000000925 000639582 000649355 default 031204851 +000000925 000759718 000684334 default 036233746 +000000925 000828740 000822616 default 050163734 +000000925 000968004 000849035 default 007030100 +000000926 000046032 000027529 default 014936353 +000000926 000060788 000188258 default 029731074 +000000926 000090642 000256084 default 047227842 +000000926 000118845 000408310 default 004032918 +000000926 000173750 000426922 default 075081775 +000000926 000423568 000458826 default 053530499 +000000926 000482622 000623154 default 036115685 +000000926 000514099 000691808 default 091885075 +000000926 000652829 000808990 default 092117612 +000000926 000828560 000897678 default 084575888 +000000927 000142464 000202500 default 008544837 +000000927 000241963 000220482 default 064756793 +000000927 000266837 000281130 default 025622380 +000000927 000436579 000314732 default 040596252 +000000927 000657856 000353042 default 030179022 +000000927 000679722 000358761 default 029734158 +000000927 000681636 000498209 default 047640494 +000000927 000730846 000563547 default 085884028 +000000927 000805401 000615957 default 006379614 +000000927 000815064 000775539 default 000288494 +000000928 000090149 000069254 default 014530415 +000000928 000342778 000120718 default 057474217 +000000928 000372156 000322358 default 008403380 +000000928 000439152 000398096 default 093749428 +000000928 000453324 000409475 default 003985259 +000000928 000464453 000505969 default 043842788 +000000928 000584448 000639850 default 041672125 +000000928 000654541 000775969 default 029041995 +000000928 000685513 000879793 default 070286153 +000000928 000735243 000913382 default 048116675 +000000929 000023902 000054240 default 083281954 +000000929 000068318 000120754 default 043537575 +000000929 000210239 000164503 default 015076615 +000000929 000210695 000262264 default 093393270 +000000929 000363730 000314495 default 043846385 +000000929 000483710 000456745 default 045675528 +000000929 000577305 000570450 default 081821135 +000000929 000702950 000658698 default 063238017 +000000929 000760390 000866714 default 082350133 +000000929 000929568 000975258 default 051819799 +000000930 000097607 000003487 default 005601437 +000000930 000128652 000030337 default 024832516 +000000930 000183488 000568027 default 078644523 +000000930 000201775 000583207 default 064734491 +000000930 000235858 000620152 default 094944801 +000000930 000308506 000876764 default 093913395 +000000930 000391884 000887877 default 028054155 +000000930 000399830 000898947 default 068154807 +000000930 000401012 000966642 default 041055106 +000000930 000645358 000966762 default 058868592 +000000931 000128952 000158240 default 037041849 +000000931 000434399 000271153 default 056111500 +000000931 000533837 000325258 default 010520071 +000000931 000583415 000409121 default 054405398 +000000931 000610806 000410747 default 027432648 +000000931 000671203 000459603 default 092101879 +000000931 000799091 000649463 default 061097887 +000000931 000881324 000911110 default 070448946 +000000931 000932659 000933536 default 073638264 +000000931 000940879 000980929 default 055646455 +000000932 000076049 000102531 default 031250019 +000000932 000179381 000117844 default 075126822 +000000932 000201798 000248607 default 054532519 +000000932 000263658 000300031 default 009677276 +000000932 000419999 000522474 default 054318825 +000000932 000586569 000567257 default 006720247 +000000932 000643570 000590941 default 031943558 +000000932 000829403 000754762 default 065832834 +000000932 000876790 000756339 default 006347200 +000000932 000918399 000885931 default 073659733 +000000933 000113408 000171849 default 069627040 +000000933 000147436 000246972 default 017949179 +000000933 000152481 000280264 default 014124719 +000000933 000227603 000377125 default 094201796 +000000933 000507737 000427950 default 056558018 +000000933 000559619 000608209 default 007000741 +000000933 000674376 000675786 default 072346987 +000000933 000764079 000729654 default 033260713 +000000933 000770792 000837671 default 055783576 +000000933 000897157 000919909 default 062004333 +000000934 000029343 000239359 default 006108580 +000000934 000035204 000266756 default 008921311 +000000934 000137674 000271578 default 086106046 +000000934 000278660 000477954 default 068963931 +000000934 000397192 000482067 default 037349889 +000000934 000475765 000642457 default 026378336 +000000934 000623265 000718354 default 082325257 +000000934 000681917 000724821 default 043325435 +000000934 000710572 000822983 default 084992177 +000000934 000742711 000902741 default 068442061 +000000935 000041083 000060013 default 003952935 +000000935 000041704 000143419 default 064617507 +000000935 000379896 000146347 default 001484872 +000000935 000464816 000207880 default 047341985 +000000935 000476751 000273255 default 079419013 +000000935 000549164 000375364 default 054247943 +000000935 000682287 000444358 default 069967427 +000000935 000724576 000695979 default 025773276 +000000935 000819609 000743385 default 097835504 +000000935 000842529 000859424 default 038237946 +000000936 000178743 000115357 default 063205172 +000000936 000315146 000143561 default 029710106 +000000936 000350171 000303134 default 031049517 +000000936 000394162 000411173 default 028106317 +000000936 000402932 000430040 default 096845979 +000000936 000424337 000573037 default 038646326 +000000936 000468543 000719444 default 061456761 +000000936 000516640 000745915 default 071919419 +000000936 000788524 000770285 default 045730380 +000000936 000910452 000912323 default 011246670 +000000937 000121020 000374094 default 092428904 +000000937 000142326 000411388 default 072540097 +000000937 000180412 000522132 default 064442876 +000000937 000181765 000591272 default 069890814 +000000937 000225599 000688255 default 037664545 +000000937 000571107 000740578 default 095081998 +000000937 000653065 000802149 default 060532214 +000000937 000744596 000804819 default 045714922 +000000937 000922619 000832137 default 039767866 +000000937 000968890 000847687 default 047292802 +000000938 000127636 000050353 default 061346292 +000000938 000132809 000201348 default 082837989 +000000938 000181130 000309426 default 082057862 +000000938 000504375 000457621 default 055480218 +000000938 000511360 000550123 default 063840934 +000000938 000513805 000625581 default 082841200 +000000938 000603050 000663484 default 066187517 +000000938 000754671 000767020 default 099974057 +000000938 000769185 000794404 default 038141469 +000000938 000790801 000952383 default 037538822 +000000939 000151791 000022217 default 010756860 +000000939 000199745 000033672 default 049402178 +000000939 000221196 000386320 default 096240002 +000000939 000378345 000427402 default 038924355 +000000939 000532425 000472339 default 064611163 +000000939 000564644 000488096 default 088914255 +000000939 000592933 000665405 default 052192491 +000000939 000655255 000710722 default 034340300 +000000939 000687700 000881338 default 079359863 +000000939 000784468 000937973 default 068405682 +000000940 000055026 000237873 default 046746441 +000000940 000056580 000329378 default 090155102 +000000940 000254920 000422252 default 047204160 +000000940 000467580 000422902 default 089759267 +000000940 000520414 000486578 default 012803707 +000000940 000561741 000512855 default 010044287 +000000940 000577191 000548348 default 069628340 +000000940 000700365 000554133 default 049551645 +000000940 000884919 000853882 default 018863140 +000000940 000923828 000897845 default 047990749 +000000941 000038568 000067589 default 082134925 +000000941 000042356 000069532 default 082805127 +000000941 000059012 000070157 default 044953912 +000000941 000095868 000096840 default 090704838 +000000941 000230923 000272554 default 013594516 +000000941 000409635 000464567 default 066552972 +000000941 000448751 000603897 default 031862459 +000000941 000649656 000676302 default 034542670 +000000941 000799646 000710241 default 034972494 +000000941 000810885 000930885 default 078432935 +000000942 000189846 000081298 default 010267471 +000000942 000309745 000170800 default 064859629 +000000942 000458782 000268718 default 051463083 +000000942 000492395 000448013 default 040115625 +000000942 000509781 000737314 default 053701921 +000000942 000552768 000776777 default 094867880 +000000942 000726826 000858897 default 035954967 +000000942 000802761 000879823 default 050961426 +000000942 000863896 000913854 default 027771064 +000000942 000959936 000961422 default 016747317 +000000943 000081643 000236912 default 085204026 +000000943 000296451 000244303 default 055031164 +000000943 000559493 000284667 default 027376160 +000000943 000618921 000352808 default 039984965 +000000943 000621653 000411481 default 072428257 +000000943 000767174 000471513 default 080496347 +000000943 000890757 000491721 default 058333151 +000000943 000893163 000724447 default 046656654 +000000943 000961553 000765979 default 045532227 +000000943 000985019 000861204 default 098183472 +000000944 000013490 000068085 default 027321281 +000000944 000176338 000198648 default 013410597 +000000944 000320297 000269535 default 030528705 +000000944 000499775 000287956 default 099089440 +000000944 000522997 000592928 default 090342242 +000000944 000591157 000635051 default 079692283 +000000944 000756984 000640065 default 073827681 +000000944 000896864 000763634 default 082337522 +000000944 000911641 000920702 default 005992328 +000000944 000976321 000974785 default 007793104 +000000945 000056234 000229599 default 063363508 +000000945 000201219 000234608 default 016498695 +000000945 000224537 000289153 default 009017967 +000000945 000241947 000342481 default 085020570 +000000945 000399215 000349165 default 042792592 +000000945 000484843 000457905 default 065240800 +000000945 000556595 000683088 default 096318077 +000000945 000580762 000792629 default 077237796 +000000945 000683002 000880375 default 046828315 +000000945 000769171 000991057 default 013636216 +000000946 000027938 000037118 default 039860175 +000000946 000048591 000126588 default 083591730 +000000946 000079727 000421599 default 063419814 +000000946 000152037 000525826 default 095529361 +000000946 000362056 000570937 default 023602106 +000000946 000398086 000605252 default 099895163 +000000946 000508786 000756815 default 040189022 +000000946 000521089 000794775 default 045502478 +000000946 000749653 000951733 default 030990364 +000000946 000959431 000959732 default 089832809 +000000947 000161230 000036724 default 062005139 +000000947 000325418 000057283 default 051213543 +000000947 000358352 000254948 default 043110588 +000000947 000380137 000310653 default 065079366 +000000947 000416298 000359239 default 064311751 +000000947 000488101 000437157 default 003017070 +000000947 000503263 000668830 default 089955930 +000000947 000719627 000717139 default 078483639 +000000947 000782079 000821580 default 009635394 +000000947 000942048 000867127 default 005381796 +000000948 000094732 000093251 default 076219615 +000000948 000276612 000130154 default 097852897 +000000948 000278999 000358310 default 094908207 +000000948 000335822 000448005 default 015313207 +000000948 000387982 000454555 default 083917467 +000000948 000457504 000498328 default 031013259 +000000948 000470267 000834559 default 099005144 +000000948 000752734 000834591 default 048851604 +000000948 000780571 000843008 default 001856138 +000000948 000923995 000980980 default 097244277 +000000949 000016914 000140792 default 041961594 +000000949 000058001 000148883 default 035044121 +000000949 000105288 000289872 default 071389367 +000000949 000137941 000389038 default 017563209 +000000949 000292449 000443966 default 076480991 +000000949 000393236 000510692 default 063859231 +000000949 000454517 000615357 default 058384196 +000000949 000729183 000778084 default 016337196 +000000949 000869553 000918077 default 017644047 +000000949 000884021 000941763 default 003027009 +000000950 000071654 000011695 default 006006420 +000000950 000326391 000144120 default 083351475 +000000950 000327644 000180741 default 073528279 +000000950 000421249 000316883 default 061710042 +000000950 000467898 000373514 default 090994862 +000000950 000616655 000396243 default 032270917 +000000950 000909635 000467260 default 013196139 +000000950 000963261 000640308 default 002829440 +000000950 000989288 000671278 default 066311978 +000000950 000998647 000929961 default 035255544 +000000951 000106898 000032746 default 038024409 +000000951 000225458 000045003 default 082690502 +000000951 000306421 000258613 default 016798743 +000000951 000541488 000345540 default 087134445 +000000951 000573695 000457487 default 054396510 +000000951 000736236 000684792 default 012014505 +000000951 000751283 000718049 default 050374474 +000000951 000878418 000755250 default 074757911 +000000951 000901936 000949156 default 063740802 +000000951 000956279 000995467 default 011498797 +000000952 000089467 000053486 default 046022262 +000000952 000265745 000171555 default 052608719 +000000952 000282195 000180916 default 010576471 +000000952 000310786 000269118 default 030676271 +000000952 000482482 000276420 default 089843649 +000000952 000504874 000517831 default 053350791 +000000952 000516988 000548653 default 057467388 +000000952 000861069 000585335 default 000785580 +000000952 000900151 000705206 default 086830213 +000000952 000932484 000936241 default 033741601 +000000953 000086487 000178762 default 022957482 +000000953 000132525 000305262 default 021943100 +000000953 000164255 000357500 default 081081105 +000000953 000292501 000576982 default 095501239 +000000953 000366954 000618976 default 052463840 +000000953 000499432 000752531 default 042527912 +000000953 000674945 000830436 default 072203298 +000000953 000805643 000842703 default 062506230 +000000953 000922377 000908840 default 055355984 +000000953 000985175 000916863 default 008254196 +000000954 000038201 000205209 default 075087817 +000000954 000088082 000238166 default 085954909 +000000954 000173530 000289650 default 044172826 +000000954 000203352 000293484 default 080559272 +000000954 000229051 000317461 default 089452306 +000000954 000305917 000371211 default 062879868 +000000954 000394988 000448734 default 083758701 +000000954 000557291 000668976 default 073742598 +000000954 000588019 000884301 default 034303860 +000000954 000952992 000972697 default 084203571 +000000955 000002040 000006726 default 009438599 +000000955 000006501 000061624 default 011792249 +000000955 000017283 000310462 default 002377552 +000000955 000136358 000326693 default 042340525 +000000955 000189633 000343434 default 029522118 +000000955 000309739 000380650 default 019947137 +000000955 000326318 000486027 default 021171571 +000000955 000338099 000634636 default 034552409 +000000955 000762405 000679632 default 064933593 +000000955 000885127 000952980 default 081856760 +000000956 000085479 000081343 default 067313105 +000000956 000357199 000100219 default 034676964 +000000956 000385362 000149211 default 052146075 +000000956 000443477 000238225 default 070493812 +000000956 000550962 000428016 default 077409978 +000000956 000604630 000585616 default 019707507 +000000956 000612372 000652366 default 009338997 +000000956 000643318 000727902 default 098320609 +000000956 000659446 000777310 default 025832602 +000000956 000988096 000893649 default 004914934 +000000957 000022476 000083000 default 035508370 +000000957 000023604 000105415 default 066144122 +000000957 000109216 000169806 default 062203535 +000000957 000117643 000257892 default 095818643 +000000957 000236999 000356315 default 065906960 +000000957 000442812 000376748 default 055776844 +000000957 000465661 000531815 default 042247233 +000000957 000661370 000574555 default 010045307 +000000957 000803151 000592766 default 044909485 +000000957 000999793 000626719 default 000737180 +000000958 000133560 000035280 default 018318724 +000000958 000146566 000164411 default 025347790 +000000958 000207974 000397743 default 028870587 +000000958 000217508 000512956 default 097897630 +000000958 000272926 000540347 default 051463820 +000000958 000640204 000618028 default 020126356 +000000958 000667468 000635978 default 021853983 +000000958 000798979 000674881 default 047737445 +000000958 000827744 000709071 default 057400477 +000000958 000958016 000789567 default 063205297 +000000959 000123242 000123323 default 077869629 +000000959 000267095 000145941 default 078429977 +000000959 000355091 000202318 default 011085641 +000000959 000469808 000282264 default 085786424 +000000959 000522234 000292585 default 019236938 +000000959 000775261 000299763 default 014229077 +000000959 000810514 000308987 default 086952632 +000000959 000846079 000380414 default 010814005 +000000959 000852037 000690250 default 052180751 +000000959 000858522 000951362 default 025843450 +000000960 000084149 000227382 default 080370090 +000000960 000155556 000328805 default 013652810 +000000960 000168853 000405331 default 044347896 +000000960 000193790 000419596 default 070929679 +000000960 000311753 000550370 default 005177631 +000000960 000358150 000764431 default 091899583 +000000960 000680744 000823648 default 078760807 +000000960 000830003 000883645 default 031115513 +000000960 000906842 000980354 default 010102827 +000000960 000923253 000993873 default 080252876 +000000961 000012923 000150328 default 067908672 +000000961 000087947 000159914 default 047344496 +000000961 000100221 000299787 default 001791203 +000000961 000122642 000321532 default 066821461 +000000961 000148703 000322558 default 013158408 +000000961 000437449 000356758 default 037988755 +000000961 000467857 000640469 default 002764831 +000000961 000574724 000859848 default 060588276 +000000961 000644483 000862364 default 070160713 +000000961 000995086 000963488 default 048074468 +000000962 000072015 000068741 default 030194797 +000000962 000085114 000244654 default 047399311 +000000962 000107258 000263055 default 068158624 +000000962 000333413 000372113 default 087434659 +000000962 000383956 000415824 default 011109062 +000000962 000466392 000487969 default 067825763 +000000962 000760278 000512847 default 090299640 +000000962 000790254 000801087 default 004981488 +000000962 000883240 000951637 default 021305639 +000000962 000948570 000953142 default 063653539 +000000963 000060301 000011321 default 035293270 +000000963 000060471 000108882 default 027496844 +000000963 000060859 000158270 default 094555412 +000000963 000169613 000367603 default 009424569 +000000963 000205125 000501256 default 034429642 +000000963 000227080 000575586 default 077572657 +000000963 000612287 000703303 default 054829475 +000000963 000628579 000780080 default 067052474 +000000963 000769120 000786880 default 070058035 +000000963 000813050 000823968 default 098891758 +000000964 000113100 000285978 default 040507397 +000000964 000127968 000354133 default 075679210 +000000964 000216475 000442066 default 064084623 +000000964 000334860 000445375 default 049741762 +000000964 000421238 000450866 default 003169177 +000000964 000584361 000705385 default 089699724 +000000964 000667721 000819069 default 096906668 +000000964 000692647 000894024 default 018363103 +000000964 000767922 000976768 default 084088342 +000000964 000774628 000984348 default 002352990 +000000965 000038444 000028955 default 071526793 +000000965 000059463 000041853 default 012212698 +000000965 000063510 000108237 default 007854239 +000000965 000139127 000365319 default 065748411 +000000965 000220838 000502035 default 066597285 +000000965 000659657 000530019 default 042598544 +000000965 000735033 000533801 default 001365710 +000000965 000747569 000699877 default 095249151 +000000965 000821593 000775517 default 037339231 +000000965 000987308 000915931 default 000196694 +000000966 000002102 000027128 default 094192503 +000000966 000016635 000138782 default 035915623 +000000966 000141663 000330023 default 046028165 +000000966 000211976 000578803 default 081925069 +000000966 000314376 000582948 default 070980541 +000000966 000315688 000634513 default 034131924 +000000966 000540636 000837849 default 087827384 +000000966 000616440 000874241 default 044422098 +000000966 000753521 000907518 default 082407668 +000000966 000919033 000996039 default 021677252 +000000967 000085176 000002415 default 081803232 +000000967 000192691 000021666 default 064833177 +000000967 000447288 000305528 default 050553652 +000000967 000547546 000360267 default 099072989 +000000967 000562774 000360647 default 094977470 +000000967 000603378 000434058 default 057332964 +000000967 000648136 000449109 default 051465008 +000000967 000711763 000487833 default 081868107 +000000967 000727666 000789649 default 018495783 +000000967 000816250 000979942 default 020595142 +000000968 000048786 000304846 default 032043440 +000000968 000080106 000426630 default 082758238 +000000968 000094249 000429749 default 061030021 +000000968 000107235 000486307 default 044145124 +000000968 000155322 000564790 default 042592855 +000000968 000170611 000599551 default 019302552 +000000968 000172246 000717371 default 067259246 +000000968 000209804 000733199 default 016916035 +000000968 000792603 000790211 default 033170563 +000000968 000843083 000805223 default 048736771 +000000969 000039784 000119612 default 090455313 +000000969 000137885 000235415 default 085907641 +000000969 000196586 000259534 default 044315839 +000000969 000300651 000266054 default 040221346 +000000969 000337614 000343531 default 010254120 +000000969 000380726 000600349 default 000217769 +000000969 000414444 000789628 default 020445480 +000000969 000595204 000805822 default 020197607 +000000969 000828853 000887285 default 097429292 +000000969 000899424 000943892 default 017785610 +000000970 000038718 000170475 default 062630421 +000000970 000083208 000234611 default 036815473 +000000970 000304565 000266466 default 061302896 +000000970 000344317 000280785 default 057308830 +000000970 000357371 000285480 default 046468861 +000000970 000362588 000408599 default 094635575 +000000970 000564740 000488953 default 015986019 +000000970 000594836 000745859 default 024392434 +000000970 000892577 000802472 default 019982059 +000000970 000975473 000931169 default 098447627 +000000971 000007322 000100676 default 015549122 +000000971 000371603 000117577 default 096129183 +000000971 000527557 000149071 default 041315089 +000000971 000708453 000270184 default 029350158 +000000971 000710666 000381488 default 051769082 +000000971 000755918 000394990 default 040165332 +000000971 000819964 000484220 default 056089340 +000000971 000826288 000605336 default 072306100 +000000971 000884944 000629088 default 071790614 +000000971 000902548 000764027 default 093067768 +000000972 000120466 000395353 default 063536643 +000000972 000140623 000413327 default 005860010 +000000972 000507353 000463386 default 008067266 +000000972 000516086 000515533 default 013390952 +000000972 000547905 000653628 default 060759760 +000000972 000549802 000668988 default 076656195 +000000972 000596742 000820785 default 096237744 +000000972 000711491 000889622 default 014760285 +000000972 000734860 000900418 default 072081340 +000000972 000902691 000932505 default 012559286 +000000973 000051977 000147168 default 073863447 +000000973 000345793 000147485 default 019510021 +000000973 000382829 000256573 default 036558702 +000000973 000537828 000265982 default 093257389 +000000973 000554843 000366985 default 086018614 +000000973 000573943 000447898 default 015139746 +000000973 000606070 000555904 default 073585027 +000000973 000773817 000635984 default 021078933 +000000973 000781894 000943869 default 015794104 +000000973 000809594 000952628 default 060805677 +000000974 000044272 000028030 default 062890825 +000000974 000061929 000080973 default 065382966 +000000974 000189821 000096581 default 012014603 +000000974 000253094 000114794 default 009162412 +000000974 000450376 000306693 default 007414599 +000000974 000516514 000332881 default 041074882 +000000974 000608680 000465670 default 058778860 +000000974 000815728 000491307 default 067722705 +000000974 000954069 000540872 default 032986884 +000000974 000960713 000686765 default 085937805 +000000975 000006416 000115190 default 028989116 +000000975 000099783 000273621 default 026801983 +000000975 000373050 000292294 default 013842220 +000000975 000404991 000493247 default 071695932 +000000975 000558753 000519493 default 019572899 +000000975 000616128 000609289 default 065961805 +000000975 000665739 000612916 default 023954409 +000000975 000806973 000639633 default 017034086 +000000975 000829075 000856012 default 011752711 +000000975 000830980 000897958 default 070685364 +000000976 000061355 000064576 default 086413684 +000000976 000139566 000233863 default 091060599 +000000976 000199950 000334801 default 085491765 +000000976 000547243 000380018 default 002959904 +000000976 000775783 000389125 default 043835035 +000000976 000785444 000679256 default 066048417 +000000976 000857802 000760471 default 071723409 +000000976 000900095 000802576 default 043865092 +000000976 000979038 000804455 default 033168156 +000000976 000998321 000812101 default 046156408 +000000977 000019694 000001160 default 067595332 +000000977 000169174 000052453 default 069797783 +000000977 000264689 000250329 default 003983481 +000000977 000455909 000293673 default 019024679 +000000977 000528955 000322822 default 014911666 +000000977 000544854 000368772 default 025965573 +000000977 000785178 000624755 default 066224438 +000000977 000825616 000708919 default 007173547 +000000977 000845689 000720614 default 027956322 +000000977 000888791 000812536 default 017845054 +000000978 000121861 000083702 default 061540364 +000000978 000312128 000155999 default 036874432 +000000978 000312711 000326378 default 085039115 +000000978 000355336 000462898 default 030226480 +000000978 000552417 000477593 default 013331348 +000000978 000710886 000495998 default 024600526 +000000978 000770379 000502579 default 066248415 +000000978 000931065 000546303 default 022821296 +000000978 000942417 000877851 default 061244689 +000000978 000981682 000930982 default 026410331 +000000979 000245851 000058993 default 087053289 +000000979 000311516 000078754 default 098819863 +000000979 000447495 000186921 default 093429102 +000000979 000545272 000224627 default 080208195 +000000979 000555710 000489609 default 036453518 +000000979 000574583 000510336 default 038037184 +000000979 000629898 000529800 default 058995694 +000000979 000634762 000803073 default 081785387 +000000979 000803268 000971013 default 023953906 +000000979 000920381 000996881 default 043758690 +000000980 000154362 000102670 default 028500131 +000000980 000311050 000102760 default 071674103 +000000980 000399751 000233899 default 093430456 +000000980 000404400 000659952 default 004160374 +000000980 000419456 000666303 default 045117793 +000000980 000498373 000700391 default 065961777 +000000980 000573615 000781952 default 012827306 +000000980 000574249 000859323 default 010624894 +000000980 000684662 000879009 default 089101322 +000000980 000759371 000893122 default 090497977 +000000981 000067025 000077973 default 065256494 +000000981 000080577 000237597 default 064190474 +000000981 000100275 000376694 default 042180469 +000000981 000144183 000414862 default 055354510 +000000981 000178716 000549701 default 075796615 +000000981 000192418 000561757 default 080239092 +000000981 000296451 000857661 default 092180045 +000000981 000474204 000878613 default 016337991 +000000981 000670468 000893199 default 088268955 +000000981 000715399 000939099 default 037270983 +000000982 000042240 000048349 default 059790562 +000000982 000099724 000072870 default 045964255 +000000982 000577402 000118227 default 035927907 +000000982 000698451 000127299 default 040894606 +000000982 000709253 000311325 default 050139008 +000000982 000739686 000352962 default 081959479 +000000982 000906357 000429123 default 051280865 +000000982 000913150 000582032 default 089258036 +000000982 000922660 000650492 default 018617739 +000000982 000985590 000887671 default 009089666 +000000983 000087789 000014403 default 012123225 +000000983 000232887 000080468 default 045378743 +000000983 000261844 000102669 default 011103363 +000000983 000274256 000108104 default 066967224 +000000983 000497477 000114493 default 023906947 +000000983 000560658 000330270 default 057811420 +000000983 000656821 000411463 default 012937084 +000000983 000688747 000477241 default 022723654 +000000983 000765090 000496041 default 075527368 +000000983 000857509 000655657 default 039624847 +000000984 000053601 000372635 default 071500844 +000000984 000074843 000527503 default 020464448 +000000984 000143037 000654891 default 054268553 +000000984 000188798 000676447 default 020548803 +000000984 000205799 000687939 default 093753739 +000000984 000321921 000698425 default 038247535 +000000984 000367049 000750877 default 059682248 +000000984 000418157 000762065 default 032798358 +000000984 000554682 000791464 default 023640092 +000000984 000823040 000998990 default 087924868 +000000985 000060272 000012534 default 081653641 +000000985 000176624 000052902 default 053253046 +000000985 000499150 000085978 default 025819707 +000000985 000751154 000183523 default 046222999 +000000985 000774537 000228123 default 061371332 +000000985 000804948 000288855 default 025723382 +000000985 000811700 000642990 default 037992283 +000000985 000919694 000813783 default 069496398 +000000985 000977752 000913299 default 088452263 +000000985 000979096 000914823 default 085373265 +000000986 000051473 000051314 default 039897472 +000000986 000078415 000111328 default 059829164 +000000986 000140089 000148883 default 033643693 +000000986 000201848 000544133 default 034959593 +000000986 000213159 000553799 default 018402900 +000000986 000327949 000554998 default 044031228 +000000986 000496755 000708568 default 068259682 +000000986 000770929 000763998 default 094931255 +000000986 000804253 000966398 default 092073353 +000000986 000927919 000977015 default 088484113 +000000987 000107202 000000133 default 079028811 +000000987 000214534 000338565 default 089354713 +000000987 000215549 000381208 default 021677977 +000000987 000249788 000392118 default 079219725 +000000987 000441696 000555367 default 024606497 +000000987 000562224 000576609 default 056502987 +000000987 000633224 000677581 default 045959260 +000000987 000759443 000918051 default 042210903 +000000987 000835458 000929291 default 051874277 +000000987 000905905 000976372 default 001089897 +000000988 000080458 000004084 default 012198487 +000000988 000102739 000047817 default 013819763 +000000988 000330936 000281440 default 082283652 +000000988 000445585 000327890 default 042658186 +000000988 000446114 000360907 default 081700900 +000000988 000549954 000403048 default 025178130 +000000988 000647355 000685303 default 089881302 +000000988 000783217 000826347 default 001999873 +000000988 000808710 000845681 default 008678536 +000000988 000903214 000880021 default 053812113 +000000989 000189813 000017252 default 099760116 +000000989 000239602 000464785 default 005900438 +000000989 000261487 000476034 default 042206422 +000000989 000289282 000531047 default 081345026 +000000989 000289541 000545750 default 052777464 +000000989 000319927 000618268 default 006874354 +000000989 000483532 000719590 default 055591101 +000000989 000689452 000737476 default 078632291 +000000989 000701057 000938841 default 001053947 +000000989 000956473 000996828 default 098051186 +000000990 000071392 000024752 default 007881176 +000000990 000110357 000055187 default 041130741 +000000990 000142346 000079435 default 095644675 +000000990 000144662 000097497 default 065479779 +000000990 000208506 000156694 default 042629463 +000000990 000338586 000259839 default 058416842 +000000990 000462742 000285696 default 027555519 +000000990 000476247 000437974 default 025222941 +000000990 000481134 000628679 default 020327792 +000000990 000829046 000701665 default 006868245 +000000991 000137706 000082957 default 027439556 +000000991 000216969 000111588 default 006892391 +000000991 000228946 000232443 default 097970343 +000000991 000245150 000312781 default 087673116 +000000991 000383297 000520750 default 009474831 +000000991 000535524 000568878 default 040639999 +000000991 000652341 000593373 default 098299176 +000000991 000664721 000651134 default 051046218 +000000991 000682310 000858951 default 062916008 +000000991 000699091 000876150 default 032994348 +000000992 000032300 000073753 default 036902439 +000000992 000042942 000168492 default 032453098 +000000992 000136153 000278692 default 003692289 +000000992 000201278 000491637 default 005532948 +000000992 000268533 000658413 default 032488180 +000000992 000329991 000707280 default 009191523 +000000992 000605937 000757073 default 050069936 +000000992 000719304 000827474 default 019397631 +000000992 000859865 000922454 default 055411791 +000000992 000968283 000930806 default 094954315 +000000993 000002353 000096572 default 028675979 +000000993 000069151 000219683 default 053617348 +000000993 000379813 000257918 default 002372926 +000000993 000450811 000286972 default 022367778 +000000993 000488836 000313717 default 078176817 +000000993 000639432 000369132 default 061215461 +000000993 000670254 000395742 default 056108457 +000000993 000698792 000451081 default 018786220 +000000993 000743292 000823634 default 034808769 +000000993 000930467 000945239 default 033210489 +000000994 000188433 000198540 default 028483548 +000000994 000325002 000363851 default 044577136 +000000994 000494240 000441059 default 092475574 +000000994 000584277 000526038 default 010340273 +000000994 000622826 000593961 default 083877903 +000000994 000825306 000610469 default 004869279 +000000994 000848436 000623648 default 071545941 +000000994 000855062 000714710 default 095769973 +000000994 000978465 000929236 default 074432350 +000000994 000991421 000936484 default 096603800 +000000995 000235787 000002767 default 046905402 +000000995 000255121 000076110 default 085519953 +000000995 000268795 000088976 default 036227243 +000000995 000292789 000211166 default 033579450 +000000995 000311868 000364394 default 056802868 +000000995 000326656 000461115 default 030906882 +000000995 000488291 000494693 default 056223566 +000000995 000517161 000595133 default 096536870 +000000995 000598494 000701479 default 046349695 +000000995 000962203 000819905 default 085216239 +000000996 000031860 000025668 default 022800645 +000000996 000069500 000140480 default 056111939 +000000996 000077103 000216851 default 034447318 +000000996 000077736 000241924 default 032884462 +000000996 000127455 000444464 default 041806220 +000000996 000176075 000728083 default 015935000 +000000996 000246142 000742646 default 026930566 +000000996 000340177 000854420 default 076084861 +000000996 000363283 000952553 default 080417616 +000000996 000973993 000980778 default 050478855 +000000997 000036597 000216298 default 022864709 +000000997 000170270 000306032 default 079533634 +000000997 000457211 000352148 default 064696788 +000000997 000465969 000445121 default 098740874 +000000997 000473992 000616831 default 061255647 +000000997 000589690 000691655 default 037005633 +000000997 000662185 000841988 default 083972083 +000000997 000712203 000847730 default 050160720 +000000997 000765498 000902604 default 069546398 +000000997 000956812 000997076 default 034423019 +000000998 000077525 000104871 default 093544136 +000000998 000118149 000153799 default 019007019 +000000998 000399845 000457151 default 080429665 +000000998 000434350 000473342 default 068400480 +000000998 000456027 000488707 default 009698420 +000000998 000502535 000496433 default 001776014 +000000998 000610953 000535806 default 012222004 +000000998 000622532 000552866 default 044124979 +000000998 000648411 000612767 default 081782720 +000000998 000722397 000675859 default 092007080 +000000999 000130325 000032484 default 003615135 +000000999 000216798 000112966 default 062695486 +000000999 000229895 000170702 default 096387545 +000000999 000301206 000294497 default 079835559 +000000999 000594550 000320352 default 052493659 +000000999 000773163 000549350 default 017795977 +000000999 000839566 000656357 default 002153006 +000000999 000840757 000849677 default 015457952 +000000999 000929785 000856089 default 060444359 +000000999 000990633 000888986 default 004721516 +000001000 000248733 000196027 default 005890165 +000001000 000287876 000211489 default 033170018 +000001000 000361427 000269484 default 009248993 +000001000 000387953 000305594 default 039958063 +000001000 000416712 000310848 default 069380372 +000001000 000416727 000321322 default 050590610 +000001000 000514819 000368270 default 075133015 +000001000 000753512 000430635 default 096283448 +000001000 000772180 000655643 default 071771639 +000001000 000776041 000827435 default 042330992 diff --git a/pace/signatures/demo.py b/pace/signatures/demo.py new file mode 100644 index 0000000..6cb98b1 --- /dev/null +++ b/pace/signatures/demo.py @@ -0,0 +1,200 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Framework for demoing the signature code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 06 Oct 2014 CS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import pyaccumulo + +from pace.signatures.signconfig import VisibilityFieldConfig, ValueConfig, StreamingTableConfig +from pace.signatures.sign import AccumuloSigner +from pace.signatures.verify import AccumuloVerifier, VerificationException +from pace.signatures.acc_sig import PyCryptopp_ECDSA_AccSig + +# Default elements to use +elems = [ + ('Mission A', '0200'), + ('Mission B', '2200'), + ('Mission C', '1000'), + ('Mission D', '0300'), + ('Mission E', '1100'), +] + +def mutation_from_kv_tuple(tup, vis=''): + """ Define a pyaccumulo mutation from a (key, value) formatted tuple. + """ + row, val = tup + print 'Inserting signed row: %s, value: %s' %(row, val) + m = pyaccumulo.Mutation(row) + m.put(cf='', cq='', cv=vis, val=val) + return m + +def write_file_to_table(conn, signer, table, filename, loc='vis'): + """ Write the contents of a file to an Accumulo table. + + Arguments: + conn - a pyaccumulo connection to an Accumulo instance + signer - an AccumuloSigner instance + table - the name of the table to write to + filename - the name of the file to read the elements of + each line should be formatted ',' + """ + + if not conn.table_exists(table): + conn.create_table(table) + + wr = conn.create_batch_writer(table) + + with open(filename, 'r') as f: + for l in f.readlines(): + m = mutation_from_kv_tuple(l.split(',')) + signer.sign_mutation(m) + wr.add_mutation(m) + + wr.close() + +def write_list_to_table(conn, signer, table, data, vis): + """ Write a list to an Accumulo table. + + Arguments: + conn - a pyaccumulo connection to an Accumulo instance + signer - an AccumuloSigner instance + table - the name of the table to write to + data - the list to write to the table, formatted as a list of + (key, value) tuples + """ + + if not conn.table_exists(table): + conn.create_table(table) + + wr = conn.create_batch_writer(table) + + for tup in data: + m = mutation_from_kv_tuple(tup, vis) + if signer: + signer.sign_mutation(m) + wr.add_mutation(m) + + wr.close() + +def run_insert(conn=None, + data=elems, + table='demo', + signClass=PyCryptopp_ECDSA_AccSig, + privkey=None, + loc='val', + default_vis='UNCLASS', + sign=True): + """ Insert a list into the accumulo table specified. + + Arguments: + conn - the Accumulo connection to use. If it is 'None', will create + a connection with default information. + data - the list to insert into the Accumulo table + table - the name of the table to insert to + signClass - the signing algorithm to use, from acc_sig.py + privkey - the private key to use. default: None, which tells it to use + the test key defined by 'signClass' + default_vis - the default visibility label to use. Default: 'UNCLASS' + sign - whether to sign the data before writing it to Accumulo. + Default: True + """ + + if conn is None: + conn = pyaccumulo.Accumulo(host='localhost', + port=42424, + user='root', + password='secret') + + if loc == 'vis': + conf = VisibilityFieldConfig() + elif loc == 'val': + conf = ValueConfig() + elif loc == 'tab': + conf = StreamingTableConfig(conn, '__sig_metadata__' + table) + else: + print 'ERROR: invalid signature location', loc + + if not privkey: + _, privkey = signClass.test_keys() + + if sign: + signer = AccumuloSigner(privkey, sig_f=signClass, conf=conf, + default_visibility=default_vis) + else: + signer = None + + write_list_to_table(conn, signer, table, data, default_vis) + +def run_verify(conn=None, + table='demo', + signClass=PyCryptopp_ECDSA_AccSig, + pubkey=None, + loc='val'): + """ Verifies that a table in an Accumulo instance has been properly signed, + outputting the appropriate error messages if not. + + Arguments: + conn - the Accumulo connection to use. If conn is 'None', will create + a connection with default info. + data - the list to insert into the Accumulo table + table - the name of the table to insert to + signClass - the signing algorithm to use, from acc_sig.py + pubkey - the public key of the signer. default: None, which tells it to + use the test key defined by 'signClass' + """ + + if conn is None: + conn = pyaccumulo.Accumulo(host='localhost', + port=42424, + user='root', + password='secret') + + if loc == 'vis': + conf = VisibilityFieldConfig() + elif loc == 'val': + conf = ValueConfig() + elif loc == 'tab': + conf = StreamingTableConfig(conn, '__sig_metadata__' + table) + else: + print 'ERROR: invalid signature location', loc + + if not pubkey: + pubkey, _ = signClass.test_keys() + + successes = 0 + total = 0 + + verifier = AccumuloVerifier(pubkey, conf=conf) + + for entry in conn.scan(table): + total = total + 1 + try: + verifier.verify_entry(entry) + successes = successes + 1 + except VerificationException as ve: + if ve.cell is not None: + print 'Error: Entry failed to verify.' + print 'Entry row:', ve.cell.row + print 'Entry val:', ve.cell.val + print 'Error message:', ve.msg + print + else: + print 'Error: Entry failed to verify.' + print 'Entry row:', entry.row + print 'Entry val:', entry.val + print 'Error message:', ve.msg + print + + print 'Finished, with %d successes out of %d total entries.' %(successes, total) diff --git a/pace/signatures/full_benchmark_out.csv b/pace/signatures/full_benchmark_out.csv new file mode 100644 index 0000000..e69de29 diff --git a/pace/signatures/keys/bad_store_1 b/pace/signatures/keys/bad_store_1 new file mode 100644 index 0000000..72a83aa --- /dev/null +++ b/pace/signatures/keys/bad_store_1 @@ -0,0 +1,13 @@ +bad_header_and_footer +RSASSA-PSS +PUBKEY STARTS HERE +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAsenJ3aqXVIT99bYH/Ncr +W1RUptBPlG/sdVdyXglWMbnVPlmJjAWLhJY3fA3jcXzj/uIATOMwwXZh4tG6bWEq +OyOF4/ZliDj1v/cnJskoHI8LezNKaPa9mE5xzBuf5gam3srzak3K8xCbp33F5NkZ +E4kOo/9voeaR8qRipfuiKnLjcaTLEVXJmbAFncXModqesMiYW/OXpmQISFU9qvhy +whJmI1KLtplpRtWbPvshkN8oHvZMc8sELD7Ge8wxuoR03a7TxELtPko08mqrYtzg +wOcexejoe6WdLcZWjtDErR+XGwU9BjbMUkho4WIKvlMnu5oZnERKsWR8q7Q2tQdi +mgGQMS5pB2glTdEbtQZmvZsBR3me3OsyRJ/xW7GftL2C9iW32bm1EzAsiOYvwwoc +k8k9aPT5sxEn4MgCQkkVgHC/W0uZWDq8Zrf0Y12gO+IaCN1JCQU9D5eyiOw0NUgV +lmSJ6dgx7c3gtphsWtpI+m7+3Q4lo9b4Z/5CBSFvE4l3AgMBAAE= +PUBKEY ENDS HERE diff --git a/pace/signatures/keys/bad_store_2 b/pace/signatures/keys/bad_store_2 new file mode 100644 index 0000000..26a391a --- /dev/null +++ b/pace/signatures/keys/bad_store_2 @@ -0,0 +1,13 @@ +mismatched_alg_and_key +ECDSA +-----BEGIN PUBLIC KEY----- +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAsenJ3aqXVIT99bYH/Ncr +W1RUptBPlG/sdVdyXglWMbnVPlmJjAWLhJY3fA3jcXzj/uIATOMwwXZh4tG6bWEq +OyOF4/ZliDj1v/cnJskoHI8LezNKaPa9mE5xzBuf5gam3srzak3K8xCbp33F5NkZ +E4kOo/9voeaR8qRipfuiKnLjcaTLEVXJmbAFncXModqesMiYW/OXpmQISFU9qvhy +whJmI1KLtplpRtWbPvshkN8oHvZMc8sELD7Ge8wxuoR03a7TxELtPko08mqrYtzg +wOcexejoe6WdLcZWjtDErR+XGwU9BjbMUkho4WIKvlMnu5oZnERKsWR8q7Q2tQdi +mgGQMS5pB2glTdEbtQZmvZsBR3me3OsyRJ/xW7GftL2C9iW32bm1EzAsiOYvwwoc +k8k9aPT5sxEn4MgCQkkVgHC/W0uZWDq8Zrf0Y12gO+IaCN1JCQU9D5eyiOw0NUgV +lmSJ6dgx7c3gtphsWtpI+m7+3Q4lo9b4Z/5CBSFvE4l3AgMBAAE= +-----END PUBLIC KEY----- diff --git a/pace/signatures/keys/bad_store_3 b/pace/signatures/keys/bad_store_3 new file mode 100644 index 0000000..1359d0e --- /dev/null +++ b/pace/signatures/keys/bad_store_3 @@ -0,0 +1,13 @@ +bad_footer +RSASSA-PSS +-----BEGIN PUBLIC KEY----- +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAsenJ3aqXVIT99bYH/Ncr +W1RUptBPlG/sdVdyXglWMbnVPlmJjAWLhJY3fA3jcXzj/uIATOMwwXZh4tG6bWEq +OyOF4/ZliDj1v/cnJskoHI8LezNKaPa9mE5xzBuf5gam3srzak3K8xCbp33F5NkZ +E4kOo/9voeaR8qRipfuiKnLjcaTLEVXJmbAFncXModqesMiYW/OXpmQISFU9qvhy +whJmI1KLtplpRtWbPvshkN8oHvZMc8sELD7Ge8wxuoR03a7TxELtPko08mqrYtzg +wOcexejoe6WdLcZWjtDErR+XGwU9BjbMUkho4WIKvlMnu5oZnERKsWR8q7Q2tQdi +mgGQMS5pB2glTdEbtQZmvZsBR3me3OsyRJ/xW7GftL2C9iW32bm1EzAsiOYvwwoc +k8k9aPT5sxEn4MgCQkkVgHC/W0uZWDq8Zrf0Y12gO+IaCN1JCQU9D5eyiOw0NUgV +lmSJ6dgx7c3gtphsWtpI+m7+3Q4lo9b4Z/5CBSFvE4l3AgMBAAE= +PUBKEY ENDS HERE diff --git a/pace/signatures/keys/bad_store_4 b/pace/signatures/keys/bad_store_4 new file mode 100644 index 0000000..fb930b7 --- /dev/null +++ b/pace/signatures/keys/bad_store_4 @@ -0,0 +1,4 @@ +empty_key +ECDSA +-----BEGIN PUBLIC KEY----- +-----END PUBLIC KEY----- diff --git a/pace/signatures/keys/bad_store_4b b/pace/signatures/keys/bad_store_4b new file mode 100644 index 0000000..4db22c5 --- /dev/null +++ b/pace/signatures/keys/bad_store_4b @@ -0,0 +1,4 @@ +empty_key +RSASSA-PSS +-----BEGIN PUBLIC KEY----- +-----END PUBLIC KEY----- diff --git a/pace/signatures/keys/test_ecdsa_privkey.pem b/pace/signatures/keys/test_ecdsa_privkey.pem new file mode 100644 index 0000000..aec62bb --- /dev/null +++ b/pace/signatures/keys/test_ecdsa_privkey.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MF8CAQEEGOKhxi8PaRHH9o4Ea4/TMzlKNvMn7QkOLaAKBggqhkjOPQMBAaE0AzIA +BPCVwLGXjzmComKrySTzfkwiWnSto+tQMxzd518ff/5JC+jWBJ+dO/4hAklV6DOw +mg== +-----END EC PRIVATE KEY----- diff --git a/pace/signatures/keys/test_ecdsa_pubkey.pem b/pace/signatures/keys/test_ecdsa_pubkey.pem new file mode 100644 index 0000000..4ebed9a --- /dev/null +++ b/pace/signatures/keys/test_ecdsa_pubkey.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MEkwEwYHKoZIzj0CAQYIKoZIzj0DAQEDMgAE8JXAsZePOYKiYqvJJPN+TCJadK2j +61AzHN3nXx9//kkL6NYEn507/iECSVXoM7Ca +-----END PUBLIC KEY----- diff --git a/pace/signatures/keys/test_privkey.rsa b/pace/signatures/keys/test_privkey.rsa new file mode 100644 index 0000000..a5b19f5 --- /dev/null +++ b/pace/signatures/keys/test_privkey.rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAyKg5w5pWaDT77XpglHgpYH8JgLmrkLpOPJGnecchPDozdZk8 +EachebnGlHrN3E19X5TAlUq0kt4sAVwxmhkLOZ2EO9/6SiTS0RROZNyeds2m7Z5L +Ub1koK4CXFHeKCWYD1RP3OnUuhXO7w5N4OLCUHfSLeM8/rx1uqDZH0xcm+uBlLsb +/2g+PmzeN0njshc97YwrU5yUapwn1YJFqWmhD/GFgHxkjgTkUMs8iaQY7i7Hty0x +zuM6eN2bV+eMPVnuTMkmwBhJ6Z/ViXqK/ytTiZ9lWYCqztGH5AC82aL7EsD8bT/d +Z925EjR23Z2gmCYbIvwq6loEWFzR8bSjO1eHrwIDAQABAoIBAEJWs7pCdVzAX6X0 +tqd/TpaziU3AlMMlhSYrNYZiWk+SIl83yQ9BBSU8UTXXn+W8zL1j7YOuDiMcRsow +U8nRi8+Bjy1IcHRA1l3/a6eW9ODsPssCcX5VskYZIXiqLFtzimFPC5RKzmSzPxXz +0bWO4pU9+APpw8moPvfzo7TgRyHY1b+5SAPxIuediE+FzcFE+Z+RhscS7SPoIPWx +TL7MTZ3U8QOojHliZeNRBNbyxIiF/spAWp1v5bTXQlky+FBvZASEgeBBkWapjoem +V8WzJRnGnlaJ683326YPl5sAxuZm2oTqHHR8OUX3QQnwOshW5+r68n08P9ZBdKKK +QfZ8wjkCgYEA5VYFJovecnpndWlizze8VpzuOHY3HN+CZZ3H00iIhuQUWDA7x3HW +QIfS7VMPIZHQJw0dli9pxVK3kIFGtyu4OwLyXs7gtYbdsx8nvCI3egsHvyPqf3j1 +pKjK5nGhZqp4nPWYbvaisz3ruBA+Zey6vhRfJV6gtJmIs5/BNIxKS9UCgYEA3/ya +t0z7xGhjmd9IDk8+nobe4YZbdPs/Uh394f7ZFi0cG0nIZ35VJG6t5TsxyKPbcI/L +SDvUrlx/urPIDX5VwjlTstHIjmSK/ZjCO3TEXdx0proyhxHm4VqHkTWcHKV2+Rdm +YmVD+0apMVktmMhk2axiJBYAEmggC1JCZjQYG3MCgYEAj0w+j6VZ64IcXzroaL5U +ynHoUBNdwIbQPZpnH9f0pwSgybHpyGeTDmNQIsaBb+Jig+QoFo2ts4RJ+tssSovg +486ljyQJOKP6p0/STjW7IGEACCjy/4+fPbHShkd+KF5gWwMCqmMlqoYIYcyUkK9o +yBiGkx0boX1F86bg3GrEibkCgYBbS0JkY+RacZHnLbLY4kPLqX0+vtyYGa/9cGwC +qTUibNB/7trYFA3wA4ytWis4dFEE2BcrIffV+a22E4D+vveFaohK4ma0Yxajtpe0 +VCuVdj21lz7w/sL0J0oKTaeLpYWQkZERmeTTjkF387k6BLPWZQS7YJw25GnrM2QM +9D6/MQKBgEPmZCgKB56vddVbBYzgX1faOjAqz2dzyJPIjzjfxh+V+8ukxuR0WFoI +/BFSXnF1/Z5hLuRIim0pSWYecbMJDNFDP7mQJ6BHQGY3kI3KvkIpuBuspPQTjZBM +V8GeVVopd4FESQZqKl40SzPnnh3sU8JkIS2ZJTkfXBg9je7Wy174 +-----END RSA PRIVATE KEY----- diff --git a/pace/signatures/keys/test_privkey_3072.rsa b/pace/signatures/keys/test_privkey_3072.rsa new file mode 100644 index 0000000..0d8551b --- /dev/null +++ b/pace/signatures/keys/test_privkey_3072.rsa @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4wIBAAKCAYEAsenJ3aqXVIT99bYH/NcrW1RUptBPlG/sdVdyXglWMbnVPlmJ +jAWLhJY3fA3jcXzj/uIATOMwwXZh4tG6bWEqOyOF4/ZliDj1v/cnJskoHI8LezNK +aPa9mE5xzBuf5gam3srzak3K8xCbp33F5NkZE4kOo/9voeaR8qRipfuiKnLjcaTL +EVXJmbAFncXModqesMiYW/OXpmQISFU9qvhywhJmI1KLtplpRtWbPvshkN8oHvZM +c8sELD7Ge8wxuoR03a7TxELtPko08mqrYtzgwOcexejoe6WdLcZWjtDErR+XGwU9 +BjbMUkho4WIKvlMnu5oZnERKsWR8q7Q2tQdimgGQMS5pB2glTdEbtQZmvZsBR3me +3OsyRJ/xW7GftL2C9iW32bm1EzAsiOYvwwock8k9aPT5sxEn4MgCQkkVgHC/W0uZ +WDq8Zrf0Y12gO+IaCN1JCQU9D5eyiOw0NUgVlmSJ6dgx7c3gtphsWtpI+m7+3Q4l +o9b4Z/5CBSFvE4l3AgMBAAECggGAJGKWuTG5Lzzfn0+yBICQymXNxivWCpp1Nm5C +4n5wVU0XEmBHZA6CQQRjpohEmqIbErZvr0nLX9VxIW0Y/mOfumaCbGOo0hosEC1g +oWsEPAr5IyITNrI3hh2M4lxH8Egt+mRxMa1lMx6TZsavISVRHpCqINoNn4PDF2eN +ETsMKDhE0aoNKadsynSYQXMBbZyDVc5AcpW3zvyoQPrF2OBkv9H5d4HbNuXbBPSM +gm3jqHgrAWIHsqqzWMUh3JGfHfEWifoWKQRgTzoPyC7sYndKaQJkUtflfWiRkzt9 +1h+FPt2KFs1NZrX0oB2kdmBytbz9r44b0g4E5iL+wIYq6NIu9oeaoYh1PpjoSgZK +JG9eUslpzdTdAGx40Ser7mKTYwI5n5xwIlWHmWKGUZLcLxnz8QTNFbq30dZFrOde +JOokFQPWgxrxyqngrB/quSPrXLyJ8XMbcek27zl4N3OrLawR7MBrET1txTB1fzY8 +MWl78QyOX8AYzeY3uRpAeTLH3aApAoHBAOTmTV0SBWoQPkRu5ZNvhxrIz83f59xF +Gcl77hpKHRoAR3iw2QGL8110FqcECcMG9TOT88QZhRD2rUR23+n63ZCel1qUL8oz +iWUWv1h1jP7pG7zODkXJe2qLEzpb8gY4DllKNqkk4tJz/lAcW7zJq3eqEDaAT5hl +lIDwNN+JP0ne1EIonKTlJyVTrYKpzhI9zt9C3paJ9qnLqdvL67RqWvJkfjV+5WXU +g1JhmukqNBFhCkDggHYSrnxfp3uqqPi8AwKBwQDG+iUMIVBGyEduO454M+YutSyy +2ZvEhplv6+E7rU5tO0syQuQam1AGkX9mTKPdVcvz7MtwpaT7QJ8IGmCcYqWIFiXf +uwq/hfV9hs5gPg5JXg343ZdnVX2FK/ov9KxB1FisGSVXXHU3qP2SXWuMC8ghg1Ei +L6UbwdYz350ExVtWrdBNO7lNq5W2u2o2RzUlf7kL0zPljDNicl5+tv2pi3jhzUfl +T/CNR5Eox4hat2jOr81y5M45pYttjwanlIL6lH0CgcEAjtuFUR7cLjPxCLjFo1yp +z3eg6fZiOMEPtQYZtmKnAwFFmfeVmDeGLb80HAyTIxsGkag3LR5YRBwQS3h9iwQ8 +n/O6tpdhtCqyB1tJFKZY1wcZfp6Dnd5/niEqYPPdezAlFGkS8EHLJlmqUMlCH/Ml +hsumzr0J8C0Fn+tKtHBuBWaCxr+d8/PomI0+7xuXNx9IK2MKlJ2KSrKHUlxUwQbX +uAwsEKsf9IvLYfD0w6zJTkdoJNF4mzhRmeIBH1eFmaeNAoHABO/L34MsFLV/YDLG +FCFlgp8oHr/bZ4LXZ7l4exyPp5IjCXozYp2b3K3bdVRNdH5ecwza906Ey18NEwxk +fTzNUpUKF4TyfVH7h0PC9wxTGmrk+dm1mfC7DoTKzknJxFBaatqs3IAEwH7G28zJ +kE3yhzJU3v5DoG6su9i+cpHa9EmXs3LZ5B1vt3rq5bHalbWXh72TugxCchzYT1iG +7p/xPdj0AbJ8C2VNKq/YqDeIuCgQdttKao+659r2lU3P+huZAoHAKXuIPUIHDbJg +1C8/oGB5Wzue7NGs4iaFth+U237zvsnw6tsyY4zAryH5aBHkPyM3RaJRTzgcixfE +AkdmZp9na9nZmEKM5m7uF1To0Ji4sWPskuk4VG1VDnggojq0YUZ0pYNPQ+EVcIUV +T6VR/fABouMmXGklb08A0V8i2Vp0CqSHrFwxd8jnzPWE05Eai7hODEfKZ6VrrsF/ +DlWqs6YIp4M+Sw8QUY1ApjPCh1CbPXdSrm71nr0kesZSf3bT0rxV +-----END RSA PRIVATE KEY----- diff --git a/pace/signatures/keys/test_pubkey.rsa b/pace/signatures/keys/test_pubkey.rsa new file mode 100644 index 0000000..8caa376 --- /dev/null +++ b/pace/signatures/keys/test_pubkey.rsa @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIqDnDmlZoNPvtemCUeClgfwmAuauQuk48kad5xyE8OjN1mTwRpyF5ucaUes3cTX1flMCVSrSS3iwBXDGaGQs5nYQ73/pKJNLRFE5k3J52zabtnktRvWSgrgJcUd4oJZgPVE/c6dS6Fc7vDk3g4sJQd9It4zz+vHW6oNkfTFyb64GUuxv/aD4+bN43SeOyFz3tjCtTnJRqnCfVgkWpaaEP8YWAfGSOBORQyzyJpBjuLse3LTHO4zp43ZtX54w9We5MySbAGEnpn9WJeor/K1OJn2VZgKrO0YfkALzZovsSwPxtP91n3bkSNHbdnaCYJhsi/CrqWgRYXNHxtKM7V4ev hduser@ubuntu diff --git a/pace/signatures/keys/test_pubkey_3072.rsa b/pace/signatures/keys/test_pubkey_3072.rsa new file mode 100644 index 0000000..3e2ceb3 --- /dev/null +++ b/pace/signatures/keys/test_pubkey_3072.rsa @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCx6cndqpdUhP31tgf81ytbVFSm0E+Ub+x1V3JeCVYxudU+WYmMBYuEljd8DeNxfOP+4gBM4zDBdmHi0bptYSo7I4Xj9mWIOPW/9ycmySgcjwt7M0po9r2YTnHMG5/mBqbeyvNqTcrzEJunfcXk2RkTiQ6j/2+h5pHypGKl+6IqcuNxpMsRVcmZsAWdxcyh2p6wyJhb85emZAhIVT2q+HLCEmYjUou2mWlG1Zs++yGQ3yge9kxzywQsPsZ7zDG6hHTdrtPEQu0+SjTyaqti3ODA5x7F6Oh7pZ0txlaO0MStH5cbBT0GNsxSSGjhYgq+Uye7mhmcREqxZHyrtDa1B2KaAZAxLmkHaCVN0Ru1Bma9mwFHeZ7c6zJEn/FbsZ+0vYL2JbfZubUTMCyI5i/DChyTyT1o9PmzESfgyAJCSRWAcL9bS5lYOrxmt/RjXaA74hoI3UkJBT0Pl7KI7DQ1SBWWZInp2DHtzeC2mGxa2kj6bv7dDiWj1vhn/kIFIW8TiXc= hduser@ubuntu diff --git a/pace/signatures/keys/test_store b/pace/signatures/keys/test_store new file mode 100644 index 0000000..8e8af68 --- /dev/null +++ b/pace/signatures/keys/test_store @@ -0,0 +1,31 @@ +user1 +RSASSA-PSS +-----BEGIN PUBLIC KEY----- +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAsenJ3aqXVIT99bYH/Ncr +W1RUptBPlG/sdVdyXglWMbnVPlmJjAWLhJY3fA3jcXzj/uIATOMwwXZh4tG6bWEq +OyOF4/ZliDj1v/cnJskoHI8LezNKaPa9mE5xzBuf5gam3srzak3K8xCbp33F5NkZ +E4kOo/9voeaR8qRipfuiKnLjcaTLEVXJmbAFncXModqesMiYW/OXpmQISFU9qvhy +whJmI1KLtplpRtWbPvshkN8oHvZMc8sELD7Ge8wxuoR03a7TxELtPko08mqrYtzg +wOcexejoe6WdLcZWjtDErR+XGwU9BjbMUkho4WIKvlMnu5oZnERKsWR8q7Q2tQdi +mgGQMS5pB2glTdEbtQZmvZsBR3me3OsyRJ/xW7GftL2C9iW32bm1EzAsiOYvwwoc +k8k9aPT5sxEn4MgCQkkVgHC/W0uZWDq8Zrf0Y12gO+IaCN1JCQU9D5eyiOw0NUgV +lmSJ6dgx7c3gtphsWtpI+m7+3Q4lo9b4Z/5CBSFvE4l3AgMBAAE= +-----END PUBLIC KEY----- +user2 +RSASSA-PKCS1-v1_5 +-----BEGIN PUBLIC KEY----- +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAsenJ3aqXVIT99bYH/Ncr +W1RUptBPlG/sdVdyXglWMbnVPlmJjAWLhJY3fA3jcXzj/uIATOMwwXZh4tG6bWEq +OyOF4/ZliDj1v/cnJskoHI8LezNKaPa9mE5xzBuf5gam3srzak3K8xCbp33F5NkZ +E4kOo/9voeaR8qRipfuiKnLjcaTLEVXJmbAFncXModqesMiYW/OXpmQISFU9qvhy +whJmI1KLtplpRtWbPvshkN8oHvZMc8sELD7Ge8wxuoR03a7TxELtPko08mqrYtzg +wOcexejoe6WdLcZWjtDErR+XGwU9BjbMUkho4WIKvlMnu5oZnERKsWR8q7Q2tQdi +mgGQMS5pB2glTdEbtQZmvZsBR3me3OsyRJ/xW7GftL2C9iW32bm1EzAsiOYvwwoc +k8k9aPT5sxEn4MgCQkkVgHC/W0uZWDq8Zrf0Y12gO+IaCN1JCQU9D5eyiOw0NUgV +lmSJ6dgx7c3gtphsWtpI+m7+3Q4lo9b4Z/5CBSFvE4l3AgMBAAE= +-----END PUBLIC KEY----- +user3 +ECDSA +-----BEGIN PUBLIC KEY----- +Az8Coe6OzAYvqwtoZ6EGCa1pjG+D42ryNJ788G26ZeTB +-----END PUBLIC KEY----- diff --git a/pace/signatures/manualtruststore.py b/pace/signatures/manualtruststore.py new file mode 100644 index 0000000..ffa5e26 --- /dev/null +++ b/pace/signatures/manualtruststore.py @@ -0,0 +1,120 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Manual trust store for key lookup +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 24 Jun 2015 CS Original file +## ************** + +from pace.signatures.vars import SIGNATURE_FUNCTIONS +from pace.pki.abstractpki import AbstractPKI, PKILookupError +from pace.signatures.signaturepki import SignatureMixin, SigTuple +from pace.signatures.acc_sig import KeyParseError + +ACCEPTABLE_PREFIXES = ['-----BEGIN PUBLIC KEY-----\n', + '-----BEGIN RSA PUBLIC KEY-----\n', + '-----BEGIN ECDSA PUBLIC KEY-----\n'] + +ACCEPTABLE_SUFFIXES = ['-----END PUBLIC KEY-----\n', + '-----END RSA PUBLIC KEY-----\n', + '-----END ECDSA PUBLIC KEY-----\n'] + +class ManualTrustStore(AbstractPKI, SignatureMixin): + """ Uses a manually populated file to provide a static list of users + and their keys. + """ + + @staticmethod + def _aggregate_pem_string(f): + line = f.readline() + + if line not in ACCEPTABLE_PREFIXES: + raise TrustStoreCreationException( + 'Public key improperly formatted: no BEGIN PUBLIC KEY line') + + pemstring = '' + + while line != '': + pemstring += line + line = f.readline() + if line in ACCEPTABLE_SUFFIXES: + pemstring += line + return pemstring + + raise TrustStoreCreationException( + 'Public key improperly formatted: no END PUBLIC KEY line') + + def _parse_file(self, f): + line = f.readline() + while line != '': + name = line.strip() + alg = f.readline().strip() + + try: + alg_fn = SIGNATURE_FUNCTIONS[alg] + except KeyError: + raise TrustStoreCreationException( + 'Unknown signature algorithm ' + alg) + + pem_string = ManualTrustStore._aggregate_pem_string(f) + + try: + pubkey = alg_fn.parse_key(pem_string) + except KeyParseError as kpe: + raise TrustStoreCreationException(kpe.msg) + + self.store[name] = (alg_fn, pubkey) + + line = f.readline() + + def __init__(self, path): + self.store = {} + try: + with open(path, 'r') as f: + self._parse_file(f) + except IOError as e: + raise TrustStoreCreationException( + 'Provided trust store file %s not readable; aborting' %path) + + def get_profile(self, name): + try: + fn, pubkey = self.store[name] + return SigTuple(pubkey, fn.name) + except KeyError: + raise PKILookupError( + 'ERROR: User %s not found in trust store.' %name) + + @staticmethod + def create_store_file(keys, path): + """ Create a file that is parseable into a manual trust store + from a dictionary of key mappings. + + Arguments: + + keys - a dictionary that maps user IDs to (algorithm, publickey) + tuples, where `algorithm` is an algorithm class as defined + in acc_sig.py, and `publickey` is a public key for that + signature algorithm. + path - the path to write the trust store file to. + + """ + + try: + with open(path, 'w') as f: + for userid, (alg_fn, pubkey) in keys.iteritems(): + keystr = alg_fn.serialize_key(pubkey) + algstr = alg_fn.name + f.write(userid.strip() + '\n') + f.write(algstr.strip() + '\n') + f.write(keystr.strip() + '\n') + except IOError: + raise TrustStoreCreationException( + 'Could not open file %s for writing out a trust store.' %path) + + +class TrustStoreCreationException(Exception): + def __init__(self, msg): + self.msg = msg diff --git a/pace/signatures/noisy_default_file.txt b/pace/signatures/noisy_default_file.txt new file mode 100644 index 0000000..14faf81 --- /dev/null +++ b/pace/signatures/noisy_default_file.txt @@ -0,0 +1,50000 @@ +000000001 000007263 000032384 D|030162715 008453880 +000000001 000014876 000052360 D|037904230 037052729 +000000001 000021615 000053144 D|055777559 079733940 +000000001 000029143 000077348 D|030849951 088789777 +000000001 000038966 000104702 D|081287270 024718986 +000000001 000052545 000108012 D|004876680 055849139 +000000001 000074576 000132626 D|058915212 097107860 +000000001 000079192 000162139 D|092395918 065694683 +000000001 000120571 000166250 D|076181775 045411580 +000000001 000173634 000193863 D|091934876 003482924 +000000001 000176118 000205917 D|077554115 037008346 +000000001 000199456 000251825 D|039388824 009824605 +000000001 000199992 000262985 D|077795732 063669740 +000000001 000228461 000282685 D|000938499 081711537 +000000001 000277979 000303472 D|099419656 072235169 +000000001 000281740 000365025 D|075103248 020716059 +000000001 000305308 000374083 D|001549951 074627175 +000000001 000308146 000377348 D|046142420 034412799 +000000001 000355498 000385854 D|017036578 007109576 +000000001 000417779 000421118 D|041923658 072060145 +000000001 000471230 000427504 D|012301794 009491033 +000000001 000497449 000450274 D|073900441 098018745 +000000001 000533838 000451793 D|004250162 039254322 +000000001 000582061 000467680 D|041340263 059441382 +000000001 000606144 000470491 D|052861052 059691244 +000000001 000611050 000475740 D|008905710 086544596 +000000001 000613159 000506174 D|061092790 049237469 +000000001 000622556 000525291 D|006962633 079843072 +000000001 000627867 000535636 D|072917339 039539391 +000000001 000634128 000558954 D|099075390 082144344 +000000001 000654766 000566175 D|004606000 036947095 +000000001 000673274 000591391 D|067545364 096588450 +000000001 000677360 000598087 D|049504422 007592577 +000000001 000686968 000615088 D|020684669 084256919 +000000001 000702433 000658608 D|047788552 073752566 +000000001 000717334 000659272 D|059445362 038072828 +000000001 000719826 000663361 D|066422165 019439507 +000000001 000742469 000702218 D|023177705 092075948 +000000001 000745810 000707437 D|078921255 040895412 +000000001 000746542 000737248 D|020520458 076555388 +000000001 000776762 000771298 D|007835835 075089832 +000000001 000809402 000783942 D|028274808 001668966 +000000001 000858623 000791112 D|074870397 024991136 +000000001 000860922 000797771 D|033499183 014135747 +000000001 000869295 000804113 D|061879285 012542175 +000000001 000904804 000807139 D|019610010 027117358 +000000001 000910496 000830406 D|008908207 057296455 +000000001 000919162 000847823 D|008239376 037329189 +000000001 000955377 000980942 D|079734677 019434406 +000000001 000998084 000995881 D|086299844 051813246 +000000002 000040518 000005303 D|073231728 066691208 +000000002 000081628 000006569 D|024254518 037306380 +000000002 000085581 000012106 D|090978740 016636235 +000000002 000113723 000014284 D|044565895 056474301 +000000002 000145694 000021834 D|005148008 089409713 +000000002 000198928 000041940 D|034469155 077732835 +000000002 000202044 000103823 D|088572775 086698734 +000000002 000227302 000160220 D|049159061 074071551 +000000002 000255618 000177924 D|099679147 095452810 +000000002 000286735 000192679 D|052060521 098283484 +000000002 000294791 000205228 D|064391455 092150437 +000000002 000322516 000264587 D|088352810 075104200 +000000002 000338121 000275128 D|012900811 091032810 +000000002 000353014 000294743 D|046412297 015394100 +000000002 000362235 000304912 D|096273898 092540894 +000000002 000384128 000306586 D|002355392 077877895 +000000002 000393048 000308544 D|019078935 006119366 +000000002 000394173 000313788 D|033361354 088329495 +000000002 000404243 000337845 D|044969902 039178996 +000000002 000419223 000346932 D|041638141 029893070 +000000002 000423263 000403152 D|055754972 088216042 +000000002 000443041 000417050 D|085057172 045080354 +000000002 000449327 000423305 D|043603742 076437019 +000000002 000477095 000431693 D|041741474 075763753 +000000002 000516678 000449261 D|061697383 084652620 +000000002 000531115 000456274 D|009945874 089432203 +000000002 000532515 000460416 D|045625562 061477452 +000000002 000540613 000491146 D|008694301 066747597 +000000002 000598255 000525071 D|031005423 007074166 +000000002 000607786 000530351 D|043745404 008897669 +000000002 000608766 000545438 D|025139544 050418656 +000000002 000612337 000548827 D|034618104 096147376 +000000002 000624812 000555472 D|008622150 039678350 +000000002 000644233 000595684 D|044235953 085029887 +000000002 000653656 000613617 D|073176515 006937917 +000000002 000655042 000625981 D|084260138 002991339 +000000002 000710550 000629476 D|054691940 005319798 +000000002 000744466 000640192 D|076474287 028321573 +000000002 000757419 000665797 D|007916328 001924151 +000000002 000789887 000670484 D|013712560 091365266 +000000002 000804038 000705839 D|023421961 069122896 +000000002 000819394 000726640 D|007876534 005688963 +000000002 000854213 000746672 D|010749886 035349324 +000000002 000865162 000790059 D|056570885 037981979 +000000002 000875388 000847847 D|004941985 084241102 +000000002 000881350 000870086 D|070108223 064081125 +000000002 000887049 000889645 D|097783682 019431414 +000000002 000907982 000898965 D|055255992 066966056 +000000002 000941077 000952942 D|039634029 057768715 +000000002 000980236 000964001 D|084379960 064254530 +000000003 000032611 000000607 D|061251145 079113548 +000000003 000048329 000016974 D|019331634 063955869 +000000003 000100933 000038870 D|003921890 058459663 +000000003 000102676 000052137 D|087521681 022268260 +000000003 000176375 000080708 D|031050416 076966785 +000000003 000182499 000102536 D|053265852 084878049 +000000003 000192418 000114358 D|031627659 041188868 +000000003 000234454 000120922 D|054960058 051217770 +000000003 000254020 000168930 D|014552512 097518141 +000000003 000268348 000173487 D|010919921 054665669 +000000003 000273577 000175233 D|086117287 098928731 +000000003 000279605 000207852 D|036840337 008375196 +000000003 000296759 000236686 D|068387541 076197545 +000000003 000324916 000248423 D|094546176 063371436 +000000003 000350307 000261876 D|020819084 006677942 +000000003 000356987 000334844 D|035944159 057487355 +000000003 000404811 000347937 D|096774919 053888955 +000000003 000411681 000384913 D|082544573 037639121 +000000003 000436597 000395771 D|004911516 028151160 +000000003 000436711 000416621 D|051705995 004992038 +000000003 000472942 000440236 D|032822558 063814944 +000000003 000478948 000460871 D|055406031 024481190 +000000003 000482215 000496397 D|098175929 031380920 +000000003 000525480 000546712 D|059948578 087712840 +000000003 000531226 000556972 D|099677587 028343338 +000000003 000534235 000574293 D|008763619 034395070 +000000003 000559247 000624801 D|005777652 026220779 +000000003 000587594 000630170 D|091715117 005895222 +000000003 000627864 000632883 D|041540391 010634462 +000000003 000638450 000647469 D|097251357 008966610 +000000003 000669580 000653192 D|033629128 034490759 +000000003 000687297 000720387 D|059947650 082245697 +000000003 000704080 000721282 D|010169544 015691628 +000000003 000764801 000722629 D|061562685 013350198 +000000003 000771356 000739667 D|065840237 016975879 +000000003 000782948 000751607 D|012525991 065251440 +000000003 000799178 000763205 D|084127619 040680260 +000000003 000824473 000794339 D|008954752 050143130 +000000003 000825172 000801826 D|002825615 038821803 +000000003 000828277 000818619 D|030547900 092469736 +000000003 000852838 000831833 D|078839278 075246581 +000000003 000883134 000833940 D|045058564 055523738 +000000003 000888332 000839577 D|017648425 079192320 +000000003 000904216 000889131 D|044821130 014368870 +000000003 000922352 000889853 D|060917123 038065480 +000000003 000935599 000890588 D|070273018 092651855 +000000003 000940253 000903180 D|062305560 041648793 +000000003 000940856 000920677 D|097064561 020362034 +000000003 000984559 000935619 D|058238179 087347995 +000000003 000999925 000992936 D|073335054 012028208 +000000004 000000276 000033463 D|004308427 074192832 +000000004 000025389 000055606 D|045772604 015110214 +000000004 000052684 000067369 D|067732743 071046834 +000000004 000070398 000094631 D|036787545 021832486 +000000004 000080838 000098879 D|030904424 019301114 +000000004 000082938 000104847 D|030507758 035281475 +000000004 000097438 000133014 D|032610394 012163513 +000000004 000119747 000146154 D|014284643 068504214 +000000004 000143987 000182212 D|076748507 075822072 +000000004 000157859 000192071 D|006659523 086137329 +000000004 000163698 000197315 D|080628863 026759142 +000000004 000195223 000204074 D|058224517 067019171 +000000004 000231348 000208583 D|065917582 035727314 +000000004 000245345 000279802 D|046644721 053303973 +000000004 000266162 000310842 D|008022328 088576291 +000000004 000294940 000313644 D|037033990 016754894 +000000004 000361678 000336723 D|022679455 022491882 +000000004 000370768 000376904 D|047638889 002956091 +000000004 000401034 000392367 D|062637130 031063341 +000000004 000401126 000422096 D|041144238 016154879 +000000004 000441739 000435939 D|068053802 071086483 +000000004 000456284 000447988 D|094340574 011666555 +000000004 000475360 000462002 D|056118065 057162656 +000000004 000494889 000486275 D|022509172 095576568 +000000004 000514030 000550770 D|084294592 028173102 +000000004 000531362 000571609 D|041285869 009785952 +000000004 000538038 000595717 D|027036537 033490715 +000000004 000550878 000690186 D|041167755 013911589 +000000004 000562304 000702710 D|047870857 096641506 +000000004 000564230 000706945 D|064219852 075089099 +000000004 000580932 000710728 D|073326708 028077857 +000000004 000588686 000717191 D|097719198 049487010 +000000004 000597619 000723878 D|039006113 096742434 +000000004 000614335 000735019 D|076003281 058926938 +000000004 000632535 000744376 D|090294873 007634108 +000000004 000662872 000751284 D|036879268 029498631 +000000004 000680549 000763104 D|057435361 026858481 +000000004 000757663 000791361 D|084074472 015493092 +000000004 000770158 000793341 D|091027192 018428770 +000000004 000773163 000793545 D|060029358 040432781 +000000004 000779657 000844317 D|037461667 002818639 +000000004 000816936 000848176 D|000603606 052927502 +000000004 000836555 000886693 D|056637923 002463633 +000000004 000840852 000913690 D|042703771 036961251 +000000004 000860004 000915929 D|003574832 094974536 +000000004 000864914 000928654 D|068613991 039134689 +000000004 000934695 000931453 D|002993293 003313513 +000000004 000952616 000949482 D|082311511 016774266 +000000004 000970550 000959020 D|074696834 006934124 +000000004 000988174 000995150 D|004932233 033328744 +000000005 000001573 000003638 D|092537824 082897276 +000000005 000006510 000012968 D|033008093 004313521 +000000005 000008478 000015701 D|025496212 027739936 +000000005 000018572 000047549 D|043932811 085811831 +000000005 000040571 000083046 D|092833463 077203150 +000000005 000072587 000097463 D|060424134 050474762 +000000005 000108808 000112731 D|005570200 077421594 +000000005 000114910 000128511 D|082601380 092212114 +000000005 000142713 000188735 D|043750927 026887000 +000000005 000163239 000221543 D|068905333 004586549 +000000005 000171286 000262292 D|075219110 036624897 +000000005 000219276 000266067 D|061613751 041746896 +000000005 000225116 000268312 D|039651669 030817470 +000000005 000226816 000275413 D|030399751 081036850 +000000005 000258205 000275822 D|092504267 043537368 +000000005 000278953 000294220 D|099489198 024762894 +000000005 000319305 000315790 D|059672919 029837175 +000000005 000333004 000316690 D|037922054 021535096 +000000005 000388215 000345059 D|019537462 098248882 +000000005 000390486 000352192 D|097400422 090892553 +000000005 000402394 000425734 D|065508727 022756237 +000000005 000423889 000445748 D|029764476 030358484 +000000005 000454711 000464997 D|014395816 037806567 +000000005 000475181 000481033 D|040248147 027484524 +000000005 000489422 000486548 D|046695036 035797977 +000000005 000503641 000540351 D|094935864 035086981 +000000005 000539843 000561287 D|009525573 079344573 +000000005 000540165 000592607 D|024417399 001915471 +000000005 000573475 000604617 D|066740490 087277698 +000000005 000581598 000642877 D|015685402 014990733 +000000005 000615985 000654800 D|021523878 069157478 +000000005 000628475 000694095 D|019052343 003207383 +000000005 000642102 000733402 D|021486660 066963819 +000000005 000642362 000764794 D|012884363 073739889 +000000005 000648917 000765282 D|013211724 018837817 +000000005 000653548 000776408 D|088780213 076683265 +000000005 000658109 000809710 D|030664415 027461473 +000000005 000694741 000837794 D|053593256 061564494 +000000005 000698341 000853660 D|051295854 090270929 +000000005 000699294 000873614 D|054636656 017471715 +000000005 000704748 000881562 D|087075168 090586842 +000000005 000727887 000881780 D|017910336 074009388 +000000005 000779659 000918927 D|062968452 033146675 +000000005 000783581 000942706 D|034049252 005370554 +000000005 000835688 000944412 D|069000676 014105186 +000000005 000865960 000948508 D|073967375 034458585 +000000005 000885541 000948597 D|033085271 001225010 +000000005 000892296 000963488 D|020468368 091998597 +000000005 000896607 000985509 D|072221247 056005366 +000000005 000927835 000991148 D|098417255 088115613 +000000006 000015730 000005856 D|091051200 031706617 +000000006 000062135 000012082 D|032620170 025008803 +000000006 000146260 000022979 D|091493416 053695584 +000000006 000167469 000040346 D|046289538 073371454 +000000006 000177420 000050928 D|085890985 003796584 +000000006 000207325 000058178 D|060834243 008599762 +000000006 000215421 000179944 D|097299463 025275928 +000000006 000255370 000203182 D|088861314 071402465 +000000006 000256925 000221888 D|090033702 039962704 +000000006 000257675 000245559 D|061877672 053376010 +000000006 000262481 000263309 D|052708530 037627037 +000000006 000276384 000271115 D|026640554 042550178 +000000006 000281729 000297150 D|042268797 044609483 +000000006 000284653 000397688 D|024974050 001308119 +000000006 000306298 000413972 D|076436801 065532201 +000000006 000327606 000424510 D|089250504 095079732 +000000006 000351801 000425322 D|063579296 027457229 +000000006 000366864 000439732 D|059561472 089614786 +000000006 000396697 000450688 D|084625880 036347317 +000000006 000399419 000461587 D|074159392 036790040 +000000006 000401008 000537911 D|011336769 000435895 +000000006 000420197 000541550 D|055256956 035267477 +000000006 000436536 000548871 D|034614778 085124551 +000000006 000457169 000569142 D|009517386 037454004 +000000006 000468054 000584521 D|076779024 090824232 +000000006 000494782 000586425 D|079775128 030007348 +000000006 000502270 000589980 D|065766414 073482746 +000000006 000543193 000591837 D|047088348 083445692 +000000006 000547412 000602752 D|019648842 047477093 +000000006 000560666 000605462 D|031792424 065556612 +000000006 000581822 000618825 D|088842192 004994582 +000000006 000635193 000638842 D|081902968 053897784 +000000006 000732966 000652330 D|067299891 026534019 +000000006 000736420 000657266 D|090885682 059511311 +000000006 000767583 000679641 D|047219294 026324223 +000000006 000776909 000704642 D|046681198 050224574 +000000006 000788522 000753628 D|018134790 058934348 +000000006 000797247 000783683 D|073403871 003764169 +000000006 000854467 000796419 D|043815361 005903276 +000000006 000856491 000798693 D|065481311 006760971 +000000006 000864696 000823252 D|090875522 058760840 +000000006 000870844 000836672 D|064197630 034659048 +000000006 000942520 000846251 D|009413521 094059286 +000000006 000953100 000849428 D|046301460 015266971 +000000006 000962492 000850723 D|078537875 046786018 +000000006 000966281 000903928 D|040157542 095507405 +000000006 000966967 000909514 D|027700029 039562280 +000000006 000968909 000940693 D|006349856 042067464 +000000006 000971322 000965175 D|072657224 008622217 +000000006 000973752 000998441 D|018962477 080937548 +000000007 000016514 000022526 D|010264749 048907062 +000000007 000026967 000053703 D|094979519 043133018 +000000007 000061864 000057684 D|077353603 046970861 +000000007 000084599 000068030 D|076515390 046253774 +000000007 000088042 000074323 D|092690646 040111201 +000000007 000140154 000101675 D|053287731 036551931 +000000007 000166507 000104464 D|088639240 035837149 +000000007 000168302 000114863 D|035183416 010066284 +000000007 000238190 000143370 D|057875529 069911756 +000000007 000246537 000161557 D|025194014 090249578 +000000007 000270587 000168962 D|029499567 019842731 +000000007 000293835 000180988 D|050739729 065032556 +000000007 000341449 000196236 D|010562054 022166063 +000000007 000342107 000202021 D|091389503 069907762 +000000007 000352179 000202781 D|066654764 092969307 +000000007 000374427 000204820 D|044001291 016611189 +000000007 000403530 000231398 D|037926864 078481100 +000000007 000465288 000235620 D|089858485 010280822 +000000007 000491782 000235693 D|014822248 000254932 +000000007 000491983 000251105 D|057154145 050816594 +000000007 000539805 000265046 D|029721501 047870394 +000000007 000560981 000330435 D|085357466 012512004 +000000007 000576512 000338228 D|012824790 057525995 +000000007 000586443 000340423 D|066239145 084395935 +000000007 000625194 000360408 D|047339004 048683910 +000000007 000633828 000367274 D|057886767 045765018 +000000007 000636960 000430320 D|008910139 019611046 +000000007 000645157 000451077 D|064984061 071798715 +000000007 000658264 000470281 D|053549151 001723427 +000000007 000659006 000541351 D|043550873 068222336 +000000007 000695163 000555212 D|060363277 031759054 +000000007 000708307 000558550 D|095962456 024080436 +000000007 000728091 000572574 D|046819287 072883017 +000000007 000736427 000661935 D|085285962 064152586 +000000007 000743112 000661974 D|055034886 086074614 +000000007 000751596 000670378 D|019767508 082753358 +000000007 000753269 000682146 D|009247962 048357285 +000000007 000767630 000682797 D|016005070 097617905 +000000007 000773429 000703252 D|089714044 000871316 +000000007 000786546 000703960 D|022696386 074858215 +000000007 000827245 000795746 D|050426806 014812635 +000000007 000832363 000812854 D|095621409 014644102 +000000007 000841981 000852477 D|000042164 002347373 +000000007 000850226 000874520 D|050784117 096894324 +000000007 000906586 000878004 D|063241325 067184210 +000000007 000918247 000905458 D|072986781 052655868 +000000007 000921959 000920332 D|099714451 017380977 +000000007 000952949 000938978 D|001484772 019627622 +000000007 000996443 000946579 D|027542846 054743331 +000000007 000997378 000968343 D|042510284 060654600 +000000008 000003195 000005821 D|054533344 094161363 +000000008 000008662 000019059 D|050467657 069444615 +000000008 000009925 000029969 D|002426790 080849069 +000000008 000014027 000045529 D|080664353 039128942 +000000008 000088143 000049518 D|038307942 055773970 +000000008 000088330 000072885 D|063126326 020254265 +000000008 000119309 000128490 D|014875025 049375179 +000000008 000127800 000204858 D|075493934 085557534 +000000008 000133708 000205177 D|000470878 078948988 +000000008 000178324 000240783 D|051314994 023155884 +000000008 000182430 000292311 D|093941297 034473972 +000000008 000183508 000301092 D|006003790 005091686 +000000008 000201039 000315021 D|023678143 010595742 +000000008 000204286 000318515 D|076638055 009423627 +000000008 000229044 000323018 D|080884676 065407283 +000000008 000231095 000325231 D|088633794 023000058 +000000008 000232689 000340363 D|028340542 036639891 +000000008 000235897 000429922 D|069022648 094608132 +000000008 000237088 000541591 D|036068521 061877082 +000000008 000247942 000617233 D|074971455 004606401 +000000008 000262287 000623552 D|042191155 076217122 +000000008 000300190 000634034 D|020165637 009519566 +000000008 000373925 000640347 D|065200522 061130566 +000000008 000375711 000665840 D|068109348 000839406 +000000008 000421912 000671510 D|034335703 034575011 +000000008 000478037 000677790 D|063743404 000357632 +000000008 000489720 000692363 D|001513074 033697204 +000000008 000503786 000699321 D|083331327 096649424 +000000008 000508397 000701761 D|074504410 005404927 +000000008 000509424 000715066 D|014392381 025492890 +000000008 000514378 000729927 D|020974559 045340824 +000000008 000600390 000731649 D|003074308 075436380 +000000008 000602883 000735127 D|089804293 057406762 +000000008 000634899 000747277 D|079590534 058961335 +000000008 000635745 000776669 D|036654093 089424328 +000000008 000666199 000778903 D|006652376 092151066 +000000008 000709821 000800797 D|053868481 001260101 +000000008 000739416 000809532 D|011547925 085968748 +000000008 000801087 000825683 D|075421913 006626186 +000000008 000802603 000837793 D|089682775 049490855 +000000008 000834185 000846532 D|006215434 039889356 +000000008 000864683 000875892 D|021342114 093052975 +000000008 000875893 000880013 D|065884074 076068426 +000000008 000891747 000880238 D|096574431 021959798 +000000008 000895656 000889307 D|068549408 093770882 +000000008 000909256 000927619 D|032281721 040580994 +000000008 000916066 000940698 D|069763538 031089722 +000000008 000932463 000956849 D|019602908 069735341 +000000008 000993116 000983757 D|048703624 080979478 +000000008 000994658 000987605 D|052120194 077830323 +000000009 000013941 000014143 D|065914669 014643518 +000000009 000014794 000049251 D|023049139 057948848 +000000009 000066196 000053341 D|003530780 017951284 +000000009 000072892 000070216 D|015857924 070903840 +000000009 000074093 000073612 D|067362467 041184079 +000000009 000091859 000090742 D|054392037 017010138 +000000009 000119341 000091000 D|074827504 068872830 +000000009 000124739 000115510 D|040450176 021097456 +000000009 000148961 000132860 D|040954975 018161156 +000000009 000175480 000143488 D|045546653 083012187 +000000009 000177603 000154667 D|013868137 010322170 +000000009 000184831 000159034 D|017135501 098403972 +000000009 000195007 000190420 D|067567104 046093796 +000000009 000201234 000215328 D|056446361 047201818 +000000009 000256812 000219035 D|077573867 073995099 +000000009 000267143 000222523 D|023229966 089636135 +000000009 000279768 000237670 D|015992168 061869617 +000000009 000286018 000250871 D|053587667 051366179 +000000009 000293495 000293487 D|025817200 067694597 +000000009 000318090 000331981 D|054432491 089874637 +000000009 000321663 000353675 D|032379463 042390836 +000000009 000330869 000357424 D|017405128 068977074 +000000009 000345832 000357747 D|043596256 009919580 +000000009 000371372 000366301 D|081626562 015689121 +000000009 000420144 000378420 D|071661068 097711110 +000000009 000491553 000396889 D|022341475 071869889 +000000009 000492807 000428317 D|065078114 061195621 +000000009 000494558 000441904 D|018742559 015463489 +000000009 000552535 000452063 D|092830118 003375708 +000000009 000584661 000453335 D|020658239 070385062 +000000009 000586211 000458546 D|034443853 013480619 +000000009 000586464 000467605 D|056757478 084463920 +000000009 000622073 000468857 D|027985815 063907626 +000000009 000659172 000513497 D|045053290 023279833 +000000009 000668707 000545253 D|041240351 093901503 +000000009 000700390 000567899 D|076869918 085925992 +000000009 000712677 000624367 D|052036060 016041576 +000000009 000724146 000679000 D|077602230 059926836 +000000009 000732473 000713357 D|013728228 061327380 +000000009 000746400 000755687 D|069318232 016474436 +000000009 000800743 000784193 D|000600505 007913449 +000000009 000818231 000785063 D|063814599 028627055 +000000009 000846947 000794745 D|034320483 082223824 +000000009 000885898 000813239 D|034906163 061761561 +000000009 000890686 000830129 D|057628705 009367996 +000000009 000893686 000847724 D|028759247 027835568 +000000009 000919411 000855876 D|072912101 035098119 +000000009 000930462 000947698 D|076140569 027657598 +000000009 000958784 000966313 D|033658126 074496374 +000000009 000968557 000973616 D|012912658 061802745 +000000010 000018142 000038261 D|092540361 049075023 +000000010 000049560 000044359 D|055680721 037015538 +000000010 000063690 000055027 D|093949154 014798680 +000000010 000108498 000070714 D|025709740 021660639 +000000010 000117029 000077064 D|076416573 004662447 +000000010 000140886 000078821 D|068218031 061465261 +000000010 000144975 000090281 D|016365555 091243247 +000000010 000187528 000106617 D|033632472 049376397 +000000010 000188799 000146799 D|078277291 062464534 +000000010 000200344 000165133 D|049026263 044965562 +000000010 000226348 000193646 D|063903796 001166625 +000000010 000234412 000232873 D|056479802 093596414 +000000010 000255974 000245950 D|090368580 025663063 +000000010 000272808 000247593 D|051323999 053969691 +000000010 000285672 000257467 D|020534460 029735805 +000000010 000293628 000276544 D|036417936 070238306 +000000010 000327589 000287295 D|089315020 057030746 +000000010 000335004 000291862 D|036943183 046165721 +000000010 000365438 000316341 D|011262531 008554604 +000000010 000443270 000318451 D|084819771 057509335 +000000010 000477874 000322639 D|008935261 067140235 +000000010 000499018 000365852 D|022081367 081560816 +000000010 000550312 000397394 D|058449281 083732418 +000000010 000568685 000407815 D|069872922 096884795 +000000010 000568957 000408172 D|065424944 075736728 +000000010 000586681 000410807 D|087808774 033194689 +000000010 000594666 000439726 D|018539826 004481248 +000000010 000614287 000445978 D|080732496 078306823 +000000010 000667061 000465658 D|019581015 022647050 +000000010 000693419 000489236 D|016345112 053238863 +000000010 000730963 000503876 D|098793284 049243817 +000000010 000733533 000504944 D|061288391 032456739 +000000010 000738253 000565363 D|004295025 053259415 +000000010 000743647 000588648 D|089229643 057588006 +000000010 000750966 000616890 D|016889839 080064955 +000000010 000784888 000646299 D|039873031 015209592 +000000010 000785724 000670290 D|016275669 005899402 +000000010 000791307 000678376 D|082716655 018860567 +000000010 000795719 000696827 D|035192609 097420512 +000000010 000801202 000704072 D|026515395 081405586 +000000010 000824048 000733152 D|094157527 006168684 +000000010 000856742 000769464 D|099732686 075328146 +000000010 000879279 000770742 D|000124116 016485041 +000000010 000895108 000772954 D|037046737 062339105 +000000010 000917394 000799860 D|041437002 025825404 +000000010 000932481 000875241 D|075874344 037408649 +000000010 000965854 000878482 D|005658697 047238900 +000000010 000978893 000910860 D|041070700 068555272 +000000010 000990136 000952468 D|001471845 032803452 +000000010 000993396 000988575 D|055973754 086481879 +000000011 000019409 000031792 D|038403909 076832969 +000000011 000029716 000043595 D|002012697 059638099 +000000011 000031769 000053274 D|073453255 050422177 +000000011 000036012 000080239 D|099594444 087077229 +000000011 000064061 000083162 D|075539679 080059372 +000000011 000067678 000135929 D|080991985 028490240 +000000011 000126125 000154319 D|015897260 012662158 +000000011 000131984 000170825 D|038366763 084222949 +000000011 000159906 000195977 D|053555983 080337098 +000000011 000192402 000253159 D|034847716 010965215 +000000011 000212699 000273797 D|072041507 090851398 +000000011 000263484 000274859 D|026951953 011298213 +000000011 000284093 000295592 D|043705508 008169126 +000000011 000287470 000312823 D|089312138 050034119 +000000011 000317597 000317164 D|052699142 087277101 +000000011 000329498 000331002 D|099725608 093873158 +000000011 000344910 000332102 D|056559743 045362976 +000000011 000374306 000345910 D|032711916 083249701 +000000011 000380355 000352803 D|084377088 088590612 +000000011 000399757 000360631 D|053496123 032406852 +000000011 000418106 000373676 D|040037793 021095226 +000000011 000431241 000402836 D|057167444 094067062 +000000011 000504279 000427406 D|080552574 040452200 +000000011 000517465 000441917 D|036705109 060066727 +000000011 000526020 000455688 D|015236190 010669987 +000000011 000530725 000458857 D|003827181 050780347 +000000011 000538194 000518378 D|053129692 011520797 +000000011 000547738 000525499 D|065901329 081998205 +000000011 000563336 000530457 D|012013609 099538040 +000000011 000577794 000565964 D|053774188 040648167 +000000011 000580347 000616802 D|042681021 080883782 +000000011 000588517 000645748 D|030581546 060541316 +000000011 000593831 000681887 D|061305127 047702420 +000000011 000612160 000703048 D|052549597 033711654 +000000011 000615182 000704396 D|027432340 020076567 +000000011 000616617 000736400 D|058197306 010126261 +000000011 000653349 000747400 D|025613778 064973783 +000000011 000675898 000786406 D|050302427 064439796 +000000011 000735870 000788764 D|039720091 096783291 +000000011 000754407 000875935 D|071682479 016431217 +000000011 000771465 000879672 D|059951949 042618599 +000000011 000780877 000880493 D|011492416 055885612 +000000011 000831778 000881539 D|025498032 082124416 +000000011 000844585 000897425 D|017195119 058768966 +000000011 000845198 000918068 D|050540445 049845347 +000000011 000847521 000926777 D|036934742 089986068 +000000011 000876589 000933882 D|061107794 019878239 +000000011 000890119 000948187 D|065233804 075576729 +000000011 000897684 000961605 D|069978363 014828297 +000000011 000949507 000980518 D|011747675 006180731 +000000012 000025668 000013974 D|045994396 078711619 +000000012 000058061 000064479 D|054803493 039418634 +000000012 000058764 000080009 D|093322705 049496057 +000000012 000101389 000116727 D|016062720 085270934 +000000012 000104506 000121203 D|045642943 009037923 +000000012 000110473 000127174 D|095218109 030498566 +000000012 000127976 000159048 D|096117295 072409556 +000000012 000153859 000160726 D|084087284 046953403 +000000012 000156787 000170050 D|004721571 039751794 +000000012 000158706 000174422 D|034220749 006848203 +000000012 000172646 000185824 D|019432961 099969574 +000000012 000181460 000212130 D|076439879 061662902 +000000012 000191115 000226116 D|045423105 025227197 +000000012 000215990 000227853 D|000297117 096532124 +000000012 000231193 000240063 D|005968218 068385968 +000000012 000246855 000245060 D|046667779 083823251 +000000012 000270521 000280045 D|071845521 082565351 +000000012 000297083 000291611 D|095795145 041042043 +000000012 000304344 000327710 D|033825976 084938276 +000000012 000308775 000333818 D|053640188 058777672 +000000012 000335513 000363070 D|043301597 099551967 +000000012 000337651 000382043 D|034759253 001163413 +000000012 000366496 000403318 D|088072621 032186027 +000000012 000370853 000404525 D|064580348 010387424 +000000012 000390885 000421604 D|090215514 078530957 +000000012 000398828 000437344 D|065518385 007507819 +000000012 000419921 000455246 D|095341200 094540757 +000000012 000427326 000523195 D|073561756 099741733 +000000012 000497653 000545762 D|069872429 063203528 +000000012 000508292 000574846 D|073350275 099068641 +000000012 000514177 000610068 D|028415648 042629894 +000000012 000517349 000624515 D|024664554 018081849 +000000012 000536465 000625022 D|088509688 065404425 +000000012 000542720 000636259 D|005858294 013828566 +000000012 000584798 000676919 D|079429952 075818825 +000000012 000614419 000692093 D|085820193 062800569 +000000012 000672498 000744151 D|086529347 085012732 +000000012 000736617 000744537 D|051691490 073936029 +000000012 000738413 000806775 D|026530780 066865135 +000000012 000751715 000813401 D|000315594 075530891 +000000012 000812355 000828380 D|070467018 074187382 +000000012 000816135 000832916 D|064346325 060600579 +000000012 000825134 000835435 D|032203653 098837272 +000000012 000878591 000845281 D|029011849 075233906 +000000012 000929873 000855742 D|073373135 057014213 +000000012 000948983 000861250 D|083213097 080280838 +000000012 000961488 000863547 D|007227115 058897003 +000000012 000963232 000910485 D|079292388 008633486 +000000012 000990940 000911673 D|053663644 010755521 +000000012 000995511 000976176 D|010343256 022115312 +000000013 000008699 000007815 D|021831758 035307724 +000000013 000025525 000010437 D|034658583 035054720 +000000013 000066403 000012818 D|017063696 005699424 +000000013 000073309 000027508 D|016053733 077222092 +000000013 000112456 000131247 D|068167895 054360175 +000000013 000117588 000183620 D|036522900 064208702 +000000013 000142375 000185629 D|023468713 004991463 +000000013 000144588 000191062 D|014807974 001398982 +000000013 000197484 000193743 D|088659717 008314657 +000000013 000207881 000195144 D|021980535 052049082 +000000013 000212530 000227577 D|068019213 029283626 +000000013 000273772 000234815 D|090301438 021792378 +000000013 000283196 000242077 D|067050290 062888690 +000000013 000289034 000242669 D|097964050 076331251 +000000013 000321200 000248122 D|004046196 085152129 +000000013 000358627 000268474 D|062989926 089631381 +000000013 000359822 000278610 D|010472486 017468265 +000000013 000385857 000297891 D|032753209 003134748 +000000013 000410539 000317231 D|052121837 087688451 +000000013 000417244 000331745 D|013797850 060377019 +000000013 000447084 000335417 D|061710821 046891746 +000000013 000463128 000377512 D|037312089 011299801 +000000013 000492465 000396568 D|069484832 082442965 +000000013 000497073 000487428 D|085686464 070032814 +000000013 000560037 000497012 D|058852721 095200882 +000000013 000589173 000498791 D|033435475 025374460 +000000013 000608571 000519745 D|001914183 050845783 +000000013 000636798 000533857 D|074730058 013471520 +000000013 000637615 000554480 D|064991171 022052466 +000000013 000709002 000577682 D|073775080 075054091 +000000013 000715829 000604531 D|098396353 018257820 +000000013 000719545 000612360 D|002037835 060230097 +000000013 000725296 000649388 D|099601259 034231309 +000000013 000741946 000652189 D|040139699 030770882 +000000013 000748154 000652869 D|025851398 026058013 +000000013 000763868 000675372 D|031755917 060283532 +000000013 000767551 000692864 D|013947328 027019405 +000000013 000807628 000698161 D|055578221 054142986 +000000013 000820242 000708759 D|052283386 033181901 +000000013 000838310 000727200 D|074854333 094302041 +000000013 000840827 000731835 D|023008697 071619456 +000000013 000871032 000776336 D|003499482 064098972 +000000013 000893265 000786276 D|076633036 060467151 +000000013 000898580 000807114 D|059016438 085463471 +000000013 000906731 000827847 D|029548272 028919407 +000000013 000932541 000848728 D|061196032 045086573 +000000013 000936404 000859074 D|065415752 062934419 +000000013 000969081 000886258 D|075361302 019904080 +000000013 000979601 000929010 D|010386027 014341548 +000000013 000985053 000950382 D|040823232 097191582 +000000014 000025258 000019832 D|041967934 029199194 +000000014 000032567 000035921 D|034191202 044690285 +000000014 000034177 000047054 D|081754366 086455298 +000000014 000035084 000059980 D|005214505 083327037 +000000014 000055320 000077475 D|035685109 086326812 +000000014 000067848 000084627 D|040170694 092191513 +000000014 000112841 000089825 D|000675305 066064829 +000000014 000135595 000164487 D|072109462 047357458 +000000014 000155124 000169627 D|000836743 032658179 +000000014 000180463 000178520 D|017818456 000734726 +000000014 000197378 000206726 D|043043828 007191506 +000000014 000201236 000234109 D|067151686 025758903 +000000014 000201852 000270867 D|015230802 022510364 +000000014 000206686 000313646 D|098712617 061527718 +000000014 000224661 000327735 D|009029766 082290948 +000000014 000263051 000406766 D|064978324 080722692 +000000014 000276803 000481953 D|074127199 044192842 +000000014 000293981 000512398 D|027596134 023104344 +000000014 000331551 000548216 D|063033624 011578592 +000000014 000336550 000569860 D|017038423 084998619 +000000014 000337257 000572294 D|066936636 014982220 +000000014 000349754 000581466 D|006556759 080193109 +000000014 000358449 000613122 D|000847680 028514268 +000000014 000396380 000615508 D|084417428 090571680 +000000014 000417464 000631944 D|007597987 010216495 +000000014 000420689 000642104 D|074637572 027949022 +000000014 000439122 000672414 D|033712041 075744061 +000000014 000475373 000680377 D|088010435 068772603 +000000014 000487463 000684622 D|043175881 033686765 +000000014 000528387 000691703 D|007702957 065092872 +000000014 000556351 000722795 D|065490254 080541092 +000000014 000560635 000722835 D|029911567 042507253 +000000014 000623699 000730966 D|064097211 013670063 +000000014 000631307 000732185 D|055043193 003017239 +000000014 000643298 000764118 D|066725143 021860815 +000000014 000652573 000827428 D|068317231 034135029 +000000014 000663886 000834449 D|058155526 070695813 +000000014 000713754 000836030 D|052709765 008425225 +000000014 000760061 000841000 D|070731606 016226157 +000000014 000775338 000855569 D|011836837 028607176 +000000014 000784350 000856691 D|034830953 099783362 +000000014 000815899 000886337 D|034198503 080565017 +000000014 000836770 000889587 D|059020598 098424428 +000000014 000843985 000903000 D|024183171 016279689 +000000014 000850806 000925373 D|001362485 028249712 +000000014 000854797 000935180 D|058565250 008417417 +000000014 000885827 000959004 D|041658419 008528475 +000000014 000924786 000963811 D|018449128 025727935 +000000014 000935618 000966978 D|046573035 045176543 +000000014 000946572 000972737 D|009458011 083006759 +000000015 000022800 000005318 D|054902205 010026873 +000000015 000023560 000032446 D|090716157 056022266 +000000015 000030053 000087765 D|069641226 033962546 +000000015 000033001 000107004 D|090996990 097639012 +000000015 000036337 000111145 D|080671006 079806908 +000000015 000036459 000153851 D|073597456 063158139 +000000015 000040739 000169386 D|029177532 032535555 +000000015 000080085 000178770 D|032973080 008017813 +000000015 000084308 000225098 D|093725284 035668456 +000000015 000085609 000241705 D|092617119 096899309 +000000015 000099280 000248340 D|087575203 077286868 +000000015 000099921 000261725 D|095520168 033473386 +000000015 000147561 000281920 D|055953614 023756129 +000000015 000233115 000305303 D|049656217 029407147 +000000015 000268522 000315220 D|043580613 092656956 +000000015 000293335 000321684 D|028797147 001634050 +000000015 000311193 000345491 D|034518635 002224308 +000000015 000346204 000350751 D|055375913 000929384 +000000015 000393466 000351155 D|086211393 041454210 +000000015 000399227 000364549 D|035311177 044814018 +000000015 000419396 000378261 D|085290097 038542162 +000000015 000434777 000394424 D|080530287 014162789 +000000015 000486428 000419254 D|019922746 060429417 +000000015 000500864 000435179 D|026079743 046604852 +000000015 000505998 000439822 D|017829723 079232801 +000000015 000545820 000443307 D|052170987 009783369 +000000015 000574334 000447799 D|069669558 017635421 +000000015 000578374 000453526 D|042404792 037190259 +000000015 000581871 000457477 D|041557433 025228635 +000000015 000614953 000478149 D|036935830 041801147 +000000015 000646041 000497386 D|038828003 041608466 +000000015 000660611 000545394 D|084604667 088390112 +000000015 000679175 000548328 D|073716027 032057099 +000000015 000702374 000550873 D|063410474 054113970 +000000015 000719763 000552093 D|064024510 069415190 +000000015 000734923 000564141 D|012418436 072780565 +000000015 000753461 000570045 D|075110990 033918363 +000000015 000788206 000603563 D|077505475 036777991 +000000015 000801660 000627988 D|015236541 080521559 +000000015 000806709 000649634 D|072910982 092935940 +000000015 000819510 000663712 D|065833866 001561685 +000000015 000832247 000719847 D|064750312 053351517 +000000015 000853799 000767030 D|078672185 060940630 +000000015 000861847 000768589 D|091349674 090858348 +000000015 000885862 000769432 D|030781809 053042675 +000000015 000892656 000806372 D|055657983 050581422 +000000015 000894041 000869724 D|053693715 082191904 +000000015 000900224 000970046 D|009415645 016844969 +000000015 000912762 000973187 D|080213487 095369134 +000000015 000925779 000989543 D|030984474 034253413 +000000016 000003666 000012739 D|084041519 050301345 +000000016 000007885 000025653 D|096107950 085512038 +000000016 000011833 000026934 D|075480534 073366707 +000000016 000012778 000029670 D|037033795 087688272 +000000016 000017447 000063753 D|071193569 055894069 +000000016 000019700 000071536 D|079849390 051498202 +000000016 000038604 000127212 D|040181620 091850892 +000000016 000044965 000137766 D|094055864 066023003 +000000016 000053090 000140223 D|021044778 037694544 +000000016 000112350 000167313 D|029649663 014530359 +000000016 000130834 000173216 D|037504773 021173611 +000000016 000148789 000185487 D|085612681 046028538 +000000016 000157285 000206725 D|051089726 028303411 +000000016 000197791 000226983 D|059314965 013714905 +000000016 000198714 000277158 D|020708791 035457154 +000000016 000204986 000305132 D|057531542 058275003 +000000016 000232187 000336365 D|015913387 013227684 +000000016 000237362 000343062 D|051979328 099650817 +000000016 000271630 000381066 D|000597451 014431657 +000000016 000286732 000399819 D|005228619 019433288 +000000016 000289242 000400531 D|069404665 013401902 +000000016 000362002 000406644 D|075504784 040793591 +000000016 000365325 000423454 D|089082672 002792713 +000000016 000373467 000447246 D|063466756 050541813 +000000016 000375535 000490320 D|051227986 020495528 +000000016 000382687 000511500 D|045625600 069719101 +000000016 000451634 000574994 D|046974120 098060005 +000000016 000466164 000580386 D|099647874 040814472 +000000016 000469584 000606496 D|075918490 066787924 +000000016 000511981 000613037 D|012587511 057640705 +000000016 000520646 000640573 D|094569761 022788598 +000000016 000521489 000642630 D|033889565 097092952 +000000016 000552717 000648625 D|049943690 026580671 +000000016 000591028 000682388 D|032061692 065011170 +000000016 000602418 000697598 D|039646815 055173412 +000000016 000645427 000724427 D|082294179 020377022 +000000016 000658450 000789689 D|002805081 011603954 +000000016 000668046 000807827 D|056374075 052410159 +000000016 000689610 000809542 D|097719250 018706648 +000000016 000739533 000815275 D|097626777 096366062 +000000016 000743325 000816818 D|093984742 063552917 +000000016 000763327 000906857 D|088613359 052588167 +000000016 000778871 000918396 D|002011226 046410596 +000000016 000793128 000920873 D|073619401 064999157 +000000016 000847132 000921217 D|040829885 024982856 +000000016 000877429 000929337 D|035230003 086725522 +000000016 000900707 000944243 D|004322145 074145979 +000000016 000908166 000944300 D|053809498 020288915 +000000016 000952287 000983357 D|063982245 038977662 +000000016 000993594 000985227 D|091149983 059876350 +000000017 000011337 000017640 D|026068025 034810453 +000000017 000020184 000023918 D|044920717 028418176 +000000017 000031484 000056739 D|043276738 034483061 +000000017 000053357 000074617 D|089270791 044494526 +000000017 000099030 000114355 D|090212708 043485390 +000000017 000106032 000119472 D|045422862 020650064 +000000017 000107497 000123545 D|055503242 052079559 +000000017 000159328 000128303 D|055341294 088382347 +000000017 000184430 000153715 D|088319143 010717781 +000000017 000206568 000178467 D|068586509 054213588 +000000017 000217975 000204790 D|059798857 075866991 +000000017 000235268 000234396 D|007374265 078434946 +000000017 000321307 000264735 D|037409281 000464785 +000000017 000324896 000295731 D|016167572 093587761 +000000017 000419015 000298797 D|045942959 034703160 +000000017 000432947 000383548 D|030891564 074685960 +000000017 000433766 000430739 D|060794094 071497375 +000000017 000467971 000515528 D|036062484 060701657 +000000017 000482064 000525909 D|011159637 007433591 +000000017 000525271 000529811 D|092109713 029789077 +000000017 000535745 000545788 D|008136114 045155708 +000000017 000536518 000548032 D|088156201 030433471 +000000017 000539886 000558961 D|008540516 055962406 +000000017 000547150 000575936 D|070382357 059756973 +000000017 000579695 000605976 D|094157039 022104193 +000000017 000589185 000628581 D|029473989 059922387 +000000017 000593056 000683793 D|019080440 032190796 +000000017 000633428 000721722 D|013445726 030992722 +000000017 000653115 000749108 D|020178531 082541103 +000000017 000658102 000752365 D|029962180 086946895 +000000017 000705575 000757696 D|015075666 082168201 +000000017 000762580 000768909 D|075669263 012406479 +000000017 000772863 000770432 D|042146523 053045495 +000000017 000779512 000776579 D|084008055 066634342 +000000017 000786975 000784225 D|044920589 042051513 +000000017 000799736 000804005 D|032091728 023412399 +000000017 000814003 000823560 D|078388423 051585080 +000000017 000850855 000829351 D|056057303 094623315 +000000017 000863613 000830672 D|005331702 067198215 +000000017 000885997 000860171 D|077596538 075541901 +000000017 000890825 000860874 D|012498493 004670784 +000000017 000898032 000865623 D|063988292 089764854 +000000017 000914156 000917705 D|008038582 005760384 +000000017 000925321 000940597 D|074532571 015159180 +000000017 000937301 000942100 D|014374332 039623026 +000000017 000944720 000947746 D|040675264 004060949 +000000017 000957569 000963060 D|065842370 077040511 +000000017 000964871 000975699 D|074118532 047679065 +000000017 000985444 000983503 D|021551020 084864947 +000000017 000999599 000986692 D|080992206 010212685 +000000018 000012702 000006380 D|021723207 040486882 +000000018 000078688 000018200 D|003091916 024384468 +000000018 000088309 000028442 D|079618110 018935920 +000000018 000090512 000040057 D|099458814 082119893 +000000018 000102561 000043541 D|035245070 027659973 +000000018 000124085 000057897 D|012765785 093553857 +000000018 000129897 000080674 D|000726049 002839713 +000000018 000166044 000096601 D|051415706 007184245 +000000018 000166591 000106228 D|090085394 032787284 +000000018 000181437 000119360 D|014255010 027995891 +000000018 000192100 000141122 D|025257913 076440047 +000000018 000243831 000163873 D|022193891 025253298 +000000018 000247649 000183997 D|016544664 099153310 +000000018 000274574 000191083 D|030451762 018647196 +000000018 000289132 000193332 D|092392537 069882269 +000000018 000298279 000196600 D|028174161 060872886 +000000018 000301691 000208100 D|054341090 013756472 +000000018 000360379 000268731 D|005027339 040779755 +000000018 000367954 000270144 D|036087998 042951575 +000000018 000368675 000291480 D|050165665 065193365 +000000018 000390786 000302407 D|082484213 086308727 +000000018 000440816 000317970 D|069966165 036729691 +000000018 000446095 000371944 D|034825375 092132023 +000000018 000467905 000457344 D|069146272 008105449 +000000018 000489695 000491481 D|056409930 095958378 +000000018 000499669 000515033 D|016812714 085741045 +000000018 000516452 000533340 D|095968167 016129697 +000000018 000537415 000543071 D|094157714 062823387 +000000018 000537569 000543217 D|037953733 020354875 +000000018 000543867 000544932 D|050660918 078229202 +000000018 000588585 000587130 D|077300983 036886004 +000000018 000610414 000589266 D|041661298 006749892 +000000018 000616526 000613354 D|045604446 068623912 +000000018 000622770 000626524 D|076874400 086766725 +000000018 000624449 000639875 D|074887589 088517271 +000000018 000634589 000652770 D|072243397 043538274 +000000018 000685145 000676268 D|053828496 017446620 +000000018 000716116 000691383 D|093326759 058241916 +000000018 000725333 000721487 D|089399937 079810240 +000000018 000742960 000722575 D|083815082 029482838 +000000018 000765036 000732334 D|042871474 032019641 +000000018 000806655 000759008 D|063662048 038815851 +000000018 000814029 000759586 D|022111302 017212031 +000000018 000816322 000774924 D|054611129 093656284 +000000018 000824414 000775370 D|061057181 096002568 +000000018 000829712 000831945 D|052156322 013296613 +000000018 000841868 000883966 D|030331717 006738178 +000000018 000867244 000926486 D|083470182 044868296 +000000018 000900872 000977402 D|007056700 053260793 +000000018 000949658 000981683 D|095279091 011855422 +000000019 000011986 000003062 D|086888003 074824005 +000000019 000024682 000005139 D|072617001 028591670 +000000019 000068988 000048354 D|078136314 031073872 +000000019 000090105 000061480 D|015565891 042990074 +000000019 000103604 000076871 D|066734334 098922544 +000000019 000118344 000090841 D|012170574 034402095 +000000019 000119606 000109621 D|007909047 041045737 +000000019 000136680 000155307 D|076050282 096258834 +000000019 000143518 000181471 D|057860005 027057923 +000000019 000167822 000186768 D|056659376 097995561 +000000019 000189939 000327931 D|018141295 007857758 +000000019 000271159 000332676 D|093279094 052704275 +000000019 000272339 000346005 D|060515578 018228835 +000000019 000289542 000354996 D|081893264 033068944 +000000019 000335959 000359527 D|011094556 005103027 +000000019 000344826 000404180 D|091709343 038812230 +000000019 000349799 000408077 D|074429452 020367017 +000000019 000356262 000411402 D|015321756 000158493 +000000019 000361688 000418820 D|017703056 016987931 +000000019 000363720 000463039 D|083770446 099349492 +000000019 000364716 000474208 D|010747643 080079327 +000000019 000416900 000484942 D|090898687 069712422 +000000019 000446729 000496687 D|036897064 079684813 +000000019 000461015 000510908 D|049827176 097683207 +000000019 000491069 000511961 D|021405746 019443137 +000000019 000520809 000542896 D|042411897 013259664 +000000019 000546242 000569620 D|067102245 077763404 +000000019 000581095 000577051 D|010375431 092903337 +000000019 000619934 000599429 D|009517513 075743223 +000000019 000632184 000626021 D|099688143 095509315 +000000019 000636996 000647006 D|078123462 054384720 +000000019 000664101 000673065 D|044422313 093666219 +000000019 000686445 000690765 D|078760934 007961788 +000000019 000706019 000693011 D|070399129 048392289 +000000019 000727783 000727950 D|037270493 072046088 +000000019 000752970 000737523 D|023286677 005083618 +000000019 000761445 000745211 D|044301802 085252657 +000000019 000779516 000753586 D|000274796 003084453 +000000019 000788982 000799234 D|056430678 085447425 +000000019 000807953 000801824 D|060543402 056679699 +000000019 000828632 000806300 D|053799305 080973186 +000000019 000851633 000829557 D|001193287 017463537 +000000019 000878051 000834854 D|088798840 063157881 +000000019 000911407 000858153 D|042395791 049190895 +000000019 000933368 000870520 D|078702261 024502012 +000000019 000946627 000899879 D|040299696 013975453 +000000019 000954534 000932142 D|016052682 040052166 +000000019 000961970 000937156 D|096295070 034138962 +000000019 000992664 000939623 D|081340373 004109159 +000000019 000995607 000977471 D|069522476 020581981 +000000020 000021545 000001948 D|038878700 086457740 +000000020 000022690 000067203 D|017355188 086682401 +000000020 000022808 000075877 D|054563868 073074794 +000000020 000028141 000076894 D|051977238 088076607 +000000020 000044917 000083822 D|037135955 021982468 +000000020 000056367 000126345 D|042870061 045278903 +000000020 000071269 000144537 D|089085035 022979154 +000000020 000116344 000147743 D|078771419 090664955 +000000020 000117369 000159858 D|001732951 020517515 +000000020 000130481 000178212 D|090627288 056314565 +000000020 000152820 000191136 D|041027018 098134035 +000000020 000166074 000197894 D|055451092 082567309 +000000020 000168910 000215824 D|089987029 026995402 +000000020 000187234 000219365 D|028944694 020210051 +000000020 000209692 000224081 D|018351432 081952934 +000000020 000211607 000234845 D|026067114 020077091 +000000020 000227026 000253921 D|080989223 005562364 +000000020 000249851 000258630 D|068549312 016551436 +000000020 000263746 000263292 D|007205942 096076226 +000000020 000273976 000265451 D|058226187 078643498 +000000020 000349765 000302507 D|090199593 014774223 +000000020 000366154 000328744 D|023486890 029302161 +000000020 000373570 000335354 D|002011997 094427009 +000000020 000378270 000354751 D|056175404 020338250 +000000020 000379696 000354985 D|030589448 040921632 +000000020 000415474 000359337 D|000610098 021673725 +000000020 000441099 000380580 D|021594679 016015956 +000000020 000454878 000427473 D|071739616 057620847 +000000020 000502285 000437343 D|037046428 046068869 +000000020 000524008 000455420 D|035402472 045883788 +000000020 000537671 000498941 D|056292113 020707117 +000000020 000606170 000501160 D|041806783 004439863 +000000020 000609847 000516824 D|086478314 059491149 +000000020 000612969 000546817 D|078147297 080398213 +000000020 000634299 000554322 D|056572393 004719511 +000000020 000651043 000554814 D|048111037 018850996 +000000020 000710754 000580462 D|017061884 013860335 +000000020 000714675 000604704 D|038093797 020307914 +000000020 000739413 000671846 D|057473027 043534535 +000000020 000745265 000692934 D|078257887 077810636 +000000020 000787963 000736467 D|087405364 074443935 +000000020 000798000 000781715 D|000032880 026944661 +000000020 000822029 000782538 D|019063585 010644254 +000000020 000840863 000783107 D|014092127 014027851 +000000020 000858051 000795202 D|020656024 082207027 +000000020 000882772 000809879 D|042110264 041656872 +000000020 000886759 000815818 D|086514328 008027775 +000000020 000895288 000847467 D|063856243 046755266 +000000020 000922980 000889247 D|048163914 024795552 +000000020 000923056 000952635 D|025694259 098807261 +000000021 000001521 000006562 D|092165436 026624710 +000000021 000002534 000019946 D|067041552 019071353 +000000021 000030973 000058347 D|028322102 094127503 +000000021 000066477 000084313 D|044449557 099911431 +000000021 000074081 000095125 D|010201977 072183769 +000000021 000116643 000118728 D|026463004 047914223 +000000021 000127966 000131095 D|056008545 034104767 +000000021 000153308 000146093 D|012623310 078500563 +000000021 000157815 000150671 D|068864952 011044726 +000000021 000168330 000154493 D|094993857 050055579 +000000021 000217517 000164472 D|080496753 057385005 +000000021 000247486 000198146 D|038030445 082464991 +000000021 000279106 000198997 D|094585821 054034836 +000000021 000294788 000234398 D|045850854 071388169 +000000021 000297753 000246693 D|017598628 055643381 +000000021 000411054 000248340 D|020118298 079158094 +000000021 000422614 000265041 D|096752518 085352539 +000000021 000425175 000281030 D|012732531 025634771 +000000021 000436758 000299597 D|027120555 053866740 +000000021 000440035 000344105 D|087365979 055193728 +000000021 000463327 000400162 D|057210014 025181057 +000000021 000463467 000437282 D|027058073 089232877 +000000021 000480940 000453292 D|018280826 086197341 +000000021 000485617 000458669 D|021166442 011648273 +000000021 000489508 000461514 D|006643018 050016438 +000000021 000559027 000470699 D|039559841 078680285 +000000021 000592605 000481154 D|088057043 090103471 +000000021 000621372 000481204 D|040570510 062451829 +000000021 000635356 000514151 D|003182790 066613705 +000000021 000650767 000520265 D|058400581 003471295 +000000021 000657452 000528931 D|096475549 032853881 +000000021 000692965 000547591 D|046504241 099155739 +000000021 000699475 000581579 D|064938948 063176136 +000000021 000704573 000581950 D|016959102 089498776 +000000021 000743681 000600161 D|002285054 066280015 +000000021 000773759 000742085 D|020676894 097444661 +000000021 000815568 000757325 D|072130899 073255296 +000000021 000820602 000838876 D|068308759 078952938 +000000021 000831770 000854637 D|032698443 056505321 +000000021 000839947 000855337 D|057094773 050774284 +000000021 000853571 000865510 D|082829824 067720953 +000000021 000853788 000897064 D|069869347 021247468 +000000021 000854580 000918409 D|059595779 008667443 +000000021 000866495 000919302 D|026075673 013430094 +000000021 000890153 000925003 D|081472036 029985285 +000000021 000911035 000932274 D|063984199 086616292 +000000021 000926185 000935324 D|048860708 011107235 +000000021 000966603 000936685 D|005569716 036816248 +000000021 000967849 000974548 D|044856472 023029538 +000000021 000993083 000977829 D|091564614 039330191 +000000022 000007641 000086187 D|083458873 068675015 +000000022 000046388 000111627 D|089559306 040199998 +000000022 000046932 000119476 D|006777498 052271708 +000000022 000079700 000136057 D|085161993 074754365 +000000022 000080711 000146944 D|084022737 014339087 +000000022 000085646 000150275 D|027603406 048083322 +000000022 000116040 000167259 D|083319009 019253924 +000000022 000117693 000174309 D|087405840 046287348 +000000022 000151906 000230377 D|098080771 051410780 +000000022 000156705 000239549 D|048703656 083448868 +000000022 000175159 000241927 D|046393010 040021801 +000000022 000176070 000246886 D|094341493 018738463 +000000022 000200079 000247310 D|014210894 092434176 +000000022 000232986 000274050 D|022917622 012368321 +000000022 000247515 000282525 D|055166162 016423558 +000000022 000254670 000309478 D|005788882 034241680 +000000022 000279618 000327209 D|051897553 045488166 +000000022 000301343 000347519 D|039913455 064385347 +000000022 000317675 000366080 D|065349800 027908323 +000000022 000326245 000390531 D|022838953 039524463 +000000022 000330291 000421565 D|058404594 079321852 +000000022 000337519 000432641 D|051558364 065769041 +000000022 000338963 000481622 D|031360609 042205780 +000000022 000362845 000488678 D|089608264 010454359 +000000022 000369364 000545186 D|003720136 027505303 +000000022 000376021 000558852 D|087993489 037046580 +000000022 000395534 000561717 D|069301373 035646027 +000000022 000543228 000576517 D|032832673 006044023 +000000022 000564641 000598967 D|079434942 059298843 +000000022 000614737 000630157 D|000273504 038139191 +000000022 000614805 000699021 D|072419300 060655292 +000000022 000621923 000724281 D|020555518 061682401 +000000022 000627425 000730332 D|010607717 035661663 +000000022 000634782 000737513 D|093027271 068735382 +000000022 000640445 000740631 D|001348192 046873565 +000000022 000658455 000774078 D|012143388 078798475 +000000022 000660690 000785147 D|066115009 031150634 +000000022 000686202 000788166 D|078657643 022587579 +000000022 000732846 000808524 D|032809741 098679885 +000000022 000763845 000809567 D|031285702 081457700 +000000022 000771830 000897487 D|066893088 041232512 +000000022 000784064 000900379 D|052387973 081641703 +000000022 000816718 000901838 D|085240269 002777837 +000000022 000847630 000910602 D|081001071 049473197 +000000022 000851480 000923389 D|041485139 053836900 +000000022 000900332 000941732 D|084032807 036189145 +000000022 000943509 000956029 D|066295095 054078367 +000000022 000958409 000962370 D|022827742 098823999 +000000022 000960957 000975992 D|087373642 047655061 +000000022 000996274 000989104 D|017809008 097041091 +000000023 000004665 000057690 D|091257824 087854853 +000000023 000016211 000058537 D|009482787 032721108 +000000023 000056325 000096925 D|066424931 013165350 +000000023 000061268 000156404 D|011904298 013217139 +000000023 000071077 000177136 D|098325863 061340094 +000000023 000072920 000198619 D|029102348 036420386 +000000023 000100934 000199589 D|085967052 091873118 +000000023 000114805 000202108 D|053568154 022567067 +000000023 000116937 000212743 D|014619509 017950246 +000000023 000180552 000249161 D|099459078 061769867 +000000023 000191459 000259901 D|063903150 011486012 +000000023 000202138 000286148 D|036287969 024115155 +000000023 000245373 000306611 D|008728655 042305425 +000000023 000254130 000316690 D|084146111 080312139 +000000023 000259490 000341870 D|029490867 012579469 +000000023 000319479 000377870 D|049611668 061586231 +000000023 000322101 000392952 D|065553202 017718388 +000000023 000405753 000403157 D|078624770 058545497 +000000023 000444233 000445225 D|007970151 067148016 +000000023 000446148 000448559 D|011587993 001633463 +000000023 000456871 000490731 D|022676051 091206764 +000000023 000473992 000493597 D|033007778 089570502 +000000023 000478458 000507175 D|067094985 088774470 +000000023 000498716 000524247 D|071747090 015492997 +000000023 000547120 000564420 D|001567695 075160366 +000000023 000556814 000572559 D|042428819 086068688 +000000023 000633372 000574110 D|009443250 022561906 +000000023 000644959 000577010 D|056769833 093370586 +000000023 000673243 000584081 D|064805445 057503008 +000000023 000704123 000601373 D|063237597 039117293 +000000023 000707682 000613442 D|055252946 010733868 +000000023 000754814 000642902 D|033662407 088372994 +000000023 000764733 000652802 D|021292627 074583643 +000000023 000770155 000656563 D|082219596 069414282 +000000023 000816619 000703200 D|000138072 037598835 +000000023 000827935 000705910 D|045484930 057823016 +000000023 000830779 000713604 D|053859615 065377248 +000000023 000832870 000729833 D|078832607 031641160 +000000023 000850840 000731669 D|010212050 078917943 +000000023 000874429 000739718 D|078706492 030974846 +000000023 000895557 000775393 D|048068240 034887642 +000000023 000919747 000854748 D|047075850 083565499 +000000023 000927851 000860935 D|000155961 041086955 +000000023 000934727 000865520 D|074173268 026911257 +000000023 000935667 000874115 D|065584458 058791706 +000000023 000959255 000905107 D|057012717 028114921 +000000023 000968835 000922357 D|096585123 026757460 +000000023 000987049 000931716 D|071009850 076274685 +000000023 000987848 000971113 D|075157800 091931162 +000000023 000994736 000997367 D|074782333 025727708 +000000024 000131703 000044106 D|026864940 046618245 +000000024 000163208 000052667 D|037892250 099172710 +000000024 000178161 000100184 D|028226525 024085268 +000000024 000218583 000107552 D|073459724 080531096 +000000024 000230304 000130058 D|020262479 057470258 +000000024 000234324 000175671 D|008752442 095062400 +000000024 000318328 000194425 D|000879927 041657240 +000000024 000339366 000217824 D|037716825 048990336 +000000024 000403752 000231963 D|004982560 035665506 +000000024 000415662 000232034 D|028437871 031497284 +000000024 000430067 000271443 D|066955149 075357092 +000000024 000454788 000285348 D|077155372 043652063 +000000024 000488612 000292479 D|018710052 078321984 +000000024 000490929 000300665 D|078147630 040782293 +000000024 000492118 000352821 D|061354060 006035277 +000000024 000493761 000356011 D|040289688 097220819 +000000024 000498800 000364762 D|084091278 028150132 +000000024 000505475 000365711 D|061656733 097211719 +000000024 000506349 000371814 D|087543325 080419444 +000000024 000563662 000373620 D|093903397 056193381 +000000024 000581984 000380781 D|093085245 056633273 +000000024 000596059 000382013 D|022216912 018921088 +000000024 000608984 000433532 D|066275818 045040469 +000000024 000619464 000452184 D|035055403 065235364 +000000024 000634032 000474608 D|071257643 003373505 +000000024 000654394 000540218 D|035387177 040485066 +000000024 000669813 000577030 D|043203929 061476869 +000000024 000697287 000586390 D|083597346 041027146 +000000024 000697762 000599700 D|082595903 053698936 +000000024 000698378 000613996 D|074672336 042966962 +000000024 000701998 000625519 D|031496097 042957568 +000000024 000706505 000634344 D|068532100 067791608 +000000024 000723035 000638815 D|066559562 051216275 +000000024 000727148 000640140 D|089778478 063644041 +000000024 000740209 000752828 D|007196105 085568289 +000000024 000792162 000766696 D|050109833 074161387 +000000024 000816344 000789699 D|041233552 044527984 +000000024 000825795 000796679 D|000051038 048020924 +000000024 000830080 000805283 D|040215679 031076669 +000000024 000837526 000813087 D|060402873 021660740 +000000024 000840722 000817156 D|024278914 015942293 +000000024 000844985 000820488 D|052396635 064804675 +000000024 000852034 000831397 D|005373959 019937017 +000000024 000861743 000836934 D|035189909 045366951 +000000024 000863029 000840832 D|052118682 034676902 +000000024 000905477 000885825 D|090119436 065986301 +000000024 000909668 000894585 D|035738898 007477457 +000000024 000910124 000928942 D|010181027 014506872 +000000024 000916281 000933226 D|058798599 092987706 +000000024 000929056 000976838 D|095485078 003409667 +000000025 000002212 000006854 D|073935072 051902417 +000000025 000006823 000024231 D|030568727 051652249 +000000025 000045834 000035370 D|017836594 024100703 +000000025 000051912 000062938 D|069238729 017034042 +000000025 000075205 000112161 D|038949948 030874130 +000000025 000119592 000119395 D|058488770 085795322 +000000025 000147220 000132912 D|050240822 068598057 +000000025 000164442 000155438 D|011763532 005919656 +000000025 000185538 000165012 D|072122680 080907959 +000000025 000205843 000168552 D|083279702 019951496 +000000025 000206594 000195977 D|005089911 065727273 +000000025 000222223 000215758 D|053520937 073948365 +000000025 000244706 000216922 D|033310466 041541989 +000000025 000290873 000238628 D|037226588 027399326 +000000025 000314105 000242244 D|072942765 011199742 +000000025 000317171 000243700 D|011265560 032823342 +000000025 000334538 000248648 D|027732740 048135871 +000000025 000395003 000261721 D|050004619 020287281 +000000025 000441414 000264792 D|022297510 095350388 +000000025 000447099 000265864 D|042966766 095855654 +000000025 000462423 000283046 D|043735740 028272695 +000000025 000505805 000287322 D|095474035 011166269 +000000025 000514802 000290991 D|075245941 061368073 +000000025 000533830 000301531 D|036246279 084919260 +000000025 000544186 000315818 D|032008633 021988781 +000000025 000549691 000329656 D|008287033 002593840 +000000025 000615429 000393178 D|036706513 028039441 +000000025 000624856 000451459 D|039749812 052185464 +000000025 000643306 000509100 D|008692476 096040680 +000000025 000644587 000515970 D|044976129 012656946 +000000025 000683210 000518483 D|017220881 000248206 +000000025 000691724 000522040 D|009326942 012694247 +000000025 000694454 000546745 D|071151427 091913063 +000000025 000704135 000593474 D|003765228 042167590 +000000025 000713429 000611389 D|081078469 075597021 +000000025 000714877 000624589 D|055172185 074666298 +000000025 000727619 000722914 D|049035412 009038325 +000000025 000732782 000723626 D|023597805 038665517 +000000025 000769860 000727053 D|016066994 053807149 +000000025 000780746 000731692 D|062609151 082393936 +000000025 000834767 000782406 D|091324361 071888516 +000000025 000883464 000785066 D|084214949 095466891 +000000025 000883588 000806319 D|080342314 087322884 +000000025 000884669 000850974 D|099176583 015514553 +000000025 000898387 000881941 D|051293967 090896736 +000000025 000904995 000914152 D|022457843 053828068 +000000025 000911368 000919604 D|012097863 073608711 +000000025 000923494 000937715 D|020927689 025234029 +000000025 000941890 000941755 D|081112896 098610957 +000000025 000996326 000967629 D|023141906 079461269 +000000026 000026805 000007504 D|009982603 068089060 +000000026 000038614 000031376 D|020495379 083411598 +000000026 000045810 000060482 D|052956987 055507589 +000000026 000056840 000118168 D|092344073 027431291 +000000026 000071112 000148509 D|086130284 009083098 +000000026 000108218 000167928 D|067319794 098499267 +000000026 000122300 000173913 D|099605587 021401002 +000000026 000150169 000197588 D|073477113 075757919 +000000026 000151566 000205878 D|032513558 046405568 +000000026 000153955 000206102 D|095568377 033246376 +000000026 000166450 000209406 D|069701764 074730672 +000000026 000167374 000214293 D|077380622 001799557 +000000026 000188453 000215713 D|042291860 069722253 +000000026 000220759 000227316 D|095621154 092001488 +000000026 000230954 000238217 D|054650373 004365190 +000000026 000239427 000250329 D|068822360 049119710 +000000026 000249700 000286311 D|021288045 076132770 +000000026 000265417 000304331 D|027679630 070926617 +000000026 000267710 000311368 D|064013768 083288536 +000000026 000278487 000332214 D|081173556 029813655 +000000026 000309097 000340084 D|079860630 004643309 +000000026 000312693 000384111 D|032555648 025322764 +000000026 000342625 000391338 D|099480198 047509935 +000000026 000351701 000420441 D|089273879 010990664 +000000026 000446207 000481449 D|042898968 041040709 +000000026 000454527 000503880 D|051614782 024752359 +000000026 000472980 000506050 D|070471388 013851193 +000000026 000501881 000525840 D|029972173 020578066 +000000026 000524973 000560095 D|077106138 076064763 +000000026 000539943 000592153 D|019981063 010519121 +000000026 000549708 000636030 D|007338798 073588937 +000000026 000588901 000639066 D|087318173 017410115 +000000026 000608990 000652820 D|027700107 002827209 +000000026 000625217 000653554 D|014698517 053660541 +000000026 000626113 000680134 D|084859053 037117938 +000000026 000649941 000700320 D|069684020 063802047 +000000026 000651499 000784309 D|037208263 049148845 +000000026 000705623 000791554 D|026288216 076387291 +000000026 000717349 000804838 D|069835542 031737573 +000000026 000771748 000807874 D|047185331 031094619 +000000026 000775679 000810644 D|026381926 066518363 +000000026 000842394 000822760 D|000213835 060347817 +000000026 000845725 000828853 D|057573821 004585735 +000000026 000851251 000833619 D|061446170 067113583 +000000026 000873378 000836135 D|044534254 027329986 +000000026 000875440 000839395 D|002752492 017016548 +000000026 000893968 000842581 D|032914257 007220816 +000000026 000969900 000860537 D|096688286 014812497 +000000026 000983249 000878270 D|020401865 078059074 +000000026 000999275 000998094 D|008913433 024991246 +000000027 000014792 000013707 D|089941232 067081974 +000000027 000019727 000035085 D|054938994 012932328 +000000027 000054739 000039254 D|021131112 038845337 +000000027 000066566 000047642 D|091121907 023493386 +000000027 000078381 000054187 D|091233171 055290284 +000000027 000081186 000083328 D|068856138 086651492 +000000027 000093486 000085316 D|017754854 029323251 +000000027 000112119 000088283 D|007644322 017464828 +000000027 000124848 000107893 D|042385067 066467676 +000000027 000131255 000205953 D|097246654 090720851 +000000027 000132060 000213505 D|086163923 068997628 +000000027 000151902 000233280 D|039656227 095230922 +000000027 000179440 000261247 D|091229794 058597732 +000000027 000193065 000269877 D|063533717 074027416 +000000027 000203435 000310022 D|041058415 012617173 +000000027 000239412 000316867 D|043104996 079355822 +000000027 000274670 000320824 D|028682541 069703327 +000000027 000277999 000326733 D|087772810 075832499 +000000027 000286136 000355928 D|008824199 052013521 +000000027 000293643 000418327 D|082465565 038844330 +000000027 000313761 000423286 D|075956295 000113771 +000000027 000328136 000430910 D|020088847 030250201 +000000027 000343099 000441085 D|001821964 099360613 +000000027 000364670 000471019 D|031246304 067148854 +000000027 000381557 000487940 D|029013724 031885660 +000000027 000392506 000498464 D|022002097 037917109 +000000027 000395855 000506886 D|096942470 067898539 +000000027 000399386 000507549 D|052040848 082907697 +000000027 000415883 000528760 D|030374411 082729661 +000000027 000435103 000564012 D|032222679 097324364 +000000027 000450866 000642885 D|012629046 069123995 +000000027 000459698 000648450 D|077678974 071014756 +000000027 000463638 000656050 D|036116771 069368131 +000000027 000547880 000684574 D|054476893 055261542 +000000027 000580355 000717840 D|014844377 017179283 +000000027 000592091 000746273 D|011361244 002918568 +000000027 000625414 000782949 D|039685965 092896879 +000000027 000650884 000804031 D|099307245 054159113 +000000027 000668596 000816139 D|020129684 051907870 +000000027 000710213 000821076 D|024457111 062064999 +000000027 000722367 000856746 D|035665067 037659081 +000000027 000735279 000894245 D|003021199 021163895 +000000027 000749145 000896726 D|001510319 071852325 +000000027 000800432 000897195 D|071195489 045063020 +000000027 000858397 000917165 D|017584058 002975944 +000000027 000899349 000919876 D|035834481 009844942 +000000027 000933340 000941497 D|042636032 041406114 +000000027 000963188 000977150 D|060385794 052999836 +000000027 000972146 000979993 D|071268799 057033760 +000000027 000979286 000987320 D|027855246 052448356 +000000028 000005805 000011104 D|074981754 048983246 +000000028 000023740 000012405 D|020710215 033569734 +000000028 000031725 000031215 D|085868062 048811557 +000000028 000046842 000037497 D|052598910 018867454 +000000028 000095149 000046871 D|024172142 073663679 +000000028 000095340 000047376 D|074511588 045629684 +000000028 000098958 000089605 D|026951254 059242604 +000000028 000109612 000092794 D|081110776 074914200 +000000028 000116412 000096430 D|077361486 037552882 +000000028 000123946 000099044 D|047881248 061260247 +000000028 000127707 000114454 D|053188924 002903870 +000000028 000216727 000144412 D|010217434 012823782 +000000028 000224629 000172901 D|034468363 051045988 +000000028 000225486 000184802 D|086332660 087434670 +000000028 000239902 000203950 D|041767523 032821306 +000000028 000271920 000322411 D|099277765 000420300 +000000028 000288473 000348158 D|075095458 019395831 +000000028 000292049 000399500 D|007842936 069248540 +000000028 000301667 000407148 D|041461754 000397933 +000000028 000316098 000444062 D|051424675 042490433 +000000028 000348649 000484876 D|062203966 040972044 +000000028 000358554 000487218 D|012664585 099559198 +000000028 000359764 000513302 D|024347931 030890573 +000000028 000435811 000529845 D|088184097 027341376 +000000028 000436726 000539591 D|034125032 003396708 +000000028 000502964 000616590 D|097792612 061226417 +000000028 000522517 000628822 D|015662732 036513103 +000000028 000529015 000632973 D|052844430 026480001 +000000028 000548217 000635650 D|064924924 017267579 +000000028 000667856 000640243 D|052873280 085737507 +000000028 000670743 000649650 D|094221173 058154969 +000000028 000675497 000654418 D|050863160 011580455 +000000028 000682351 000662051 D|030711040 085154018 +000000028 000690804 000697810 D|075733639 029148972 +000000028 000695237 000726424 D|099648447 018224993 +000000028 000698051 000726800 D|053590424 071355638 +000000028 000699638 000741320 D|061315978 035580189 +000000028 000743097 000750918 D|042112446 064550133 +000000028 000750125 000764012 D|027699776 077697108 +000000028 000759092 000790908 D|048726035 001910559 +000000028 000766587 000813489 D|040436627 090546828 +000000028 000795446 000832578 D|092949669 083205226 +000000028 000803592 000837797 D|094200978 061734752 +000000028 000809983 000896153 D|015389653 060676794 +000000028 000820252 000910778 D|054809731 064789601 +000000028 000832333 000938475 D|013553339 074084374 +000000028 000911560 000953322 D|021926998 070045243 +000000028 000920984 000957571 D|042029633 036481701 +000000028 000924542 000959993 D|055823826 046523951 +000000028 000931556 000978626 D|026985189 012751181 +000000029 000011745 000016804 D|079069023 008749159 +000000029 000044175 000017934 D|031545507 070823105 +000000029 000066989 000023616 D|046519428 025219219 +000000029 000070778 000026766 D|017623169 067672140 +000000029 000079847 000050871 D|026150838 026422551 +000000029 000084176 000085144 D|092695462 069391468 +000000029 000122563 000092179 D|002975170 097004413 +000000029 000204620 000096567 D|083637272 074480357 +000000029 000226133 000097160 D|072883212 044491693 +000000029 000233059 000097945 D|045549124 048111587 +000000029 000251477 000125298 D|094332592 021556555 +000000029 000251941 000137541 D|012153891 067752393 +000000029 000267110 000151492 D|015569613 046411454 +000000029 000309862 000218823 D|023061270 070469036 +000000029 000324054 000261113 D|048729126 028486213 +000000029 000337904 000267037 D|022440316 047140909 +000000029 000343036 000278976 D|038200839 058926265 +000000029 000355806 000292292 D|039058648 039056405 +000000029 000356165 000352614 D|018671988 091496210 +000000029 000372107 000356308 D|097217965 063852324 +000000029 000386393 000364840 D|058364328 081214704 +000000029 000416682 000447654 D|027417173 012143070 +000000029 000572812 000457785 D|087317421 068646449 +000000029 000576354 000464519 D|041736835 036637877 +000000029 000658106 000468392 D|036912889 079864188 +000000029 000691629 000515626 D|073274652 087361589 +000000029 000707409 000516859 D|024754860 068091477 +000000029 000715910 000529479 D|012106675 003598732 +000000029 000719813 000537430 D|088394790 081338392 +000000029 000723273 000545634 D|050326531 028119804 +000000029 000742546 000595101 D|089401569 005725039 +000000029 000769186 000623310 D|090941857 066034121 +000000029 000805744 000624077 D|023425380 011537431 +000000029 000811997 000650485 D|037980898 082535840 +000000029 000861008 000686307 D|053237551 062249336 +000000029 000862936 000720906 D|048232252 043483656 +000000029 000867508 000746535 D|057042024 011776062 +000000029 000867647 000755619 D|045861691 002086273 +000000029 000875587 000762391 D|040806114 055965106 +000000029 000898148 000780237 D|091402894 033392603 +000000029 000904152 000780793 D|082042448 048919635 +000000029 000906683 000789229 D|085973502 017548639 +000000029 000921650 000813116 D|058560762 075103691 +000000029 000936849 000869373 D|012765527 002109755 +000000029 000939576 000874072 D|035527119 093505710 +000000029 000945717 000893359 D|036438685 017451228 +000000029 000947612 000926947 D|065567028 034252046 +000000029 000976574 000943655 D|026691360 031311462 +000000029 000986823 000971511 D|010184597 047002733 +000000029 000989608 000997042 D|010782125 047647708 +000000030 000033843 000010691 D|019558497 014786464 +000000030 000060817 000013390 D|025966323 081908383 +000000030 000075836 000046782 D|032274189 072482044 +000000030 000078888 000052400 D|084263043 093867524 +000000030 000094697 000113586 D|067954066 078486669 +000000030 000176863 000120754 D|048795677 025234197 +000000030 000191239 000144888 D|060199649 024556991 +000000030 000211611 000155331 D|009344127 073398213 +000000030 000222058 000164960 D|044288117 063550247 +000000030 000226631 000221719 D|045304568 026713232 +000000030 000232903 000241617 D|047579089 070058546 +000000030 000243315 000260443 D|055288500 039311760 +000000030 000287435 000272013 D|012503534 071457732 +000000030 000290896 000298020 D|014965390 007789924 +000000030 000332234 000318730 D|011679043 055112571 +000000030 000336317 000331549 D|006014133 049468846 +000000030 000338661 000354251 D|062188132 033130766 +000000030 000437555 000367395 D|080130622 050165247 +000000030 000442354 000371326 D|046243622 096229320 +000000030 000452117 000390198 D|034871264 023331425 +000000030 000453488 000441502 D|029778947 083559968 +000000030 000459683 000452379 D|044855007 080665451 +000000030 000472762 000464409 D|032675917 076719722 +000000030 000485168 000464671 D|075688772 088373633 +000000030 000491494 000471444 D|053554495 060903228 +000000030 000505842 000595467 D|070780095 002680578 +000000030 000529610 000601572 D|025332943 028008027 +000000030 000565227 000617814 D|088365981 032257482 +000000030 000599999 000637961 D|042294669 018841309 +000000030 000605684 000679925 D|061777364 052819383 +000000030 000606684 000706987 D|078420306 031496333 +000000030 000610331 000738796 D|008721515 068265239 +000000030 000618017 000739337 D|076179452 097514847 +000000030 000625664 000751433 D|030138870 084609118 +000000030 000697583 000769640 D|067909385 022933838 +000000030 000767754 000794957 D|036675038 006650678 +000000030 000776919 000833263 D|085203302 080055278 +000000030 000799147 000863635 D|065768969 028577331 +000000030 000803657 000890050 D|053213260 082366025 +000000030 000811730 000894931 D|080877314 065662499 +000000030 000845735 000920001 D|091792091 062894223 +000000030 000887358 000921559 D|028647107 028634825 +000000030 000899735 000928986 D|067036686 044037430 +000000030 000922836 000936649 D|082279123 094427362 +000000030 000958422 000956162 D|021517609 042242011 +000000030 000961769 000958997 D|033166704 071804844 +000000030 000964499 000973110 D|097806805 095481522 +000000030 000972949 000973848 D|072974369 026189194 +000000030 000989704 000974211 D|075060150 006793304 +000000030 000995067 000982545 D|079250837 056784071 +000000031 000033209 000008454 D|061739792 073102617 +000000031 000051367 000019536 D|037042970 019895680 +000000031 000068050 000025008 D|053602002 092358727 +000000031 000071688 000026467 D|079070034 053423827 +000000031 000087399 000044285 D|050911021 057927972 +000000031 000090134 000049901 D|058786949 082536182 +000000031 000106404 000061092 D|096992388 025038383 +000000031 000116562 000082870 D|021699825 043545149 +000000031 000124046 000085979 D|060182159 085991973 +000000031 000139727 000091084 D|074909969 016182296 +000000031 000154342 000098667 D|006199621 083569177 +000000031 000186705 000111520 D|099055253 009732274 +000000031 000213352 000175166 D|018013639 042746502 +000000031 000230344 000187659 D|070398594 018104119 +000000031 000263188 000209625 D|024349629 003692865 +000000031 000388329 000225462 D|003916300 093606197 +000000031 000400059 000261786 D|079335857 078858256 +000000031 000454718 000261909 D|071589278 014154728 +000000031 000473546 000271252 D|095774817 098056558 +000000031 000499487 000308756 D|047416573 037333513 +000000031 000503996 000320962 D|029190779 053773795 +000000031 000504278 000347852 D|090511077 013188739 +000000031 000533435 000353055 D|052754016 098737312 +000000031 000540167 000353502 D|055549426 072059877 +000000031 000567983 000396346 D|062872195 073805462 +000000031 000571541 000405710 D|095742699 003409676 +000000031 000583377 000439037 D|077984112 032220617 +000000031 000594840 000487823 D|078560523 006029536 +000000031 000605539 000503723 D|069446794 046302601 +000000031 000611267 000524902 D|042314052 042941118 +000000031 000626207 000543584 D|081680317 073858231 +000000031 000701096 000582491 D|032624662 069608891 +000000031 000716716 000612250 D|045769160 030370154 +000000031 000718713 000665221 D|061380410 016704405 +000000031 000719175 000679131 D|015729984 022058798 +000000031 000720294 000683581 D|067158267 064136584 +000000031 000727211 000729870 D|016014384 033644364 +000000031 000759905 000751358 D|000466126 071221747 +000000031 000784810 000753650 D|093207983 054312434 +000000031 000818549 000761695 D|090186543 075463659 +000000031 000838983 000769379 D|011299519 017270129 +000000031 000841299 000769395 D|095693351 064950588 +000000031 000852070 000797565 D|076040157 034309036 +000000031 000857076 000824623 D|090356375 009981266 +000000031 000870065 000845206 D|015518108 007586545 +000000031 000897777 000896574 D|056579501 017101926 +000000031 000899305 000901333 D|072990437 055513320 +000000031 000980065 000954787 D|066962804 003431529 +000000031 000991489 000968588 D|082834105 093477223 +000000031 000998598 000996713 D|021079508 021529627 +000000032 000021592 000017886 D|095202971 084936823 +000000032 000078233 000027741 D|083324470 017811292 +000000032 000080665 000030377 D|096216062 009836168 +000000032 000082739 000052746 D|051218249 066978457 +000000032 000089910 000057553 D|051451969 082916446 +000000032 000163091 000085744 D|066296389 065859047 +000000032 000180908 000088999 D|022422284 087641340 +000000032 000193042 000089196 D|026615157 087589160 +000000032 000212386 000166736 D|008520648 064433288 +000000032 000244053 000178120 D|078075826 092003966 +000000032 000270075 000196646 D|098494691 008685521 +000000032 000270414 000208118 D|036832934 044885343 +000000032 000273191 000283811 D|000166442 039646975 +000000032 000279827 000294893 D|091944862 026848811 +000000032 000286478 000326191 D|032214114 069218413 +000000032 000313186 000326771 D|018346171 040643111 +000000032 000318808 000330169 D|033530686 045628995 +000000032 000322047 000335666 D|057800499 062150332 +000000032 000376505 000369848 D|037254695 012732823 +000000032 000405878 000403240 D|017592983 047418955 +000000032 000407855 000421476 D|078888843 024394234 +000000032 000409621 000428845 D|051326032 010261632 +000000032 000414287 000460906 D|038351592 098317719 +000000032 000415772 000462259 D|058299187 023488124 +000000032 000418529 000467234 D|017745625 028964812 +000000032 000419779 000471211 D|041263917 076843451 +000000032 000460068 000503094 D|031627606 073256559 +000000032 000481229 000516928 D|094479330 087085531 +000000032 000508081 000519749 D|085896506 063453342 +000000032 000542733 000523562 D|033347626 040772800 +000000032 000562973 000531341 D|020527754 085577014 +000000032 000582114 000541496 D|025456293 026526823 +000000032 000589688 000560141 D|081458136 091404572 +000000032 000602871 000602196 D|023053648 003553773 +000000032 000607730 000606603 D|023473061 075810130 +000000032 000624805 000624633 D|047918117 083696818 +000000032 000628126 000688611 D|012507954 012118821 +000000032 000649306 000740551 D|091544218 063040425 +000000032 000712758 000761378 D|024795947 048984111 +000000032 000719266 000765205 D|033602256 051938830 +000000032 000721090 000782351 D|068822983 067049305 +000000032 000735680 000804045 D|088790861 087006223 +000000032 000755748 000816348 D|054772678 069721376 +000000032 000794341 000816727 D|028117663 095750797 +000000032 000828493 000870946 D|014140850 048629502 +000000032 000907705 000897377 D|043448405 033876437 +000000032 000957836 000911406 D|050323681 045178605 +000000032 000972265 000917677 D|009898676 017546305 +000000032 000984641 000949224 D|039263725 034107904 +000000032 000996915 000961231 D|042985785 027536486 +000000033 000005782 000001536 D|065629153 055254347 +000000033 000006661 000010319 D|013741439 074316941 +000000033 000041223 000037911 D|040090021 064031168 +000000033 000049489 000040693 D|026186582 050595984 +000000033 000053191 000087979 D|005582433 017050761 +000000033 000056063 000094207 D|030190593 057339086 +000000033 000100995 000097560 D|065459838 082277523 +000000033 000111750 000105941 D|044907999 099767114 +000000033 000139981 000174559 D|075921337 085188380 +000000033 000205091 000185444 D|058107128 056784947 +000000033 000205475 000187231 D|044073514 072653144 +000000033 000214780 000283602 D|061712625 063152586 +000000033 000236236 000285271 D|046890924 017995658 +000000033 000269947 000296084 D|072198506 067448272 +000000033 000289126 000296335 D|061604973 071709998 +000000033 000312169 000300571 D|081453972 099249816 +000000033 000350898 000320862 D|096538657 087190363 +000000033 000378558 000329059 D|060701849 052733243 +000000033 000418517 000361363 D|055300737 076671506 +000000033 000427337 000361395 D|086708923 019362973 +000000033 000436231 000377868 D|018860419 067095208 +000000033 000439965 000384083 D|094621636 077049115 +000000033 000534578 000387790 D|047605124 007187861 +000000033 000541095 000393193 D|017482334 061631554 +000000033 000560817 000415632 D|057488861 039557654 +000000033 000562608 000422495 D|041947308 056700311 +000000033 000569077 000442700 D|074030285 027423220 +000000033 000614343 000459181 D|099561753 067929598 +000000033 000614913 000469937 D|090448436 012504548 +000000033 000633619 000491198 D|089402741 098913944 +000000033 000638727 000542057 D|081627101 000613973 +000000033 000654709 000580616 D|005456606 003099605 +000000033 000656376 000591722 D|009737401 059570854 +000000033 000674448 000658804 D|042417761 034607451 +000000033 000700793 000712883 D|033451258 066970811 +000000033 000703282 000716734 D|024805208 051161117 +000000033 000703690 000722459 D|017453788 032421665 +000000033 000705418 000751386 D|062905958 073862946 +000000033 000748550 000760922 D|056393646 049048948 +000000033 000804495 000776629 D|045601259 092610286 +000000033 000809125 000779683 D|002583518 087338062 +000000033 000849770 000787601 D|029476175 001287894 +000000033 000862480 000816651 D|055787116 006619187 +000000033 000864845 000834259 D|080593095 015324385 +000000033 000899775 000845530 D|094161777 067131073 +000000033 000927042 000851701 D|041506561 063919934 +000000033 000950121 000880464 D|031977742 050376244 +000000033 000967259 000900457 D|042556062 012554160 +000000033 000967652 000987240 D|081131709 080620116 +000000033 000974098 000999073 D|090542454 037392382 +000000034 000004754 000035488 D|016590882 047309971 +000000034 000058916 000069495 D|012249969 001997933 +000000034 000086197 000076217 D|078861114 007567490 +000000034 000103868 000104165 D|021005267 019925019 +000000034 000154045 000117357 D|075302392 040595960 +000000034 000158464 000189425 D|050186475 033886981 +000000034 000191331 000190220 D|084996121 060766194 +000000034 000215453 000191718 D|075840400 067745042 +000000034 000219837 000219786 D|085167191 070425863 +000000034 000232576 000252623 D|004302397 005701752 +000000034 000244426 000275807 D|070567873 039034917 +000000034 000260166 000279424 D|012602259 035997587 +000000034 000273389 000283365 D|076129419 079487566 +000000034 000275932 000297442 D|078827893 040478889 +000000034 000302927 000303077 D|066822940 036246253 +000000034 000317771 000304926 D|077486128 042669394 +000000034 000329298 000306620 D|020969789 040440131 +000000034 000384430 000313404 D|045404031 000347347 +000000034 000388396 000341901 D|053451090 084978429 +000000034 000411738 000387347 D|045079834 097243168 +000000034 000464787 000396401 D|023716638 021287182 +000000034 000473204 000401972 D|032961613 037287736 +000000034 000492101 000425685 D|021318349 088105857 +000000034 000498712 000429210 D|081296856 023733957 +000000034 000511780 000456755 D|065621025 036856135 +000000034 000539435 000469520 D|014707436 001402646 +000000034 000568897 000486384 D|088504036 009090289 +000000034 000579728 000491966 D|018297269 006622843 +000000034 000662566 000503920 D|006018581 070779843 +000000034 000688942 000511080 D|071925336 050698069 +000000034 000694638 000526419 D|049237353 028460483 +000000034 000698985 000554097 D|032116095 013911306 +000000034 000705042 000576695 D|052303972 043069750 +000000034 000731853 000591904 D|096728944 024573693 +000000034 000748992 000614767 D|045713662 019683858 +000000034 000752144 000620031 D|000565733 069510546 +000000034 000785419 000652663 D|015837565 088805272 +000000034 000786254 000672676 D|050612559 093318203 +000000034 000788444 000681551 D|086007253 044674778 +000000034 000809166 000723277 D|054845439 082202390 +000000034 000834625 000762130 D|067380834 043560493 +000000034 000853774 000801061 D|037630995 029068989 +000000034 000857403 000810958 D|030874328 029973727 +000000034 000895285 000833174 D|048677904 076009218 +000000034 000908998 000835927 D|074528730 007420457 +000000034 000916142 000853819 D|053726874 017470798 +000000034 000961766 000872144 D|062740401 019901503 +000000034 000974102 000890485 D|098341908 024511072 +000000034 000983997 000940383 D|023470849 023964208 +000000034 000993740 000969382 D|095407368 028322514 +000000035 000002116 000006665 D|061307447 040616595 +000000035 000014173 000007234 D|017232979 034203727 +000000035 000015129 000007295 D|092128426 034517229 +000000035 000019258 000011631 D|062113314 054476003 +000000035 000049913 000039507 D|013383406 001722037 +000000035 000056257 000043187 D|001424738 044366310 +000000035 000059831 000091402 D|063265637 098064308 +000000035 000071051 000162207 D|042577193 033790833 +000000035 000081434 000190087 D|023312863 024073675 +000000035 000119900 000191221 D|076883926 002436898 +000000035 000151370 000204663 D|009826318 009400832 +000000035 000162498 000220804 D|072533629 084873932 +000000035 000189933 000222326 D|080867126 049850805 +000000035 000191677 000225013 D|083356593 004760924 +000000035 000212937 000226078 D|016940464 072013257 +000000035 000225630 000246437 D|061892609 025087995 +000000035 000284814 000282477 D|043123486 079822152 +000000035 000290075 000284366 D|021352911 093398252 +000000035 000320074 000298630 D|049588400 017461414 +000000035 000341230 000304922 D|064875470 019282363 +000000035 000385818 000355723 D|040041373 072774958 +000000035 000407073 000356646 D|040038787 018653840 +000000035 000413227 000361244 D|078748064 029605190 +000000035 000472401 000365163 D|078011276 022206635 +000000035 000493911 000372444 D|045956717 000971200 +000000035 000506165 000384611 D|033771357 091859206 +000000035 000511914 000460964 D|076712136 061853105 +000000035 000542603 000499240 D|088829912 091305639 +000000035 000544425 000504628 D|006438001 070741296 +000000035 000559623 000506509 D|050281597 092050781 +000000035 000572652 000540074 D|088917136 004370787 +000000035 000592038 000585420 D|052823693 015335805 +000000035 000611811 000599669 D|047647599 066347919 +000000035 000620338 000617079 D|008315330 010282534 +000000035 000693975 000620045 D|087034895 069532743 +000000035 000743619 000672675 D|038609120 048110514 +000000035 000752088 000688225 D|097772378 044540446 +000000035 000769020 000695126 D|040995762 027293297 +000000035 000807154 000708560 D|040961685 077819693 +000000035 000840926 000729944 D|073441878 001307738 +000000035 000848403 000812127 D|041606038 079834492 +000000035 000861280 000821793 D|078481995 061973188 +000000035 000869197 000834405 D|097637525 055016982 +000000035 000873561 000886312 D|009564451 000262554 +000000035 000894518 000906870 D|000954125 045087931 +000000035 000943258 000907187 D|080989987 021771968 +000000035 000944332 000914552 D|034749804 083275141 +000000035 000953476 000918671 D|004662825 012316096 +000000035 000960909 000920198 D|001286782 000181048 +000000035 000977304 000947852 D|020543109 068121588 +000000036 000006059 000006623 D|001926851 019216963 +000000036 000027754 000028533 D|025181713 003258271 +000000036 000050496 000038173 D|077007376 012456632 +000000036 000052019 000076660 D|005193149 092681557 +000000036 000061562 000123503 D|035024076 079422218 +000000036 000093196 000127782 D|079311007 038461704 +000000036 000101627 000131069 D|020831972 086018127 +000000036 000139413 000141095 D|050388300 075024810 +000000036 000202044 000168670 D|093544137 071418201 +000000036 000206037 000212217 D|002133066 055211498 +000000036 000210613 000249806 D|056003082 078957298 +000000036 000229625 000284287 D|069113416 078934047 +000000036 000233297 000286168 D|091239844 083043251 +000000036 000248475 000338438 D|037052331 078028459 +000000036 000290354 000354544 D|000901123 073624645 +000000036 000303469 000357540 D|035907469 017741529 +000000036 000325193 000376819 D|091627136 006190166 +000000036 000402548 000464738 D|083676293 000231119 +000000036 000466508 000477478 D|024181544 079779698 +000000036 000521244 000483036 D|063309503 031743127 +000000036 000567588 000496379 D|021661290 037953084 +000000036 000578487 000498119 D|082739266 003798248 +000000036 000676448 000572514 D|014948960 063992393 +000000036 000677037 000598840 D|082565187 047608732 +000000036 000689972 000612364 D|080304223 027005969 +000000036 000691881 000622701 D|004291971 048853508 +000000036 000694502 000641340 D|020935695 065907354 +000000036 000707263 000672525 D|005697754 055734902 +000000036 000710116 000677055 D|003309924 002660088 +000000036 000728750 000680248 D|027562562 096995692 +000000036 000728817 000712592 D|066109705 012408827 +000000036 000737855 000722902 D|056245694 037470013 +000000036 000740859 000726576 D|059888667 006599255 +000000036 000760149 000733038 D|065432253 091999435 +000000036 000771443 000767924 D|060114975 076556574 +000000036 000772327 000779441 D|071146585 024299314 +000000036 000799067 000791365 D|002096521 065505615 +000000036 000809957 000797014 D|046488354 019144844 +000000036 000822097 000812010 D|021618096 098353547 +000000036 000838162 000814028 D|017065794 001995799 +000000036 000843328 000847239 D|009447903 017525461 +000000036 000855273 000867404 D|028546755 067609234 +000000036 000870705 000884791 D|038741019 052056673 +000000036 000876408 000897157 D|054825845 084242263 +000000036 000894660 000898103 D|036209758 087284170 +000000036 000897133 000903963 D|054133128 018134530 +000000036 000942336 000942953 D|042263440 034074292 +000000036 000948727 000979551 D|015907856 062210020 +000000036 000962737 000987131 D|039063899 044523213 +000000036 000985189 000996788 D|077350800 016294903 +000000037 000020590 000007446 D|044532715 074128312 +000000037 000042729 000052573 D|057841455 088431644 +000000037 000059777 000085247 D|090028074 084565928 +000000037 000097126 000120916 D|094597185 076549427 +000000037 000102138 000126407 D|030194777 065892768 +000000037 000105449 000139655 D|013837719 039686146 +000000037 000110508 000182773 D|089234373 051288232 +000000037 000118779 000202397 D|038445764 096390897 +000000037 000124812 000248224 D|045003684 073167259 +000000037 000140554 000253560 D|054825059 009163551 +000000037 000219443 000264048 D|047206354 053527251 +000000037 000221025 000265094 D|063977771 086284325 +000000037 000262150 000269321 D|069010706 034475318 +000000037 000264947 000322522 D|097828385 073006784 +000000037 000369787 000334565 D|023145128 075958909 +000000037 000391364 000339783 D|038078477 068144872 +000000037 000410377 000343523 D|025744074 017529263 +000000037 000429346 000349201 D|071702532 056930901 +000000037 000432850 000364215 D|059472213 000488818 +000000037 000448769 000366071 D|046674973 054567082 +000000037 000451940 000428151 D|015974191 044770444 +000000037 000493950 000432074 D|069660763 033602254 +000000037 000498500 000459500 D|045164441 054584245 +000000037 000539628 000470050 D|098177774 004058150 +000000037 000543859 000497197 D|057799878 096120335 +000000037 000562767 000502946 D|056322927 024362117 +000000037 000563695 000506828 D|067638432 088638588 +000000037 000575640 000543784 D|079541981 059643011 +000000037 000649540 000548411 D|086822871 035541731 +000000037 000657931 000565396 D|052112137 056989656 +000000037 000668301 000573017 D|072322748 059236372 +000000037 000680945 000595158 D|048888605 020441028 +000000037 000688488 000624476 D|093265629 098454495 +000000037 000738296 000663075 D|007222957 022393249 +000000037 000754526 000673534 D|022426850 072100392 +000000037 000791025 000679309 D|035002528 039546637 +000000037 000798700 000721597 D|089338981 032612970 +000000037 000804021 000723609 D|036916976 022389156 +000000037 000819073 000784732 D|096914452 042374291 +000000037 000844712 000804606 D|015611737 033083814 +000000037 000852442 000823838 D|031718337 002915777 +000000037 000858809 000874833 D|031577391 086193876 +000000037 000876097 000877921 D|094911758 067440359 +000000037 000888273 000881847 D|020820088 030420995 +000000037 000944252 000893657 D|033762055 067662945 +000000037 000959746 000905148 D|069836427 024825327 +000000037 000960629 000909097 D|008302932 071415554 +000000037 000966243 000916238 D|083675562 031406694 +000000037 000973376 000943110 D|091153701 086953287 +000000037 000985750 000981223 D|022660051 063502920 +000000038 000004137 000013107 D|006811882 089399938 +000000038 000039566 000018791 D|037843911 004975091 +000000038 000058603 000069378 D|008052846 035156487 +000000038 000065258 000099354 D|080189579 026214676 +000000038 000085153 000148998 D|055832405 096091489 +000000038 000120091 000156758 D|082282398 093828378 +000000038 000153756 000168491 D|022155607 065480873 +000000038 000191058 000213606 D|051987419 012369963 +000000038 000192440 000219903 D|027102779 071148640 +000000038 000201701 000242096 D|088723877 001895298 +000000038 000207850 000244824 D|023970277 097426016 +000000038 000209068 000252343 D|051729224 093712448 +000000038 000209696 000283049 D|088344556 071718582 +000000038 000215389 000298026 D|039799850 078512129 +000000038 000222549 000299511 D|050638356 026784655 +000000038 000224013 000318439 D|044319524 010061984 +000000038 000268999 000324252 D|004985227 032183659 +000000038 000307401 000349540 D|012956212 005966971 +000000038 000319081 000370440 D|097921469 055316889 +000000038 000338262 000376234 D|096315046 096068787 +000000038 000398800 000385172 D|035281064 067384454 +000000038 000412057 000422046 D|058493624 016084456 +000000038 000412664 000428306 D|080810193 081885116 +000000038 000416029 000510283 D|077287674 093976181 +000000038 000425039 000571710 D|033924870 098448432 +000000038 000445990 000579078 D|030582996 036477146 +000000038 000479088 000585709 D|081887620 004035246 +000000038 000483327 000599487 D|097966599 094390204 +000000038 000512629 000641648 D|096565194 097875905 +000000038 000523410 000641841 D|064027028 046561735 +000000038 000600638 000648041 D|055306068 051843695 +000000038 000603418 000656841 D|019640863 085751311 +000000038 000604572 000678369 D|019454325 070705485 +000000038 000618104 000693242 D|039550783 048124065 +000000038 000625065 000707008 D|064676148 020588019 +000000038 000633625 000712807 D|059585617 051252882 +000000038 000644539 000717076 D|074786253 059078246 +000000038 000644966 000720593 D|060401625 064196539 +000000038 000682203 000722491 D|094796775 098465455 +000000038 000690273 000739986 D|037309802 068576032 +000000038 000708339 000747537 D|054969449 086972998 +000000038 000780425 000788600 D|022534382 007540576 +000000038 000795721 000820075 D|037066302 068875723 +000000038 000811794 000836227 D|026283706 087495908 +000000038 000815689 000863083 D|006221350 080612918 +000000038 000850616 000942917 D|032246662 034163364 +000000038 000868963 000950266 D|069915307 076047161 +000000038 000921853 000954829 D|008822855 054899956 +000000038 000971882 000981433 D|094638274 037605876 +000000038 000987588 000984052 D|085018339 019947432 +000000039 000000566 000003829 D|053054653 072493761 +000000039 000018686 000006628 D|035360961 032294064 +000000039 000022921 000008488 D|024857278 066206339 +000000039 000023345 000045740 D|072306345 016209978 +000000039 000032867 000057966 D|033349743 028376222 +000000039 000056337 000133832 D|087406638 051697881 +000000039 000086512 000141202 D|066514797 037675934 +000000039 000117590 000144834 D|073830795 056374428 +000000039 000117788 000156911 D|064064148 041146176 +000000039 000124181 000169681 D|039609222 092494836 +000000039 000167510 000181602 D|076154171 027376128 +000000039 000200609 000212655 D|046956863 065427082 +000000039 000211054 000213519 D|052650558 092601436 +000000039 000258716 000248502 D|066253710 064182807 +000000039 000267084 000252616 D|074923939 056099319 +000000039 000312412 000262952 D|062585643 060934102 +000000039 000323572 000263848 D|017408883 008306341 +000000039 000325697 000263946 D|031569047 010707030 +000000039 000359588 000279108 D|051495482 039788556 +000000039 000365285 000285829 D|026018243 050457443 +000000039 000390338 000304171 D|041599253 098122330 +000000039 000414249 000320925 D|020854348 083666780 +000000039 000451178 000348324 D|091438461 025021073 +000000039 000452779 000366341 D|080813601 040128402 +000000039 000466830 000374434 D|079524749 054553930 +000000039 000493185 000476493 D|008202311 017918518 +000000039 000536220 000486974 D|047139719 092716069 +000000039 000547311 000504919 D|096610004 017282895 +000000039 000584627 000551532 D|054188593 008955638 +000000039 000586032 000556022 D|039393987 058215188 +000000039 000595969 000558835 D|010072391 011644817 +000000039 000629955 000559824 D|012050421 097119268 +000000039 000663032 000562266 D|056024085 030121650 +000000039 000695692 000577943 D|090645830 049211425 +000000039 000724641 000603756 D|063449574 009922561 +000000039 000726629 000612672 D|086545825 098585348 +000000039 000749629 000613940 D|044653456 076351134 +000000039 000752420 000628411 D|013865211 092998394 +000000039 000815228 000629208 D|095459359 087433370 +000000039 000818978 000635758 D|076347448 035705156 +000000039 000820559 000681614 D|037410418 027310861 +000000039 000827920 000714765 D|041914394 085719702 +000000039 000859586 000789252 D|049716826 069422004 +000000039 000867426 000790139 D|040682284 062025995 +000000039 000874646 000828411 D|076185000 001137290 +000000039 000880915 000836070 D|092269593 053617664 +000000039 000897061 000870886 D|048687959 063230609 +000000039 000942873 000958997 D|025467396 016783380 +000000039 000962138 000973855 D|064714407 067785025 +000000039 000993395 000993541 D|003955651 078527210 +000000040 000003751 000012256 D|073576684 023609347 +000000040 000029016 000079854 D|090460269 039098068 +000000040 000036696 000090925 D|073866887 059489811 +000000040 000074365 000115015 D|093545477 051760850 +000000040 000097451 000122031 D|014011017 059463010 +000000040 000101487 000139079 D|013674611 011618661 +000000040 000106758 000181437 D|035803959 072991441 +000000040 000107794 000205946 D|065497651 064053466 +000000040 000128097 000208916 D|069299652 051673470 +000000040 000140191 000265744 D|037614677 070866934 +000000040 000159697 000271090 D|000670941 075554655 +000000040 000200782 000280402 D|094204228 005731052 +000000040 000213723 000353013 D|036959229 085039024 +000000040 000222180 000377751 D|008784097 029145342 +000000040 000256742 000410078 D|073627378 030987371 +000000040 000272558 000415613 D|023876248 065494541 +000000040 000296062 000421867 D|075207411 098589322 +000000040 000307509 000432472 D|021785592 071106605 +000000040 000318245 000436697 D|098868084 000191150 +000000040 000328148 000442750 D|027622460 049611714 +000000040 000347752 000467717 D|031509338 015510406 +000000040 000353957 000477296 D|048602138 082618241 +000000040 000361062 000538182 D|021475894 005590695 +000000040 000364252 000541460 D|028816470 043654855 +000000040 000385748 000596014 D|034821577 010958302 +000000040 000403354 000599369 D|066335956 079672505 +000000040 000417053 000641096 D|005062011 042376606 +000000040 000447917 000650075 D|028580005 015318749 +000000040 000457936 000659515 D|097064920 087407705 +000000040 000478152 000662424 D|029975020 055424068 +000000040 000496847 000670921 D|057288950 058634928 +000000040 000589986 000673031 D|057443784 096583144 +000000040 000604687 000675514 D|076263915 049050635 +000000040 000609019 000710757 D|048749147 014239287 +000000040 000691049 000717751 D|014673798 023994683 +000000040 000701795 000744445 D|063814665 031191093 +000000040 000736872 000767145 D|071437801 007580432 +000000040 000757752 000804355 D|039359043 056466412 +000000040 000759603 000846971 D|058335410 040688990 +000000040 000769133 000849149 D|033007360 095387817 +000000040 000774661 000850488 D|023854069 094455519 +000000040 000775154 000897684 D|011884153 089209403 +000000040 000794080 000913691 D|027453683 085882821 +000000040 000796091 000914921 D|029681120 095356096 +000000040 000849748 000918707 D|072570666 034652121 +000000040 000941353 000939094 D|014693995 007059227 +000000040 000971286 000940869 D|089360822 002774877 +000000040 000982050 000966583 D|011755771 015823234 +000000040 000988832 000976036 D|097974158 058947254 +000000040 000990713 000988922 D|096412650 056034317 +000000041 000012013 000007451 D|010878836 087674548 +000000041 000022565 000013603 D|016781050 010463330 +000000041 000063157 000078666 D|055230040 000879119 +000000041 000086372 000079253 D|031120557 026836865 +000000041 000098050 000094154 D|044134553 098040763 +000000041 000124411 000104666 D|050863255 049924950 +000000041 000143108 000174079 D|014938115 012172682 +000000041 000156872 000186732 D|087482643 031917620 +000000041 000162054 000196776 D|061191180 074426134 +000000041 000183864 000216783 D|032895952 035400114 +000000041 000195141 000230929 D|019137575 014952550 +000000041 000200053 000250216 D|045908517 079302696 +000000041 000202334 000328933 D|032675068 090731510 +000000041 000211342 000332578 D|042980458 036139998 +000000041 000215231 000352661 D|014403595 066288181 +000000041 000221050 000370904 D|066364847 013074627 +000000041 000235078 000389162 D|050062365 024828657 +000000041 000267105 000397284 D|077295333 049371331 +000000041 000282624 000438547 D|080603809 046610708 +000000041 000323369 000446389 D|054303219 090323246 +000000041 000347814 000470264 D|080421701 059395360 +000000041 000389025 000512774 D|011621892 091817376 +000000041 000399079 000528543 D|070169516 005302503 +000000041 000415847 000539957 D|061627169 073157127 +000000041 000422213 000558192 D|038086226 085717648 +000000041 000423704 000574379 D|010125840 072859474 +000000041 000455637 000574913 D|076883335 059927233 +000000041 000483006 000612359 D|009795856 019485768 +000000041 000500250 000617931 D|059330720 093232652 +000000041 000520346 000633051 D|041518265 031163606 +000000041 000588479 000647095 D|012217104 059211359 +000000041 000663386 000652490 D|040848807 027131321 +000000041 000683958 000681129 D|036422546 017066152 +000000041 000696533 000726309 D|046712965 072951196 +000000041 000708584 000735539 D|038023354 055505244 +000000041 000740668 000761530 D|050918392 059978243 +000000041 000752177 000773882 D|066092728 084134817 +000000041 000819206 000774703 D|030653087 066378481 +000000041 000822599 000777566 D|021622628 058786248 +000000041 000838631 000784454 D|010950407 076535113 +000000041 000854276 000806903 D|000606936 011313558 +000000041 000855211 000825230 D|035387634 020987508 +000000041 000859152 000834997 D|041158149 077318830 +000000041 000859312 000853616 D|026517587 041144064 +000000041 000883620 000882590 D|043798001 086644681 +000000041 000905808 000920904 D|001362208 092581436 +000000041 000913144 000947386 D|080694753 042150965 +000000041 000927328 000973217 D|068852373 034676081 +000000041 000953854 000981401 D|010265871 025472687 +000000041 000979677 000986559 D|047546655 042268007 +000000042 000022997 000006875 D|055337259 011113042 +000000042 000035392 000028133 D|094529825 043710507 +000000042 000037062 000035154 D|048423858 033665291 +000000042 000053304 000056666 D|049582633 063237084 +000000042 000075346 000134186 D|097707862 060173399 +000000042 000091361 000141570 D|070538548 080403126 +000000042 000124625 000194884 D|068455117 027587057 +000000042 000133004 000210761 D|003556246 052604211 +000000042 000136491 000214351 D|043125587 038656059 +000000042 000178768 000232084 D|085480993 071245850 +000000042 000181430 000262084 D|060084242 073594449 +000000042 000196368 000266387 D|072431359 083919618 +000000042 000202919 000295752 D|016502775 047243136 +000000042 000233571 000318322 D|041704617 096006050 +000000042 000288962 000328064 D|089715095 090468248 +000000042 000301152 000339559 D|015253640 033468238 +000000042 000346441 000358428 D|013486687 054355726 +000000042 000358694 000382492 D|091650075 073531854 +000000042 000376837 000420236 D|094771156 053687214 +000000042 000398709 000420302 D|084040908 020257021 +000000042 000405638 000434669 D|060854508 080546293 +000000042 000416724 000451377 D|000737486 042176439 +000000042 000444865 000454679 D|037313430 090580940 +000000042 000445418 000464054 D|065565660 001768747 +000000042 000471610 000476496 D|089774761 084296491 +000000042 000500342 000479794 D|048392480 032633413 +000000042 000548092 000514767 D|074552429 033910781 +000000042 000588041 000525789 D|057008204 029573968 +000000042 000596975 000575728 D|011875489 082052519 +000000042 000597084 000577520 D|082588661 010346186 +000000042 000617158 000606161 D|055582469 027571510 +000000042 000640085 000628803 D|056882019 011801409 +000000042 000641215 000646552 D|027964814 017212359 +000000042 000646937 000657361 D|071167882 013886216 +000000042 000661056 000670596 D|040926253 017182720 +000000042 000669337 000679330 D|044132779 010658309 +000000042 000679106 000688455 D|006305690 073993718 +000000042 000680130 000711986 D|047069172 068423806 +000000042 000707639 000730013 D|086429967 033603361 +000000042 000713820 000779333 D|061322319 087376395 +000000042 000716711 000790341 D|031470170 063400986 +000000042 000721776 000806190 D|029931425 025523167 +000000042 000805416 000811571 D|025339063 066845322 +000000042 000831363 000860857 D|042640097 078294609 +000000042 000836303 000863849 D|001873618 096985563 +000000042 000867625 000920186 D|089693856 089347293 +000000042 000917625 000923591 D|019467639 077858425 +000000042 000969319 000969998 D|024036032 039447090 +000000042 000974950 000983573 D|052526986 014246718 +000000042 000987109 000987488 D|073700419 058384567 +000000043 000019768 000002748 D|020593918 009135761 +000000043 000020248 000020043 D|082695183 035530167 +000000043 000055635 000056480 D|035545861 061226014 +000000043 000090167 000065217 D|025721502 000498023 +000000043 000129275 000073320 D|091109725 049427363 +000000043 000154015 000153201 D|057085863 091522831 +000000043 000226669 000186704 D|072169660 011690761 +000000043 000244496 000187280 D|089898886 080018636 +000000043 000255573 000202762 D|058276654 015192000 +000000043 000260334 000218388 D|036666618 045699186 +000000043 000267092 000222973 D|084602453 024780585 +000000043 000315284 000267156 D|039374805 034712402 +000000043 000335794 000274260 D|002018106 020885564 +000000043 000336762 000337525 D|073566925 064527534 +000000043 000348579 000359989 D|050019977 021286176 +000000043 000373710 000395157 D|014825156 053089515 +000000043 000392213 000398690 D|080482912 021835059 +000000043 000436075 000443900 D|077884750 065070214 +000000043 000445775 000478702 D|042213832 082413390 +000000043 000450601 000484094 D|042405065 049838150 +000000043 000463862 000493506 D|084000744 013058627 +000000043 000477934 000518468 D|036275788 020440648 +000000043 000478290 000519720 D|054780808 006412584 +000000043 000482218 000536774 D|052627850 017385365 +000000043 000494064 000537509 D|085183778 078113952 +000000043 000510316 000556674 D|039596950 086937818 +000000043 000514765 000577657 D|066894580 075560361 +000000043 000531617 000588139 D|064069034 017132958 +000000043 000555510 000590653 D|042594535 000513988 +000000043 000571285 000596041 D|066557600 025514097 +000000043 000581670 000626399 D|056663013 008237120 +000000043 000590170 000627026 D|079612287 034250032 +000000043 000602801 000644161 D|001767576 078343742 +000000043 000624717 000649303 D|044868817 009989686 +000000043 000685893 000674557 D|003812433 030695860 +000000043 000694928 000677122 D|035476702 021761259 +000000043 000762095 000706304 D|008574371 042322951 +000000043 000771730 000723675 D|014676756 064722095 +000000043 000802686 000748844 D|057543979 003326819 +000000043 000803907 000751456 D|052619069 092413703 +000000043 000817572 000850297 D|091714949 039308210 +000000043 000833691 000859501 D|079552656 005223586 +000000043 000850205 000878546 D|096168838 086648395 +000000043 000853298 000902418 D|085715477 085117758 +000000043 000880934 000936816 D|064484431 003985949 +000000043 000924948 000960951 D|074592504 077680311 +000000043 000934115 000967955 D|021107745 020196234 +000000043 000940413 000977512 D|056579553 076941642 +000000043 000967750 000979843 D|076996853 045965266 +000000043 000974264 000998185 D|039550496 017252153 +000000044 000014098 000033833 D|070504416 098238472 +000000044 000034481 000041107 D|014895064 029102718 +000000044 000048732 000078842 D|068835982 012341477 +000000044 000056567 000090513 D|060520423 051399836 +000000044 000068747 000116626 D|078358860 046062913 +000000044 000072934 000171377 D|038476359 040915851 +000000044 000094234 000230083 D|068802522 051786255 +000000044 000126436 000231670 D|086504742 068481720 +000000044 000126689 000233109 D|084531057 040830760 +000000044 000136081 000252275 D|082921855 070659849 +000000044 000136165 000282103 D|098071427 071341655 +000000044 000149412 000285794 D|027934662 003312649 +000000044 000157688 000286028 D|092926044 007252571 +000000044 000199210 000286425 D|084789597 035849417 +000000044 000207462 000294738 D|000193049 072695369 +000000044 000245197 000316792 D|038666210 067983005 +000000044 000267521 000316849 D|023829188 080487303 +000000044 000275515 000331859 D|065680968 013229884 +000000044 000279884 000390280 D|019259742 016679444 +000000044 000313659 000415162 D|082729039 030345514 +000000044 000315182 000428899 D|014887321 080664393 +000000044 000320888 000488478 D|008767965 047815024 +000000044 000326461 000513294 D|076646831 051147941 +000000044 000348637 000543177 D|098237547 049476507 +000000044 000378487 000555768 D|064168154 013528978 +000000044 000404085 000607983 D|070134177 088740123 +000000044 000429602 000615204 D|090969215 070257170 +000000044 000449381 000626612 D|077772863 058353854 +000000044 000453618 000634708 D|085785262 014983559 +000000044 000464755 000651234 D|025394378 086512479 +000000044 000468123 000670500 D|001236934 043287660 +000000044 000482951 000718854 D|087154741 063980906 +000000044 000518091 000732021 D|037472235 056911416 +000000044 000540304 000736136 D|089974581 025825514 +000000044 000577075 000779967 D|035307936 073659873 +000000044 000609534 000780796 D|014472884 097892204 +000000044 000634120 000805221 D|013741630 066758739 +000000044 000679825 000848579 D|032482170 014297402 +000000044 000732264 000878264 D|016485554 006078924 +000000044 000732561 000879214 D|044488405 082694986 +000000044 000756968 000880540 D|088427969 068344462 +000000044 000763188 000894643 D|047463756 012179862 +000000044 000773581 000899208 D|068233066 086789380 +000000044 000817211 000900233 D|076285282 012974437 +000000044 000845282 000914480 D|044794642 072596762 +000000044 000879800 000918564 D|064431296 016907700 +000000044 000939911 000923223 D|010660950 081057499 +000000044 000970354 000957426 D|037486483 058149632 +000000044 000978374 000971778 D|049313818 036659763 +000000044 000982898 000993792 D|016975828 068040248 +000000045 000006446 000003978 D|001784314 093205495 +000000045 000012738 000019948 D|051074129 027292296 +000000045 000037547 000055213 D|037938016 068860190 +000000045 000080885 000060290 D|078749258 077730953 +000000045 000090224 000088661 D|028941067 021220234 +000000045 000092840 000088751 D|039792719 072833522 +000000045 000197108 000104649 D|084669947 013891837 +000000045 000203490 000123496 D|075554387 063190502 +000000045 000206812 000126308 D|091843589 039841056 +000000045 000259831 000162044 D|026319640 014609011 +000000045 000270642 000168149 D|073964239 091696941 +000000045 000279106 000179409 D|078165027 029601489 +000000045 000290676 000201251 D|097347297 033158843 +000000045 000329868 000201750 D|082138083 021535082 +000000045 000349819 000226976 D|078766496 055931126 +000000045 000356237 000243601 D|060164698 073068925 +000000045 000362658 000257587 D|061303497 083258933 +000000045 000364306 000259943 D|002058370 040078843 +000000045 000373135 000343468 D|070931407 063898000 +000000045 000386188 000366784 D|002016320 068440148 +000000045 000390280 000374618 D|074710961 049442939 +000000045 000401473 000455887 D|053703216 037243157 +000000045 000408792 000484577 D|040005910 048815780 +000000045 000422218 000489125 D|086010626 036749660 +000000045 000455608 000494498 D|004416826 064720729 +000000045 000476817 000495070 D|019168022 030941482 +000000045 000539880 000506689 D|079979488 033553853 +000000045 000575380 000556835 D|057359257 074184277 +000000045 000591502 000598698 D|054843909 093138455 +000000045 000604663 000617728 D|089034260 083452230 +000000045 000613002 000619562 D|049399799 076846114 +000000045 000620248 000628159 D|085486180 098541636 +000000045 000634803 000643876 D|072293319 041279431 +000000045 000650362 000679456 D|043984452 065892612 +000000045 000657467 000682110 D|098054610 089145083 +000000045 000685387 000743826 D|010987802 005453288 +000000045 000741969 000761542 D|085060533 055599546 +000000045 000771023 000786301 D|043675801 086945911 +000000045 000798010 000789079 D|054932356 033170731 +000000045 000828760 000802592 D|056937120 021506824 +000000045 000845330 000806607 D|006170165 063736960 +000000045 000846902 000834066 D|077158770 030993388 +000000045 000856685 000855568 D|044306500 091436865 +000000045 000881098 000867436 D|093759641 002237537 +000000045 000894610 000882188 D|038986543 091107683 +000000045 000925890 000908631 D|031040887 012393052 +000000045 000931107 000913524 D|044866791 084142766 +000000045 000933518 000962641 D|077818214 050012603 +000000045 000940714 000975662 D|036739303 049090751 +000000045 000951177 000997571 D|048394795 086804690 +000000046 000003836 000037794 D|089526300 053857373 +000000046 000025882 000058417 D|061901225 025659847 +000000046 000029854 000139486 D|041722071 056266980 +000000046 000054634 000143273 D|087766910 000951927 +000000046 000062571 000152690 D|065541536 029273946 +000000046 000083977 000174012 D|062133864 070882650 +000000046 000111694 000197060 D|000140448 021996091 +000000046 000114674 000220602 D|073396159 089723941 +000000046 000177999 000244966 D|027536427 039646663 +000000046 000191540 000249012 D|094797410 090458105 +000000046 000195881 000251114 D|081128673 070888130 +000000046 000207123 000292091 D|070786525 051574838 +000000046 000216888 000293144 D|019519950 093357682 +000000046 000220198 000293923 D|004945652 039909678 +000000046 000223285 000310245 D|095252579 016236465 +000000046 000233108 000338378 D|096904068 025405224 +000000046 000235481 000340992 D|048673018 098858246 +000000046 000273738 000343176 D|000121637 002227340 +000000046 000275857 000353267 D|036877787 016640388 +000000046 000282797 000371215 D|002181876 000133314 +000000046 000289630 000375842 D|036588308 002588864 +000000046 000304961 000382489 D|060492449 000206717 +000000046 000319714 000384577 D|094177930 042685612 +000000046 000337084 000489453 D|080285518 089540035 +000000046 000366536 000605181 D|052623742 044129872 +000000046 000377387 000612092 D|037634109 044146772 +000000046 000448005 000614220 D|070728117 077653012 +000000046 000448311 000644992 D|059658008 002523124 +000000046 000449684 000675664 D|075636721 050899116 +000000046 000461036 000683558 D|045147171 094533409 +000000046 000497933 000694795 D|005860217 075320802 +000000046 000523268 000712315 D|006822014 093257902 +000000046 000523788 000732615 D|002474796 097800524 +000000046 000524552 000739183 D|064166975 080783594 +000000046 000590508 000765499 D|048089004 050637463 +000000046 000619810 000809476 D|088764422 001172106 +000000046 000662873 000816108 D|049015508 018697626 +000000046 000696278 000838602 D|036620788 098669425 +000000046 000729107 000845601 D|063848438 011404833 +000000046 000733652 000870577 D|096611496 053141719 +000000046 000743126 000876735 D|002485996 064842826 +000000046 000783025 000896774 D|024921657 071223243 +000000046 000818084 000901646 D|066409668 061963457 +000000046 000821934 000913603 D|070744622 070272424 +000000046 000841014 000934264 D|007177017 054118162 +000000046 000903166 000935839 D|025441974 095489767 +000000046 000927123 000948483 D|005931088 091722198 +000000046 000954780 000993590 D|019628067 051295461 +000000046 000961321 000996001 D|084371822 012827985 +000000046 000990789 000999495 D|034019395 093902303 +000000047 000005594 000061265 D|015817828 063020158 +000000047 000007764 000067006 D|031481295 070358607 +000000047 000009441 000121368 D|000810091 097513767 +000000047 000011327 000143996 D|051496066 051599815 +000000047 000015480 000179948 D|028723257 095681022 +000000047 000030631 000190331 D|051053359 024847838 +000000047 000087191 000206243 D|085650086 027806292 +000000047 000092092 000213269 D|037637725 071322677 +000000047 000094175 000221002 D|074178663 076652552 +000000047 000095421 000248789 D|031431998 053681374 +000000047 000104737 000251657 D|084468827 055984087 +000000047 000178685 000255775 D|017497355 018666907 +000000047 000187280 000280815 D|058748579 030717724 +000000047 000257082 000282961 D|050373262 055325385 +000000047 000264573 000296802 D|026365147 071995492 +000000047 000329724 000304607 D|001295958 092793682 +000000047 000362632 000305748 D|048513530 082170751 +000000047 000391708 000372179 D|094973541 074441465 +000000047 000402468 000375325 D|019228800 054686993 +000000047 000413662 000380616 D|077667687 031024400 +000000047 000428612 000387664 D|085628204 058869035 +000000047 000440838 000408676 D|025042558 071787137 +000000047 000466360 000412335 D|037288392 004988960 +000000047 000494157 000414140 D|029438187 060756461 +000000047 000513436 000424758 D|072038118 099761203 +000000047 000519948 000481625 D|040901303 036332227 +000000047 000530628 000506521 D|039981084 014077898 +000000047 000558489 000527938 D|060660256 041714513 +000000047 000605640 000544708 D|006916319 075888876 +000000047 000621083 000561898 D|068813541 004917365 +000000047 000624602 000562510 D|079510152 087808592 +000000047 000651080 000606379 D|015967750 092704249 +000000047 000689549 000633710 D|064116187 043743567 +000000047 000696919 000641560 D|033578324 008341243 +000000047 000697254 000649207 D|042707973 063498499 +000000047 000705037 000652841 D|088456178 091298691 +000000047 000705310 000685929 D|072547530 062642229 +000000047 000719175 000725589 D|040747608 047092810 +000000047 000737323 000758757 D|072169475 094237101 +000000047 000827467 000759352 D|049715373 039070146 +000000047 000854141 000768551 D|043053742 075366051 +000000047 000854364 000783778 D|086726019 063081395 +000000047 000864104 000810361 D|060278726 076877348 +000000047 000890475 000831455 D|048420469 070235958 +000000047 000907148 000914592 D|071650257 085373347 +000000047 000916663 000920215 D|041246834 041988186 +000000047 000942310 000948742 D|042164205 012861510 +000000047 000944193 000954271 D|001503633 070464684 +000000047 000974997 000967516 D|082178034 031995705 +000000047 000997913 000984719 D|069329475 028815909 +000000048 000011326 000001820 D|035538186 023577791 +000000048 000043140 000041579 D|020307701 049218195 +000000048 000045203 000084542 D|079792562 012994787 +000000048 000075487 000094830 D|006393720 075376975 +000000048 000093180 000097100 D|051095519 079196713 +000000048 000139530 000106361 D|084235667 091739154 +000000048 000198226 000149296 D|040131285 044286291 +000000048 000206580 000152627 D|073989035 057864865 +000000048 000222274 000159576 D|094825269 015014350 +000000048 000223819 000173410 D|097961881 015627542 +000000048 000225263 000180606 D|079681524 022807949 +000000048 000240619 000181171 D|012519024 081130297 +000000048 000247063 000190630 D|037807425 067010256 +000000048 000275839 000258391 D|033813305 032838960 +000000048 000286531 000280715 D|013224964 031358334 +000000048 000320126 000308696 D|070071404 031867457 +000000048 000368558 000314860 D|090549380 014364285 +000000048 000382573 000333059 D|066723575 000879081 +000000048 000395971 000336141 D|012842409 089209831 +000000048 000398059 000348107 D|022964024 053548305 +000000048 000411050 000369583 D|030679669 083669834 +000000048 000429720 000391265 D|013472441 021232711 +000000048 000440060 000400293 D|015821901 023643067 +000000048 000449118 000401719 D|024948097 098183071 +000000048 000494443 000408377 D|074069126 097610425 +000000048 000512808 000429709 D|099428678 098151295 +000000048 000535612 000431231 D|025196294 075939049 +000000048 000548136 000462343 D|056971714 022347003 +000000048 000640783 000500701 D|050260346 066942767 +000000048 000645010 000520476 D|017492516 067947535 +000000048 000650063 000543706 D|077859803 010098929 +000000048 000655013 000575209 D|087542290 015391760 +000000048 000698591 000579845 D|037536926 078838684 +000000048 000700224 000620290 D|048285304 075340679 +000000048 000703706 000622741 D|073446507 072090094 +000000048 000707070 000624762 D|060753052 064651590 +000000048 000772645 000639237 D|071312396 087822128 +000000048 000774002 000688027 D|076876356 076490955 +000000048 000789214 000693050 D|022173439 052012573 +000000048 000793239 000700069 D|060214508 025622120 +000000048 000802236 000720201 D|055425203 037330165 +000000048 000802241 000741223 D|029632285 051616402 +000000048 000802522 000761414 D|077682298 072363926 +000000048 000804259 000797643 D|012326225 067790065 +000000048 000869741 000832904 D|035306864 058888497 +000000048 000873317 000866329 D|078083389 072321684 +000000048 000920164 000877553 D|042910755 068174725 +000000048 000930891 000884113 D|016492903 014550833 +000000048 000954453 000919377 D|078880211 033301190 +000000048 000996301 000979510 D|083048619 058834104 +000000049 000014959 000094331 D|050505452 075124587 +000000049 000015082 000099761 D|058898794 032864735 +000000049 000030622 000146463 D|064247608 019702852 +000000049 000035756 000161040 D|009193515 053461336 +000000049 000051540 000209440 D|074868896 015743224 +000000049 000067762 000231848 D|005681144 032615676 +000000049 000071437 000247770 D|077520837 012902159 +000000049 000119110 000254546 D|034655404 051662985 +000000049 000130424 000265277 D|082978711 079239384 +000000049 000146017 000272529 D|063637712 095130862 +000000049 000160858 000280406 D|084805122 019694801 +000000049 000161025 000294868 D|089934199 001873497 +000000049 000202279 000346058 D|004570986 059106303 +000000049 000225760 000392718 D|035981019 007629466 +000000049 000250286 000400507 D|084982101 072122503 +000000049 000269208 000407194 D|028056632 094954296 +000000049 000276454 000417374 D|087141572 054591006 +000000049 000306158 000421132 D|040422222 048193496 +000000049 000351939 000430695 D|000454203 009578038 +000000049 000355997 000450008 D|017925054 093761212 +000000049 000368679 000456782 D|046556521 077228388 +000000049 000388109 000460466 D|074665435 081657344 +000000049 000396364 000485749 D|043941137 035317306 +000000049 000408131 000496320 D|010795267 054150036 +000000049 000434344 000522992 D|091920125 066722745 +000000049 000466297 000553876 D|014604396 067423493 +000000049 000471262 000561940 D|022785845 028583975 +000000049 000508438 000567314 D|077720397 007647965 +000000049 000522183 000595448 D|040579043 070328353 +000000049 000539538 000596635 D|054376425 098741952 +000000049 000560683 000611640 D|054463094 097654144 +000000049 000574263 000623065 D|023205995 084473431 +000000049 000601920 000642781 D|079340796 065856989 +000000049 000609016 000649793 D|008729625 023963066 +000000049 000615748 000701107 D|074770292 081536764 +000000049 000656001 000704286 D|002922819 084115209 +000000049 000680566 000724213 D|069980156 046613028 +000000049 000687698 000736120 D|054158938 072470599 +000000049 000690379 000738440 D|042694364 076791814 +000000049 000731758 000742530 D|046008257 066396799 +000000049 000770652 000743213 D|078770598 063609825 +000000049 000777771 000751464 D|072374350 090962612 +000000049 000828195 000804690 D|047240067 055253036 +000000049 000854755 000856889 D|052994344 027057720 +000000049 000901816 000878404 D|018351641 025522955 +000000049 000904178 000914952 D|071039808 001223421 +000000049 000913483 000929880 D|040338560 085410535 +000000049 000938965 000940662 D|029203095 019697499 +000000049 000942271 000942512 D|071404892 090282746 +000000049 000958274 000971828 D|069766307 024654264 +000000050 000076397 000040429 D|047813740 018791892 +000000050 000087450 000100384 D|069980263 003143845 +000000050 000093239 000121229 D|070371055 075833231 +000000050 000123133 000127527 D|087002676 013014833 +000000050 000126579 000148282 D|059116680 064798761 +000000050 000148259 000153356 D|092425765 097515950 +000000050 000155176 000170678 D|056061778 037346305 +000000050 000183685 000213143 D|006517520 072684742 +000000050 000190294 000215049 D|072487431 002160976 +000000050 000217540 000262865 D|075384687 082506355 +000000050 000226663 000304482 D|063250620 065579174 +000000050 000255963 000333756 D|064196024 075328957 +000000050 000308142 000347933 D|013926031 031023474 +000000050 000317888 000354103 D|057067707 042065650 +000000050 000318590 000357031 D|093108811 019280110 +000000050 000340416 000361366 D|022178095 079224774 +000000050 000353304 000401221 D|090856593 091790180 +000000050 000357566 000417948 D|054096745 030243826 +000000050 000367857 000446153 D|085198748 054446137 +000000050 000383641 000470697 D|055425789 030027916 +000000050 000411322 000482243 D|070712625 060053709 +000000050 000468062 000532911 D|022581203 034532387 +000000050 000478550 000554807 D|005166297 001241402 +000000050 000489559 000555228 D|002828665 047523906 +000000050 000498650 000586127 D|044810278 054734869 +000000050 000511541 000588101 D|092283995 080603069 +000000050 000513095 000595535 D|052240339 001550325 +000000050 000517351 000600890 D|037730809 067163174 +000000050 000547432 000614273 D|076218279 052814057 +000000050 000548103 000617966 D|069292125 030975924 +000000050 000549614 000690521 D|077259455 047699248 +000000050 000614540 000705365 D|004505543 086918737 +000000050 000621486 000729701 D|049829738 013913960 +000000050 000626467 000730914 D|001612781 034888361 +000000050 000659300 000732735 D|083744054 064974454 +000000050 000691193 000757275 D|064976539 049805103 +000000050 000694965 000760287 D|032519826 007481703 +000000050 000719671 000761003 D|017538920 056600657 +000000050 000754458 000786728 D|057123347 020268813 +000000050 000792879 000808365 D|068630595 039901089 +000000050 000854718 000816777 D|098163659 036857396 +000000050 000869148 000877746 D|081676366 069213587 +000000050 000898210 000892488 D|087084135 028454630 +000000050 000912422 000905832 D|012768448 009781689 +000000050 000919118 000907679 D|090507268 063200603 +000000050 000934741 000912303 D|063665438 009151710 +000000050 000935979 000956509 D|075085518 019179299 +000000050 000961034 000989676 D|053030320 051344234 +000000050 000976565 000993577 D|019863900 051171263 +000000050 000999529 000999823 D|028984798 053412493 +000000051 000049594 000010514 D|070226423 031027701 +000000051 000079904 000015166 D|046409095 007600434 +000000051 000086847 000028716 D|088983600 058368090 +000000051 000132015 000030096 D|015374050 067814962 +000000051 000163540 000047930 D|059706815 088128604 +000000051 000166476 000094170 D|022948007 000961224 +000000051 000180842 000096794 D|024271320 057613471 +000000051 000181338 000113258 D|005960902 047396088 +000000051 000200203 000168185 D|068797557 091252781 +000000051 000201332 000197931 D|017997164 010302167 +000000051 000251770 000235609 D|015970717 063337907 +000000051 000296974 000269635 D|036272761 077819471 +000000051 000311589 000321200 D|075788327 023391064 +000000051 000349242 000332218 D|053641291 026424881 +000000051 000377757 000378945 D|098036232 028328553 +000000051 000419706 000386121 D|015769553 070199609 +000000051 000422873 000389079 D|050858729 082847683 +000000051 000437958 000422662 D|034116118 016674604 +000000051 000456255 000441125 D|074626900 004051966 +000000051 000481517 000466148 D|089906664 064805386 +000000051 000486286 000478458 D|026166820 033886750 +000000051 000532187 000524656 D|045489944 022763559 +000000051 000532353 000529362 D|041041383 059140915 +000000051 000537724 000534813 D|061464358 077676745 +000000051 000556065 000593735 D|010316577 071224232 +000000051 000570070 000610962 D|042425546 069713938 +000000051 000589051 000632656 D|056028359 021182995 +000000051 000594489 000632854 D|072781811 087223690 +000000051 000604231 000635963 D|049218043 015045672 +000000051 000609604 000692290 D|088655837 005048692 +000000051 000644727 000713539 D|094472187 030593439 +000000051 000650147 000716901 D|060590581 018628585 +000000051 000665660 000727425 D|054149474 006559647 +000000051 000670482 000754918 D|061062889 025467550 +000000051 000692897 000769413 D|095070689 058914357 +000000051 000703767 000771577 D|010700920 024350321 +000000051 000718129 000812507 D|095478597 085969343 +000000051 000787655 000817019 D|092050302 036428884 +000000051 000801257 000834428 D|013638047 077312434 +000000051 000832243 000835341 D|059231984 011633211 +000000051 000844289 000857305 D|089689327 037684388 +000000051 000846903 000872087 D|090046638 037666906 +000000051 000870807 000885001 D|095849315 095916788 +000000051 000893362 000914490 D|062766307 014405213 +000000051 000905915 000948021 D|063841733 034103712 +000000051 000909535 000976682 D|076732154 035601648 +000000051 000913364 000979691 D|089084940 048671387 +000000051 000915690 000990195 D|015171777 016526884 +000000051 000929783 000997361 D|044806219 050670755 +000000051 000958848 000997548 D|077582699 050333639 +000000052 000008481 000006264 D|081642525 055802096 +000000052 000020632 000062237 D|025711348 070592815 +000000052 000031973 000065188 D|039018946 003002633 +000000052 000081766 000077918 D|029045503 058793228 +000000052 000092417 000127058 D|083535747 007145251 +000000052 000125900 000129831 D|075265920 068515828 +000000052 000149057 000137835 D|079424995 043292869 +000000052 000160412 000183493 D|061593764 076780207 +000000052 000173712 000213179 D|043020139 047423848 +000000052 000184090 000239463 D|086595765 092804890 +000000052 000193264 000248505 D|043383058 024651092 +000000052 000267468 000251179 D|087042339 020418958 +000000052 000312179 000277665 D|047421136 098952548 +000000052 000312884 000281154 D|028088950 078224845 +000000052 000328113 000314277 D|052574816 086486843 +000000052 000328921 000339614 D|023138937 072059425 +000000052 000344496 000346216 D|040524485 019060331 +000000052 000350675 000353449 D|088524109 064956225 +000000052 000358709 000354533 D|044953008 081701127 +000000052 000359276 000374559 D|064257435 047051471 +000000052 000359286 000416075 D|017235895 032572260 +000000052 000399071 000490812 D|028987124 018683575 +000000052 000399847 000501753 D|060196222 003089428 +000000052 000430359 000509195 D|024192108 014907658 +000000052 000436375 000524886 D|034285871 029510713 +000000052 000448902 000536548 D|099159606 093861984 +000000052 000454155 000547852 D|086418542 026350440 +000000052 000478755 000555792 D|005310450 006316936 +000000052 000481776 000601791 D|008547859 096095113 +000000052 000563825 000609205 D|091691862 055113213 +000000052 000608934 000639820 D|051954532 057448908 +000000052 000621397 000703823 D|038217858 059746453 +000000052 000638397 000726073 D|072662650 093558973 +000000052 000644610 000740860 D|027817835 010272494 +000000052 000648901 000741277 D|036890543 005926908 +000000052 000701691 000752145 D|075586089 093208522 +000000052 000741534 000778128 D|022015989 086237869 +000000052 000771222 000790998 D|000563638 022539901 +000000052 000795643 000812334 D|089527939 076762173 +000000052 000807177 000814746 D|070971460 049214944 +000000052 000838157 000827080 D|033185708 069968279 +000000052 000846371 000829204 D|048060784 059408204 +000000052 000848628 000836241 D|088969114 036646599 +000000052 000855511 000844169 D|016763631 051416700 +000000052 000855703 000866124 D|089975747 008204635 +000000052 000873446 000888334 D|020732961 091711600 +000000052 000877454 000916703 D|024470037 060481037 +000000052 000911634 000920185 D|025333494 083154760 +000000052 000958829 000977360 D|064089569 048459632 +000000052 000968693 000983088 D|089807353 042938555 +000000053 000023366 000017439 D|012628736 024075090 +000000053 000024739 000035141 D|036965001 020106655 +000000053 000035629 000037164 D|081659949 089052422 +000000053 000038843 000057870 D|046418758 084055886 +000000053 000059876 000068090 D|072834612 053898945 +000000053 000095647 000087508 D|016665669 051778034 +000000053 000127808 000092985 D|009553160 084561666 +000000053 000133754 000107249 D|025048236 095103410 +000000053 000159887 000114492 D|066163741 064750813 +000000053 000170709 000131664 D|001803182 069604169 +000000053 000198864 000131995 D|035175267 065192140 +000000053 000200842 000134346 D|029279325 042329149 +000000053 000228023 000171514 D|019469306 082884877 +000000053 000259300 000195796 D|051935723 073369971 +000000053 000357604 000196706 D|024675197 092820072 +000000053 000376028 000201207 D|088285602 038313925 +000000053 000385275 000211126 D|034159764 079373594 +000000053 000387482 000255580 D|079645883 014014693 +000000053 000416552 000275250 D|058252445 062586576 +000000053 000448992 000299072 D|022531455 047516775 +000000053 000475512 000304240 D|022484387 099419912 +000000053 000496542 000310372 D|022222660 004760975 +000000053 000550229 000337091 D|032762667 095483875 +000000053 000551318 000347305 D|053055636 020345876 +000000053 000554742 000361384 D|032413975 029849560 +000000053 000586518 000386284 D|055605859 055151203 +000000053 000586810 000389843 D|054354178 086958442 +000000053 000614736 000438184 D|036406611 088160690 +000000053 000644487 000464425 D|023406792 038646291 +000000053 000708406 000470209 D|065967602 064473866 +000000053 000726597 000497378 D|018716459 064912839 +000000053 000727364 000565785 D|068024159 017142928 +000000053 000749318 000575069 D|024852312 049298120 +000000053 000786936 000589629 D|056467650 014980957 +000000053 000787151 000591497 D|003011412 013488048 +000000053 000804806 000602399 D|010772617 051603004 +000000053 000809686 000610165 D|046115309 039210109 +000000053 000820719 000633447 D|007365500 065195570 +000000053 000832061 000675174 D|056486852 052393900 +000000053 000840349 000690674 D|076217232 090572520 +000000053 000850845 000742343 D|046696928 075779256 +000000053 000853037 000765171 D|074008532 064786870 +000000053 000860353 000785034 D|033380304 037991917 +000000053 000862408 000803922 D|087061330 099576378 +000000053 000876230 000826840 D|028164701 050768382 +000000053 000892440 000862480 D|009390950 087895163 +000000053 000892740 000903462 D|051126601 008929090 +000000053 000903390 000934778 D|027637779 063456957 +000000053 000947052 000967263 D|093990746 065567665 +000000053 000948573 000992817 D|044241637 091228832 +000000054 000000491 000030538 D|028596774 046006560 +000000054 000001179 000037404 D|013984393 080946205 +000000054 000049045 000060018 D|073253222 000464024 +000000054 000086515 000068484 D|012715714 027245438 +000000054 000102616 000072227 D|031279316 032917959 +000000054 000105047 000084966 D|062783054 097629465 +000000054 000133729 000095654 D|006532054 087877711 +000000054 000141449 000114782 D|013098130 069891125 +000000054 000154430 000125018 D|051219843 037353505 +000000054 000164870 000134383 D|055229562 095403420 +000000054 000177885 000143261 D|045151248 012539214 +000000054 000191573 000149850 D|083302213 038328579 +000000054 000226052 000152269 D|011169456 075148992 +000000054 000227756 000155659 D|027095714 008310983 +000000054 000234783 000185415 D|072084691 097010414 +000000054 000235402 000185792 D|015862109 050146714 +000000054 000240953 000193768 D|025221096 075059706 +000000054 000250676 000198480 D|060602037 023696574 +000000054 000254887 000227296 D|052953816 046166312 +000000054 000271234 000288378 D|084551638 084120632 +000000054 000274285 000293615 D|073717721 003209242 +000000054 000277430 000343586 D|052931531 066241071 +000000054 000281039 000386922 D|041909070 068681185 +000000054 000330374 000402585 D|049087928 072618496 +000000054 000330747 000424273 D|073830972 084906687 +000000054 000348151 000445167 D|070716080 035367905 +000000054 000446470 000458353 D|033954534 082274205 +000000054 000449913 000544757 D|003173051 049786147 +000000054 000469153 000551272 D|014406087 075023785 +000000054 000483562 000570090 D|037386993 033719772 +000000054 000497198 000601514 D|048430984 000775051 +000000054 000510148 000625622 D|074901926 023140089 +000000054 000515674 000636625 D|009517649 035768156 +000000054 000555145 000672569 D|010523867 075707357 +000000054 000592918 000673491 D|010957034 079737749 +000000054 000598539 000701926 D|093161694 035449075 +000000054 000657878 000705796 D|060480170 026514259 +000000054 000668775 000725035 D|006185966 089301828 +000000054 000700389 000730061 D|055234873 045008024 +000000054 000702167 000732675 D|023842824 021063424 +000000054 000706747 000766686 D|029003918 094418850 +000000054 000712011 000826960 D|048649007 068073033 +000000054 000752140 000836952 D|087845776 008543044 +000000054 000809291 000856918 D|081378734 094916581 +000000054 000820886 000865623 D|043980645 074462229 +000000054 000856802 000914425 D|048823542 012313929 +000000054 000858527 000934001 D|016262609 040848060 +000000054 000873600 000973336 D|020656050 024776784 +000000054 000979734 000980820 D|033799672 018419465 +000000054 000980991 000982189 D|025380134 016827761 +000000055 000013618 000002522 D|086811718 035045503 +000000055 000019399 000070539 D|045826745 043999184 +000000055 000038294 000102786 D|078229587 053365221 +000000055 000046636 000155030 D|045122424 022707044 +000000055 000050937 000192663 D|089376555 051854387 +000000055 000064894 000204429 D|006303138 046526801 +000000055 000110270 000230005 D|049924281 032766996 +000000055 000134990 000232601 D|027383600 049017184 +000000055 000138853 000255755 D|035028501 040358007 +000000055 000143215 000272518 D|072162547 053120238 +000000055 000166095 000287881 D|098297414 063332840 +000000055 000210003 000299385 D|073892451 067738056 +000000055 000230918 000312183 D|018223484 016183139 +000000055 000241613 000361374 D|050677848 010891093 +000000055 000255898 000376997 D|009901888 008235659 +000000055 000283286 000399415 D|029971863 076159281 +000000055 000287954 000403587 D|093511279 067134970 +000000055 000289263 000408272 D|016284065 082309262 +000000055 000296642 000473655 D|046535405 092247517 +000000055 000320976 000480350 D|019994298 043397530 +000000055 000330909 000483037 D|045269166 081490001 +000000055 000362314 000536239 D|059387190 096304928 +000000055 000399699 000556532 D|029940002 088073097 +000000055 000402027 000566715 D|018084973 069504663 +000000055 000432722 000576016 D|087637138 084989410 +000000055 000472835 000577864 D|069861920 019967749 +000000055 000479493 000580265 D|058970470 037469869 +000000055 000496061 000594739 D|084331683 076679227 +000000055 000533460 000615291 D|008322574 081416573 +000000055 000539193 000675868 D|058864541 076279987 +000000055 000561781 000689318 D|069753362 008530393 +000000055 000563122 000691725 D|060634694 063448092 +000000055 000581137 000697768 D|074795962 025552559 +000000055 000591882 000709439 D|025193922 080703772 +000000055 000593240 000716605 D|093908344 073475177 +000000055 000630205 000729191 D|028630679 061058473 +000000055 000660125 000739480 D|094016357 036660846 +000000055 000693337 000778154 D|025290444 095747012 +000000055 000702512 000801147 D|090372101 050233382 +000000055 000748115 000804704 D|010225130 085035232 +000000055 000771514 000839216 D|038797771 057277549 +000000055 000788550 000847681 D|005615399 009275122 +000000055 000793356 000890498 D|072319022 032114593 +000000055 000803520 000891045 D|032949395 077498355 +000000055 000820916 000891534 D|001201640 085992734 +000000055 000860940 000892093 D|030266983 097897846 +000000055 000873301 000905031 D|092624403 094527660 +000000055 000919452 000906276 D|062284039 053212603 +000000055 000960679 000961179 D|096885374 026566257 +000000055 000987157 000992252 D|038414580 034124730 +000000056 000012772 000000740 D|085798075 087504820 +000000056 000054174 000022255 D|029038271 001291299 +000000056 000061545 000102649 D|077573750 015463786 +000000056 000089013 000104774 D|069316224 099875779 +000000056 000092330 000126546 D|018082617 045985597 +000000056 000133153 000144324 D|008999217 060694544 +000000056 000173934 000170611 D|009848551 074213619 +000000056 000196104 000208701 D|068261601 088633595 +000000056 000199488 000211162 D|088648580 067795244 +000000056 000232921 000236466 D|085182761 034003146 +000000056 000242129 000252591 D|053911262 079061373 +000000056 000254114 000265113 D|017886640 002814012 +000000056 000264284 000267821 D|056234968 066391079 +000000056 000272200 000288133 D|096333321 058291202 +000000056 000282235 000294485 D|045048941 026287487 +000000056 000287831 000298799 D|095171961 067880411 +000000056 000388202 000305770 D|003583775 059986762 +000000056 000391247 000323161 D|087760226 088453570 +000000056 000403865 000375809 D|097023186 001719398 +000000056 000407763 000412541 D|025295098 054347440 +000000056 000410204 000417208 D|050737466 047506896 +000000056 000414005 000452394 D|049359343 075971676 +000000056 000430024 000461410 D|002550087 057828311 +000000056 000487699 000495000 D|039496827 085276295 +000000056 000488411 000499375 D|030472329 043654578 +000000056 000493570 000516932 D|039541907 085372945 +000000056 000505049 000523743 D|019543863 004856011 +000000056 000514414 000555022 D|075579487 021569743 +000000056 000569906 000568454 D|097816511 094267614 +000000056 000578464 000618651 D|021108750 073102844 +000000056 000591232 000623310 D|003420092 018603596 +000000056 000619531 000630113 D|001911865 016717703 +000000056 000631887 000649309 D|057129232 081216140 +000000056 000654912 000652282 D|008299981 008036876 +000000056 000657081 000665859 D|099808051 024144396 +000000056 000686964 000685097 D|063950553 015522714 +000000056 000747788 000706739 D|010801088 033416539 +000000056 000749126 000709529 D|074682623 037551835 +000000056 000755998 000746373 D|024623438 026900296 +000000056 000795012 000751800 D|025478070 022008947 +000000056 000797047 000761136 D|086094344 053680871 +000000056 000815970 000788251 D|038932208 096638436 +000000056 000819595 000789335 D|001742957 047831632 +000000056 000871559 000803616 D|064155201 075167542 +000000056 000881241 000818018 D|022604300 072337246 +000000056 000900836 000840090 D|000332576 031426382 +000000056 000936156 000854116 D|093339993 004328854 +000000056 000985879 000891972 D|010755843 003097958 +000000056 000991069 000979647 D|049275366 013506485 +000000056 000996763 000997071 D|015929461 030717036 +000000057 000003599 000005703 D|025255482 021708281 +000000057 000017930 000018007 D|009297210 013716659 +000000057 000024362 000020946 D|093960798 084704201 +000000057 000039335 000022610 D|096873697 033306557 +000000057 000040453 000043758 D|081408439 010165643 +000000057 000047806 000057250 D|096524579 025691097 +000000057 000050732 000074781 D|024202211 009364234 +000000057 000052145 000119419 D|002782445 016435948 +000000057 000053021 000123668 D|002116361 007692338 +000000057 000112144 000137092 D|093015576 082199407 +000000057 000113589 000147054 D|098384151 010994296 +000000057 000144761 000173837 D|010415665 066334292 +000000057 000146721 000182362 D|045875393 090483711 +000000057 000159150 000182674 D|008460928 050235752 +000000057 000184665 000196256 D|063263742 084893763 +000000057 000184738 000253293 D|017681671 056581472 +000000057 000194402 000298879 D|030154533 036475271 +000000057 000194437 000373431 D|033051812 007322101 +000000057 000227982 000378662 D|069033513 055922025 +000000057 000240186 000379732 D|060732183 076781405 +000000057 000254301 000385094 D|048513337 034094519 +000000057 000255520 000401319 D|058747729 095872031 +000000057 000306411 000418683 D|087526316 097261197 +000000057 000346805 000436950 D|020452749 006330446 +000000057 000360975 000444556 D|036070351 061560682 +000000057 000393965 000469518 D|007156656 088803011 +000000057 000403713 000470029 D|082220058 071118435 +000000057 000449217 000474440 D|059294555 026526147 +000000057 000459745 000499061 D|075053980 026851007 +000000057 000480784 000501956 D|005955686 060698870 +000000057 000492802 000555612 D|083125961 019881509 +000000057 000515911 000597841 D|061532375 076085546 +000000057 000518929 000630103 D|046825251 037171496 +000000057 000522969 000636535 D|065832318 080652984 +000000057 000533676 000637824 D|011645290 064648956 +000000057 000617766 000646850 D|019585760 061738805 +000000057 000650128 000656297 D|068900298 099089818 +000000057 000669905 000733349 D|037445863 087943090 +000000057 000681163 000737982 D|072270505 057427751 +000000057 000710254 000739289 D|098690396 079141020 +000000057 000720205 000762045 D|079803807 022123463 +000000057 000725950 000795830 D|087200624 024802521 +000000057 000763900 000813502 D|059420555 074968565 +000000057 000831800 000814961 D|024697551 045146345 +000000057 000840302 000839758 D|057062395 029927841 +000000057 000856617 000840884 D|022669755 092231285 +000000057 000913143 000901317 D|091874675 043467336 +000000057 000978340 000907369 D|025490349 085331600 +000000057 000987596 000967522 D|032192589 022467324 +000000057 000988368 000991067 D|007130146 036395264 +000000058 000001216 000010557 D|016298973 084343009 +000000058 000039442 000016760 D|055489039 045846346 +000000058 000044505 000037698 D|082254044 023954543 +000000058 000051960 000053560 D|010110591 093325980 +000000058 000063325 000065168 D|042334905 043932760 +000000058 000149249 000071095 D|089356051 067689417 +000000058 000171647 000072880 D|028352970 062267025 +000000058 000185805 000074979 D|091663061 014497979 +000000058 000221784 000079119 D|049625568 068257590 +000000058 000263789 000091294 D|034401388 092147739 +000000058 000312983 000095234 D|077577123 055796963 +000000058 000323135 000152914 D|084576355 055123022 +000000058 000358967 000157789 D|016024124 092765967 +000000058 000366930 000172503 D|043475187 054343965 +000000058 000380354 000221004 D|013947992 081868556 +000000058 000408661 000222426 D|025817794 072173698 +000000058 000417631 000230692 D|051083578 026504605 +000000058 000423362 000247656 D|001500403 024771397 +000000058 000445947 000252737 D|033347640 084464022 +000000058 000452190 000254274 D|054898744 025909694 +000000058 000466962 000254508 D|031104649 029528651 +000000058 000469890 000259272 D|074212452 033187347 +000000058 000471984 000264305 D|089501388 086614012 +000000058 000489449 000267612 D|020177197 068314079 +000000058 000517316 000274463 D|004552828 000315483 +000000058 000536375 000314551 D|067637384 086317164 +000000058 000550513 000331165 D|093260301 062873944 +000000058 000559498 000331813 D|056514522 061807235 +000000058 000563340 000352202 D|080434496 082238324 +000000058 000574031 000352760 D|072495692 096544185 +000000058 000632846 000392734 D|076656238 033169967 +000000058 000695528 000410161 D|058301492 047045443 +000000058 000705039 000411731 D|042353325 068713219 +000000058 000731784 000423358 D|078130521 036840003 +000000058 000741804 000446999 D|005361084 042138196 +000000058 000748787 000486054 D|092693326 036958365 +000000058 000769783 000504737 D|089942937 095164131 +000000058 000795682 000511305 D|099637207 035100790 +000000058 000811236 000514935 D|021410628 097194823 +000000058 000838802 000553589 D|085626555 035794423 +000000058 000858747 000631051 D|048528437 016483000 +000000058 000859946 000656442 D|088710140 031960446 +000000058 000895511 000660626 D|015402541 073115096 +000000058 000909596 000710912 D|031029747 078158807 +000000058 000912847 000729066 D|031973946 024033891 +000000058 000927167 000786067 D|008238588 058915199 +000000058 000937034 000794490 D|096792186 017996492 +000000058 000948169 000857464 D|043805086 038367548 +000000058 000954291 000956865 D|064378211 099618516 +000000058 000998837 000960171 D|090928503 032146235 +000000059 000001335 000006472 D|084020329 001434246 +000000059 000007282 000016486 D|020691975 049184679 +000000059 000030436 000016686 D|041510254 021850206 +000000059 000042571 000076862 D|017507942 059904830 +000000059 000067970 000100747 D|074755231 030881726 +000000059 000089582 000116854 D|002541309 060466411 +000000059 000159680 000149145 D|057896346 021690635 +000000059 000178072 000186136 D|052852861 084761350 +000000059 000209355 000188279 D|076389955 052427270 +000000059 000280003 000222949 D|053046604 022503171 +000000059 000288035 000225812 D|077572765 043690788 +000000059 000296732 000230082 D|038777052 022485162 +000000059 000298125 000281907 D|024501243 078611992 +000000059 000316475 000304668 D|006978763 061331914 +000000059 000331231 000311776 D|080832970 071097899 +000000059 000365628 000340322 D|058719241 047756985 +000000059 000386034 000359642 D|066285224 075544934 +000000059 000412345 000476149 D|019796661 074402518 +000000059 000429368 000489221 D|053564001 014831223 +000000059 000431158 000497633 D|062457008 019162081 +000000059 000433433 000549565 D|092305973 044210374 +000000059 000445406 000614542 D|099290827 003049915 +000000059 000455710 000649800 D|010750752 032128193 +000000059 000488356 000655508 D|029952724 028877129 +000000059 000529612 000656736 D|086302762 097884257 +000000059 000537329 000663180 D|077746263 083631178 +000000059 000540036 000675697 D|026474293 004065741 +000000059 000560855 000688550 D|077297093 069983746 +000000059 000578716 000701365 D|095130847 022783644 +000000059 000585483 000732325 D|000745551 013301459 +000000059 000617923 000747394 D|021032322 013303478 +000000059 000618359 000758544 D|086520294 055981634 +000000059 000645341 000783328 D|012542941 059135224 +000000059 000663394 000789843 D|017704311 090241072 +000000059 000697226 000799243 D|016463951 025389412 +000000059 000718235 000800332 D|056252086 051907207 +000000059 000735099 000805761 D|091266327 086713481 +000000059 000764393 000811739 D|059566445 024859439 +000000059 000772929 000825849 D|058055562 009938481 +000000059 000776977 000831473 D|026182424 072266117 +000000059 000790685 000844933 D|016017524 085249345 +000000059 000811506 000848177 D|035921073 068973412 +000000059 000821367 000848439 D|071923677 051590858 +000000059 000822462 000849151 D|001469555 001935421 +000000059 000912291 000861936 D|078469438 076442588 +000000059 000923367 000874861 D|014972871 092898667 +000000059 000944619 000891727 D|005235331 015056966 +000000059 000953321 000917947 D|045057858 000723105 +000000059 000973986 000917987 D|012717325 089197939 +000000059 000996618 000955136 D|015862396 009061126 +000000060 000040930 000006004 D|040318023 091585460 +000000060 000058345 000022778 D|016825019 058681727 +000000060 000074630 000027517 D|064402772 084246103 +000000060 000084635 000050581 D|090253030 092994780 +000000060 000102632 000065209 D|034023485 077030379 +000000060 000118543 000067619 D|050080571 025384769 +000000060 000123607 000131348 D|054779980 000124382 +000000060 000124216 000145536 D|013233860 098156156 +000000060 000126327 000185077 D|091450430 035436968 +000000060 000143026 000221176 D|093263169 088236368 +000000060 000144993 000231080 D|012265573 018679714 +000000060 000159388 000261988 D|024405354 094767813 +000000060 000186375 000277921 D|084812298 007451947 +000000060 000194310 000285189 D|012751258 029759145 +000000060 000227170 000286747 D|083682021 004574159 +000000060 000241525 000307471 D|038108220 041070877 +000000060 000244063 000332997 D|069022020 076887206 +000000060 000255587 000356315 D|045974720 018621411 +000000060 000282381 000397921 D|051168131 021384111 +000000060 000287965 000398632 D|015078814 056233515 +000000060 000310078 000465314 D|094017830 084333825 +000000060 000332799 000528122 D|065292552 042278955 +000000060 000359652 000547085 D|026709966 076734158 +000000060 000378789 000560744 D|032759875 028207660 +000000060 000384879 000564339 D|029963000 024910911 +000000060 000386124 000606457 D|069750809 065348049 +000000060 000434113 000607621 D|040660941 066297879 +000000060 000446977 000610443 D|029201060 065411432 +000000060 000448663 000649086 D|064989766 079974995 +000000060 000453256 000651089 D|079050578 049295675 +000000060 000479930 000657115 D|091003442 084363761 +000000060 000479970 000671770 D|064080421 013609821 +000000060 000494836 000679686 D|069319738 079814818 +000000060 000515199 000680808 D|068594734 097738828 +000000060 000568488 000713628 D|073457028 019493275 +000000060 000608810 000723415 D|091098795 054373843 +000000060 000625203 000725719 D|034699683 089470574 +000000060 000650096 000726209 D|047467965 057368726 +000000060 000661583 000747057 D|042511164 057653278 +000000060 000697835 000779608 D|016277967 043747810 +000000060 000713145 000824472 D|090501837 059463726 +000000060 000817591 000827093 D|086284114 066699016 +000000060 000825243 000832729 D|073264824 096657221 +000000060 000842157 000890259 D|039376734 072386540 +000000060 000848917 000902577 D|052812539 085744309 +000000060 000894836 000918457 D|058770576 053219198 +000000060 000937965 000920438 D|093610901 088739090 +000000060 000951896 000957497 D|025850984 040174150 +000000060 000976076 000960647 D|056563996 051369780 +000000060 000989993 000998645 D|056915997 080323855 +000000061 000011856 000021869 D|028020524 013676838 +000000061 000025852 000062384 D|074358596 039947352 +000000061 000062110 000112422 D|079076648 016921133 +000000061 000079864 000116334 D|055930419 009928183 +000000061 000105215 000138519 D|070397044 096184674 +000000061 000136636 000149250 D|025470931 084138802 +000000061 000141923 000167593 D|050237976 025914268 +000000061 000153032 000231077 D|042052578 052189168 +000000061 000174830 000232174 D|069975399 030362544 +000000061 000205378 000236760 D|047764878 061474643 +000000061 000223147 000280864 D|009219820 068838573 +000000061 000265013 000280914 D|088774788 074359256 +000000061 000268562 000306837 D|074796637 053245615 +000000061 000285262 000314549 D|066553201 078489327 +000000061 000301176 000314786 D|024085299 072821705 +000000061 000321689 000323738 D|065891257 080760113 +000000061 000332327 000328758 D|048255857 055927748 +000000061 000352353 000398097 D|040511276 058101782 +000000061 000367796 000401020 D|007008423 074046458 +000000061 000371929 000409171 D|094507376 075631144 +000000061 000390163 000416950 D|061686241 079647773 +000000061 000437066 000432997 D|029690090 016955281 +000000061 000471139 000453436 D|032104255 069310658 +000000061 000471941 000454482 D|071932720 051984103 +000000061 000485849 000478295 D|075307868 062682283 +000000061 000489234 000520102 D|077418887 053293793 +000000061 000490385 000538824 D|080448617 021175277 +000000061 000519779 000545158 D|097126552 070702609 +000000061 000522236 000552016 D|050189945 041328758 +000000061 000603993 000585567 D|090583813 044560502 +000000061 000624661 000617679 D|087235199 011883403 +000000061 000643125 000666626 D|054781518 035465889 +000000061 000669432 000668107 D|058068206 047122267 +000000061 000674102 000671639 D|027826532 003506920 +000000061 000686563 000677433 D|077953619 095799900 +000000061 000693287 000694926 D|053429058 051322938 +000000061 000695600 000726627 D|018816592 075498218 +000000061 000737047 000749572 D|030587332 089085475 +000000061 000793331 000763312 D|007884674 074577468 +000000061 000806391 000766671 D|094636159 016216245 +000000061 000814215 000770632 D|050404297 076377313 +000000061 000828899 000775261 D|048871384 094063191 +000000061 000841716 000791436 D|064520037 017291870 +000000061 000852735 000847825 D|063681284 033882554 +000000061 000855003 000857543 D|019773308 056598388 +000000061 000874878 000880774 D|007544916 053895424 +000000061 000947904 000894250 D|076192631 001086111 +000000061 000954055 000954890 D|055088476 020192542 +000000061 000966612 000967885 D|006710437 067172907 +000000061 000980841 000976282 D|048821676 045738703 +000000062 000012520 000036888 D|066289223 028309545 +000000062 000030135 000039535 D|064064428 017342023 +000000062 000044856 000044369 D|030308846 076571658 +000000062 000071393 000059183 D|040246470 083129593 +000000062 000075138 000077430 D|031775620 049134221 +000000062 000083289 000082744 D|043295864 033962779 +000000062 000122296 000098621 D|061715709 017387600 +000000062 000132243 000120222 D|095228100 014219908 +000000062 000143815 000129737 D|034480543 041038683 +000000062 000145390 000155813 D|034433154 088234229 +000000062 000155993 000203710 D|058894070 066635429 +000000062 000203732 000247112 D|031347167 008007117 +000000062 000218736 000276889 D|093218807 029454122 +000000062 000250550 000280745 D|022392996 008631753 +000000062 000251890 000346457 D|056447483 044082913 +000000062 000278797 000360455 D|055492035 080363727 +000000062 000278893 000384153 D|014865705 001647546 +000000062 000282723 000395576 D|055433835 090336738 +000000062 000312845 000397841 D|046838243 064977189 +000000062 000324611 000414544 D|094429083 005209655 +000000062 000337573 000416042 D|034736608 029300332 +000000062 000372832 000432731 D|035718727 046179000 +000000062 000380206 000446947 D|023549091 043732791 +000000062 000403155 000466859 D|036799602 024511349 +000000062 000430080 000475948 D|093997697 079994018 +000000062 000435144 000479008 D|089520125 059167223 +000000062 000455469 000481135 D|025698519 077804113 +000000062 000473242 000483353 D|002712210 087908374 +000000062 000483070 000552130 D|086544432 041953706 +000000062 000498519 000603123 D|028942272 062379543 +000000062 000506685 000607203 D|022942298 067990886 +000000062 000565026 000614704 D|034477026 022486128 +000000062 000572582 000629303 D|003682677 020145913 +000000062 000595990 000641334 D|067313714 045574850 +000000062 000607477 000658865 D|071116157 005711136 +000000062 000670929 000716630 D|054154534 099857405 +000000062 000711247 000721699 D|013967877 079692841 +000000062 000734289 000758289 D|080654297 093949288 +000000062 000737728 000773234 D|019621786 084530015 +000000062 000754766 000800067 D|040420429 020599805 +000000062 000776079 000802114 D|031340792 038626227 +000000062 000779250 000804945 D|010790618 062766116 +000000062 000798351 000840430 D|066140827 069113182 +000000062 000804563 000860358 D|066202328 092313186 +000000062 000806063 000867497 D|040293532 077710352 +000000062 000839068 000870716 D|093895642 075606952 +000000062 000846267 000886491 D|047381465 094090401 +000000062 000903996 000903057 D|087772793 002940100 +000000062 000963505 000929188 D|042580763 064483670 +000000062 000994415 000963803 D|031795853 044248877 +000000063 000001731 000047266 D|016488025 015721756 +000000063 000028803 000124780 D|044725691 006516725 +000000063 000038360 000134420 D|092741953 049629874 +000000063 000065810 000136920 D|080279510 076264285 +000000063 000067869 000144328 D|053911450 087799512 +000000063 000099004 000163631 D|062059675 002727827 +000000063 000106577 000190813 D|019106673 028228704 +000000063 000109195 000196397 D|036380550 030729912 +000000063 000144983 000196469 D|069040165 084486542 +000000063 000150310 000198646 D|050479089 069527157 +000000063 000173233 000202127 D|049171983 003505873 +000000063 000229428 000214428 D|029199550 042356266 +000000063 000233054 000218319 D|015028298 037606206 +000000063 000242888 000231072 D|054951187 082802154 +000000063 000294746 000249002 D|018406429 092640058 +000000063 000304176 000259150 D|015462922 059656140 +000000063 000335929 000280693 D|025983017 019855187 +000000063 000362701 000292357 D|051115696 036302791 +000000063 000372841 000312213 D|031129811 044521801 +000000063 000373920 000319364 D|028623561 077068405 +000000063 000407205 000373169 D|039059953 030408578 +000000063 000421986 000379494 D|014418796 095163131 +000000063 000442142 000417371 D|012905323 025061717 +000000063 000467863 000425675 D|054559275 057990147 +000000063 000475872 000472440 D|038161321 003237557 +000000063 000476221 000481178 D|037109978 089436080 +000000063 000478115 000481266 D|029854109 057541190 +000000063 000512652 000498000 D|003571049 021730319 +000000063 000524158 000505858 D|056710260 031512433 +000000063 000529507 000511396 D|064087061 022268403 +000000063 000538651 000537115 D|036654010 095758416 +000000063 000543013 000611903 D|081424920 009171016 +000000063 000598203 000630298 D|064810680 054506078 +000000063 000628062 000638512 D|011210007 043108796 +000000063 000664528 000663286 D|044360712 098864185 +000000063 000688637 000690996 D|077898643 072191533 +000000063 000700502 000747658 D|027156229 003779670 +000000063 000721144 000789133 D|003936273 051903457 +000000063 000745787 000821700 D|085129360 050461094 +000000063 000767535 000849927 D|099066999 062495495 +000000063 000774619 000854469 D|024749833 076508409 +000000063 000784076 000861702 D|090684420 022621855 +000000063 000792505 000908008 D|074945899 099560955 +000000063 000844134 000919387 D|012251455 094041319 +000000063 000860289 000922763 D|058923807 049175217 +000000063 000861326 000937697 D|039215470 038051437 +000000063 000903137 000951130 D|093033698 050748473 +000000063 000973460 000970928 D|029230345 004171062 +000000063 000988720 000975020 D|070737549 010458879 +000000063 000996102 000997748 D|005167127 021026736 +000000064 000003621 000038857 D|006258295 043599594 +000000064 000013723 000041285 D|037392338 012811646 +000000064 000021186 000084013 D|073471099 062700723 +000000064 000035413 000087650 D|068479886 062324426 +000000064 000057131 000091749 D|029581226 045496011 +000000064 000067970 000134572 D|041771874 097227892 +000000064 000080227 000145988 D|022068479 052984482 +000000064 000082206 000151027 D|012604012 022375474 +000000064 000113931 000151346 D|008366849 058726493 +000000064 000154882 000154625 D|036329122 003283851 +000000064 000184060 000168256 D|075488422 068394340 +000000064 000184463 000255646 D|026630765 086399197 +000000064 000217163 000263906 D|038895239 085882225 +000000064 000233410 000264973 D|057268564 085501480 +000000064 000254337 000316819 D|005375021 022991198 +000000064 000288918 000325593 D|039792859 059797280 +000000064 000304485 000353014 D|010522256 013129556 +000000064 000308237 000369681 D|032181403 047019681 +000000064 000332624 000377062 D|051681909 019925003 +000000064 000333457 000379146 D|004144328 030073467 +000000064 000377626 000398663 D|098297007 025263664 +000000064 000379613 000497082 D|003679148 031876781 +000000064 000394343 000522433 D|086285796 000070472 +000000064 000402459 000524940 D|078278580 016918883 +000000064 000407745 000542091 D|073126069 009878213 +000000064 000481708 000563413 D|063747845 012164656 +000000064 000508383 000584193 D|007246238 003913595 +000000064 000536080 000617277 D|083874530 020945279 +000000064 000597986 000634199 D|058010501 034284164 +000000064 000601203 000643006 D|052590119 024179966 +000000064 000637088 000649448 D|091306610 078965003 +000000064 000681015 000651388 D|088596620 096422964 +000000064 000707895 000663084 D|096214149 059308120 +000000064 000758569 000667737 D|023051750 086518833 +000000064 000766506 000680922 D|038307228 053762299 +000000064 000783817 000682574 D|034166485 095346721 +000000064 000790632 000693917 D|069771737 097077734 +000000064 000796084 000724283 D|001523058 066298312 +000000064 000831050 000752230 D|021166840 010404891 +000000064 000860225 000755321 D|064573680 099500045 +000000064 000869666 000756939 D|083079248 038769882 +000000064 000874824 000758752 D|085596672 079266077 +000000064 000875006 000879094 D|011535194 076754773 +000000064 000890166 000898226 D|058998672 099363116 +000000064 000929744 000926498 D|085322267 021163811 +000000064 000936790 000956798 D|048855591 088973795 +000000064 000937302 000957303 D|054491756 030844520 +000000064 000941926 000975909 D|068046343 093416135 +000000064 000947369 000984984 D|078387879 086318368 +000000064 000967809 000988119 D|083720361 073155659 +000000065 000003100 000003169 D|079310077 093608279 +000000065 000023384 000004686 D|078459191 057174985 +000000065 000050001 000007857 D|010719327 054919914 +000000065 000063231 000049971 D|084481799 037831940 +000000065 000072858 000089924 D|093083743 039659997 +000000065 000117276 000103544 D|014730735 080565570 +000000065 000132699 000125922 D|055446698 019514866 +000000065 000146749 000150466 D|042412967 026058525 +000000065 000156495 000169728 D|088060235 040237366 +000000065 000159367 000178951 D|070700768 051553168 +000000065 000205102 000206386 D|099022796 030575272 +000000065 000207336 000263314 D|072643947 039142772 +000000065 000211177 000273627 D|052237293 062324009 +000000065 000234362 000277077 D|007075057 098607402 +000000065 000238888 000342270 D|010740191 016968132 +000000065 000264404 000415390 D|077342314 017166521 +000000065 000287886 000416642 D|016126088 076149999 +000000065 000288966 000422785 D|022704390 011850048 +000000065 000291744 000427930 D|086794583 080718538 +000000065 000307116 000428290 D|024204315 041204369 +000000065 000425890 000455628 D|076240873 061532600 +000000065 000449385 000458104 D|067234753 003630624 +000000065 000464585 000465020 D|076563412 064216369 +000000065 000470803 000481279 D|000673026 056067490 +000000065 000476787 000497327 D|042850823 056111796 +000000065 000525835 000548699 D|003750821 087584699 +000000065 000535815 000554476 D|003683371 053154160 +000000065 000554550 000559834 D|008608952 000907822 +000000065 000618056 000573710 D|049156542 086466615 +000000065 000624753 000595104 D|099102208 082704878 +000000065 000628524 000600892 D|011761465 033663311 +000000065 000632550 000648560 D|048048175 068364412 +000000065 000638248 000658806 D|097083017 052385277 +000000065 000646635 000663223 D|019023050 087107512 +000000065 000660050 000666837 D|012696788 031016287 +000000065 000696236 000691710 D|071607990 094926734 +000000065 000718432 000704598 D|031665544 049775074 +000000065 000718807 000726358 D|085045256 041150980 +000000065 000747396 000733296 D|030795810 024604532 +000000065 000760746 000779311 D|013124214 040380317 +000000065 000775218 000780494 D|020879190 079384564 +000000065 000788719 000798711 D|016230584 097287410 +000000065 000822956 000816851 D|004650758 020275861 +000000065 000823308 000825775 D|010629389 064490081 +000000065 000828691 000848654 D|033672031 066820285 +000000065 000840647 000851367 D|045225303 012310197 +000000065 000853986 000903839 D|022480522 015451985 +000000065 000973643 000910306 D|079367750 005363576 +000000065 000974567 000966939 D|062976165 091495109 +000000065 000999386 000981222 D|049175392 089610048 +000000066 000054717 000005802 D|096253180 032858787 +000000066 000066210 000007582 D|092816986 099740992 +000000066 000099611 000017436 D|026151306 054754777 +000000066 000142236 000056482 D|087526449 026303759 +000000066 000155209 000117562 D|051487794 057852393 +000000066 000175435 000136482 D|082276426 092202211 +000000066 000183255 000187650 D|015723254 057571157 +000000066 000185088 000198805 D|090101767 082631547 +000000066 000193174 000216402 D|052389143 078862467 +000000066 000205232 000234364 D|026636561 067040716 +000000066 000219720 000251914 D|082685215 071866933 +000000066 000235208 000270654 D|094088155 078665992 +000000066 000237661 000339058 D|079287781 040387916 +000000066 000239103 000353420 D|033871328 086997675 +000000066 000249660 000366565 D|044457134 040561311 +000000066 000285842 000371618 D|019929340 008207519 +000000066 000357273 000390551 D|084365230 050460422 +000000066 000381667 000393313 D|051552058 018802984 +000000066 000406251 000396213 D|082988204 008189678 +000000066 000422977 000438577 D|027057235 048834092 +000000066 000446328 000480085 D|079631458 053452181 +000000066 000451099 000486102 D|070421123 058130225 +000000066 000461407 000570685 D|073558950 012424705 +000000066 000473220 000594502 D|029999555 021706965 +000000066 000485790 000610531 D|059636384 062282896 +000000066 000500420 000624926 D|067239618 048475888 +000000066 000512312 000632573 D|067427692 072760362 +000000066 000521923 000650294 D|014533144 048056755 +000000066 000545543 000654556 D|010245342 071772514 +000000066 000549883 000660851 D|098547779 035766707 +000000066 000551172 000675867 D|016644740 014565763 +000000066 000557479 000687577 D|060909519 008794293 +000000066 000583312 000722241 D|095646537 090339393 +000000066 000598692 000730795 D|018047835 011476015 +000000066 000600354 000736191 D|001808440 070516515 +000000066 000613665 000748605 D|083495665 057993844 +000000066 000624594 000760272 D|092019542 045378523 +000000066 000652652 000767509 D|005349588 015189513 +000000066 000702565 000778434 D|076793269 073467608 +000000066 000752272 000820051 D|052969200 064381231 +000000066 000770912 000843979 D|051788844 010287390 +000000066 000778916 000850423 D|000388217 010336746 +000000066 000790513 000855934 D|025426791 007565181 +000000066 000798581 000875073 D|016161368 027029773 +000000066 000898163 000891995 D|062217283 050755001 +000000066 000905598 000906097 D|019811415 035115743 +000000066 000925478 000910120 D|046252786 005843424 +000000066 000947502 000931177 D|066874980 067560776 +000000066 000968733 000950158 D|018493741 025068781 +000000066 000992503 000991647 D|007354156 042552007 +000000067 000002219 000023551 D|060336384 036032638 +000000067 000027200 000023686 D|002884906 029957315 +000000067 000030209 000034476 D|082073574 060316650 +000000067 000082122 000048280 D|091943494 064918859 +000000067 000093852 000057895 D|049159275 006898019 +000000067 000139699 000067147 D|072834344 070947057 +000000067 000175159 000084408 D|001956493 061786849 +000000067 000183662 000099479 D|091147286 063093533 +000000067 000190963 000107043 D|054150948 024133582 +000000067 000282932 000142742 D|095131584 046633438 +000000067 000284020 000164481 D|061853831 007251682 +000000067 000286402 000168433 D|075912307 017455313 +000000067 000298050 000199355 D|043267875 013703894 +000000067 000333424 000220034 D|020673780 017904944 +000000067 000335814 000241411 D|075175821 036954878 +000000067 000369800 000250422 D|067290296 075370555 +000000067 000378558 000252962 D|055237083 025177911 +000000067 000383276 000258778 D|000255784 045920184 +000000067 000391867 000313254 D|046318883 094835056 +000000067 000412981 000315900 D|058033819 053220666 +000000067 000420898 000362872 D|039078841 050141733 +000000067 000499406 000377717 D|054680912 029404581 +000000067 000503495 000379953 D|005151462 078594477 +000000067 000529282 000380192 D|048576124 003424673 +000000067 000590745 000402796 D|059626791 016463634 +000000067 000602731 000433049 D|033958303 038178359 +000000067 000623554 000441173 D|060178796 059480619 +000000067 000648453 000452780 D|048003125 064411297 +000000067 000656351 000472803 D|083442942 004134930 +000000067 000657234 000473715 D|051917463 032169399 +000000067 000671392 000473918 D|033991664 084792797 +000000067 000682818 000484276 D|043856891 004833390 +000000067 000728930 000487169 D|034771307 030180197 +000000067 000741777 000490814 D|071880974 050742170 +000000067 000755553 000495280 D|025648707 052384506 +000000067 000761864 000520169 D|056733309 056849054 +000000067 000768502 000540768 D|082315526 070614558 +000000067 000854598 000556991 D|004143108 082216742 +000000067 000855966 000580625 D|071634623 060188333 +000000067 000862360 000669143 D|023738633 081995976 +000000067 000874478 000680008 D|097721480 036036768 +000000067 000880295 000706104 D|088477641 094148723 +000000067 000881052 000750255 D|023387114 026614998 +000000067 000890222 000795922 D|024797545 008609392 +000000067 000896216 000859315 D|046608981 079802255 +000000067 000912561 000862106 D|032753495 040802185 +000000067 000925032 000896365 D|084941011 058096439 +000000067 000943408 000903795 D|034935793 070358918 +000000067 000964479 000912331 D|093596978 040778087 +000000067 000978939 000957388 D|040353017 067063670 +000000068 000007150 000018293 D|037591123 062816336 +000000068 000013403 000028481 D|009910516 045224106 +000000068 000013876 000067664 D|079040303 076746127 +000000068 000038394 000075135 D|002279672 054357884 +000000068 000059400 000079911 D|091455392 083126401 +000000068 000073102 000128230 D|001240523 060728253 +000000068 000102208 000128986 D|011840915 081428641 +000000068 000195488 000136186 D|048545008 079237486 +000000068 000210545 000139215 D|021784084 029678611 +000000068 000290149 000143855 D|017945567 073257847 +000000068 000305600 000185179 D|082206763 066400706 +000000068 000330591 000199786 D|068274511 044997248 +000000068 000331952 000227460 D|034286757 013777892 +000000068 000356503 000266574 D|014658534 036289290 +000000068 000361340 000276577 D|010826210 025092312 +000000068 000373942 000280038 D|033352622 090896712 +000000068 000374496 000298711 D|083723059 077384624 +000000068 000397852 000304536 D|087002976 073586527 +000000068 000408662 000311311 D|000992928 019529873 +000000068 000409182 000315979 D|089659644 020246490 +000000068 000435478 000333082 D|048173076 054917336 +000000068 000436951 000353704 D|033303507 032749296 +000000068 000517646 000364478 D|008168426 068500945 +000000068 000567367 000387104 D|071264346 063822622 +000000068 000572770 000394231 D|005555438 070327323 +000000068 000594548 000427862 D|084015180 025903164 +000000068 000625936 000431384 D|006673086 021089890 +000000068 000666962 000434221 D|040620799 032014990 +000000068 000719457 000458608 D|015338635 032580425 +000000068 000744695 000480642 D|083775169 042266879 +000000068 000746285 000531019 D|096419954 012163537 +000000068 000751198 000549915 D|026077057 015376154 +000000068 000762204 000576428 D|097618791 089425897 +000000068 000775426 000591138 D|015666587 054851829 +000000068 000780579 000623859 D|021030652 010529333 +000000068 000799697 000645877 D|049581937 042562044 +000000068 000805758 000647396 D|037274887 028307627 +000000068 000819700 000668493 D|027810790 055048394 +000000068 000826940 000683378 D|053797002 081635589 +000000068 000898795 000684553 D|066929929 066190618 +000000068 000904538 000686302 D|087801689 060479024 +000000068 000921086 000711126 D|047085127 093882474 +000000068 000922822 000744064 D|034433922 066797227 +000000068 000925582 000747369 D|032517293 092775064 +000000068 000928616 000778894 D|064344909 058509830 +000000068 000935272 000811628 D|042777134 091460663 +000000068 000950220 000838732 D|077543411 022017028 +000000068 000960252 000866611 D|057192467 016989891 +000000068 000967188 000902953 D|089187222 013400574 +000000068 000979155 000988705 D|093393315 011172823 +000000069 000008763 000053744 D|003858718 039619517 +000000069 000123986 000072514 D|067746468 063577595 +000000069 000133655 000102740 D|041282012 014564507 +000000069 000157013 000108468 D|079659608 093540075 +000000069 000163519 000159971 D|098047823 075951300 +000000069 000170194 000175272 D|020456724 019409906 +000000069 000195468 000192315 D|019882485 083688579 +000000069 000216354 000195283 D|063596067 090658774 +000000069 000349599 000202984 D|081139199 015297504 +000000069 000350296 000224188 D|078391791 072808938 +000000069 000368194 000234554 D|013226354 093028251 +000000069 000397350 000251416 D|010757067 095343935 +000000069 000422130 000274744 D|094977841 037070695 +000000069 000434840 000356718 D|032385251 056623379 +000000069 000455018 000388412 D|066215357 031282179 +000000069 000473576 000400698 D|011134363 068091964 +000000069 000474054 000419836 D|095900448 064032803 +000000069 000477053 000437196 D|036301970 019743506 +000000069 000500999 000452064 D|030312313 081298055 +000000069 000543175 000459596 D|076260045 048093090 +000000069 000568996 000461589 D|095317589 031833825 +000000069 000580030 000507410 D|077857185 070341962 +000000069 000591629 000517144 D|014119426 075702866 +000000069 000594724 000529669 D|010873735 035664037 +000000069 000620147 000543896 D|089723693 031839728 +000000069 000622746 000549165 D|053374730 022553885 +000000069 000623335 000550252 D|009470276 009995474 +000000069 000631975 000567800 D|064154159 044960676 +000000069 000642133 000585274 D|048610595 028975111 +000000069 000676776 000601885 D|047643023 025700372 +000000069 000686632 000610429 D|003123084 046310302 +000000069 000687628 000618135 D|015507836 044997073 +000000069 000725807 000666507 D|002398391 081549383 +000000069 000733215 000681657 D|023823205 097209058 +000000069 000743848 000686060 D|032253521 074094045 +000000069 000745236 000707911 D|099007938 011230485 +000000069 000758552 000711002 D|048202071 023040476 +000000069 000765454 000715627 D|012001896 067433093 +000000069 000771014 000744578 D|026754052 060128212 +000000069 000775138 000751490 D|085340045 086356487 +000000069 000800468 000791365 D|067527771 083117617 +000000069 000816597 000791985 D|061221941 019815871 +000000069 000825364 000816612 D|034641537 039118544 +000000069 000874553 000830901 D|039009195 004694510 +000000069 000886452 000856293 D|035627271 051197723 +000000069 000949615 000871436 D|025993698 099343942 +000000069 000953515 000894197 D|067745896 046357850 +000000069 000965301 000907676 D|005734821 036308376 +000000069 000971449 000961466 D|070958335 042047517 +000000069 000986993 000991201 D|096142243 040090405 +000000070 000022998 000003456 D|087469645 092550300 +000000070 000028147 000007305 D|034152323 064415345 +000000070 000035355 000019338 D|001355468 027941471 +000000070 000044438 000030172 D|005742220 086881299 +000000070 000053763 000036621 D|004657243 048695486 +000000070 000056047 000101195 D|020586121 093625278 +000000070 000073907 000124166 D|066175486 085330168 +000000070 000099377 000135963 D|087647765 050521951 +000000070 000102004 000141005 D|095436885 031526196 +000000070 000102841 000142003 D|012236083 049392085 +000000070 000104904 000146398 D|077218201 027952232 +000000070 000200263 000150234 D|055681491 046108635 +000000070 000220383 000205406 D|063337976 071238178 +000000070 000239543 000207476 D|062701906 028380780 +000000070 000261278 000232085 D|003387957 034201268 +000000070 000280501 000245701 D|027672502 014432920 +000000070 000292659 000263700 D|049933232 098105616 +000000070 000302564 000266619 D|081212027 001653242 +000000070 000302917 000304491 D|009187743 082335876 +000000070 000315796 000306080 D|013882852 093030694 +000000070 000345598 000311999 D|023106825 056315688 +000000070 000353025 000356915 D|034803604 025644384 +000000070 000355417 000359876 D|035325578 008182648 +000000070 000362469 000366671 D|087915283 062391232 +000000070 000403851 000427382 D|086423073 095278627 +000000070 000423075 000473718 D|020971088 075554063 +000000070 000445493 000480697 D|066400085 083018746 +000000070 000490200 000495773 D|023208452 026434451 +000000070 000506345 000501215 D|051841897 095782448 +000000070 000519538 000518529 D|057568176 023116567 +000000070 000523075 000573736 D|088427895 013583359 +000000070 000537248 000621051 D|073340825 013517442 +000000070 000633431 000634215 D|069130058 069762468 +000000070 000641694 000645640 D|040244976 044421328 +000000070 000697318 000661761 D|024966816 067249082 +000000070 000710140 000662000 D|046129469 005317431 +000000070 000743189 000713261 D|055036935 044878282 +000000070 000751178 000722937 D|049981374 078087731 +000000070 000757921 000787066 D|028810097 058188547 +000000070 000774469 000826602 D|036491452 046983539 +000000070 000784024 000861227 D|080595657 066502732 +000000070 000809473 000903264 D|038809598 048754687 +000000070 000855675 000907115 D|041474697 033164155 +000000070 000884664 000911761 D|006610823 099139545 +000000070 000894222 000915233 D|046024051 021524112 +000000070 000896281 000919320 D|031523509 011845124 +000000070 000910932 000926687 D|075269626 062126290 +000000070 000919985 000937479 D|010552356 093610927 +000000070 000945431 000967083 D|086306921 075927496 +000000070 000980668 000978347 D|062632686 084856053 +000000071 000027061 000020239 D|052564649 083954275 +000000071 000031280 000022218 D|034714991 004224372 +000000071 000031896 000025267 D|086359855 034990097 +000000071 000052435 000026897 D|066053502 040790849 +000000071 000078913 000034036 D|078891595 027198003 +000000071 000089869 000051279 D|056872577 087836426 +000000071 000098258 000065421 D|096341740 050301270 +000000071 000103105 000077088 D|013710329 032029822 +000000071 000104097 000083096 D|042693629 053741510 +000000071 000110667 000143738 D|057390570 035945167 +000000071 000121053 000149180 D|022769171 045499645 +000000071 000161946 000172064 D|035369541 052959006 +000000071 000162479 000175077 D|019527705 061048712 +000000071 000167728 000184598 D|028635968 059693956 +000000071 000215910 000192888 D|000299212 012625346 +000000071 000224397 000222308 D|026448825 005066024 +000000071 000253791 000262992 D|047122377 003202078 +000000071 000292006 000314630 D|068862277 045340038 +000000071 000305895 000323097 D|010469334 068664867 +000000071 000320751 000344763 D|023492770 040566215 +000000071 000320991 000380232 D|008462440 018490424 +000000071 000348571 000454995 D|094412876 087925463 +000000071 000403060 000465478 D|027201363 033435903 +000000071 000424692 000478950 D|095492590 021703592 +000000071 000555530 000510527 D|008535764 026636171 +000000071 000575534 000527767 D|041474829 045837075 +000000071 000588319 000528996 D|023964611 098605067 +000000071 000658869 000556997 D|083298360 045308627 +000000071 000667786 000586892 D|054319250 016831025 +000000071 000672179 000620020 D|015093436 027558932 +000000071 000679060 000643853 D|010912363 054594559 +000000071 000682444 000672094 D|055780159 015849411 +000000071 000687706 000773555 D|071102181 067998414 +000000071 000701557 000798443 D|050128973 060110328 +000000071 000738468 000813717 D|093778993 062428287 +000000071 000751022 000837512 D|091335881 021930836 +000000071 000759021 000843625 D|010780255 074453359 +000000071 000759624 000868165 D|039714038 008903582 +000000071 000762685 000870880 D|039745390 017275341 +000000071 000770749 000876582 D|034790158 044726927 +000000071 000803177 000883074 D|005044737 054936812 +000000071 000809761 000885649 D|086583460 067225620 +000000071 000812567 000901818 D|054678543 004066438 +000000071 000819971 000951826 D|031785249 011333754 +000000071 000820893 000968573 D|038173320 062715745 +000000071 000847491 000971399 D|087293889 057541664 +000000071 000889521 000971430 D|017834098 047940378 +000000071 000897563 000972158 D|044681484 077281724 +000000071 000989806 000974470 D|024778520 079109217 +000000071 000995545 000990010 D|044465893 097665148 +000000072 000033121 000026287 D|032862285 098359694 +000000072 000051652 000027609 D|036243370 044158327 +000000072 000107374 000048346 D|005178199 050285602 +000000072 000109374 000057932 D|030717024 017737450 +000000072 000116591 000081810 D|070020882 049248094 +000000072 000124879 000138988 D|044958800 051247798 +000000072 000158012 000160091 D|097390388 039491875 +000000072 000166740 000188285 D|045521043 064064510 +000000072 000175730 000213663 D|043293146 026057374 +000000072 000182933 000217413 D|013167481 079132356 +000000072 000185009 000221818 D|092460479 075875060 +000000072 000192330 000226543 D|074027456 009869219 +000000072 000201539 000227268 D|053886052 015527647 +000000072 000214184 000235085 D|069539087 049386941 +000000072 000219816 000265021 D|048846033 005274028 +000000072 000224672 000267193 D|066173277 027820351 +000000072 000241409 000289939 D|007086896 048637551 +000000072 000243139 000303746 D|081782106 093510882 +000000072 000271703 000311160 D|023981565 033125898 +000000072 000283757 000316827 D|074193509 023894198 +000000072 000296276 000331445 D|096748598 008990446 +000000072 000304515 000338693 D|081431721 012239556 +000000072 000305852 000355125 D|015071341 067074796 +000000072 000309346 000365669 D|082476684 091949188 +000000072 000314140 000390148 D|065360301 039424472 +000000072 000347556 000437331 D|015615523 005727392 +000000072 000351847 000454737 D|026523295 016210545 +000000072 000379414 000457459 D|071705562 042849270 +000000072 000448172 000475459 D|057516277 059046478 +000000072 000463199 000487824 D|094825647 071750703 +000000072 000538164 000493848 D|039772044 053254792 +000000072 000538684 000518128 D|041776517 095406644 +000000072 000570342 000523093 D|063962209 036431399 +000000072 000576829 000542404 D|064449297 063276422 +000000072 000606533 000563370 D|048602298 079082310 +000000072 000663808 000566755 D|091232697 061521074 +000000072 000677902 000606874 D|080966075 051274356 +000000072 000687328 000615136 D|085947600 070078978 +000000072 000689792 000627048 D|058542592 042834923 +000000072 000700114 000657421 D|013184868 004166806 +000000072 000703574 000683833 D|004996817 034122638 +000000072 000712283 000687101 D|044093725 073955063 +000000072 000767065 000747812 D|034413533 012166878 +000000072 000780477 000794807 D|018588278 088138013 +000000072 000828797 000819495 D|021611552 095726637 +000000072 000846178 000824120 D|051735879 003808992 +000000072 000889132 000898301 D|041081577 096085447 +000000072 000904202 000927382 D|002861826 022221918 +000000072 000936817 000952688 D|008280909 064237129 +000000072 000968321 000997944 D|012788645 057650625 +000000073 000011974 000026722 D|040102458 035018860 +000000073 000021458 000044935 D|049975141 023069131 +000000073 000032074 000045712 D|021870430 017882381 +000000073 000073242 000050435 D|083830530 083981610 +000000073 000083090 000093917 D|011300639 044372382 +000000073 000092025 000105972 D|076424052 017039040 +000000073 000143754 000108309 D|084550311 071510766 +000000073 000165627 000116354 D|082239229 075934280 +000000073 000181281 000136800 D|001938597 010021437 +000000073 000196324 000155706 D|001684236 057739946 +000000073 000207216 000157811 D|084162649 035644852 +000000073 000219166 000170242 D|075759722 098407609 +000000073 000222653 000208538 D|012793955 098127979 +000000073 000237241 000242174 D|082229172 043512060 +000000073 000243476 000277427 D|024483833 035073632 +000000073 000270813 000286597 D|061606093 051123257 +000000073 000274920 000289564 D|042629368 049529752 +000000073 000297226 000293959 D|023093392 012695752 +000000073 000313904 000293970 D|083384319 006940179 +000000073 000317911 000311408 D|096898359 091508975 +000000073 000348324 000376325 D|027063196 007235456 +000000073 000360059 000386268 D|067059219 085419588 +000000073 000385040 000407196 D|070384455 055595570 +000000073 000405231 000436045 D|003821374 067083779 +000000073 000407919 000498375 D|098035189 082803201 +000000073 000415731 000520040 D|022524734 094408698 +000000073 000427370 000529199 D|059907722 011450585 +000000073 000427795 000551034 D|024786397 033499007 +000000073 000435703 000556497 D|045352671 030339224 +000000073 000439492 000558565 D|047367378 020413440 +000000073 000445973 000600398 D|098788405 056143551 +000000073 000475084 000609691 D|007615332 045227131 +000000073 000484098 000615348 D|056653834 075634827 +000000073 000502103 000641129 D|070203242 050959844 +000000073 000527516 000655500 D|073956458 075960840 +000000073 000537416 000656134 D|063584793 082017495 +000000073 000574233 000668263 D|035826489 036241686 +000000073 000633101 000695907 D|062924909 047119015 +000000073 000686146 000743511 D|070971371 005235127 +000000073 000689143 000752665 D|052261401 057671988 +000000073 000728579 000760837 D|074371843 086014785 +000000073 000805451 000761447 D|099029491 032481141 +000000073 000862089 000811652 D|068988111 082172429 +000000073 000872081 000851452 D|044850047 043149097 +000000073 000878863 000864727 D|089024736 050865474 +000000073 000888792 000918923 D|038225669 023732524 +000000073 000889887 000940740 D|044514372 044387845 +000000073 000890404 000948956 D|050144501 091299582 +000000073 000910839 000985127 D|062375525 026506788 +000000073 000986666 000989683 D|021485784 088297884 +000000074 000008675 000050056 D|091883899 023841614 +000000074 000025161 000130205 D|057370756 086774053 +000000074 000032439 000137010 D|093078136 029593908 +000000074 000054092 000146431 D|097652514 034635965 +000000074 000059497 000160615 D|034238493 016029073 +000000074 000085085 000165537 D|068800988 006597286 +000000074 000099475 000181424 D|051540604 044563847 +000000074 000107430 000220076 D|057070836 030024175 +000000074 000175412 000267118 D|057172972 063179658 +000000074 000216280 000270788 D|006956335 049070168 +000000074 000216612 000276827 D|039852451 066767119 +000000074 000257131 000288599 D|058981211 013794673 +000000074 000257507 000319385 D|011119951 024218876 +000000074 000269753 000322537 D|012406809 017015923 +000000074 000283176 000326289 D|012943855 010325397 +000000074 000283373 000376568 D|096441581 033927802 +000000074 000292242 000397895 D|013977792 086295319 +000000074 000305559 000407808 D|097300172 095262375 +000000074 000362946 000495687 D|073941725 021096341 +000000074 000379102 000506285 D|028849197 008112807 +000000074 000397361 000543443 D|055325346 074700463 +000000074 000399557 000560226 D|022677686 037125460 +000000074 000408948 000572216 D|048605905 038069300 +000000074 000415330 000585861 D|098595229 053933839 +000000074 000430609 000621623 D|018917187 061909973 +000000074 000432907 000623639 D|043577379 028046926 +000000074 000534786 000642766 D|037802670 068659899 +000000074 000540039 000648591 D|084393839 094426816 +000000074 000561534 000659088 D|023593313 099611023 +000000074 000583536 000669017 D|060856021 095839285 +000000074 000594943 000693361 D|062713291 025971727 +000000074 000617760 000712515 D|068500084 087595671 +000000074 000647320 000721693 D|046714311 046448279 +000000074 000661332 000759190 D|025008057 063645738 +000000074 000666108 000767021 D|008049669 000880776 +000000074 000688357 000768659 D|090619015 051626626 +000000074 000751559 000777833 D|031873271 041132535 +000000074 000767385 000791883 D|019353449 013512128 +000000074 000767424 000828950 D|008059406 054732568 +000000074 000785223 000848847 D|079570453 084148127 +000000074 000809451 000848972 D|017139775 095068687 +000000074 000814746 000853323 D|086929739 096024554 +000000074 000835218 000896045 D|064486961 086598352 +000000074 000835523 000901757 D|060918145 068430911 +000000074 000841977 000923389 D|067476429 096393248 +000000074 000849519 000934206 D|059285975 059519609 +000000074 000881567 000941767 D|012568681 033470469 +000000074 000913757 000975468 D|003704857 071705031 +000000074 000920961 000979248 D|046238328 011397306 +000000074 000943159 000982089 D|023748534 097376469 +000000075 000026528 000008970 D|026553683 065059445 +000000075 000031236 000026066 D|033946957 057080766 +000000075 000090963 000036618 D|050749242 054425204 +000000075 000092168 000049242 D|010026690 088580859 +000000075 000127293 000166155 D|008592359 020283817 +000000075 000140440 000233731 D|093803656 055988941 +000000075 000180033 000245647 D|002781251 050934103 +000000075 000186331 000249401 D|082882163 006095739 +000000075 000193638 000255246 D|030359205 087369712 +000000075 000217265 000268278 D|099884366 095343174 +000000075 000231854 000272478 D|082084982 096173354 +000000075 000246346 000274009 D|005524198 032504029 +000000075 000263143 000280589 D|041892569 045162079 +000000075 000312380 000290642 D|076406083 066199207 +000000075 000319941 000290666 D|062113996 003348359 +000000075 000345565 000292906 D|094986562 012658761 +000000075 000395908 000305589 D|064969846 072222732 +000000075 000399776 000326303 D|031502676 076115696 +000000075 000438495 000331565 D|079991613 016995061 +000000075 000440372 000402579 D|043608847 008240229 +000000075 000487027 000409373 D|028586747 025657330 +000000075 000492419 000409610 D|063285905 025534304 +000000075 000533853 000414870 D|032683168 035049140 +000000075 000541142 000420703 D|035951087 046635477 +000000075 000551033 000420921 D|084570747 067829169 +000000075 000556615 000421384 D|049135026 031556764 +000000075 000557437 000432165 D|033523528 053385459 +000000075 000606522 000449474 D|002219141 030776831 +000000075 000609932 000453803 D|093134392 044749093 +000000075 000615172 000484226 D|078043134 037213780 +000000075 000656571 000519691 D|060229555 026865088 +000000075 000691860 000536804 D|099986116 009367613 +000000075 000702922 000537814 D|004563442 058047063 +000000075 000712578 000577952 D|003877423 024371157 +000000075 000722480 000662796 D|023316647 000481213 +000000075 000796479 000665824 D|019348142 040586337 +000000075 000799524 000712642 D|096933895 094062837 +000000075 000801490 000746848 D|022518420 025810730 +000000075 000822281 000760602 D|055222704 036730234 +000000075 000825341 000773787 D|096295407 065659830 +000000075 000833177 000782171 D|081508540 068327290 +000000075 000836711 000786125 D|026630381 005366710 +000000075 000873099 000808187 D|036610702 074369048 +000000075 000885215 000817192 D|021376614 090558883 +000000075 000923039 000905675 D|098354678 032771956 +000000075 000930727 000911567 D|081773772 071472195 +000000075 000934879 000921122 D|013048096 059802876 +000000075 000981019 000947675 D|057584346 088246252 +000000075 000988646 000984772 D|029120748 040359349 +000000075 000999234 000987779 D|023151049 016432202 +000000076 000005415 000012864 D|030229777 004938323 +000000076 000090767 000019556 D|086497558 022436586 +000000076 000117846 000053038 D|083395894 001881889 +000000076 000117891 000057467 D|073412686 006403685 +000000076 000118000 000076422 D|079616002 028894783 +000000076 000118869 000077514 D|085172846 097841490 +000000076 000145743 000090256 D|077679035 072686420 +000000076 000149145 000091046 D|059401969 098827726 +000000076 000158432 000113892 D|094782827 015934352 +000000076 000161527 000140509 D|045421189 059297212 +000000076 000203270 000147818 D|064227791 006727059 +000000076 000227979 000150899 D|091830825 047612867 +000000076 000264921 000196138 D|041486465 084508602 +000000076 000267808 000222942 D|005465398 034642648 +000000076 000316464 000228190 D|017519030 024657981 +000000076 000354114 000239021 D|035759923 059606086 +000000076 000357288 000248956 D|068965155 076234571 +000000076 000381435 000313832 D|085053245 084050493 +000000076 000439373 000316656 D|092757170 075560525 +000000076 000457668 000343418 D|006431699 079479064 +000000076 000463210 000382641 D|056399979 039813062 +000000076 000465252 000386100 D|088398771 042060436 +000000076 000479628 000408106 D|091012989 035955315 +000000076 000482466 000414292 D|067099660 027835492 +000000076 000492845 000465716 D|079907012 039357329 +000000076 000493094 000483802 D|074755681 062184945 +000000076 000540749 000520766 D|006245380 053907460 +000000076 000552725 000570056 D|058065444 019542219 +000000076 000563568 000576489 D|022580843 049381455 +000000076 000565132 000605549 D|090532305 053253656 +000000076 000570597 000621069 D|083282776 064559939 +000000076 000594486 000659378 D|048117850 014013698 +000000076 000597272 000695901 D|095209318 057271592 +000000076 000612344 000722985 D|078254949 078040757 +000000076 000636698 000726666 D|039845784 012208330 +000000076 000682475 000744215 D|093844428 009797464 +000000076 000689654 000781064 D|028685245 011445801 +000000076 000718188 000818997 D|063614845 037602420 +000000076 000754650 000839279 D|098709837 068866878 +000000076 000777104 000840715 D|045754742 082179647 +000000076 000789318 000843202 D|057484582 019154524 +000000076 000846136 000846545 D|076362361 030735225 +000000076 000867964 000847472 D|082343522 021502264 +000000076 000891836 000854007 D|047408506 018494755 +000000076 000893049 000860007 D|061056271 025656262 +000000076 000898993 000865303 D|072067202 012911436 +000000076 000919453 000905393 D|034693678 085515469 +000000076 000937299 000906947 D|084295971 007029307 +000000076 000953877 000909909 D|043381393 039538499 +000000076 000968182 000950783 D|006175605 042583548 +000000077 000002018 000016236 D|021345087 088101231 +000000077 000096823 000016586 D|086385386 085622207 +000000077 000098168 000038961 D|067189758 009889262 +000000077 000117999 000057658 D|007398806 020367987 +000000077 000121405 000072160 D|036969822 011212606 +000000077 000133602 000079400 D|040512002 080939174 +000000077 000135211 000100331 D|088960136 070763774 +000000077 000136755 000105082 D|001722254 072336367 +000000077 000168528 000117757 D|002706075 060913690 +000000077 000176860 000164313 D|009314777 056267421 +000000077 000198520 000165346 D|078542029 091811835 +000000077 000223355 000246857 D|093327576 023486517 +000000077 000246029 000321652 D|050470227 052470420 +000000077 000247388 000324053 D|002173774 032398079 +000000077 000248595 000347023 D|097446491 047534433 +000000077 000257785 000353127 D|074107272 070855911 +000000077 000313726 000366662 D|024992136 021934131 +000000077 000318856 000371703 D|035738868 086655730 +000000077 000339506 000432122 D|059842882 072553259 +000000077 000360003 000437648 D|087956266 021446538 +000000077 000364545 000459289 D|072774028 042973909 +000000077 000379021 000484880 D|071782650 064351787 +000000077 000398020 000497056 D|078443911 009563095 +000000077 000402168 000528468 D|068049057 021933918 +000000077 000425667 000536959 D|089606939 001543073 +000000077 000426019 000547309 D|003850448 093870068 +000000077 000491668 000666955 D|066856255 025678797 +000000077 000526396 000676182 D|025254606 095111568 +000000077 000560012 000723325 D|099580324 063604471 +000000077 000572354 000749010 D|078529962 033427806 +000000077 000575685 000752639 D|071003433 070470435 +000000077 000649119 000758812 D|055371843 002753213 +000000077 000692468 000768413 D|005550749 036577638 +000000077 000715982 000776437 D|008521504 020482915 +000000077 000717396 000778787 D|013400231 041315762 +000000077 000726493 000789201 D|085616797 053103710 +000000077 000755011 000789256 D|093774887 007993760 +000000077 000803995 000790053 D|066307336 000701925 +000000077 000810487 000814498 D|022835461 079472469 +000000077 000812419 000832768 D|029291246 035611524 +000000077 000820897 000845923 D|034914391 030903311 +000000077 000832765 000863473 D|036361378 075780048 +000000077 000844140 000866261 D|041049060 076169916 +000000077 000852225 000885345 D|064846056 069630604 +000000077 000878626 000889545 D|027647448 008201692 +000000077 000886272 000925436 D|054077998 051367509 +000000077 000908804 000929665 D|059527209 095306059 +000000077 000921139 000946820 D|078376694 032129246 +000000077 000954404 000952982 D|026150763 007818047 +000000077 000986363 000978021 D|097244065 005897228 +000000078 000004635 000030969 D|029779164 096075244 +000000078 000021930 000066214 D|041241603 016801539 +000000078 000029789 000120957 D|061255250 078107297 +000000078 000038304 000138583 D|013012005 083910700 +000000078 000064462 000139820 D|022916145 029891947 +000000078 000090825 000171237 D|052114704 043501402 +000000078 000092209 000173985 D|091623471 014785613 +000000078 000104155 000176181 D|066504649 048567060 +000000078 000133880 000200428 D|092397834 052873690 +000000078 000135489 000240651 D|025797543 028972670 +000000078 000143865 000243282 D|060324608 088318337 +000000078 000162379 000256049 D|007458497 010535232 +000000078 000179650 000279438 D|055399742 021805363 +000000078 000191356 000305123 D|066130392 076355531 +000000078 000201211 000310917 D|068371206 087656173 +000000078 000218010 000330589 D|018293173 008575783 +000000078 000218468 000340947 D|015259115 024025814 +000000078 000253893 000365737 D|093168003 038096603 +000000078 000276101 000402487 D|093807213 085050353 +000000078 000307437 000423065 D|012264929 066375722 +000000078 000315570 000438580 D|006963500 029462453 +000000078 000320523 000467191 D|097904794 073117232 +000000078 000345357 000526999 D|096571096 023845650 +000000078 000361040 000527766 D|055567706 020072385 +000000078 000363828 000533894 D|021206406 077695462 +000000078 000377800 000543152 D|034709972 081583393 +000000078 000448110 000563749 D|026940631 088581069 +000000078 000461711 000572513 D|036772849 071843194 +000000078 000474263 000596782 D|013306517 036314952 +000000078 000477483 000629567 D|090755097 054571088 +000000078 000525667 000637987 D|029187771 050696126 +000000078 000562242 000639848 D|068088763 052913050 +000000078 000578765 000645983 D|005852653 043194713 +000000078 000606769 000651131 D|020922287 016567801 +000000078 000615103 000652889 D|078125896 088269917 +000000078 000686913 000652974 D|031660363 039592918 +000000078 000721076 000660483 D|003286034 089599062 +000000078 000739108 000689525 D|048473265 045928255 +000000078 000807618 000708811 D|038974794 068785962 +000000078 000829092 000712076 D|075294170 008699281 +000000078 000847788 000777240 D|089231656 068969190 +000000078 000851759 000786557 D|096901229 026999016 +000000078 000856536 000789153 D|012099905 076239260 +000000078 000869723 000816166 D|067018041 011083323 +000000078 000891417 000844603 D|014614214 025151770 +000000078 000903157 000870336 D|078150550 081768427 +000000078 000928394 000875651 D|077359107 042765611 +000000078 000962828 000926452 D|031117991 083006474 +000000078 000981008 000934043 D|042194890 042770082 +000000078 000988604 000993580 D|031750124 077716601 +000000079 000019129 000037289 D|082354844 081284332 +000000079 000039486 000067036 D|078446972 049106351 +000000079 000039602 000093269 D|057780597 024238136 +000000079 000044294 000109256 D|046153458 065506067 +000000079 000050447 000114957 D|084307049 085794909 +000000079 000072250 000142426 D|050753270 077605954 +000000079 000106323 000145223 D|086772391 035533383 +000000079 000138466 000165927 D|042897971 073671624 +000000079 000152967 000190155 D|011655737 005071762 +000000079 000154549 000198772 D|035311694 097777561 +000000079 000170025 000214185 D|008337137 071601447 +000000079 000174045 000230680 D|059573141 004022451 +000000079 000270160 000237154 D|028532072 015916025 +000000079 000288651 000249583 D|034154186 082790693 +000000079 000303836 000277256 D|072851694 054440398 +000000079 000347521 000289401 D|085873137 064758704 +000000079 000358659 000301493 D|057104411 047370777 +000000079 000360117 000335361 D|040983714 053399073 +000000079 000367084 000354703 D|003664132 005615232 +000000079 000374063 000388036 D|056408964 065994867 +000000079 000386978 000390360 D|009759162 048811774 +000000079 000397695 000455470 D|095266632 023410153 +000000079 000398068 000465362 D|082092567 001892143 +000000079 000406915 000471408 D|015004941 020940284 +000000079 000409977 000479603 D|010569614 088981324 +000000079 000431837 000482367 D|049529181 009421616 +000000079 000438769 000488785 D|061807459 042588395 +000000079 000476938 000515474 D|087343076 036813091 +000000079 000523104 000522640 D|074058727 084911700 +000000079 000549847 000528347 D|052685517 037894255 +000000079 000563298 000530683 D|084806478 054016427 +000000079 000564520 000539340 D|033542357 013525355 +000000079 000589893 000607268 D|015418098 047832865 +000000079 000590759 000610591 D|027051645 047119351 +000000079 000641091 000657887 D|045656343 054387143 +000000079 000663235 000680467 D|012474199 060642231 +000000079 000685943 000697701 D|001276249 035328223 +000000079 000745132 000714521 D|096306869 033131592 +000000079 000752555 000730522 D|089213555 035732436 +000000079 000761634 000777533 D|016002985 008546915 +000000079 000767298 000797964 D|044993212 099953984 +000000079 000783186 000863104 D|090230213 027405563 +000000079 000808909 000864648 D|042569042 073037349 +000000079 000822312 000873699 D|073290782 088200480 +000000079 000830067 000881288 D|085772164 032500693 +000000079 000835728 000908542 D|054132752 002724361 +000000079 000952231 000926910 D|037581249 059195125 +000000079 000963243 000935037 D|091233051 084999293 +000000079 000966533 000953352 D|088815823 015863379 +000000079 000973677 000972346 D|068958010 044432700 +000000080 000003092 000019416 D|092004000 063140610 +000000080 000010662 000057631 D|093800045 020984607 +000000080 000028808 000092248 D|099886412 014558721 +000000080 000091979 000148947 D|025850140 051440055 +000000080 000093660 000175875 D|049189864 016683085 +000000080 000100880 000199721 D|011366991 066847469 +000000080 000133197 000215071 D|020637723 095776788 +000000080 000157620 000234116 D|015904611 034128252 +000000080 000173255 000249430 D|098537988 050476143 +000000080 000188809 000253942 D|091637965 079823892 +000000080 000228056 000311736 D|074372601 017164644 +000000080 000231882 000316343 D|077960122 057136587 +000000080 000237423 000404359 D|076198884 008731431 +000000080 000329631 000410071 D|001279128 009253127 +000000080 000339950 000414741 D|075732160 080755460 +000000080 000341698 000425643 D|034428262 020803137 +000000080 000370470 000495604 D|082243460 042790626 +000000080 000401710 000498461 D|085919749 077998931 +000000080 000405186 000531855 D|051950933 096265956 +000000080 000407589 000533259 D|057692582 084016826 +000000080 000413010 000574766 D|030126873 033821479 +000000080 000417415 000579552 D|069820081 092856028 +000000080 000423504 000587853 D|027415653 015428547 +000000080 000457822 000595836 D|084961967 060246431 +000000080 000463785 000606424 D|001483201 054983229 +000000080 000466646 000620449 D|013982028 023671451 +000000080 000466827 000688402 D|012678515 048831322 +000000080 000472908 000694638 D|068372349 081326292 +000000080 000482422 000723846 D|073761967 064084862 +000000080 000517232 000738646 D|036878780 049170603 +000000080 000536010 000749202 D|089157357 016410487 +000000080 000640669 000750455 D|096966411 048389651 +000000080 000670413 000763127 D|075266602 015661742 +000000080 000682293 000763751 D|079857673 017818751 +000000080 000684424 000764470 D|060863374 078766421 +000000080 000685262 000772778 D|000588985 012746224 +000000080 000687515 000812887 D|098631556 001274466 +000000080 000693445 000844716 D|065981662 054196595 +000000080 000728945 000854066 D|030730855 094718193 +000000080 000776046 000870521 D|086625382 081668718 +000000080 000776121 000887417 D|042183917 073260161 +000000080 000797300 000893417 D|046810533 067700280 +000000080 000838531 000897397 D|065932769 054001046 +000000080 000849923 000906686 D|059222633 019569643 +000000080 000868649 000918252 D|005772322 071218096 +000000080 000886071 000947236 D|031997015 056790112 +000000080 000963489 000982105 D|007957469 024785534 +000000080 000975838 000993964 D|012423426 016732753 +000000080 000996054 000996609 D|089644906 076677307 +000000080 000997089 000997493 D|078319083 022903658 +000000081 000007507 000005753 D|050300419 067522514 +000000081 000030765 000006924 D|043381453 029031994 +000000081 000064654 000063384 D|034805706 091530405 +000000081 000114159 000107529 D|052055114 003013742 +000000081 000115615 000107679 D|081598181 042453955 +000000081 000150974 000186629 D|016957801 050409142 +000000081 000164544 000265415 D|086031113 035137416 +000000081 000214162 000265995 D|028820448 044452420 +000000081 000258367 000271179 D|038289263 012298565 +000000081 000259369 000271738 D|029197569 020409885 +000000081 000277510 000275536 D|030579859 060407358 +000000081 000284382 000278716 D|066404525 018469590 +000000081 000330738 000302392 D|011956524 061058187 +000000081 000342676 000305109 D|023011913 005073479 +000000081 000380567 000312362 D|000230239 052420756 +000000081 000390655 000319620 D|083639397 060565014 +000000081 000393899 000326865 D|093384255 033107666 +000000081 000419014 000328839 D|084887644 006523094 +000000081 000469099 000360608 D|056054369 062469133 +000000081 000484308 000385842 D|074264310 021781958 +000000081 000485392 000397030 D|010559060 079845595 +000000081 000500877 000437713 D|081830528 044638200 +000000081 000523113 000456635 D|013772719 036511455 +000000081 000561205 000467396 D|096911297 088664983 +000000081 000645476 000469482 D|017110326 095635324 +000000081 000660647 000496151 D|035205794 027148154 +000000081 000662868 000555340 D|069834943 029939094 +000000081 000664376 000561313 D|012997871 053676802 +000000081 000681292 000641059 D|080555404 068854005 +000000081 000709103 000653546 D|067226151 027458473 +000000081 000713144 000662835 D|078271020 098664586 +000000081 000714599 000677502 D|095823316 091155697 +000000081 000728690 000705637 D|099668796 081502632 +000000081 000728807 000713073 D|067414194 068019521 +000000081 000733219 000731152 D|058785234 094745598 +000000081 000735252 000744084 D|021550003 012627444 +000000081 000766522 000781734 D|071813258 098441501 +000000081 000766904 000836582 D|041431843 022163307 +000000081 000779164 000843203 D|065723395 033946103 +000000081 000790102 000855265 D|094838127 029886125 +000000081 000802254 000868515 D|012071108 008542013 +000000081 000810494 000877212 D|014907584 005770373 +000000081 000831579 000905640 D|007775031 092668461 +000000081 000860208 000905766 D|085584526 044019454 +000000081 000882065 000909273 D|025527647 075121077 +000000081 000882137 000945675 D|028010701 093119924 +000000081 000897743 000946084 D|039472555 043061207 +000000081 000902580 000958260 D|000531634 069898659 +000000081 000945617 000959558 D|019181629 092397313 +000000081 000970683 000992401 D|026410812 000781602 +000000082 000011063 000012508 D|063105589 034040313 +000000082 000049443 000024381 D|048785520 013954553 +000000082 000051386 000031803 D|087834576 011421687 +000000082 000051888 000033320 D|013951715 099030576 +000000082 000059998 000046024 D|018408147 013694738 +000000082 000086492 000063976 D|072246240 074676906 +000000082 000100395 000074958 D|066868113 020427814 +000000082 000120215 000093816 D|058566731 091782212 +000000082 000165392 000127378 D|035541418 065454966 +000000082 000183173 000127649 D|094353993 032270457 +000000082 000218248 000130443 D|027691750 029085049 +000000082 000232448 000140671 D|085674289 097741381 +000000082 000239396 000142907 D|042430974 033480780 +000000082 000247915 000179482 D|073144460 028763749 +000000082 000249861 000225682 D|008358009 083339001 +000000082 000282261 000229512 D|048774066 042180633 +000000082 000288808 000254779 D|003681903 004483047 +000000082 000290065 000257424 D|052301043 085810495 +000000082 000290806 000294560 D|051640650 062479017 +000000082 000292036 000297064 D|064748159 004282777 +000000082 000310889 000307173 D|015424430 069884816 +000000082 000332149 000316670 D|071250678 059020520 +000000082 000333389 000323173 D|084514505 093719983 +000000082 000398027 000329578 D|039621570 044725262 +000000082 000403205 000369906 D|004139775 071990474 +000000082 000424208 000407153 D|005269546 025013625 +000000082 000440705 000417948 D|023932422 068498929 +000000082 000454790 000466925 D|088800896 088775160 +000000082 000505247 000489090 D|044344783 096937002 +000000082 000524638 000490386 D|033481636 014828370 +000000082 000588093 000522567 D|032943817 041924421 +000000082 000614384 000584612 D|064319629 046840943 +000000082 000632315 000625538 D|073325879 053913965 +000000082 000655385 000642673 D|072071506 043091846 +000000082 000660096 000675025 D|093271384 078773797 +000000082 000693056 000676157 D|061225860 053948180 +000000082 000699455 000679868 D|019931813 080885696 +000000082 000701954 000712430 D|090247666 092170971 +000000082 000751822 000718701 D|077251559 083979883 +000000082 000775756 000732014 D|001859512 016956709 +000000082 000780794 000750412 D|093600941 017927908 +000000082 000794292 000771816 D|000871469 060371335 +000000082 000808195 000798358 D|057594914 073188974 +000000082 000820583 000869311 D|035104802 075789176 +000000082 000828569 000874397 D|056084668 021125368 +000000082 000837143 000897675 D|080336338 086226707 +000000082 000855842 000917743 D|069496029 069579282 +000000082 000869627 000951685 D|013556555 097508371 +000000082 000891976 000956403 D|084997853 059257495 +000000082 000963349 000968149 D|076878907 037634846 +000000083 000014960 000007340 D|078087253 030444679 +000000083 000031016 000022895 D|071996206 093941830 +000000083 000038705 000036104 D|092860520 007136951 +000000083 000088053 000064311 D|059945608 058233042 +000000083 000091191 000102932 D|055817641 077304164 +000000083 000101998 000110823 D|016545315 008715480 +000000083 000108323 000131838 D|080499964 096305210 +000000083 000121069 000136761 D|011623087 030338659 +000000083 000143482 000155200 D|070799320 071780406 +000000083 000201053 000164050 D|011447707 000525211 +000000083 000209160 000174873 D|066019141 004828203 +000000083 000212455 000261259 D|076247316 058762545 +000000083 000213298 000270204 D|027526865 081335911 +000000083 000234391 000289173 D|034025693 010735027 +000000083 000260623 000290018 D|019875554 041325156 +000000083 000303420 000292162 D|056798541 085558644 +000000083 000317170 000318108 D|028742045 097135001 +000000083 000321148 000327887 D|011316661 044448410 +000000083 000321232 000357813 D|023518485 060934431 +000000083 000353726 000363599 D|068111500 083693650 +000000083 000379861 000369402 D|013433649 027990680 +000000083 000382811 000415013 D|018224694 069013373 +000000083 000390560 000430031 D|048778165 099169878 +000000083 000450643 000473983 D|060841558 092154781 +000000083 000471675 000477500 D|066102047 050692560 +000000083 000522967 000479233 D|024822797 081279591 +000000083 000524365 000501648 D|077486965 029094060 +000000083 000547621 000521799 D|054698051 069971831 +000000083 000580035 000534415 D|068672898 006704623 +000000083 000621008 000537463 D|027344928 026135147 +000000083 000627474 000541356 D|034215791 007435161 +000000083 000677832 000546798 D|032345485 024474798 +000000083 000706705 000559388 D|046460889 047139154 +000000083 000711026 000595330 D|097004364 055009944 +000000083 000711534 000612874 D|021300518 032683336 +000000083 000721242 000644077 D|052016709 073675596 +000000083 000724375 000751070 D|053337909 060384663 +000000083 000775628 000782714 D|020677688 086599134 +000000083 000794020 000790262 D|073781615 006555259 +000000083 000803271 000795994 D|050502003 026869700 +000000083 000819310 000808301 D|083424775 032415586 +000000083 000822417 000819304 D|032608955 027321375 +000000083 000869587 000823068 D|074282478 071813396 +000000083 000871280 000847522 D|094950962 094854500 +000000083 000878167 000934986 D|046481931 092166978 +000000083 000894807 000952797 D|051990352 022941334 +000000083 000942863 000956861 D|061261837 080681127 +000000083 000947722 000980659 D|051016187 075331810 +000000083 000985016 000986107 D|066800194 028318146 +000000083 000999702 000999058 D|010608235 033527833 +000000084 000083106 000022134 D|022675630 065449195 +000000084 000089952 000031441 D|067872979 033741238 +000000084 000090469 000066919 D|043640781 004215671 +000000084 000093675 000082165 D|095863720 078981925 +000000084 000117988 000131796 D|023919916 024265061 +000000084 000210221 000154504 D|075911258 011174410 +000000084 000233663 000183693 D|071829419 093677812 +000000084 000235711 000199265 D|030885377 088763087 +000000084 000238594 000209184 D|068093329 070306720 +000000084 000247769 000241614 D|060917287 015665987 +000000084 000278360 000273205 D|039157229 013935570 +000000084 000281920 000324004 D|018226694 095070898 +000000084 000284916 000337720 D|088155973 078212108 +000000084 000299631 000353319 D|091726530 088922528 +000000084 000351427 000354447 D|022562915 045028009 +000000084 000375946 000361136 D|040115755 088806425 +000000084 000381101 000369632 D|033491638 065373772 +000000084 000386356 000385117 D|094360745 089517045 +000000084 000408198 000397533 D|036889887 015170131 +000000084 000418420 000414123 D|079099892 011662357 +000000084 000456033 000418009 D|064201106 091230807 +000000084 000460706 000495611 D|093008096 040962028 +000000084 000466899 000507489 D|091941979 020385844 +000000084 000472989 000535302 D|051880232 003447847 +000000084 000478071 000541291 D|009417162 085085961 +000000084 000490676 000554157 D|076781778 060888735 +000000084 000492500 000562521 D|074763358 019051061 +000000084 000541551 000577800 D|052251130 088548404 +000000084 000549978 000582843 D|030935468 016646017 +000000084 000563486 000625160 D|074629023 011726679 +000000084 000575299 000636528 D|097808084 037764563 +000000084 000579089 000638975 D|031240329 032568403 +000000084 000581637 000640829 D|090367395 042312336 +000000084 000584840 000642193 D|040543848 045316241 +000000084 000586969 000646806 D|070188007 095786734 +000000084 000593095 000659440 D|072183708 078787528 +000000084 000617507 000683218 D|059465853 083075072 +000000084 000692659 000707643 D|072318017 066981385 +000000084 000708307 000712213 D|089157877 054353952 +000000084 000747367 000715232 D|048469760 015202161 +000000084 000773654 000746874 D|025908697 030063503 +000000084 000790134 000764499 D|029264195 026414671 +000000084 000817161 000789553 D|067421841 093892023 +000000084 000827724 000865844 D|002487511 030751200 +000000084 000833617 000881850 D|003541017 069035607 +000000084 000853945 000904167 D|060255829 086761095 +000000084 000948175 000932663 D|016760673 042066180 +000000084 000963405 000937200 D|032745250 062289723 +000000084 000977281 000945888 D|085531924 060651331 +000000084 000983179 000953362 D|001864615 089641408 +000000085 000001606 000038416 D|025071109 002860692 +000000085 000013312 000080788 D|082052598 069431046 +000000085 000025571 000085934 D|091069791 002159013 +000000085 000039580 000112068 D|055145003 074155923 +000000085 000045830 000124633 D|004054978 045238405 +000000085 000052318 000145873 D|093665208 061544569 +000000085 000101046 000155835 D|087536480 027064178 +000000085 000103754 000159679 D|034117202 080849613 +000000085 000106852 000169755 D|054897013 086114036 +000000085 000107958 000182828 D|087355746 041171509 +000000085 000108316 000230320 D|000227365 084984307 +000000085 000154319 000234818 D|067792246 054250133 +000000085 000175879 000277753 D|050246623 041060084 +000000085 000185328 000324267 D|022359807 032675172 +000000085 000212004 000343958 D|010768079 044447464 +000000085 000216463 000357469 D|051670012 061389567 +000000085 000227725 000413956 D|044461853 047544762 +000000085 000255576 000449067 D|062318414 062633187 +000000085 000286546 000455475 D|053416781 073468940 +000000085 000287848 000463004 D|021567914 069706822 +000000085 000295827 000477816 D|037304861 067703019 +000000085 000319352 000487026 D|093679342 061459147 +000000085 000329837 000505959 D|094253931 056338126 +000000085 000337908 000512613 D|052860708 003926134 +000000085 000352520 000513148 D|011855142 090827273 +000000085 000396290 000520832 D|083659367 089772038 +000000085 000423151 000553517 D|021237395 015265569 +000000085 000465106 000639778 D|006449498 019157487 +000000085 000522119 000649140 D|000833677 025400137 +000000085 000526367 000656133 D|006471908 083097253 +000000085 000538000 000675631 D|067424599 043937854 +000000085 000542392 000706509 D|053364206 018542697 +000000085 000578116 000710701 D|057987747 042844581 +000000085 000634006 000710745 D|037157876 029931608 +000000085 000677453 000723909 D|093749754 012529055 +000000085 000692042 000741043 D|022993882 069738064 +000000085 000712393 000756132 D|035210461 037173947 +000000085 000736965 000786155 D|091834537 091482816 +000000085 000746363 000796880 D|030588067 023600433 +000000085 000760125 000824167 D|033938074 067269161 +000000085 000794753 000849651 D|060431480 082744460 +000000085 000806872 000850285 D|049858846 092084182 +000000085 000848571 000902336 D|038259191 014893344 +000000085 000860048 000920415 D|019259926 020396815 +000000085 000915761 000920992 D|089629524 073590304 +000000085 000922507 000929509 D|060379084 060124911 +000000085 000938516 000936251 D|045593233 044869873 +000000085 000975523 000952818 D|030136778 080395448 +000000085 000983167 000961670 D|044648142 026784558 +000000085 000983516 000974487 D|056529390 051817789 +000000086 000025685 000015022 D|061901727 022235247 +000000086 000027145 000020575 D|029417028 065751667 +000000086 000048620 000030358 D|088191131 091104087 +000000086 000079820 000044399 D|012510713 051180095 +000000086 000107474 000078309 D|092685768 061251125 +000000086 000131133 000108162 D|035550053 090339892 +000000086 000140081 000123336 D|093849960 077752876 +000000086 000140582 000136668 D|090259048 018474316 +000000086 000150809 000159797 D|094935345 053619705 +000000086 000196380 000171980 D|038600473 043270478 +000000086 000200143 000203509 D|037294406 073352642 +000000086 000229403 000220119 D|068387917 082536499 +000000086 000233936 000220246 D|090909804 068426406 +000000086 000243864 000252274 D|057275283 068027375 +000000086 000260559 000256550 D|094495144 061844464 +000000086 000264139 000259681 D|035947777 032271889 +000000086 000266199 000301872 D|062206182 007486059 +000000086 000281093 000343933 D|030508715 069916516 +000000086 000287133 000371231 D|027482633 017591293 +000000086 000351495 000376635 D|050013146 019941790 +000000086 000363615 000390887 D|089447624 079074058 +000000086 000390350 000401538 D|077130613 017019925 +000000086 000397790 000406373 D|000062249 083987345 +000000086 000432630 000430810 D|037188998 079394736 +000000086 000453049 000443190 D|072190563 067754568 +000000086 000481326 000444688 D|044928884 029313599 +000000086 000529488 000463233 D|060871653 020678390 +000000086 000561398 000470565 D|055422678 096451282 +000000086 000620644 000477222 D|011147785 027178593 +000000086 000626068 000496215 D|030716549 047693585 +000000086 000638641 000497463 D|044064492 043812578 +000000086 000650541 000543357 D|007022709 042433598 +000000086 000654428 000546176 D|082558836 043112203 +000000086 000657489 000551925 D|085435988 003970768 +000000086 000664254 000588589 D|085477398 037548789 +000000086 000682424 000600087 D|088966659 015207897 +000000086 000682984 000675683 D|048124408 068567921 +000000086 000683436 000693409 D|061915542 000491220 +000000086 000739554 000699398 D|045290985 099522608 +000000086 000763231 000735251 D|004942068 005201361 +000000086 000792902 000750770 D|016752195 020108676 +000000086 000815291 000762563 D|074870842 033644883 +000000086 000846228 000766485 D|053440159 097398546 +000000086 000850669 000793373 D|038848629 076613196 +000000086 000851331 000831935 D|079138537 019513619 +000000086 000852573 000861066 D|021196226 065882798 +000000086 000900523 000889859 D|071545804 029722212 +000000086 000912823 000903152 D|006901943 005844952 +000000086 000956781 000964692 D|099306638 076627268 +000000086 000959849 000975464 D|056885082 006144504 +000000087 000012545 000014450 D|039380161 057791686 +000000087 000027767 000015696 D|093961020 043171607 +000000087 000030659 000024091 D|080038506 070996455 +000000087 000044140 000046664 D|042199523 027619330 +000000087 000073981 000053559 D|079773763 022251481 +000000087 000085695 000076616 D|028911576 063636676 +000000087 000101323 000089629 D|059578281 003164321 +000000087 000111032 000115176 D|013580065 098540052 +000000087 000135703 000117084 D|052020476 099069214 +000000087 000143157 000122981 D|011204947 066423695 +000000087 000145489 000129992 D|051697086 087028360 +000000087 000181988 000169618 D|017518189 059724577 +000000087 000234660 000191503 D|075488699 087247398 +000000087 000237789 000205925 D|097091251 011031567 +000000087 000248291 000236042 D|011104885 088440807 +000000087 000269641 000293338 D|069978249 035529722 +000000087 000285623 000346319 D|023681621 064557069 +000000087 000299895 000350940 D|041912886 089194423 +000000087 000358137 000382824 D|097720089 068137751 +000000087 000371222 000406482 D|073278539 070240119 +000000087 000371736 000452279 D|006150558 040295323 +000000087 000378745 000481320 D|053649805 006023390 +000000087 000384393 000499855 D|082214941 044510094 +000000087 000393703 000528052 D|003825333 078478200 +000000087 000394736 000529855 D|083029705 090754713 +000000087 000429228 000537435 D|039914825 025659791 +000000087 000433484 000626779 D|013801594 072426944 +000000087 000469399 000653491 D|085040943 012253876 +000000087 000472762 000728736 D|074896678 001488095 +000000087 000485345 000738003 D|084437566 071015815 +000000087 000510019 000746822 D|066910218 067331249 +000000087 000517191 000749928 D|010506569 079301070 +000000087 000592713 000754661 D|055358663 010272464 +000000087 000613466 000764712 D|086472088 076731500 +000000087 000630191 000774287 D|021763495 083143924 +000000087 000665961 000818290 D|096823218 052016533 +000000087 000667582 000833106 D|067134182 033265773 +000000087 000682690 000836023 D|029615571 098170490 +000000087 000687416 000846247 D|005569640 093907308 +000000087 000706465 000859441 D|067214864 057591597 +000000087 000769180 000860009 D|008624337 014729584 +000000087 000822928 000902716 D|024755074 003522910 +000000087 000840645 000908357 D|089773657 035541100 +000000087 000847838 000916890 D|046815735 016272529 +000000087 000852843 000929208 D|067231210 089024001 +000000087 000931967 000935918 D|021819182 099891721 +000000087 000980435 000938323 D|087095421 083964584 +000000087 000981752 000948155 D|020211464 082702251 +000000087 000988516 000961432 D|047538451 063136132 +000000087 000992655 000994751 D|041477850 015688667 +000000088 000007128 000047330 D|075882990 094916300 +000000088 000021976 000075950 D|059803073 054967419 +000000088 000027724 000094387 D|025364106 030102156 +000000088 000030685 000100044 D|065118389 054340208 +000000088 000035141 000104305 D|072792872 083901215 +000000088 000035985 000105774 D|060119162 034995047 +000000088 000051090 000124681 D|036612717 055808056 +000000088 000071332 000140640 D|057790984 095605279 +000000088 000076963 000236713 D|011003224 062977604 +000000088 000109362 000239222 D|054424573 005522577 +000000088 000120302 000264485 D|068806005 056064777 +000000088 000141146 000276272 D|088073794 029980771 +000000088 000143935 000320790 D|004181738 037942897 +000000088 000144443 000336624 D|059560500 021272749 +000000088 000147468 000387941 D|048384074 085679992 +000000088 000160553 000425493 D|068559908 098126165 +000000088 000173926 000447692 D|065381066 064528887 +000000088 000176386 000459092 D|035507655 027172193 +000000088 000190227 000471491 D|004517260 057234024 +000000088 000203882 000478719 D|002085530 079299781 +000000088 000204939 000486296 D|078011394 094664493 +000000088 000225722 000492482 D|022063251 043418784 +000000088 000246840 000496074 D|070307374 020640448 +000000088 000251933 000505835 D|006639550 068580908 +000000088 000296355 000540548 D|031049386 095093144 +000000088 000303297 000551146 D|086650307 034038954 +000000088 000304756 000558269 D|016887698 056262227 +000000088 000319436 000561077 D|014398357 033829453 +000000088 000344930 000584823 D|015061080 050031909 +000000088 000360629 000593920 D|066323953 026599360 +000000088 000385030 000614683 D|046031208 018040307 +000000088 000392823 000652610 D|034565291 070663210 +000000088 000471998 000652942 D|037692561 057509565 +000000088 000475789 000678000 D|035005262 073834655 +000000088 000485092 000696792 D|001032411 094927447 +000000088 000528069 000714655 D|074052905 096017085 +000000088 000570735 000730488 D|027472508 051075860 +000000088 000582451 000748796 D|000968099 016457918 +000000088 000633954 000781137 D|043107951 078193838 +000000088 000731020 000793395 D|009854853 085195424 +000000088 000760195 000808416 D|098102721 011145081 +000000088 000784318 000834873 D|000898286 027150295 +000000088 000787789 000840002 D|085026403 003522943 +000000088 000808404 000858174 D|017390533 072271702 +000000088 000851656 000894551 D|033531184 041436438 +000000088 000919195 000922827 D|004718710 044851966 +000000088 000928025 000926652 D|082767548 057339356 +000000088 000936736 000930849 D|095736594 012511471 +000000088 000942928 000939281 D|088045819 039777465 +000000088 000959072 000939997 D|062444691 081560602 +000000089 000024556 000016321 D|060205278 078595290 +000000089 000058833 000037189 D|076609423 037749888 +000000089 000062059 000039242 D|065058616 083656921 +000000089 000090577 000049268 D|034311140 052943424 +000000089 000093142 000118333 D|095628391 068860815 +000000089 000094096 000133832 D|061757411 040709359 +000000089 000098532 000156012 D|003149611 018310619 +000000089 000113161 000212864 D|004400114 037344690 +000000089 000182411 000242540 D|060774539 021137792 +000000089 000203379 000269014 D|001534141 050866272 +000000089 000229019 000288895 D|053803329 064466911 +000000089 000252433 000291249 D|011423406 093727940 +000000089 000253241 000310137 D|076969818 014904782 +000000089 000284777 000319629 D|000977386 045686490 +000000089 000301821 000379606 D|081335833 044251545 +000000089 000305342 000441247 D|097708707 062485858 +000000089 000306088 000465594 D|099139590 051131433 +000000089 000334883 000508441 D|045385968 085014441 +000000089 000351554 000509530 D|009112662 011521980 +000000089 000364408 000554088 D|001964731 002798783 +000000089 000399483 000556925 D|058806499 051257720 +000000089 000415226 000580427 D|082267094 090767925 +000000089 000479056 000616278 D|083078827 065465776 +000000089 000485857 000633167 D|064764442 072605871 +000000089 000516960 000654626 D|094715621 005567671 +000000089 000540110 000656973 D|093532857 005548498 +000000089 000550963 000686514 D|042240581 088779740 +000000089 000573799 000696095 D|078111418 016848372 +000000089 000581413 000734894 D|063435853 041643025 +000000089 000584015 000749097 D|077288961 051737869 +000000089 000590295 000753027 D|025573252 088089143 +000000089 000592849 000778998 D|081788535 065925284 +000000089 000631829 000785148 D|052814620 006192223 +000000089 000680279 000794546 D|069256086 031997266 +000000089 000696222 000797484 D|002870500 018409655 +000000089 000697384 000826995 D|065895066 073339096 +000000089 000704388 000837081 D|082957161 073084028 +000000089 000738740 000852975 D|069582753 000679848 +000000089 000743770 000858053 D|048899279 099342920 +000000089 000774222 000861911 D|040099519 044672983 +000000089 000778966 000862515 D|031234191 025103143 +000000089 000782022 000875549 D|030373045 018425100 +000000089 000784858 000882214 D|054762113 099974050 +000000089 000810057 000890548 D|080488822 036589868 +000000089 000812726 000913632 D|056991128 073970029 +000000089 000828843 000923578 D|061000426 090721035 +000000089 000869696 000939515 D|070898797 054466171 +000000089 000930220 000964019 D|033627360 093201573 +000000089 000984361 000991072 D|004785119 025150740 +000000089 000986328 000998961 D|083617297 082764906 +000000090 000019648 000018087 D|031799002 081289972 +000000090 000025008 000019370 D|054868375 012401834 +000000090 000052603 000062721 D|005565026 002666682 +000000090 000063040 000065995 D|059754531 047828935 +000000090 000082285 000070440 D|055724825 042993813 +000000090 000122902 000072483 D|024120896 009451037 +000000090 000123715 000075302 D|047100107 010851254 +000000090 000143589 000169135 D|084455492 061456984 +000000090 000146545 000175878 D|058110382 055327323 +000000090 000158785 000178187 D|023415744 057109763 +000000090 000202057 000225942 D|036948273 086008434 +000000090 000210315 000244703 D|064495572 087389841 +000000090 000282970 000245528 D|011962974 002056440 +000000090 000291452 000276535 D|050063123 058968331 +000000090 000317537 000295001 D|099920427 003056575 +000000090 000337764 000333910 D|041033349 099161731 +000000090 000345317 000333944 D|096254420 099802821 +000000090 000350375 000376151 D|031640561 063470459 +000000090 000373662 000411558 D|002303183 090591229 +000000090 000391770 000413674 D|067034462 021520887 +000000090 000399623 000415028 D|016793730 087662155 +000000090 000415640 000455456 D|088484566 001520994 +000000090 000421336 000460289 D|042721641 042075163 +000000090 000440047 000475256 D|019609173 003218004 +000000090 000440152 000497961 D|099412793 067900847 +000000090 000462662 000547212 D|091053217 013190009 +000000090 000476109 000560456 D|029219170 085093082 +000000090 000491709 000571387 D|046473838 007668904 +000000090 000494504 000574677 D|009500612 024333127 +000000090 000527043 000580341 D|085342841 010789904 +000000090 000592689 000586813 D|070323177 073822038 +000000090 000600148 000587765 D|086010019 063289454 +000000090 000608470 000595403 D|047947336 067049354 +000000090 000610176 000609829 D|059709755 002128023 +000000090 000610771 000619633 D|034658095 032717364 +000000090 000654073 000620085 D|089874042 084856948 +000000090 000656406 000628404 D|021232796 041245908 +000000090 000698415 000711047 D|053648086 037033931 +000000090 000786554 000737670 D|050492804 076624381 +000000090 000792631 000781327 D|061958657 085112121 +000000090 000813057 000827237 D|044940822 020640412 +000000090 000834514 000840305 D|077693045 084448348 +000000090 000837817 000843696 D|004404003 046993790 +000000090 000838645 000875805 D|051456697 099809605 +000000090 000843562 000888034 D|001380280 095233940 +000000090 000857377 000889021 D|056818534 023965998 +000000090 000869597 000900059 D|070222887 044745391 +000000090 000913169 000918238 D|098594851 032565901 +000000090 000923503 000920547 D|077166984 076711106 +000000090 000924010 000953247 D|038183012 086778492 +000000091 000012096 000017080 D|010466114 096165569 +000000091 000027126 000021255 D|075552758 095339166 +000000091 000086923 000037018 D|058085717 029349750 +000000091 000093952 000055251 D|010629822 087451262 +000000091 000096480 000057287 D|009405112 002451324 +000000091 000137083 000070208 D|009699517 029199674 +000000091 000139791 000113960 D|059785751 063725421 +000000091 000140373 000185404 D|039297626 094798468 +000000091 000142451 000202853 D|087211701 086416851 +000000091 000152797 000234633 D|013863200 083187106 +000000091 000166566 000238257 D|049327617 054443753 +000000091 000166718 000250298 D|031581523 084834630 +000000091 000172427 000285505 D|083147580 033168994 +000000091 000193261 000322344 D|040424648 023226912 +000000091 000196754 000324681 D|054504774 049049953 +000000091 000234454 000379156 D|038723371 025063192 +000000091 000242261 000398964 D|011106333 036187104 +000000091 000255810 000413859 D|068838451 074331347 +000000091 000277955 000420321 D|023164928 009681883 +000000091 000293205 000443083 D|091855096 024869027 +000000091 000325335 000479583 D|057834028 040374425 +000000091 000401450 000531890 D|035917100 024928180 +000000091 000431529 000544966 D|080466669 099060639 +000000091 000452064 000579634 D|068566622 003796205 +000000091 000462733 000597745 D|082316965 034061244 +000000091 000518247 000637111 D|002430239 082094075 +000000091 000569184 000647294 D|074641021 085105165 +000000091 000583518 000660505 D|022430426 062210965 +000000091 000642491 000682125 D|065188177 095451885 +000000091 000662019 000707771 D|085140722 066825809 +000000091 000683611 000712400 D|051867709 051163124 +000000091 000698395 000716007 D|047365778 057737624 +000000091 000712656 000724635 D|085704329 044714984 +000000091 000732410 000733412 D|048091616 097069503 +000000091 000754980 000738517 D|054738725 070475759 +000000091 000767793 000744328 D|070604493 090559350 +000000091 000792361 000776310 D|044359144 009966130 +000000091 000807341 000787611 D|035869406 065945484 +000000091 000817964 000790420 D|070635744 069259411 +000000091 000826167 000792477 D|079944412 085188976 +000000091 000854987 000796813 D|072192591 032242413 +000000091 000858177 000827673 D|033056845 046337672 +000000091 000865416 000835346 D|003707434 023507181 +000000091 000865776 000868894 D|028494973 083338124 +000000091 000866302 000901037 D|040616161 039041779 +000000091 000868041 000910814 D|079085787 015546492 +000000091 000874141 000963167 D|040882325 041134968 +000000091 000875135 000969165 D|064027504 092852722 +000000091 000912330 000970609 D|076081254 012617855 +000000091 000923458 000980120 D|028022670 030839408 +000000092 000021976 000022240 D|062297517 084443841 +000000092 000022019 000028327 D|058879165 053506469 +000000092 000028001 000063220 D|065809525 052272717 +000000092 000045794 000098149 D|083447342 059884463 +000000092 000058013 000115464 D|003344833 066044920 +000000092 000070512 000123285 D|014245552 038733492 +000000092 000090452 000168514 D|030331648 035901319 +000000092 000140113 000183800 D|064980342 041367258 +000000092 000183827 000289378 D|042674819 038516393 +000000092 000184194 000314714 D|087470070 025123033 +000000092 000199618 000315768 D|098208514 032593549 +000000092 000200466 000338647 D|009433966 077014971 +000000092 000232224 000350585 D|092124685 069924167 +000000092 000239189 000351966 D|061717259 076538541 +000000092 000239338 000373771 D|059368311 073297803 +000000092 000259743 000379110 D|061343255 066517327 +000000092 000297275 000431621 D|027270101 070603383 +000000092 000316075 000432997 D|080318555 014581728 +000000092 000319432 000452885 D|027704337 003487972 +000000092 000351330 000474595 D|062405161 009528784 +000000092 000372586 000500346 D|026195375 006443315 +000000092 000385209 000506738 D|050923421 057872702 +000000092 000386596 000522572 D|033331737 089108792 +000000092 000438412 000542492 D|023315713 067028990 +000000092 000516952 000557704 D|064770393 032888443 +000000092 000522391 000587706 D|096739630 070206094 +000000092 000525154 000590489 D|055689913 033873145 +000000092 000536590 000591157 D|070276839 009051987 +000000092 000540253 000599203 D|090885307 012696635 +000000092 000560233 000645769 D|094467265 078730320 +000000092 000576384 000677202 D|079153600 002166389 +000000092 000581489 000701354 D|062493695 047827802 +000000092 000601533 000703580 D|035897814 055358465 +000000092 000645366 000736318 D|097029008 001468362 +000000092 000663995 000744625 D|041770840 017701737 +000000092 000687841 000760543 D|067155966 064377130 +000000092 000694659 000769397 D|047506351 056517751 +000000092 000725082 000784337 D|044491427 002450750 +000000092 000728286 000787875 D|011535756 074915156 +000000092 000772659 000807369 D|008054175 087848331 +000000092 000791044 000809674 D|004592275 016931949 +000000092 000796365 000821539 D|035026969 007879268 +000000092 000846597 000824593 D|002521453 083571192 +000000092 000855108 000826220 D|021913106 066163208 +000000092 000863843 000843909 D|055972385 090420638 +000000092 000868865 000892171 D|070816522 098874267 +000000092 000901935 000901967 D|068371680 031058305 +000000092 000951419 000915966 D|073214899 065664129 +000000092 000980139 000937938 D|001401868 029728791 +000000092 000984277 000963605 D|080436981 066385404 +000000093 000007276 000008053 D|017413847 069790613 +000000093 000070114 000042456 D|019781486 010611547 +000000093 000082027 000068527 D|092827558 021931885 +000000093 000090369 000068584 D|033130499 006288812 +000000093 000091308 000081509 D|072223707 037795321 +000000093 000129486 000088271 D|003018693 045431812 +000000093 000163186 000090378 D|030730615 087366474 +000000093 000177409 000095098 D|058501420 054672816 +000000093 000195537 000121543 D|063501373 029114005 +000000093 000231541 000132963 D|079175523 096499304 +000000093 000264569 000169084 D|064016531 066740313 +000000093 000298753 000179844 D|077835656 034727786 +000000093 000304731 000186320 D|041680400 017134653 +000000093 000331675 000205750 D|056967915 069817650 +000000093 000403162 000224936 D|049897241 080967335 +000000093 000464816 000245860 D|036468174 096943361 +000000093 000480433 000248049 D|096347699 021140718 +000000093 000495978 000260876 D|076723832 089672596 +000000093 000502143 000282651 D|078214095 091998071 +000000093 000508256 000301381 D|099770606 016978430 +000000093 000509119 000344995 D|000796435 018379280 +000000093 000555020 000367944 D|071847080 044983007 +000000093 000558616 000393593 D|066518994 070026701 +000000093 000559952 000422691 D|087971054 081301414 +000000093 000566393 000428147 D|084042516 098720353 +000000093 000571835 000454888 D|090444178 086579552 +000000093 000578011 000461466 D|049746038 096833259 +000000093 000603667 000478383 D|001159223 042053539 +000000093 000617867 000513472 D|013247636 087603994 +000000093 000638700 000514882 D|094383676 072536044 +000000093 000647238 000550905 D|019383003 060843803 +000000093 000648330 000579886 D|041582309 098254451 +000000093 000710013 000584548 D|048035581 024999180 +000000093 000734060 000624150 D|039646636 054152536 +000000093 000737184 000630765 D|090138799 072731336 +000000093 000760443 000632823 D|039329526 093272082 +000000093 000790567 000672923 D|014720832 004722381 +000000093 000828355 000688263 D|011810663 081883867 +000000093 000829689 000742272 D|034467466 031220272 +000000093 000847811 000747569 D|091499856 006575691 +000000093 000874353 000786817 D|074093683 098754182 +000000093 000874619 000834186 D|090358887 065241946 +000000093 000880849 000859250 D|012275622 005066495 +000000093 000884081 000872371 D|033163362 095478203 +000000093 000898286 000877784 D|077897707 051578836 +000000093 000976257 000903335 D|013582026 058783689 +000000093 000977820 000910573 D|023917378 078885378 +000000093 000978874 000910726 D|004372703 032321874 +000000093 000984426 000912064 D|065957053 055737144 +000000093 000988902 000919048 D|088633527 046926937 +000000094 000014974 000142999 D|063552156 073660880 +000000094 000017329 000169055 D|017404866 031735699 +000000094 000023686 000171186 D|062767231 013859906 +000000094 000034818 000172238 D|000962264 059511641 +000000094 000048545 000173152 D|043363100 012403406 +000000094 000050137 000177662 D|079533909 052611859 +000000094 000061467 000182220 D|001700464 079895629 +000000094 000062987 000197230 D|068889699 039804236 +000000094 000121298 000224337 D|086149777 095951632 +000000094 000127508 000239433 D|032383433 023300563 +000000094 000138246 000261044 D|053089346 000910239 +000000094 000147636 000287515 D|032344249 086253291 +000000094 000148279 000303192 D|073623990 050531684 +000000094 000173589 000303512 D|077532625 013142186 +000000094 000175390 000323713 D|064153712 086124357 +000000094 000176714 000330805 D|087313631 036940262 +000000094 000187843 000335451 D|086533287 067340006 +000000094 000230360 000390297 D|022656824 092467275 +000000094 000236661 000392253 D|051330940 099194524 +000000094 000241196 000398290 D|093605856 081476103 +000000094 000262440 000437526 D|013605309 090936950 +000000094 000267723 000445731 D|062888734 026295239 +000000094 000324102 000456007 D|014479063 073872083 +000000094 000326193 000537591 D|039439580 060943754 +000000094 000363848 000545982 D|043604085 053813094 +000000094 000413907 000600296 D|050195688 088598910 +000000094 000442351 000617749 D|074105351 059222643 +000000094 000444151 000618515 D|017888787 009903050 +000000094 000448219 000619857 D|024810773 082104205 +000000094 000451856 000628121 D|036953264 063782619 +000000094 000451943 000652627 D|080833503 098877176 +000000094 000473594 000676870 D|014256871 040393181 +000000094 000485734 000682001 D|036491353 071809463 +000000094 000566106 000699354 D|047009737 053418665 +000000094 000572575 000701988 D|035866985 043758407 +000000094 000596968 000725556 D|085266947 066453822 +000000094 000625847 000726161 D|064984844 028272530 +000000094 000662657 000737124 D|081157095 024252594 +000000094 000671647 000756214 D|098440037 000796410 +000000094 000677100 000802416 D|001986756 029643803 +000000094 000681408 000817374 D|074402078 051396362 +000000094 000699925 000818567 D|006934856 082269300 +000000094 000727574 000850895 D|064476644 064922388 +000000094 000781684 000867117 D|085438778 013819789 +000000094 000812691 000870155 D|045038565 048752980 +000000094 000817297 000873134 D|090733603 047002828 +000000094 000835392 000973419 D|074128467 015687410 +000000094 000934198 000976984 D|095884348 070288569 +000000094 000945113 000986507 D|015573434 060272507 +000000094 000945127 000992658 D|022576703 051492059 +000000095 000044030 000017370 D|090899446 085609066 +000000095 000063670 000030209 D|055319119 070083906 +000000095 000075439 000059503 D|018277096 060413076 +000000095 000080578 000080592 D|042575618 046266112 +000000095 000142625 000113958 D|029036925 025442534 +000000095 000158110 000113999 D|015919683 050352478 +000000095 000165803 000143722 D|082673330 001579587 +000000095 000200557 000194825 D|027623860 012035706 +000000095 000212116 000209390 D|034218343 074057608 +000000095 000250796 000210611 D|021592456 028077330 +000000095 000287146 000210656 D|068406338 006391030 +000000095 000309523 000225843 D|048749046 075606010 +000000095 000313902 000235284 D|093213383 074260020 +000000095 000351095 000253707 D|099252890 066980662 +000000095 000411614 000256242 D|066194225 038592143 +000000095 000417791 000259511 D|075765518 036337658 +000000095 000435361 000264647 D|065050917 077420157 +000000095 000455490 000316694 D|071947040 074199702 +000000095 000473212 000334214 D|096870415 039531863 +000000095 000480787 000345624 D|025534526 084292848 +000000095 000527632 000370147 D|039937073 046716739 +000000095 000534474 000396241 D|054139221 097518492 +000000095 000549450 000405139 D|005427150 079601586 +000000095 000594000 000449144 D|088529027 084257614 +000000095 000613721 000486725 D|007857611 005573645 +000000095 000621618 000510978 D|007374902 026278914 +000000095 000653567 000518642 D|044696022 073299176 +000000095 000655546 000550725 D|013180866 050758691 +000000095 000675506 000566912 D|064315980 013027533 +000000095 000675795 000588217 D|068063878 003157424 +000000095 000677584 000611298 D|099179480 013677852 +000000095 000680306 000633680 D|058812584 007130989 +000000095 000688571 000661801 D|051978950 018733486 +000000095 000720794 000665640 D|029471956 089576355 +000000095 000740384 000729361 D|061222185 057184769 +000000095 000756256 000755131 D|018713282 007284472 +000000095 000762985 000779189 D|001212800 095619635 +000000095 000794222 000807048 D|051787703 061875502 +000000095 000816371 000826259 D|049137380 006421058 +000000095 000836803 000844251 D|034670086 002295008 +000000095 000846562 000846218 D|086157235 065119182 +000000095 000856170 000855200 D|008989948 030517993 +000000095 000858667 000872078 D|045529252 033812758 +000000095 000871311 000911844 D|072557421 039769642 +000000095 000917745 000927362 D|034060495 024465428 +000000095 000929402 000949903 D|084101501 027038692 +000000095 000930074 000968652 D|077316093 051708613 +000000095 000944129 000972867 D|005304973 002490303 +000000095 000973341 000979126 D|012792057 044631710 +000000095 000989376 000990323 D|060089251 045210198 +000000096 000017604 000081981 D|000138966 079146063 +000000096 000035996 000082465 D|088756755 055912945 +000000096 000052907 000084504 D|096499877 037338392 +000000096 000078994 000092263 D|009522535 055753850 +000000096 000123985 000097016 D|032259659 050533885 +000000096 000124478 000134880 D|018032773 072951127 +000000096 000136868 000142607 D|081666628 059756046 +000000096 000166685 000142817 D|004285116 099337632 +000000096 000179233 000154838 D|076057837 070642431 +000000096 000188854 000158520 D|031908072 085323555 +000000096 000215140 000163741 D|027051826 039784222 +000000096 000255754 000169082 D|099289055 091104927 +000000096 000318268 000194872 D|070325991 017597062 +000000096 000336963 000216682 D|065868885 018003051 +000000096 000365143 000236380 D|040361491 045480903 +000000096 000377553 000242640 D|095639856 039155373 +000000096 000411836 000249916 D|001130971 071886089 +000000096 000414953 000251931 D|088349287 069010170 +000000096 000435244 000255643 D|018870080 074548181 +000000096 000451996 000277603 D|011254846 018321189 +000000096 000503875 000281366 D|020910769 096895210 +000000096 000509612 000292830 D|014664954 008012465 +000000096 000543792 000306219 D|049830972 032632204 +000000096 000547655 000311075 D|085939139 017853220 +000000096 000570495 000390745 D|055427273 045547965 +000000096 000585213 000397303 D|060660323 094190225 +000000096 000591697 000399313 D|016435108 037452653 +000000096 000595419 000416189 D|043682754 052844906 +000000096 000626628 000417286 D|054362770 062939195 +000000096 000631817 000564070 D|043736655 086909783 +000000096 000649551 000580630 D|018222327 095376801 +000000096 000694717 000582086 D|061607949 005591300 +000000096 000727347 000601122 D|063457880 020595992 +000000096 000734919 000614349 D|006221538 000557849 +000000096 000769642 000615554 D|054349302 099266357 +000000096 000787632 000637689 D|016615158 089305162 +000000096 000793743 000693748 D|066895886 088172412 +000000096 000840159 000696886 D|055595067 059414096 +000000096 000874909 000704177 D|028281056 075191236 +000000096 000889801 000717764 D|016359684 006463138 +000000096 000910688 000759365 D|011001595 087578599 +000000096 000917737 000771816 D|086282190 050028513 +000000096 000920377 000780136 D|088829149 022893794 +000000096 000924040 000795065 D|062669547 061882751 +000000096 000936704 000871589 D|074969259 054112979 +000000096 000948310 000898964 D|052289364 003744800 +000000096 000959753 000905701 D|099622626 026434972 +000000096 000978106 000921838 D|089783071 074378133 +000000096 000978244 000986652 D|081813479 002123676 +000000096 000990382 000989093 D|055045130 054570950 +000000097 000029742 000017092 D|043466588 095520011 +000000097 000035763 000018513 D|098651467 028698617 +000000097 000048447 000043827 D|092070400 005621961 +000000097 000059785 000052672 D|015379819 051820185 +000000097 000080565 000061079 D|011181612 047023542 +000000097 000155647 000072114 D|039317456 077702585 +000000097 000158805 000091526 D|070907161 060548398 +000000097 000159725 000093448 D|018040374 028510344 +000000097 000164823 000113270 D|054708033 090579581 +000000097 000179059 000129206 D|086392825 081030819 +000000097 000189822 000177793 D|058843604 004973033 +000000097 000206462 000192772 D|072623319 088956111 +000000097 000262962 000238279 D|008830526 091505104 +000000097 000279071 000244507 D|071597571 088154047 +000000097 000316980 000275734 D|051081911 078094480 +000000097 000327496 000290065 D|009411091 017880783 +000000097 000376053 000297590 D|017004724 076826111 +000000097 000410286 000308201 D|086688449 062617256 +000000097 000447659 000338726 D|077904283 096842327 +000000097 000476373 000341951 D|025464136 014608168 +000000097 000524313 000371322 D|018049129 031915458 +000000097 000537182 000379623 D|087983973 083680043 +000000097 000548711 000381368 D|070157314 022188930 +000000097 000577596 000421460 D|001783722 087217440 +000000097 000583951 000462084 D|077529472 055800748 +000000097 000591720 000462691 D|081755454 060664650 +000000097 000593367 000475236 D|034594273 074950457 +000000097 000596254 000480143 D|058200874 074773870 +000000097 000600889 000506073 D|055163297 084308732 +000000097 000602974 000594281 D|037128661 051266157 +000000097 000649639 000612566 D|090501150 049989576 +000000097 000651309 000626396 D|025003063 094472561 +000000097 000661150 000626956 D|093574791 081836922 +000000097 000664337 000672745 D|077021322 084575147 +000000097 000672548 000676474 D|049004086 093573378 +000000097 000710520 000701882 D|049470763 031968919 +000000097 000719281 000705847 D|087401092 053367508 +000000097 000726320 000707672 D|032914427 049509708 +000000097 000774155 000731341 D|049570801 015672641 +000000097 000788660 000774917 D|009306667 085886870 +000000097 000788857 000782365 D|003991318 068460889 +000000097 000804306 000788928 D|024954371 045749346 +000000097 000811751 000819894 D|005183608 079918706 +000000097 000824978 000829120 D|054243554 071334050 +000000097 000927028 000835041 D|036274410 017787730 +000000097 000954724 000916342 D|060133177 087586801 +000000097 000957763 000930883 D|001957439 025737191 +000000097 000981685 000949128 D|003499519 065990214 +000000097 000986925 000949408 D|061872061 038781450 +000000097 000998721 000989184 D|053616989 004233480 +000000098 000045472 000057279 D|037223262 007700582 +000000098 000076355 000070712 D|093405514 021445001 +000000098 000111660 000075064 D|062940984 026855480 +000000098 000120583 000075347 D|073153457 044932162 +000000098 000127687 000089342 D|036044459 036514411 +000000098 000128596 000095151 D|020744215 029784473 +000000098 000139291 000117438 D|013994653 081652191 +000000098 000161506 000135588 D|049055560 014838329 +000000098 000168259 000162124 D|057117834 066881433 +000000098 000180342 000182359 D|002891830 057010273 +000000098 000192860 000200503 D|087333628 044570801 +000000098 000199570 000228781 D|021103857 065742302 +000000098 000218728 000260786 D|005227433 046442749 +000000098 000222370 000280596 D|071822076 028562016 +000000098 000223039 000284765 D|003222078 099914704 +000000098 000260652 000291847 D|047732784 057326572 +000000098 000260836 000297057 D|091161639 007964273 +000000098 000272512 000310855 D|012046426 017392777 +000000098 000273568 000312495 D|010426839 058173653 +000000098 000281285 000324172 D|005162370 007005652 +000000098 000339683 000346026 D|053622147 003198047 +000000098 000367361 000373870 D|045598529 068741123 +000000098 000382401 000385805 D|067005695 014291057 +000000098 000387117 000400736 D|012847737 010913333 +000000098 000426538 000414593 D|028290694 024315526 +000000098 000439268 000429091 D|088920272 044298767 +000000098 000444131 000523207 D|057300622 041920383 +000000098 000446943 000589567 D|092876447 009753122 +000000098 000447881 000630955 D|027086241 065973699 +000000098 000532554 000653725 D|014402272 041013308 +000000098 000542804 000667132 D|010111263 025952274 +000000098 000554510 000670336 D|002137834 009524544 +000000098 000578315 000694448 D|060629636 086002693 +000000098 000658082 000697033 D|074237716 061414494 +000000098 000662583 000736711 D|039484291 093946894 +000000098 000663580 000749288 D|093545522 049280404 +000000098 000665870 000763222 D|028947572 023662548 +000000098 000697528 000774728 D|068944610 020770631 +000000098 000725209 000788057 D|097774255 070661693 +000000098 000750992 000788407 D|021874374 005032210 +000000098 000779701 000808942 D|080692517 083203912 +000000098 000796247 000824220 D|033373981 001611298 +000000098 000841047 000825418 D|054901587 089774133 +000000098 000853271 000827392 D|046236292 050707374 +000000098 000906239 000865942 D|057682199 029749162 +000000098 000927200 000908357 D|015491561 098107212 +000000098 000964772 000933794 D|053485676 030342831 +000000098 000965199 000945173 D|044224670 095410766 +000000098 000976238 000973462 D|021617160 031002963 +000000098 000992779 000983783 D|015533745 088050648 +000000099 000063589 000004134 D|036827256 015336687 +000000099 000084680 000033781 D|035607109 058703299 +000000099 000108216 000077543 D|073504651 053491397 +000000099 000123424 000101196 D|051728012 027496938 +000000099 000129132 000113532 D|014302021 000234068 +000000099 000130596 000123856 D|055855546 059207428 +000000099 000140945 000233346 D|028381369 070734264 +000000099 000163641 000239545 D|045748864 084711069 +000000099 000163906 000275963 D|007444776 099042051 +000000099 000171583 000281601 D|083480176 061852986 +000000099 000172666 000314353 D|061173398 065734432 +000000099 000174059 000318995 D|084952967 041989398 +000000099 000184558 000328064 D|090987371 099030475 +000000099 000213797 000335250 D|025427471 075870091 +000000099 000226270 000350498 D|077008937 083316745 +000000099 000254942 000386114 D|031778417 017308478 +000000099 000335240 000392193 D|067559817 070465705 +000000099 000357101 000399883 D|014743929 017740030 +000000099 000394975 000421957 D|097283220 056426283 +000000099 000401135 000467201 D|004213234 006749924 +000000099 000444456 000487685 D|004164916 052591741 +000000099 000453750 000517516 D|085426277 051704065 +000000099 000490986 000520198 D|089172891 075113485 +000000099 000492498 000598314 D|030844797 024286855 +000000099 000534612 000602420 D|051705761 094674221 +000000099 000536402 000604381 D|033779073 048868439 +000000099 000539402 000608991 D|052380299 040881228 +000000099 000545104 000614316 D|078652030 053036388 +000000099 000557663 000634767 D|072369236 065432754 +000000099 000586562 000684376 D|057772595 089341507 +000000099 000592980 000699784 D|018493392 093308123 +000000099 000596571 000709227 D|017287769 062119673 +000000099 000615667 000730927 D|085910143 006862039 +000000099 000617237 000736325 D|029118709 009600215 +000000099 000625303 000739576 D|033391473 003531528 +000000099 000642968 000776848 D|027887139 079782207 +000000099 000654753 000777276 D|048970614 045166313 +000000099 000737844 000800702 D|000791359 080961180 +000000099 000780870 000802796 D|072431589 040207174 +000000099 000817591 000804773 D|079994059 031858603 +000000099 000839059 000846096 D|013233423 029803992 +000000099 000847961 000882250 D|009046448 020564023 +000000099 000850024 000893091 D|010264013 000614881 +000000099 000855252 000900107 D|061733681 018351683 +000000099 000858697 000909000 D|059571040 016322988 +000000099 000868172 000950565 D|045370733 033456620 +000000099 000879296 000954995 D|026654066 054413169 +000000099 000914110 000975041 D|056987099 030661010 +000000099 000960517 000976197 D|095971737 091265516 +000000099 000990696 000984609 D|044697541 022290699 +000000100 000017559 000025517 D|082272819 065917032 +000000100 000047668 000044373 D|088327055 078882652 +000000100 000088264 000052194 D|004445659 001790194 +000000100 000101659 000060577 D|032143464 059850452 +000000100 000102211 000090763 D|079350423 044518710 +000000100 000102286 000101731 D|015058095 049085410 +000000100 000178648 000129447 D|011135912 097284427 +000000100 000219574 000138158 D|000270308 021900747 +000000100 000324269 000138634 D|050430733 034856293 +000000100 000329185 000192045 D|011465295 091004261 +000000100 000338851 000192173 D|043600375 039330651 +000000100 000340670 000231839 D|025373136 047499022 +000000100 000355955 000245319 D|098434213 048650981 +000000100 000360725 000248540 D|081481990 068754322 +000000100 000369172 000252804 D|062449681 019432758 +000000100 000379773 000288411 D|020726462 013876467 +000000100 000396901 000288987 D|050282590 034325793 +000000100 000407311 000303325 D|068482662 010647456 +000000100 000414526 000359095 D|015925566 078889889 +000000100 000439228 000409050 D|006682118 039270036 +000000100 000452552 000417830 D|085156063 043371499 +000000100 000496967 000425428 D|034405299 040054728 +000000100 000504367 000468290 D|062073131 032769558 +000000100 000513776 000510473 D|053384222 094896801 +000000100 000522694 000551171 D|081051303 077717942 +000000100 000528896 000563441 D|011533216 087777100 +000000100 000534142 000580652 D|021778723 048429884 +000000100 000560865 000588631 D|010053872 035641114 +000000100 000562794 000596687 D|044321951 066073858 +000000100 000585020 000626519 D|014897265 039525290 +000000100 000618769 000638087 D|090429190 096059396 +000000100 000632417 000643018 D|091051859 019865077 +000000100 000648024 000647276 D|064139074 077912847 +000000100 000649048 000735154 D|091669682 047315581 +000000100 000654687 000742541 D|065866395 063291259 +000000100 000655776 000754609 D|063356339 039137937 +000000100 000663826 000765912 D|069605109 024030107 +000000100 000683838 000778925 D|086024616 084554267 +000000100 000687353 000779143 D|085166253 019649022 +000000100 000709926 000781386 D|015976824 060503975 +000000100 000818906 000835210 D|073252281 062606593 +000000100 000819809 000893265 D|015304023 041445426 +000000100 000889253 000924442 D|040168689 010976801 +000000100 000902615 000936008 D|074578703 073078024 +000000100 000912358 000973061 D|071211918 092631275 +000000100 000919788 000975580 D|037789458 029020958 +000000100 000939029 000991501 D|084207939 040778683 +000000100 000940639 000994025 D|058736767 038310118 +000000100 000951088 000994033 D|075943206 097113608 +000000100 000980045 000996118 D|088157283 068702139 +000000101 000005041 000004679 D|031844654 033050941 +000000101 000008306 000013740 D|044328330 002477476 +000000101 000015554 000089947 D|004391490 034298093 +000000101 000018093 000097136 D|086435157 060658643 +000000101 000046850 000124578 D|021957939 069930771 +000000101 000056458 000138938 D|050154862 039252721 +000000101 000063967 000163449 D|050904311 065767492 +000000101 000068184 000166417 D|083818311 048435181 +000000101 000087515 000180576 D|027900719 078030571 +000000101 000109831 000184757 D|034728227 048038807 +000000101 000110135 000187873 D|066163474 068631958 +000000101 000142706 000200718 D|075810939 015583061 +000000101 000164152 000218589 D|019864216 077417690 +000000101 000175993 000261454 D|063250403 031502603 +000000101 000214163 000350237 D|079084067 074621896 +000000101 000223936 000351215 D|038706507 007938200 +000000101 000233459 000354277 D|011490764 075119369 +000000101 000252353 000366881 D|085718516 005296491 +000000101 000304686 000377467 D|073558465 070253394 +000000101 000307391 000414880 D|086097000 078123133 +000000101 000337235 000437052 D|017813475 003234105 +000000101 000373152 000492947 D|019622013 058394668 +000000101 000404150 000513420 D|045172902 060806745 +000000101 000404926 000524248 D|010167358 063756564 +000000101 000454871 000566576 D|087774224 052787902 +000000101 000489967 000571159 D|045639828 064351786 +000000101 000526342 000622796 D|037413731 087182429 +000000101 000534686 000644248 D|003377975 037323007 +000000101 000565659 000650127 D|070406360 063064661 +000000101 000571887 000655671 D|029365071 087767123 +000000101 000584385 000668254 D|003085969 066851479 +000000101 000593198 000683651 D|076432020 026734310 +000000101 000640032 000710116 D|047618082 064885611 +000000101 000652715 000718355 D|023235431 031766191 +000000101 000687309 000735396 D|071996619 090251258 +000000101 000700244 000737814 D|053341369 088344341 +000000101 000702489 000768096 D|063278052 045123582 +000000101 000712326 000782392 D|002880636 080684530 +000000101 000719948 000794769 D|004572959 067273259 +000000101 000753402 000801836 D|005558529 058304206 +000000101 000766506 000814532 D|063006652 083749726 +000000101 000773304 000848914 D|026385507 028970654 +000000101 000828678 000849967 D|005309489 028438346 +000000101 000854999 000853342 D|067530720 037858025 +000000101 000858665 000859136 D|033784012 049240858 +000000101 000883687 000861406 D|021969721 067868359 +000000101 000908307 000879399 D|071378276 014058268 +000000101 000959684 000971844 D|025963994 055477015 +000000101 000960967 000981955 D|080640959 009659818 +000000101 000964762 000982035 D|042231256 007382952 +000000102 000012950 000003345 D|020962711 051112926 +000000102 000047510 000013073 D|031303681 093657723 +000000102 000064215 000021514 D|032229615 092162021 +000000102 000121767 000068031 D|067268271 057479129 +000000102 000142761 000092744 D|022233478 045758832 +000000102 000145448 000114815 D|060542944 067533075 +000000102 000208669 000117017 D|077702752 072305458 +000000102 000223828 000128019 D|098647083 005411053 +000000102 000238549 000135831 D|092041242 028310503 +000000102 000255805 000139292 D|013052946 007234292 +000000102 000328140 000141812 D|086435927 017017974 +000000102 000334327 000161815 D|074346529 000410628 +000000102 000335569 000196304 D|090819152 051770333 +000000102 000336077 000202069 D|024557471 000636286 +000000102 000345057 000216636 D|053309675 073245114 +000000102 000372011 000245710 D|036870871 066438080 +000000102 000380865 000250407 D|044567995 009623491 +000000102 000384215 000275087 D|095924260 017540709 +000000102 000428143 000294073 D|010196531 090393422 +000000102 000435508 000341389 D|027582013 023845494 +000000102 000445015 000342107 D|066816752 080445059 +000000102 000446949 000378045 D|015624749 080156738 +000000102 000519795 000378611 D|061622731 027947920 +000000102 000538486 000398914 D|061445624 095620011 +000000102 000549963 000409516 D|062271715 094625176 +000000102 000556159 000451677 D|011987461 012821433 +000000102 000558818 000454911 D|015498375 076698569 +000000102 000601503 000468482 D|051789299 098720136 +000000102 000604836 000482796 D|038348321 008801897 +000000102 000622442 000490791 D|081482956 077361582 +000000102 000661576 000500205 D|084408100 085515313 +000000102 000677955 000510064 D|049417852 097319396 +000000102 000694079 000519389 D|010607056 098549446 +000000102 000698561 000530258 D|037873305 068267468 +000000102 000699124 000558218 D|001910421 041191763 +000000102 000769013 000596917 D|005550590 014782500 +000000102 000772371 000626093 D|066012648 026487157 +000000102 000831955 000679798 D|098267647 087725287 +000000102 000842257 000697781 D|005035997 048386857 +000000102 000843298 000769577 D|046186377 047670252 +000000102 000843756 000779834 D|071751147 078693269 +000000102 000851238 000787990 D|003743173 007265162 +000000102 000863863 000793127 D|068206941 007864710 +000000102 000888394 000815677 D|053908079 077271800 +000000102 000892590 000857118 D|089347626 094404255 +000000102 000894717 000914370 D|051605711 050059094 +000000102 000910446 000915089 D|031885235 007595402 +000000102 000938650 000935595 D|040453489 054389407 +000000102 000955792 000939272 D|027808750 078887205 +000000102 000960343 000944121 D|080107174 033169183 +000000103 000004775 000008950 D|069832186 014046626 +000000103 000048764 000023865 D|040174755 001536428 +000000103 000054029 000053204 D|035438580 039067978 +000000103 000055840 000055866 D|050687711 036000572 +000000103 000063528 000069140 D|088641997 062666971 +000000103 000092656 000071741 D|090041218 081339554 +000000103 000105068 000110115 D|026210180 013537453 +000000103 000106620 000114674 D|039790020 045598743 +000000103 000135365 000163117 D|035428048 014182469 +000000103 000161344 000170959 D|021374605 095283204 +000000103 000173409 000219712 D|039694512 043810679 +000000103 000211625 000233585 D|068158543 046338937 +000000103 000216679 000246753 D|025035858 010251253 +000000103 000273430 000281710 D|081843878 095326016 +000000103 000291681 000295844 D|019238697 057712556 +000000103 000336041 000393375 D|044833303 033833231 +000000103 000386474 000433287 D|015452694 067795535 +000000103 000436294 000450107 D|000870037 063222183 +000000103 000451460 000457932 D|061521632 011384787 +000000103 000452276 000468972 D|092838041 037337527 +000000103 000549035 000474027 D|089397548 002747710 +000000103 000553071 000493804 D|048678899 010863349 +000000103 000584720 000494520 D|048825650 039787109 +000000103 000642148 000504044 D|037861906 050929703 +000000103 000650400 000508238 D|048007205 086862567 +000000103 000668215 000526278 D|016076973 067855642 +000000103 000669348 000539263 D|097542918 033880315 +000000103 000697392 000547410 D|090780096 051588299 +000000103 000720811 000560467 D|098679069 094420604 +000000103 000735068 000563782 D|035059625 075581319 +000000103 000746033 000576782 D|007072133 016018783 +000000103 000754956 000582790 D|023214299 058046186 +000000103 000765701 000636255 D|095603474 066075140 +000000103 000768345 000650722 D|076919047 050637855 +000000103 000779529 000663848 D|026728599 041094948 +000000103 000793286 000678170 D|075432433 067385950 +000000103 000793564 000688334 D|072497082 016481278 +000000103 000816477 000734310 D|074373184 073606165 +000000103 000823121 000768961 D|023176420 009133085 +000000103 000832370 000786792 D|006916237 049453498 +000000103 000861837 000798365 D|074172721 078640085 +000000103 000864687 000808621 D|016310236 060604298 +000000103 000881924 000810039 D|091811302 048634221 +000000103 000917145 000844359 D|021034407 020330241 +000000103 000947255 000862553 D|022288453 083316105 +000000103 000958736 000865392 D|074508167 033450865 +000000103 000985697 000866310 D|013463181 026728186 +000000103 000988329 000883753 D|042675921 077133878 +000000103 000992644 000903897 D|018623932 075617827 +000000103 000994303 000996596 D|036227756 032364292 +000000104 000028432 000001847 D|088728975 065480701 +000000104 000029782 000006001 D|024186259 007715325 +000000104 000034022 000011256 D|099156716 021475711 +000000104 000038540 000041133 D|083046405 030370671 +000000104 000054367 000049221 D|013334551 031741129 +000000104 000062729 000077550 D|035005338 097052348 +000000104 000097435 000080247 D|086596955 089955125 +000000104 000120473 000114772 D|071595651 051311329 +000000104 000128498 000127426 D|066845701 032219129 +000000104 000137658 000158992 D|047479826 049016302 +000000104 000202979 000160255 D|076268967 062407234 +000000104 000214343 000164191 D|096287079 037864356 +000000104 000250728 000164683 D|012272512 080517331 +000000104 000257707 000211592 D|085732895 070501145 +000000104 000280705 000243177 D|064399132 047428942 +000000104 000284453 000247478 D|045859571 015820305 +000000104 000338309 000248923 D|062960012 095020700 +000000104 000345779 000258671 D|078221883 044909515 +000000104 000358102 000267393 D|088966860 066667389 +000000104 000364118 000275932 D|004085691 021728638 +000000104 000370830 000279607 D|022051709 086614999 +000000104 000382558 000286971 D|002517190 030383900 +000000104 000400723 000297380 D|050963701 059455384 +000000104 000412333 000322820 D|019273175 017857452 +000000104 000446792 000355108 D|091274110 061506382 +000000104 000450121 000355148 D|003204429 075743466 +000000104 000472069 000376396 D|084191493 004323518 +000000104 000483578 000377660 D|025513768 019692434 +000000104 000509827 000399082 D|002664342 013914994 +000000104 000511919 000428020 D|051117636 090488561 +000000104 000539823 000583467 D|013747180 016417873 +000000104 000602964 000587938 D|082941128 097553295 +000000104 000654571 000606382 D|023028500 052245001 +000000104 000701122 000616561 D|070102413 023233381 +000000104 000702479 000616982 D|066487508 016647562 +000000104 000714132 000628651 D|038625116 015155542 +000000104 000771468 000644259 D|002638837 062922404 +000000104 000777918 000651785 D|029241940 044384142 +000000104 000783242 000683310 D|015347047 021389130 +000000104 000786472 000724372 D|026074864 046683704 +000000104 000800419 000799031 D|081790155 083873471 +000000104 000841649 000808760 D|032267306 095383986 +000000104 000867857 000830175 D|016238631 065915447 +000000104 000881948 000833534 D|052830500 097931393 +000000104 000888159 000837475 D|007197453 086196531 +000000104 000915890 000854862 D|067123371 021544365 +000000104 000917373 000925503 D|030410793 029228677 +000000104 000952674 000945388 D|011346197 039242779 +000000104 000964977 000952739 D|095296213 097331695 +000000104 000993648 000990772 D|039014711 070378179 +000000105 000003234 000021445 D|040719180 033288938 +000000105 000053039 000029388 D|007894015 025458793 +000000105 000074260 000061271 D|027281355 096709408 +000000105 000075555 000113697 D|009325599 068428768 +000000105 000086979 000136648 D|051597081 088280235 +000000105 000089122 000138685 D|044379678 077345932 +000000105 000104277 000140074 D|014636477 099275745 +000000105 000115496 000153018 D|020875861 058990813 +000000105 000149384 000174784 D|065345128 093666173 +000000105 000179983 000185891 D|014311184 075223769 +000000105 000183038 000195926 D|069912899 005019052 +000000105 000186391 000197854 D|003284711 015958714 +000000105 000206931 000204550 D|061784189 082133744 +000000105 000230480 000215604 D|076342545 040266961 +000000105 000272246 000334493 D|080911830 055275952 +000000105 000277891 000356726 D|059843472 047566631 +000000105 000296739 000360931 D|048467125 026397049 +000000105 000304054 000364383 D|081179779 020120214 +000000105 000311746 000388222 D|072582038 016197320 +000000105 000411879 000389105 D|037664853 051709602 +000000105 000451817 000408274 D|000511668 063981481 +000000105 000461170 000427818 D|023414684 068710275 +000000105 000521299 000452731 D|042499154 018131357 +000000105 000527460 000561435 D|016606753 031826254 +000000105 000542491 000564313 D|046578632 036506424 +000000105 000555827 000569620 D|002693999 010921803 +000000105 000559191 000572111 D|060967879 049581163 +000000105 000592646 000575068 D|069286542 024320048 +000000105 000605942 000587716 D|044709460 025094112 +000000105 000612767 000603957 D|000386017 058913481 +000000105 000616080 000609052 D|097488669 047134453 +000000105 000616361 000634604 D|000771281 097954043 +000000105 000645943 000638021 D|056682549 080980981 +000000105 000649916 000670186 D|018756205 023076154 +000000105 000683293 000697156 D|068453794 007531840 +000000105 000686278 000717761 D|052437295 013264750 +000000105 000714316 000729747 D|030338072 028285099 +000000105 000749904 000758725 D|075666272 034040186 +000000105 000758636 000759195 D|082234489 078432245 +000000105 000775105 000786709 D|098075495 046125203 +000000105 000779691 000854918 D|071727967 031673046 +000000105 000804063 000855960 D|073355348 038919229 +000000105 000810125 000859330 D|036513165 057552230 +000000105 000883140 000868034 D|065857697 051050179 +000000105 000899517 000906544 D|088973636 097932083 +000000105 000908967 000909508 D|023772248 007944736 +000000105 000919976 000910862 D|001235435 038113117 +000000105 000930314 000916055 D|054308055 049255861 +000000105 000945640 000930905 D|063742011 008155782 +000000105 000976674 000962156 D|017976500 033452847 +000000106 000024473 000012970 D|030172427 033643196 +000000106 000030299 000016379 D|040854388 006500552 +000000106 000043417 000019300 D|001430319 015303877 +000000106 000064656 000072174 D|077016256 048503793 +000000106 000068054 000075517 D|085070851 001351503 +000000106 000146390 000087727 D|057286302 081060891 +000000106 000160791 000123446 D|055679981 080432259 +000000106 000165774 000146348 D|046055279 003392138 +000000106 000291878 000163783 D|006811827 090984401 +000000106 000309605 000173125 D|086678628 010550906 +000000106 000318483 000235858 D|043613619 093393264 +000000106 000325032 000296824 D|095031220 032032964 +000000106 000346480 000306155 D|088499325 006283564 +000000106 000347965 000342969 D|020695692 049994764 +000000106 000385556 000360029 D|033990819 047222049 +000000106 000404554 000362990 D|035496907 015116702 +000000106 000407856 000388372 D|057771421 098779354 +000000106 000409033 000397911 D|000824624 092707569 +000000106 000428074 000431348 D|019630445 065028159 +000000106 000429900 000461496 D|058541938 087452231 +000000106 000443917 000471993 D|005185250 012536844 +000000106 000457275 000474986 D|051878142 016687352 +000000106 000482851 000501601 D|006700553 088167757 +000000106 000493651 000514368 D|050468020 091835206 +000000106 000548937 000522873 D|003191534 056706285 +000000106 000556716 000576523 D|047512162 018444021 +000000106 000578478 000597193 D|056132242 073195398 +000000106 000636045 000603365 D|040308328 060696271 +000000106 000645024 000645637 D|027912647 047081463 +000000106 000651995 000678176 D|047496418 093242309 +000000106 000670165 000679570 D|077401939 075195333 +000000106 000710374 000682599 D|007608031 022489939 +000000106 000712708 000697912 D|083729309 023608268 +000000106 000725683 000718608 D|053063876 045194960 +000000106 000739453 000732734 D|026001246 075023505 +000000106 000765823 000737619 D|020835886 012356866 +000000106 000786067 000742439 D|076140943 071873329 +000000106 000786584 000743101 D|043079257 008143169 +000000106 000800089 000796895 D|057187282 037804940 +000000106 000826634 000798002 D|028550835 018066771 +000000106 000834929 000800884 D|010869838 010188146 +000000106 000836243 000802647 D|061282524 072489083 +000000106 000858507 000805881 D|080930583 033746360 +000000106 000898465 000852809 D|065021608 030607019 +000000106 000902618 000865249 D|008949276 022894232 +000000106 000907803 000887192 D|084458246 057738597 +000000106 000912939 000919026 D|029580665 068323368 +000000106 000913003 000937629 D|029166392 080551033 +000000106 000977588 000952997 D|068536014 046360580 +000000106 000978679 000956820 D|080934200 002957236 +000000107 000020466 000000948 D|018561961 054657435 +000000107 000023512 000016182 D|026378941 070590183 +000000107 000040262 000023377 D|020916876 010648345 +000000107 000108241 000101065 D|046461352 006588700 +000000107 000121459 000133319 D|066192698 034700763 +000000107 000137998 000138442 D|065454074 051862671 +000000107 000140674 000158130 D|030356182 023565395 +000000107 000145011 000162243 D|054140044 042346573 +000000107 000146817 000215411 D|081969598 072269641 +000000107 000187253 000228657 D|075555015 034757706 +000000107 000219353 000238592 D|091231443 043515551 +000000107 000273058 000258050 D|096376310 053523680 +000000107 000276026 000264961 D|050914343 073952720 +000000107 000279417 000287000 D|084953753 018388268 +000000107 000314897 000290026 D|099354826 011624903 +000000107 000335373 000302863 D|094272797 078308229 +000000107 000335760 000305663 D|079576518 027972309 +000000107 000343293 000308994 D|087635936 048129940 +000000107 000365038 000353032 D|073284636 054963430 +000000107 000376909 000368805 D|060638814 030796329 +000000107 000407911 000383146 D|079400637 059187157 +000000107 000434500 000405966 D|022686319 040781581 +000000107 000444832 000411273 D|066553575 026001088 +000000107 000470830 000437637 D|081125602 090381272 +000000107 000517298 000461370 D|074962210 070420162 +000000107 000526576 000496570 D|062705518 004733647 +000000107 000540941 000528209 D|097364115 009231662 +000000107 000585128 000556028 D|009753007 043269386 +000000107 000595569 000590255 D|042833384 096457928 +000000107 000604912 000598030 D|093083032 084483048 +000000107 000615860 000598657 D|095959298 043736012 +000000107 000623306 000600560 D|093327476 079215984 +000000107 000635822 000602155 D|033456975 097328237 +000000107 000649854 000602962 D|037160929 023476151 +000000107 000650576 000630977 D|058220375 060405893 +000000107 000689085 000648774 D|062825678 078959156 +000000107 000735279 000663469 D|086952166 011446916 +000000107 000744743 000673257 D|005944675 028905530 +000000107 000769946 000708048 D|035395519 066773921 +000000107 000793063 000739899 D|032758164 030350765 +000000107 000797762 000774440 D|074876340 070917772 +000000107 000808549 000784492 D|006562684 039763610 +000000107 000825886 000790589 D|096053671 075619352 +000000107 000830888 000798514 D|021623657 048999224 +000000107 000839001 000808841 D|042626466 021262416 +000000107 000843419 000830381 D|079625156 007290502 +000000107 000912571 000872894 D|088512790 090659440 +000000107 000917042 000925048 D|079141469 091494669 +000000107 000943221 000951390 D|005532633 087140763 +000000107 000995557 000968449 D|041177533 092687363 +000000108 000027042 000029148 D|080526988 005371195 +000000108 000057894 000059635 D|019018757 070239976 +000000108 000070752 000075393 D|088521913 039274969 +000000108 000080277 000091008 D|054563718 016737390 +000000108 000087698 000133293 D|026577738 031935707 +000000108 000091905 000151776 D|085846832 096558962 +000000108 000092985 000177953 D|008723794 020398810 +000000108 000100999 000183905 D|094232785 097864386 +000000108 000121978 000192414 D|053616268 077171438 +000000108 000129767 000228784 D|021874139 064274997 +000000108 000153098 000233046 D|041093576 007164174 +000000108 000164333 000235904 D|027093746 030274262 +000000108 000227498 000243418 D|025900166 072821767 +000000108 000234184 000333702 D|043387901 062880870 +000000108 000257192 000398883 D|004192452 033689475 +000000108 000258998 000405267 D|059185004 040649866 +000000108 000277909 000423502 D|060949426 039935478 +000000108 000308291 000430422 D|023051706 000076192 +000000108 000454310 000433602 D|037980368 044412457 +000000108 000460714 000443474 D|012151440 061983285 +000000108 000473322 000445196 D|074826139 082422446 +000000108 000475574 000447820 D|099804321 064417117 +000000108 000548493 000447955 D|084694213 090490395 +000000108 000556572 000497697 D|085515262 013921492 +000000108 000567785 000557438 D|039803767 034797544 +000000108 000581914 000576591 D|032275315 007258061 +000000108 000605161 000593570 D|036529970 004051852 +000000108 000626821 000602367 D|040539508 054814187 +000000108 000636593 000604963 D|083444380 075683379 +000000108 000641282 000606279 D|021662166 082006138 +000000108 000646487 000636384 D|091448538 064769119 +000000108 000652887 000652170 D|097735679 016802968 +000000108 000660204 000652519 D|054857975 020217820 +000000108 000724117 000654695 D|089194409 098864963 +000000108 000766188 000684800 D|061656911 098351555 +000000108 000801263 000700262 D|061596849 092015209 +000000108 000843951 000727884 D|071914355 057873795 +000000108 000853464 000734527 D|030695467 023135877 +000000108 000868572 000765179 D|045958115 079348477 +000000108 000870771 000793354 D|069987544 041430441 +000000108 000872942 000815770 D|047293745 042358603 +000000108 000885306 000817467 D|093832056 044308672 +000000108 000886679 000879320 D|036241169 008542428 +000000108 000924332 000891833 D|090424392 018648804 +000000108 000931449 000913462 D|067593497 064605342 +000000108 000937691 000920976 D|052625022 061097840 +000000108 000941209 000943507 D|020594094 023579190 +000000108 000964192 000955778 D|018396824 017170743 +000000108 000979327 000972710 D|003782227 097314096 +000000108 000981505 000997523 D|042114662 093281793 +000000109 000005336 000000291 D|099753439 060395873 +000000109 000018414 000056182 D|058956637 022518506 +000000109 000042711 000073817 D|055184291 011695031 +000000109 000043095 000121569 D|038407846 041662307 +000000109 000089180 000149023 D|077848660 071482937 +000000109 000105234 000175697 D|041852903 022197416 +000000109 000120847 000175780 D|099000066 045162951 +000000109 000189492 000205830 D|017501745 018143612 +000000109 000195719 000213146 D|076001362 094382891 +000000109 000198974 000222511 D|084389829 073356511 +000000109 000199463 000244578 D|010695024 085212647 +000000109 000226708 000251256 D|029476702 068043578 +000000109 000262862 000296059 D|005582792 015413616 +000000109 000283176 000308786 D|042142196 050799861 +000000109 000302112 000339035 D|005839577 045095877 +000000109 000311371 000396151 D|097773372 028916532 +000000109 000332284 000398545 D|028637791 025264427 +000000109 000354190 000404012 D|019939100 019707731 +000000109 000357332 000409873 D|010829099 023727040 +000000109 000390046 000434544 D|030317723 057705336 +000000109 000393987 000454222 D|008054866 053648878 +000000109 000402047 000474248 D|057652466 036069663 +000000109 000405532 000491891 D|028920384 085675412 +000000109 000408092 000495383 D|004423655 063124196 +000000109 000409300 000523573 D|084195671 019837477 +000000109 000434925 000575805 D|092288865 000031805 +000000109 000435660 000597066 D|031751978 039606478 +000000109 000439815 000598589 D|023907442 060219147 +000000109 000450699 000609508 D|001356679 037495626 +000000109 000455948 000649528 D|091129468 002351974 +000000109 000474520 000658791 D|068179900 026610618 +000000109 000491665 000679851 D|007032562 015116329 +000000109 000504410 000695558 D|019829391 001601917 +000000109 000544322 000732973 D|075162443 045916756 +000000109 000579443 000758756 D|039023260 076288888 +000000109 000624473 000763117 D|076992835 004184271 +000000109 000628580 000775152 D|000826442 087837799 +000000109 000645769 000815328 D|090550070 086803876 +000000109 000646127 000837887 D|033716419 039814444 +000000109 000655872 000844973 D|035532610 058084659 +000000109 000677007 000862636 D|095500974 038228672 +000000109 000789288 000867586 D|052380844 057692692 +000000109 000852748 000872067 D|055533937 021338674 +000000109 000857859 000876104 D|019795193 020340174 +000000109 000865062 000901627 D|006599643 019782757 +000000109 000865831 000907888 D|041177131 031664357 +000000109 000886939 000909798 D|001501702 045136709 +000000109 000941154 000931672 D|086575706 088495047 +000000109 000943961 000968812 D|043470431 046973168 +000000109 000999228 000994102 D|057400286 068294270 +000000110 000000326 000023236 D|008150474 015264958 +000000110 000002826 000024453 D|086581041 033979872 +000000110 000008367 000032271 D|032037902 099336492 +000000110 000028821 000072998 D|071498240 008778390 +000000110 000067161 000076278 D|003636904 058237513 +000000110 000077910 000098065 D|004048602 023537802 +000000110 000091482 000146722 D|065448260 051115604 +000000110 000185481 000151591 D|056406942 062379605 +000000110 000191029 000160592 D|047367187 018124968 +000000110 000201347 000161356 D|097489137 041202169 +000000110 000206317 000161859 D|009829576 089506584 +000000110 000212295 000207845 D|081775568 086583090 +000000110 000215498 000209196 D|063288730 037035609 +000000110 000226415 000218108 D|005574451 047887839 +000000110 000229526 000227086 D|055694229 007602402 +000000110 000232996 000252085 D|025503981 078472408 +000000110 000252964 000265501 D|045147545 090755447 +000000110 000288076 000276750 D|047148548 021009847 +000000110 000356538 000283760 D|067265905 072535915 +000000110 000380894 000297393 D|081866134 035229057 +000000110 000385506 000302958 D|050373728 088094320 +000000110 000385700 000361932 D|094234198 010889042 +000000110 000390731 000368465 D|095842153 008961861 +000000110 000401491 000377241 D|032910207 087451549 +000000110 000440894 000379909 D|037942715 070544960 +000000110 000461535 000393857 D|091903418 039749526 +000000110 000513421 000408149 D|025230042 035339494 +000000110 000523488 000413824 D|080975039 065994779 +000000110 000566102 000429288 D|004388207 013638761 +000000110 000567170 000466836 D|038224153 027236283 +000000110 000591111 000500370 D|031020645 075820853 +000000110 000605149 000548819 D|067200741 026638681 +000000110 000617729 000580290 D|075283747 042283196 +000000110 000627925 000609016 D|022245989 094647896 +000000110 000630734 000613839 D|038440011 046527331 +000000110 000648315 000614359 D|016220024 030402203 +000000110 000654805 000616677 D|010012779 059153591 +000000110 000659601 000616810 D|072009691 071013975 +000000110 000660151 000643234 D|083125104 070413886 +000000110 000683996 000689933 D|013673200 084799524 +000000110 000699777 000691466 D|029161322 090857544 +000000110 000739938 000693556 D|027822103 095060212 +000000110 000764296 000761303 D|036890408 074232092 +000000110 000805268 000910110 D|071119492 047371573 +000000110 000842034 000914355 D|040797119 003347253 +000000110 000853271 000936096 D|092697372 046728370 +000000110 000928819 000952452 D|009464812 088671784 +000000110 000948869 000987365 D|070085954 047720007 +000000110 000951306 000993737 D|067591884 085776859 +000000110 000963837 000994857 D|041908081 020022679 +000000111 000009314 000040385 D|047062867 043423469 +000000111 000011955 000043816 D|059330442 066889342 +000000111 000017566 000044319 D|006938545 011664106 +000000111 000050908 000053029 D|006213862 064496417 +000000111 000062975 000087498 D|039946339 079640066 +000000111 000066113 000090785 D|095931818 052109450 +000000111 000078860 000100372 D|036952486 096079818 +000000111 000081215 000108039 D|067756900 071396432 +000000111 000142548 000111325 D|069913331 080549091 +000000111 000143271 000117880 D|099109550 017076704 +000000111 000191826 000124210 D|069964123 056251055 +000000111 000209678 000182910 D|040084032 072673641 +000000111 000255433 000193550 D|074067487 064072733 +000000111 000308452 000212832 D|036316633 036871080 +000000111 000309003 000224518 D|015069581 064361085 +000000111 000326367 000265565 D|085125769 038736796 +000000111 000331962 000285611 D|076178623 088453207 +000000111 000339551 000285857 D|003840249 069800314 +000000111 000343088 000287897 D|025939176 088571613 +000000111 000376091 000374359 D|095197286 095356457 +000000111 000380586 000386838 D|056219547 031079027 +000000111 000396774 000435447 D|064056689 012349642 +000000111 000485337 000438771 D|060259847 041988215 +000000111 000487771 000448098 D|076202567 044047106 +000000111 000492771 000470558 D|020467729 067551940 +000000111 000528928 000502737 D|035240843 093951147 +000000111 000546674 000504699 D|002864764 075116454 +000000111 000560303 000514693 D|099644808 088579586 +000000111 000602240 000524777 D|090246573 057273651 +000000111 000621099 000526092 D|070974665 057755059 +000000111 000641249 000615703 D|007838397 082360901 +000000111 000649458 000677568 D|072429047 055896570 +000000111 000652656 000699230 D|021408163 039340045 +000000111 000687414 000706756 D|018474333 000506135 +000000111 000691576 000759798 D|007984563 076653698 +000000111 000716853 000775139 D|054580073 014392015 +000000111 000724753 000782749 D|053803093 096163203 +000000111 000744552 000788076 D|053130933 001284685 +000000111 000777374 000810808 D|018557126 045893386 +000000111 000794585 000834640 D|014053421 058421559 +000000111 000811860 000836590 D|002630026 049996111 +000000111 000823937 000850467 D|009324899 075835320 +000000111 000836437 000859121 D|068294715 065578810 +000000111 000845321 000864918 D|069028304 089923782 +000000111 000847454 000865128 D|040373663 086836357 +000000111 000865128 000870387 D|017592237 064584405 +000000111 000899270 000924585 D|050987839 026196690 +000000111 000930194 000962099 D|081271084 054712152 +000000111 000950412 000978779 D|065827349 080183044 +000000111 000959748 000979920 D|057105909 031343176 +000000112 000003598 000047956 D|004877259 062387943 +000000112 000006639 000107615 D|081056187 014310534 +000000112 000008244 000119448 D|053399456 081557873 +000000112 000010272 000154810 D|035451334 068568052 +000000112 000057048 000217653 D|053026729 006361793 +000000112 000061473 000257161 D|088353967 027788377 +000000112 000068257 000260254 D|090343957 063108922 +000000112 000076894 000281690 D|094093699 096147623 +000000112 000080895 000331736 D|082815016 049249741 +000000112 000124246 000338403 D|047505564 094272906 +000000112 000125496 000408606 D|019909776 034782017 +000000112 000127939 000431102 D|025836530 088897313 +000000112 000133824 000434991 D|024880075 033662379 +000000112 000155637 000444119 D|097590174 002632960 +000000112 000157431 000474245 D|061512404 043817596 +000000112 000197323 000476522 D|008950088 094726203 +000000112 000238133 000485578 D|085123169 043642897 +000000112 000247490 000488391 D|057440754 070589944 +000000112 000261062 000500888 D|086088401 096864929 +000000112 000263686 000516138 D|067316626 077959186 +000000112 000265923 000551287 D|039668660 063579741 +000000112 000330579 000579685 D|017826130 069260800 +000000112 000363131 000600946 D|009242873 050339957 +000000112 000366846 000639803 D|022587104 010910162 +000000112 000399519 000681915 D|059970851 093396283 +000000112 000415427 000686708 D|007054049 094011695 +000000112 000441814 000724687 D|058645932 000086159 +000000112 000493302 000733333 D|037920133 086490732 +000000112 000527913 000752699 D|070330308 003484038 +000000112 000548659 000754241 D|096991034 099231914 +000000112 000562951 000762084 D|044801026 016913122 +000000112 000565932 000763142 D|035713399 095059004 +000000112 000616055 000764118 D|066635523 093055724 +000000112 000636168 000774946 D|011004563 000117510 +000000112 000646893 000781714 D|026455215 079578251 +000000112 000651937 000826380 D|088708490 072319422 +000000112 000711796 000837113 D|096581775 013397241 +000000112 000785585 000837573 D|092408772 042258504 +000000112 000800297 000837937 D|020477679 097107794 +000000112 000812227 000861886 D|081934307 060438109 +000000112 000849101 000882894 D|090834643 098967711 +000000112 000855188 000885656 D|056908766 092443074 +000000112 000880555 000892950 D|043457955 007087803 +000000112 000895761 000930940 D|095573264 029843350 +000000112 000896241 000935711 D|081478211 058181658 +000000112 000924230 000946497 D|089432956 066178518 +000000112 000929240 000959565 D|049939795 051488526 +000000112 000939556 000960950 D|068846785 005030864 +000000112 000957083 000987786 D|087957757 092981717 +000000112 000961777 000994501 D|071445335 094472474 +000000113 000035103 000003845 D|025878838 053776789 +000000113 000053060 000040863 D|069814652 036767543 +000000113 000061664 000045970 D|019936076 046884850 +000000113 000066823 000066427 D|019539107 010527888 +000000113 000086646 000077116 D|055074146 095750237 +000000113 000148171 000077377 D|078287984 033629641 +000000113 000161305 000126305 D|094154074 054561577 +000000113 000161941 000152635 D|073373880 020579346 +000000113 000162379 000185227 D|013951701 031018500 +000000113 000164829 000195173 D|001610981 088567918 +000000113 000195454 000230269 D|012134623 011838490 +000000113 000208493 000243160 D|090944878 020932314 +000000113 000239032 000246906 D|018461248 086723586 +000000113 000246945 000266712 D|027172098 085425535 +000000113 000258217 000276497 D|090377102 061296154 +000000113 000291520 000309100 D|003320800 041721105 +000000113 000294650 000310159 D|007971385 062300716 +000000113 000357831 000392185 D|070927715 018612362 +000000113 000382103 000450694 D|079149045 014486496 +000000113 000419779 000451035 D|045231592 043542755 +000000113 000453418 000471704 D|081242620 028556038 +000000113 000460048 000472915 D|047482472 014897464 +000000113 000471393 000615364 D|068938408 070546821 +000000113 000488553 000630711 D|045219730 005300821 +000000113 000550373 000652970 D|020090067 094089133 +000000113 000573018 000695268 D|023818302 041116146 +000000113 000589506 000703572 D|036680510 069922502 +000000113 000592673 000708469 D|080116644 071567814 +000000113 000596585 000708789 D|006879971 088590874 +000000113 000597241 000709142 D|067383448 012893231 +000000113 000602037 000725916 D|023928298 020359757 +000000113 000644352 000731888 D|049738237 086990117 +000000113 000653418 000747649 D|055899504 028894148 +000000113 000660585 000753479 D|050303349 069247853 +000000113 000673105 000757067 D|091773004 003963362 +000000113 000675548 000775853 D|035337116 008374349 +000000113 000679853 000791668 D|041505175 000868653 +000000113 000735113 000810024 D|081600056 008792472 +000000113 000738498 000817586 D|007875755 050272602 +000000113 000748903 000818299 D|037340119 097369864 +000000113 000828874 000859611 D|026250308 002995675 +000000113 000863998 000881455 D|071317217 015751357 +000000113 000866462 000896861 D|084583751 018844937 +000000113 000870602 000901616 D|097710668 027803015 +000000113 000879743 000905678 D|055487583 076763070 +000000113 000917242 000933906 D|070037576 050124360 +000000113 000919560 000959630 D|051242305 014859959 +000000113 000926910 000960942 D|020546218 026264649 +000000113 000958708 000963429 D|030451157 074932704 +000000113 000990444 000991983 D|009979730 087057923 +000000114 000000841 000000625 D|070131881 086530691 +000000114 000044055 000003454 D|082213037 083660953 +000000114 000048546 000014053 D|016471417 054835496 +000000114 000063552 000020955 D|072346878 000278382 +000000114 000071261 000061174 D|051402436 004137912 +000000114 000075863 000070466 D|012108607 048100653 +000000114 000083729 000149166 D|051428026 079511592 +000000114 000093120 000174766 D|064153956 017880395 +000000114 000105572 000192576 D|062289307 046880403 +000000114 000140178 000193888 D|007579890 012340346 +000000114 000142065 000229828 D|022566857 048996592 +000000114 000143811 000249509 D|000756428 051260806 +000000114 000156930 000261816 D|074388358 020487950 +000000114 000170043 000279870 D|061355895 030668185 +000000114 000188921 000293643 D|075315292 054848214 +000000114 000197115 000306085 D|088576220 068771788 +000000114 000213111 000329830 D|051770393 030791806 +000000114 000229745 000333686 D|090958601 097770157 +000000114 000261690 000390239 D|028057695 041814300 +000000114 000303433 000399313 D|087002908 006296690 +000000114 000323877 000426485 D|002965286 034739357 +000000114 000386235 000436576 D|046852323 080082458 +000000114 000389095 000449273 D|001433837 030000774 +000000114 000399053 000457371 D|080682494 058305247 +000000114 000404417 000481936 D|041916002 021027500 +000000114 000406980 000490576 D|054252210 057351424 +000000114 000455651 000499482 D|028999722 063527365 +000000114 000478462 000502682 D|035607541 089146657 +000000114 000486994 000521203 D|030283591 011475191 +000000114 000502690 000521526 D|052243773 025089661 +000000114 000517421 000557537 D|015161445 061876667 +000000114 000520042 000572317 D|091856969 055558526 +000000114 000528785 000591665 D|076792619 005410066 +000000114 000535137 000608450 D|065746974 096008309 +000000114 000548147 000630337 D|087265708 047517356 +000000114 000585227 000659818 D|094355039 063302763 +000000114 000620952 000677304 D|006853019 036293789 +000000114 000649192 000757392 D|041560673 097107017 +000000114 000701512 000792202 D|020616109 044478985 +000000114 000741720 000805575 D|099515951 078010599 +000000114 000784849 000824007 D|005025274 087199712 +000000114 000787743 000833792 D|046337954 069358718 +000000114 000793036 000846414 D|018852329 010543876 +000000114 000828121 000848451 D|007846009 082759272 +000000114 000844200 000861337 D|087856987 008690636 +000000114 000874249 000867039 D|047481622 034673990 +000000114 000920702 000883796 D|092852783 090751142 +000000114 000945821 000896079 D|096022679 011820884 +000000114 000965229 000908541 D|016694989 020120610 +000000114 000966904 000927523 D|074545744 012282505 +000000115 000011487 000011604 D|019293911 001430652 +000000115 000019008 000058407 D|042642876 021154993 +000000115 000070809 000080675 D|014138125 065800965 +000000115 000072801 000115962 D|027393711 078494769 +000000115 000074230 000180574 D|021080983 086754065 +000000115 000108336 000203242 D|084674864 033023615 +000000115 000112225 000215570 D|057165895 060370889 +000000115 000115854 000232453 D|060478987 019681401 +000000115 000119171 000281099 D|043812066 057027836 +000000115 000120439 000290326 D|098653318 076647679 +000000115 000121170 000295194 D|078746935 070659824 +000000115 000129678 000314853 D|090847435 038193248 +000000115 000143646 000352695 D|049220417 029264185 +000000115 000153403 000364041 D|088333904 070591771 +000000115 000177690 000370255 D|054849551 071476374 +000000115 000189267 000372321 D|069602215 051558281 +000000115 000196582 000378139 D|016643215 082810142 +000000115 000212893 000381917 D|045064332 050472398 +000000115 000216786 000405803 D|067766762 034721698 +000000115 000241112 000424401 D|071707868 095569768 +000000115 000243039 000513823 D|096005117 097246280 +000000115 000332107 000518665 D|012160235 059194191 +000000115 000371433 000545252 D|019448673 069457248 +000000115 000372217 000558421 D|040550080 088792360 +000000115 000384548 000578620 D|054534718 024444929 +000000115 000388428 000606574 D|060640599 039707269 +000000115 000429562 000622719 D|068624070 093668196 +000000115 000466442 000661360 D|088878706 088450250 +000000115 000482604 000663302 D|003311900 009125722 +000000115 000488560 000672991 D|003695062 042552234 +000000115 000505206 000687720 D|014947797 032408004 +000000115 000522118 000690355 D|001977362 074707575 +000000115 000529972 000702375 D|001075567 085307220 +000000115 000551337 000709346 D|002565127 005782833 +000000115 000588074 000715900 D|041929280 081089058 +000000115 000672380 000719989 D|065137515 070823436 +000000115 000684684 000732815 D|015869863 012499910 +000000115 000733551 000739185 D|038694098 017102366 +000000115 000753583 000763802 D|058022388 050999801 +000000115 000807943 000775791 D|077442262 057255150 +000000115 000815778 000778590 D|086909633 098312048 +000000115 000852121 000796873 D|037762549 093209646 +000000115 000856742 000863823 D|055234563 045337749 +000000115 000877228 000865524 D|073177419 086105087 +000000115 000926164 000904036 D|030116319 010916735 +000000115 000932461 000958048 D|043803132 087793522 +000000115 000935712 000959519 D|016496058 045656831 +000000115 000937400 000978870 D|045156192 076971497 +000000115 000972437 000982249 D|092315803 099529835 +000000115 000995194 000995307 D|092732818 029272329 +000000116 000013700 000003489 D|044714284 067592591 +000000116 000028098 000049020 D|036926956 098602821 +000000116 000041789 000074632 D|046559214 050542589 +000000116 000074331 000117030 D|089732485 050761228 +000000116 000074390 000149152 D|062503170 054334346 +000000116 000079203 000160633 D|079530699 034376101 +000000116 000163298 000170350 D|093658822 029325913 +000000116 000183236 000216511 D|004692561 062270321 +000000116 000193389 000272712 D|026615959 083617058 +000000116 000199824 000286455 D|051358903 037712981 +000000116 000201548 000292681 D|069242484 019158015 +000000116 000214337 000298387 D|022434914 072822152 +000000116 000224816 000324930 D|084621017 006132542 +000000116 000233511 000331248 D|020499750 043583686 +000000116 000239297 000331509 D|042860919 077332054 +000000116 000243819 000346612 D|010350484 081888159 +000000116 000293403 000350133 D|054952075 020143828 +000000116 000323073 000354663 D|078584048 032948431 +000000116 000380630 000355864 D|078053622 067482675 +000000116 000389481 000356906 D|021567543 054659023 +000000116 000400068 000421938 D|029649658 088176661 +000000116 000425300 000437876 D|097491227 011475500 +000000116 000432901 000450986 D|077034357 043643041 +000000116 000462219 000473015 D|075378905 088471510 +000000116 000495951 000486176 D|076984091 037791613 +000000116 000590921 000513837 D|066248337 005288074 +000000116 000602864 000517329 D|022018270 062732136 +000000116 000619277 000519416 D|086779247 092490581 +000000116 000653790 000522217 D|033423215 059096039 +000000116 000666740 000548435 D|032728773 026978963 +000000116 000669372 000550215 D|016403485 033869388 +000000116 000672012 000558718 D|029154026 002375204 +000000116 000694213 000569311 D|087076523 054244788 +000000116 000707681 000569627 D|088788407 093229553 +000000116 000716609 000633092 D|011837766 020515515 +000000116 000735527 000644985 D|023639546 049184638 +000000116 000742965 000691509 D|015906242 042991179 +000000116 000772542 000699174 D|003209040 086828364 +000000116 000777612 000730974 D|095064085 002364669 +000000116 000814619 000736226 D|036083844 051925977 +000000116 000816394 000752461 D|044680169 087999172 +000000116 000855267 000765106 D|051220691 093693182 +000000116 000863502 000795097 D|097566575 038273037 +000000116 000868523 000829340 D|077307104 023451486 +000000116 000870193 000874818 D|034024557 090711042 +000000116 000910601 000914207 D|042799001 067911627 +000000116 000937089 000938661 D|004589393 031849175 +000000116 000948788 000960930 D|044016385 094859040 +000000116 000948933 000961959 D|081963961 089812093 +000000116 000998290 000981721 D|064281039 007346512 +000000117 000040726 000013171 D|044324032 074204701 +000000117 000067300 000019595 D|046940636 086868015 +000000117 000071269 000039190 D|060120377 047063547 +000000117 000071453 000076129 D|055876884 067045830 +000000117 000106557 000082313 D|079015810 028927771 +000000117 000123472 000097558 D|055559487 017808527 +000000117 000138150 000107122 D|074981109 036083873 +000000117 000146378 000110693 D|037582823 042745849 +000000117 000213470 000115234 D|007622850 026044552 +000000117 000216660 000173326 D|091632332 036026499 +000000117 000237302 000186079 D|088687404 003119630 +000000117 000259950 000211891 D|085151568 095514075 +000000117 000265973 000218464 D|086802480 066990683 +000000117 000291267 000222193 D|060564481 090001824 +000000117 000294297 000227051 D|003977735 033531835 +000000117 000294743 000236496 D|089031794 042116880 +000000117 000302941 000239778 D|038567316 045899477 +000000117 000324513 000250400 D|029346793 092918598 +000000117 000342612 000266516 D|047068819 091142372 +000000117 000343870 000328605 D|031643780 023000771 +000000117 000349252 000362102 D|072360097 060013171 +000000117 000357529 000367660 D|018495263 097283054 +000000117 000363716 000408176 D|036508938 032440988 +000000117 000373825 000473450 D|002809829 019047056 +000000117 000390671 000478548 D|093730752 081023702 +000000117 000428743 000490793 D|004170225 013906246 +000000117 000449106 000571541 D|064402044 098634950 +000000117 000450218 000580149 D|013337158 001817598 +000000117 000462800 000588685 D|014608382 054924711 +000000117 000472603 000589202 D|086348095 012694321 +000000117 000474384 000629088 D|024959486 000737313 +000000117 000482480 000629492 D|042747916 027383943 +000000117 000488638 000660541 D|092168663 007684639 +000000117 000576010 000680022 D|081010024 055695706 +000000117 000613416 000688243 D|085307336 070165674 +000000117 000629971 000690024 D|073733072 077329264 +000000117 000645627 000751161 D|037476308 002811368 +000000117 000667089 000754492 D|047802108 052872917 +000000117 000745016 000755024 D|030365745 076099266 +000000117 000755127 000827316 D|043974420 005745561 +000000117 000756469 000828950 D|083394764 048424520 +000000117 000775405 000830072 D|068326283 019452788 +000000117 000844979 000850813 D|054665668 030482798 +000000117 000859874 000853208 D|061643303 091425249 +000000117 000874937 000890787 D|057974913 082172100 +000000117 000879155 000892130 D|007986663 086957233 +000000117 000882149 000920083 D|090988424 022448581 +000000117 000893767 000923884 D|095701242 064929460 +000000117 000964983 000929679 D|009463342 010677119 +000000117 000976523 000984009 D|056095784 022482643 +000000118 000034614 000008433 D|057472471 019317180 +000000118 000046043 000078534 D|080766783 091154665 +000000118 000049483 000135003 D|079222047 009672431 +000000118 000081086 000188415 D|007980318 047570794 +000000118 000160393 000199709 D|089251292 062782162 +000000118 000183763 000203532 D|078795599 038394205 +000000118 000237214 000211327 D|052912799 020883189 +000000118 000250024 000241275 D|063166922 016646012 +000000118 000303023 000246547 D|074280441 057004290 +000000118 000337384 000262169 D|081880770 077381970 +000000118 000355332 000294217 D|088185187 064558953 +000000118 000373374 000340751 D|061343505 073754723 +000000118 000385590 000381361 D|070202911 081996140 +000000118 000388276 000382148 D|014633543 085348015 +000000118 000400998 000405478 D|090434588 062007914 +000000118 000422377 000452388 D|035712973 046280921 +000000118 000430083 000466847 D|056496293 070764183 +000000118 000443296 000499195 D|066271239 060164346 +000000118 000443812 000512309 D|063126985 013405721 +000000118 000449846 000518011 D|093066611 065318237 +000000118 000450293 000524816 D|095002014 063371744 +000000118 000456537 000527544 D|087542412 011117527 +000000118 000478732 000553644 D|026920996 028470304 +000000118 000501447 000568205 D|030303592 023729937 +000000118 000527153 000606933 D|005721734 092906792 +000000118 000545865 000607042 D|013526548 001391680 +000000118 000559181 000609241 D|055956075 096424251 +000000118 000569902 000615004 D|094972296 095384189 +000000118 000600041 000626699 D|047693232 020099941 +000000118 000602952 000633990 D|054938805 018565104 +000000118 000609549 000643754 D|085398642 064679632 +000000118 000613176 000645016 D|042756021 063839692 +000000118 000623356 000653481 D|035224168 021687229 +000000118 000636511 000669564 D|048641227 045957604 +000000118 000666357 000689892 D|092039484 078048895 +000000118 000675666 000729293 D|097967935 066746030 +000000118 000701181 000764556 D|047233900 049950404 +000000118 000710610 000790818 D|034000237 086733120 +000000118 000764745 000823628 D|047492142 092394810 +000000118 000767672 000825985 D|073720726 015654101 +000000118 000816630 000835653 D|056838039 089664195 +000000118 000841676 000844784 D|075532815 021344805 +000000118 000848067 000880182 D|019873047 096202063 +000000118 000848106 000882931 D|053735126 010562633 +000000118 000871494 000887340 D|040567473 035343452 +000000118 000913738 000940723 D|020375491 091063524 +000000118 000917300 000957863 D|022440070 010120549 +000000118 000958609 000975681 D|015014221 061596868 +000000118 000962349 000976745 D|076210124 047367546 +000000118 000980037 000983993 D|026394720 004346812 +000000119 000007835 000007127 D|013482154 001804666 +000000119 000043627 000020518 D|034214092 087775462 +000000119 000046762 000022993 D|051359705 071012102 +000000119 000065939 000057983 D|089542182 098663097 +000000119 000074417 000061794 D|069612689 019924849 +000000119 000096392 000063860 D|053130473 055482604 +000000119 000131224 000097968 D|010881144 011187620 +000000119 000139848 000114371 D|007432813 097446735 +000000119 000145300 000126271 D|049010929 041436688 +000000119 000166337 000169093 D|090281267 013870678 +000000119 000187612 000169308 D|077436290 027085709 +000000119 000202164 000195634 D|049228733 026551608 +000000119 000251794 000198674 D|089993596 000476640 +000000119 000269522 000215365 D|040336668 076497109 +000000119 000276450 000218744 D|015336394 082748841 +000000119 000279014 000273536 D|099298610 003667353 +000000119 000288125 000275513 D|063004010 016306673 +000000119 000302653 000276921 D|014240812 078922110 +000000119 000324096 000283822 D|039166707 090739992 +000000119 000326697 000285885 D|026768147 000445825 +000000119 000434644 000311133 D|014040268 058272322 +000000119 000443946 000331772 D|065593245 081836916 +000000119 000449013 000343198 D|007429821 075917397 +000000119 000449773 000376051 D|017575369 085154417 +000000119 000452748 000379192 D|035783615 028193209 +000000119 000486866 000387449 D|038655944 009092201 +000000119 000494431 000398708 D|092180156 099123700 +000000119 000583097 000426586 D|083482451 066105127 +000000119 000588856 000433876 D|080468639 048833824 +000000119 000590922 000439311 D|090990568 005399253 +000000119 000592000 000452928 D|043715436 047979079 +000000119 000606912 000468190 D|043586844 095857727 +000000119 000612391 000491609 D|017343966 024385688 +000000119 000617007 000503565 D|058843057 009135935 +000000119 000640487 000519328 D|006009892 058892183 +000000119 000645647 000524489 D|038034906 057291903 +000000119 000676532 000541161 D|047582373 011762338 +000000119 000685939 000577719 D|079747918 017515915 +000000119 000700586 000655608 D|015935418 060583695 +000000119 000751027 000692195 D|008777359 081469275 +000000119 000755749 000713233 D|092126463 068516598 +000000119 000766164 000735197 D|040888498 086678177 +000000119 000767686 000761489 D|014186810 027756733 +000000119 000792336 000764605 D|021520193 044674297 +000000119 000818066 000766316 D|068848730 039286719 +000000119 000822635 000772408 D|070137810 039368890 +000000119 000858809 000841409 D|074826240 095603506 +000000119 000882652 000889141 D|006047647 004762649 +000000119 000924912 000937084 D|011022895 069009380 +000000119 000951717 000976504 D|008444282 047434731 +000000120 000005619 000007251 D|033085762 042633038 +000000120 000050207 000008793 D|071407066 002845584 +000000120 000055227 000043482 D|019438311 051483965 +000000120 000072763 000062742 D|072338527 047563517 +000000120 000077875 000096280 D|038703008 093595031 +000000120 000096198 000112851 D|095139752 050941116 +000000120 000096918 000123641 D|099377126 068769452 +000000120 000113512 000127659 D|034345020 085170401 +000000120 000125760 000130928 D|085192163 084934436 +000000120 000131221 000137360 D|088131291 055375002 +000000120 000132330 000148192 D|053781829 020936220 +000000120 000167225 000213937 D|096218126 099222340 +000000120 000191045 000221094 D|076346748 015450837 +000000120 000192570 000258219 D|028457987 066523206 +000000120 000194946 000267797 D|096626739 086069835 +000000120 000208888 000282558 D|023702094 098983298 +000000120 000213329 000322366 D|000412997 001281164 +000000120 000213897 000340367 D|063603594 025525500 +000000120 000218016 000350442 D|089149190 046523975 +000000120 000221824 000364194 D|099792356 002100586 +000000120 000235096 000419720 D|053619055 028405708 +000000120 000255001 000459678 D|070912215 088127185 +000000120 000273359 000462431 D|024783308 037987063 +000000120 000337520 000470593 D|058714319 097486340 +000000120 000388040 000479585 D|002069810 025258287 +000000120 000410557 000489631 D|077031461 088097287 +000000120 000458650 000507176 D|061392903 024971612 +000000120 000478052 000536692 D|018114387 001859154 +000000120 000518774 000591350 D|083267431 000346899 +000000120 000535494 000600177 D|003036089 014172585 +000000120 000542377 000614529 D|084945342 040035218 +000000120 000553989 000643086 D|074706920 046508447 +000000120 000557751 000645952 D|041678035 067857827 +000000120 000579921 000680292 D|063633558 014002169 +000000120 000638156 000742063 D|080908822 021212478 +000000120 000657532 000743522 D|057324667 070809876 +000000120 000694962 000749953 D|008011361 054614369 +000000120 000718495 000790623 D|089712811 065711209 +000000120 000718553 000797627 D|029338436 093278975 +000000120 000764016 000835201 D|038011366 045199049 +000000120 000772482 000845117 D|029795152 072396851 +000000120 000788173 000845871 D|047235699 055698726 +000000120 000827655 000850255 D|029943863 060707069 +000000120 000849800 000874696 D|050626919 000892867 +000000120 000851706 000901846 D|079624832 043180688 +000000120 000853429 000928539 D|072048920 016251203 +000000120 000879435 000943975 D|007369453 093274437 +000000120 000889994 000951720 D|065498643 026459670 +000000120 000916475 000958123 D|025082484 009769190 +000000120 000973425 000980949 D|099559095 099958347 +000000121 000009486 000003312 D|099215049 093415978 +000000121 000046311 000023095 D|019500478 071348804 +000000121 000098200 000106428 D|025979385 008348414 +000000121 000099805 000172406 D|014658571 001471477 +000000121 000145007 000183995 D|054786644 054145633 +000000121 000153826 000187943 D|026103047 017318460 +000000121 000154313 000188094 D|007085449 048801143 +000000121 000157370 000191841 D|073315296 075281903 +000000121 000162692 000193734 D|037605064 077937982 +000000121 000194685 000199477 D|000521919 005300500 +000000121 000202052 000217783 D|052655715 019930687 +000000121 000223594 000248768 D|046682370 050617990 +000000121 000225638 000284937 D|045016709 031742533 +000000121 000268178 000337586 D|002532701 020025210 +000000121 000270381 000344755 D|012899634 026559215 +000000121 000311645 000359921 D|039817765 017609372 +000000121 000312900 000362339 D|081924703 082978406 +000000121 000320721 000364890 D|076348667 050573671 +000000121 000400083 000416910 D|054235463 074102472 +000000121 000421954 000421211 D|048283998 097995886 +000000121 000426176 000423670 D|008614178 034828939 +000000121 000445119 000438507 D|045243672 033196716 +000000121 000446815 000470931 D|052171500 048401185 +000000121 000484705 000483124 D|063852413 001208511 +000000121 000484951 000517304 D|091472718 074985332 +000000121 000487416 000547463 D|026761704 005652560 +000000121 000493439 000550733 D|005801116 057707714 +000000121 000515420 000550881 D|019936242 087609055 +000000121 000521304 000557272 D|007068678 013145974 +000000121 000545125 000568800 D|058660935 008648079 +000000121 000554756 000578048 D|024858537 041781274 +000000121 000585536 000597002 D|058638108 075725378 +000000121 000601922 000614693 D|002241516 021434981 +000000121 000616293 000635834 D|088554476 061648797 +000000121 000630622 000668349 D|089872638 009122015 +000000121 000637994 000676700 D|086858200 037193641 +000000121 000638647 000684236 D|035609413 028491240 +000000121 000651424 000693169 D|030019155 068422598 +000000121 000670414 000694704 D|034790262 047389800 +000000121 000684607 000731068 D|015785916 010025634 +000000121 000755299 000767342 D|007298863 013129270 +000000121 000788487 000775854 D|012630256 074988419 +000000121 000792945 000799533 D|088931507 039627453 +000000121 000798503 000836755 D|064361283 028905111 +000000121 000808233 000901982 D|056875258 003003075 +000000121 000883747 000906201 D|082118595 086436677 +000000121 000909434 000910035 D|080338753 079626931 +000000121 000931454 000916020 D|056578815 011444908 +000000121 000957321 000925692 D|037939705 043904974 +000000121 000978868 000986354 D|017070412 093923606 +000000122 000022080 000005554 D|001173205 035251053 +000000122 000026307 000012747 D|072746585 046673258 +000000122 000036617 000042306 D|094194808 029124630 +000000122 000048036 000051127 D|045831714 013143592 +000000122 000060235 000052425 D|065183520 007134786 +000000122 000067895 000120041 D|074675277 085263771 +000000122 000077497 000126077 D|047707024 039104213 +000000122 000091118 000126150 D|041949627 092770237 +000000122 000103678 000172911 D|093512068 062335120 +000000122 000132292 000175701 D|039721836 063619126 +000000122 000151735 000194289 D|085878705 067634723 +000000122 000168216 000209248 D|009070413 039827308 +000000122 000208682 000213601 D|023015839 024320215 +000000122 000208903 000275904 D|060055035 066778379 +000000122 000235769 000282523 D|008770366 075496417 +000000122 000237480 000364514 D|000939749 050961829 +000000122 000250731 000367851 D|041108664 096875033 +000000122 000252369 000391037 D|048830110 027871202 +000000122 000310180 000436745 D|064173002 038800075 +000000122 000313657 000452914 D|074849890 061716595 +000000122 000322514 000469174 D|069118340 021156211 +000000122 000334806 000509552 D|050853993 087889180 +000000122 000341087 000536632 D|012643633 080235355 +000000122 000403088 000552140 D|001477542 094360158 +000000122 000428372 000567522 D|031241380 079087567 +000000122 000440886 000567895 D|089375725 092317406 +000000122 000467920 000609888 D|062850904 097706704 +000000122 000470506 000625341 D|022826364 062529031 +000000122 000531089 000643885 D|016997355 028967271 +000000122 000574510 000656609 D|016656482 023745180 +000000122 000577350 000673161 D|069708951 068281208 +000000122 000604004 000684394 D|099920782 060539217 +000000122 000622092 000695035 D|078075773 058249129 +000000122 000630878 000701053 D|019107379 007769524 +000000122 000638606 000714869 D|039444308 046006556 +000000122 000650025 000742467 D|077080626 099363351 +000000122 000658620 000742867 D|038335097 073297606 +000000122 000687378 000748187 D|084184512 098921915 +000000122 000705910 000776778 D|014829610 018058075 +000000122 000724225 000796764 D|000266880 048403926 +000000122 000750516 000804385 D|069359566 000326717 +000000122 000789090 000809479 D|038996009 012151928 +000000122 000871077 000825436 D|066925534 077728382 +000000122 000935336 000882183 D|038139547 083630707 +000000122 000939007 000904677 D|044979784 067013366 +000000122 000946040 000912571 D|054660187 081803921 +000000122 000955332 000920545 D|064311120 041401387 +000000122 000972466 000959497 D|025134092 014937716 +000000122 000990200 000989926 D|022707480 041740482 +000000122 000991791 000992590 D|042196850 012418857 +000000123 000024986 000011127 D|043894300 041672655 +000000123 000038550 000016129 D|032330361 005355891 +000000123 000052460 000017717 D|051197443 034198408 +000000123 000076188 000116287 D|033235175 054515902 +000000123 000080947 000118958 D|029022946 051545388 +000000123 000086765 000190179 D|022663287 019690542 +000000123 000106469 000212479 D|059318309 035394014 +000000123 000123972 000215909 D|028080900 059320678 +000000123 000140299 000216867 D|079866979 011835268 +000000123 000147165 000223937 D|060108300 048848815 +000000123 000153708 000239289 D|080389217 057377444 +000000123 000180002 000256491 D|096867275 094203644 +000000123 000181290 000260097 D|029697820 070266870 +000000123 000222948 000294804 D|019719534 055927908 +000000123 000245872 000309522 D|055072640 017927083 +000000123 000297786 000325078 D|018810063 011262270 +000000123 000312818 000384521 D|035377264 033578250 +000000123 000315018 000406177 D|058705913 007059468 +000000123 000316097 000421626 D|036259628 065074420 +000000123 000363468 000448573 D|062064101 043228861 +000000123 000382304 000452065 D|044807803 049326460 +000000123 000400789 000498674 D|086850679 062088111 +000000123 000458001 000546288 D|002057791 051480619 +000000123 000467114 000550492 D|086440411 009128406 +000000123 000478099 000551714 D|048708628 011417728 +000000123 000492288 000572770 D|005394556 079705997 +000000123 000504224 000615485 D|097811084 066352424 +000000123 000514246 000616181 D|042518331 032582487 +000000123 000531947 000619875 D|018018177 024628442 +000000123 000612479 000634401 D|024531581 057027223 +000000123 000616157 000653983 D|009969028 049604150 +000000123 000637414 000687514 D|079454207 000545984 +000000123 000677092 000690552 D|079233339 032913447 +000000123 000682232 000692411 D|053930373 002277382 +000000123 000688957 000700050 D|084211102 007219946 +000000123 000689676 000709919 D|083447253 030861803 +000000123 000702507 000753981 D|080540390 034360676 +000000123 000704272 000755338 D|051081561 088287465 +000000123 000706141 000759709 D|090129670 076391379 +000000123 000720784 000780002 D|088207931 089180479 +000000123 000748554 000838603 D|064368114 026276626 +000000123 000757050 000874148 D|058770334 039841272 +000000123 000759141 000895192 D|074150457 032853932 +000000123 000773347 000953430 D|000039789 086342550 +000000123 000827688 000953949 D|067720034 027560214 +000000123 000853966 000958494 D|019663421 059792494 +000000123 000905969 000961948 D|085879943 007924717 +000000123 000930119 000968067 D|067093649 051442279 +000000123 000963779 000975424 D|064914034 030873804 +000000123 000995639 000995645 D|068710148 047158823 +000000124 000002217 000013022 D|065173798 003160980 +000000124 000045115 000028925 D|016553845 053957962 +000000124 000081844 000029722 D|007028563 062181669 +000000124 000096749 000032406 D|080129864 020017633 +000000124 000106145 000038346 D|052661655 096565733 +000000124 000124353 000055553 D|016432211 023619945 +000000124 000130707 000057796 D|077260257 052015220 +000000124 000152751 000062602 D|085138665 099899790 +000000124 000173880 000063058 D|025143072 098367337 +000000124 000174295 000074878 D|081022657 010244879 +000000124 000186426 000082809 D|056334545 081381623 +000000124 000216154 000177367 D|032553217 078105083 +000000124 000231390 000185885 D|034351647 032258070 +000000124 000232349 000186681 D|056183231 029775417 +000000124 000263242 000192298 D|090071029 006426497 +000000124 000265904 000235867 D|035897883 053599570 +000000124 000297339 000263437 D|088081994 040636039 +000000124 000317275 000270711 D|098948771 017116891 +000000124 000325343 000331145 D|085824258 085872882 +000000124 000328829 000334982 D|049719074 002879560 +000000124 000337484 000339678 D|063975146 073423376 +000000124 000341275 000417549 D|009462502 016016283 +000000124 000343296 000428508 D|073927846 067314015 +000000124 000355774 000453793 D|062701567 070771916 +000000124 000363281 000459678 D|008869795 014280329 +000000124 000399917 000531679 D|054716156 017043409 +000000124 000448420 000568336 D|003604509 046714347 +000000124 000450702 000589989 D|006355567 098040661 +000000124 000454969 000596485 D|079632466 070565694 +000000124 000469416 000610864 D|085102750 050417208 +000000124 000472889 000616284 D|008370145 006512118 +000000124 000485727 000618127 D|042605710 054574784 +000000124 000490882 000650971 D|085580953 035462309 +000000124 000503513 000678215 D|035577866 010334406 +000000124 000518949 000682690 D|054752595 052645605 +000000124 000531276 000700253 D|093699678 033574143 +000000124 000572805 000736840 D|090129196 015537070 +000000124 000585913 000740154 D|097764153 084685359 +000000124 000602429 000741977 D|083913676 085662021 +000000124 000637732 000755836 D|048364359 004607674 +000000124 000697400 000766642 D|069395400 070665309 +000000124 000763877 000777113 D|008514490 093330838 +000000124 000828965 000793550 D|003695977 048059731 +000000124 000838418 000827257 D|000764964 016281248 +000000124 000908519 000896931 D|095057050 015207544 +000000124 000920626 000898095 D|019310232 019437890 +000000124 000923371 000954495 D|003854256 064182478 +000000124 000959843 000982614 D|078897558 065840217 +000000124 000961919 000988363 D|064017588 036695258 +000000124 000964362 000999664 D|086349245 022366940 +000000125 000008983 000015020 D|024147918 031281157 +000000125 000015158 000029128 D|009626506 079523632 +000000125 000064174 000087641 D|086287834 070064998 +000000125 000074757 000098172 D|075142738 052988163 +000000125 000085168 000101005 D|094208516 045166571 +000000125 000120409 000107842 D|061985373 004558833 +000000125 000121569 000123234 D|049672605 025874274 +000000125 000165068 000131603 D|023603038 049745940 +000000125 000180592 000205799 D|062970868 038589518 +000000125 000213150 000213832 D|004662929 008211736 +000000125 000242511 000269054 D|056675730 043629048 +000000125 000243058 000272382 D|028760175 063526291 +000000125 000284111 000273815 D|057875751 025826669 +000000125 000296198 000281796 D|096181350 091523508 +000000125 000324375 000283785 D|078058315 072528055 +000000125 000337291 000287446 D|026750935 037571742 +000000125 000367907 000290354 D|032818306 082707290 +000000125 000379740 000307569 D|034413917 084772056 +000000125 000398621 000329312 D|010792055 054180928 +000000125 000432928 000385418 D|096283256 098261452 +000000125 000442300 000412057 D|091493820 034505078 +000000125 000453213 000452367 D|078580443 006338817 +000000125 000463478 000485259 D|050962635 001181643 +000000125 000486180 000518183 D|092981845 040306647 +000000125 000510258 000560243 D|026783671 097894368 +000000125 000535680 000587782 D|082163095 096573522 +000000125 000572853 000597788 D|087623350 059857652 +000000125 000581384 000634756 D|079158277 061946815 +000000125 000589210 000647985 D|063945210 023833926 +000000125 000602450 000660906 D|021188480 055087818 +000000125 000606178 000687226 D|029660519 046839781 +000000125 000620091 000693201 D|093474797 089861730 +000000125 000677491 000720442 D|039329777 055526953 +000000125 000695863 000725306 D|051187179 065230827 +000000125 000722644 000734812 D|029862684 020554974 +000000125 000727284 000740028 D|005136337 081534331 +000000125 000769382 000770235 D|014402463 052617184 +000000125 000792277 000778039 D|006566626 049969094 +000000125 000796502 000788939 D|091861637 025244845 +000000125 000827688 000801426 D|080561721 079504438 +000000125 000828199 000801905 D|036597630 047821444 +000000125 000832601 000851160 D|094131585 001508930 +000000125 000836367 000887699 D|045820061 064688204 +000000125 000838179 000905820 D|035919524 095937149 +000000125 000881523 000908571 D|089112867 004584424 +000000125 000892415 000916778 D|042244190 063169245 +000000125 000913080 000931760 D|044574541 024134834 +000000125 000920664 000959390 D|015330852 071812282 +000000125 000983802 000961189 D|051495638 017334920 +000000125 000997834 000976092 D|088391614 037969049 +000000126 000001477 000001097 D|032350621 056851320 +000000126 000066870 000035713 D|060954080 051392080 +000000126 000073950 000042385 D|035631545 084577834 +000000126 000077136 000043693 D|043062939 093407357 +000000126 000084661 000068790 D|031900936 042748345 +000000126 000100861 000072986 D|035777895 077221849 +000000126 000101865 000104086 D|040825885 005547350 +000000126 000127269 000134973 D|006734023 088543609 +000000126 000132191 000160773 D|040026907 038062252 +000000126 000145285 000163063 D|053869093 080586401 +000000126 000174415 000169129 D|086001943 082304455 +000000126 000203601 000202637 D|050773435 063357625 +000000126 000207138 000220211 D|001328443 022864742 +000000126 000218513 000252335 D|019384645 025422974 +000000126 000234661 000275231 D|017227279 019124308 +000000126 000236739 000285275 D|000260509 060912637 +000000126 000285977 000288090 D|078785545 036731442 +000000126 000290053 000301052 D|009617726 026521323 +000000126 000316870 000311791 D|069899295 006833184 +000000126 000317198 000312884 D|078378045 082515161 +000000126 000327591 000321333 D|086845080 072463604 +000000126 000451400 000372566 D|082176082 090441572 +000000126 000472428 000394852 D|045360302 010408484 +000000126 000483852 000408210 D|083006929 083999702 +000000126 000492965 000438114 D|026887069 010202580 +000000126 000536627 000462075 D|084779027 034543434 +000000126 000543486 000498665 D|052507144 092897782 +000000126 000544331 000499317 D|061573064 094834798 +000000126 000546970 000559998 D|070423970 062035540 +000000126 000557332 000561232 D|053705947 009963665 +000000126 000581867 000599098 D|035667613 014421873 +000000126 000618050 000629286 D|095182755 044275161 +000000126 000672469 000637211 D|098091852 086890603 +000000126 000690765 000642708 D|088448882 010779667 +000000126 000695278 000643232 D|035503477 077741469 +000000126 000709242 000649397 D|096420453 028360134 +000000126 000718398 000669113 D|097336414 005484187 +000000126 000734462 000701289 D|024370128 014824687 +000000126 000743013 000714075 D|054749730 080668907 +000000126 000750667 000717693 D|038181053 092080988 +000000126 000757949 000737321 D|092122734 057188270 +000000126 000777251 000741795 D|008740867 095122600 +000000126 000784587 000784564 D|040711941 072434118 +000000126 000804294 000802225 D|068587127 002627492 +000000126 000907535 000807082 D|031487249 084122699 +000000126 000962186 000911496 D|032329070 042994504 +000000126 000964210 000917650 D|005894397 089588806 +000000126 000964368 000941734 D|065742580 061569781 +000000126 000979101 000977814 D|047692165 042182137 +000000126 000996839 000995716 D|055946965 072261444 +000000127 000030386 000003701 D|017099276 045745421 +000000127 000102780 000013177 D|096345308 087548322 +000000127 000113495 000023382 D|046197085 090418335 +000000127 000125376 000031927 D|050403792 032764937 +000000127 000151204 000110776 D|033098983 041580023 +000000127 000191634 000136330 D|038222384 075510875 +000000127 000195709 000143398 D|024869416 025229837 +000000127 000261278 000186083 D|092904843 007146676 +000000127 000280762 000187178 D|090808134 005440099 +000000127 000295138 000214354 D|095028013 017358913 +000000127 000303770 000215644 D|081283213 013580150 +000000127 000319276 000230695 D|005229954 050778483 +000000127 000324756 000245907 D|007416137 097495078 +000000127 000330327 000264734 D|057565697 052614613 +000000127 000336797 000287893 D|040928510 003925113 +000000127 000346188 000359851 D|043857183 075277992 +000000127 000364984 000362811 D|013140381 018519257 +000000127 000379060 000387102 D|046202840 085856973 +000000127 000387803 000397686 D|064500436 002134176 +000000127 000412342 000413411 D|053204636 050598400 +000000127 000451403 000428003 D|038571977 075899102 +000000127 000494783 000472288 D|052619992 060913661 +000000127 000520494 000474824 D|044536496 007600312 +000000127 000539949 000477595 D|079261918 072474651 +000000127 000552052 000507743 D|022799049 057879343 +000000127 000581679 000528750 D|081741546 057291521 +000000127 000590729 000567673 D|045480068 060674175 +000000127 000592750 000576629 D|093756770 087141840 +000000127 000595355 000614967 D|012284883 049556802 +000000127 000604582 000633729 D|033084668 011356018 +000000127 000612065 000634168 D|050130498 088764360 +000000127 000617262 000639407 D|052653659 049094172 +000000127 000641463 000662238 D|041940195 015562739 +000000127 000641685 000713123 D|090848964 085870860 +000000127 000658542 000715863 D|006686598 024770058 +000000127 000710423 000720044 D|021495663 083861835 +000000127 000754572 000720341 D|069858808 085929469 +000000127 000823831 000735939 D|093737857 020971628 +000000127 000825356 000774555 D|043762529 075732998 +000000127 000864929 000790915 D|008262549 017270358 +000000127 000866668 000796124 D|033500731 005791169 +000000127 000875856 000841426 D|061472227 057639574 +000000127 000876559 000853745 D|074242247 025890988 +000000127 000883144 000894502 D|083906827 036161764 +000000127 000895860 000901139 D|001978507 045503781 +000000127 000923363 000905357 D|088621760 058855826 +000000127 000943616 000911192 D|000430971 034350018 +000000127 000944685 000955990 D|057016700 048920298 +000000127 000956745 000975201 D|070357916 001437720 +000000127 000989024 000997510 D|043693093 093406756 +000000128 000031020 000035810 D|093523675 078874837 +000000128 000034385 000048815 D|022084550 035734162 +000000128 000040567 000049503 D|055166741 094690935 +000000128 000045655 000083177 D|040390042 048279097 +000000128 000052318 000085682 D|009827802 078553975 +000000128 000055227 000124788 D|091264376 098477621 +000000128 000121027 000138656 D|079347578 024219779 +000000128 000138443 000183551 D|010688720 066618616 +000000128 000153645 000187341 D|007933028 090045392 +000000128 000156759 000214575 D|019799205 083799238 +000000128 000172606 000232167 D|064493475 076498733 +000000128 000196872 000242549 D|046006223 033932659 +000000128 000260932 000257635 D|045175124 026372503 +000000128 000287969 000282644 D|072067367 001811794 +000000128 000305778 000293267 D|058466764 042883718 +000000128 000324557 000332160 D|046721352 007295384 +000000128 000413267 000344739 D|022250575 040653440 +000000128 000426899 000390489 D|085933109 039298917 +000000128 000470161 000394262 D|041365056 024476370 +000000128 000497682 000406383 D|079710849 000984401 +000000128 000508027 000421495 D|008448884 000564387 +000000128 000510007 000421552 D|007243060 088696769 +000000128 000543501 000421765 D|010075456 089795239 +000000128 000546534 000443316 D|015966181 019062927 +000000128 000550455 000461691 D|080060291 077937269 +000000128 000610059 000489174 D|089176626 096555020 +000000128 000623763 000496587 D|035967391 099680593 +000000128 000626043 000531101 D|095572940 086201826 +000000128 000657447 000567820 D|094039649 022668154 +000000128 000661895 000568587 D|041951259 059363120 +000000128 000667254 000588131 D|031484062 029803590 +000000128 000685799 000620618 D|069331459 079048455 +000000128 000706217 000643997 D|042034172 037723369 +000000128 000728333 000648990 D|066419674 004976829 +000000128 000729031 000713915 D|072660570 010811741 +000000128 000743531 000754977 D|039197653 022240130 +000000128 000760829 000769189 D|022296930 024026646 +000000128 000767006 000783806 D|099119760 078310768 +000000128 000792925 000788983 D|005115314 038553949 +000000128 000856594 000789652 D|085490711 048178817 +000000128 000869836 000799163 D|079175303 098565951 +000000128 000872680 000815802 D|097270418 059435080 +000000128 000875449 000832002 D|024431358 062122969 +000000128 000906473 000832872 D|089008296 093027284 +000000128 000915563 000841045 D|018223696 091176607 +000000128 000934782 000862693 D|003021390 081309799 +000000128 000935126 000892802 D|054045944 012148711 +000000128 000937915 000946219 D|022223605 073688459 +000000128 000966673 000961147 D|066376326 087576299 +000000128 000994214 000980148 D|078987841 064791328 +000000129 000033982 000037229 D|003066361 012463809 +000000129 000055540 000041515 D|014819173 038978908 +000000129 000075174 000067686 D|055804667 064518233 +000000129 000109188 000072710 D|069989544 071059464 +000000129 000122434 000073738 D|074230212 098832668 +000000129 000124833 000075395 D|032521498 054135296 +000000129 000134453 000091289 D|056360440 072310345 +000000129 000150839 000116367 D|054649912 093980487 +000000129 000161566 000126518 D|043293973 078978726 +000000129 000196488 000150852 D|072554623 059630574 +000000129 000205474 000172791 D|004063940 039613598 +000000129 000206252 000177119 D|039826381 098784781 +000000129 000210013 000187656 D|037304107 014183568 +000000129 000245432 000216272 D|003818456 026104515 +000000129 000246214 000221075 D|043062551 051162743 +000000129 000247766 000238141 D|086795682 024118436 +000000129 000252880 000242072 D|085980934 030211444 +000000129 000271508 000283204 D|018853170 061438769 +000000129 000314730 000287140 D|085098137 040092982 +000000129 000316207 000305054 D|037396595 098165076 +000000129 000326997 000306430 D|022298692 027680435 +000000129 000395268 000311285 D|029594827 020474788 +000000129 000423662 000358615 D|095676287 007849777 +000000129 000464845 000372790 D|062620733 038201020 +000000129 000489137 000375307 D|098817424 000913959 +000000129 000489846 000441480 D|099762995 086047002 +000000129 000504821 000442944 D|009592414 068310908 +000000129 000543605 000443472 D|045514116 047836120 +000000129 000556863 000472066 D|052614432 023014070 +000000129 000601416 000472372 D|064745500 042152822 +000000129 000616683 000558799 D|017976996 060385174 +000000129 000628675 000569575 D|000365219 067088578 +000000129 000636042 000577962 D|004402314 061325858 +000000129 000654455 000582821 D|059523001 084105715 +000000129 000684500 000617476 D|096014556 029264107 +000000129 000684513 000648139 D|026449109 037819727 +000000129 000721418 000698814 D|044031365 088907760 +000000129 000737348 000704428 D|008886488 013011669 +000000129 000766502 000732307 D|051224894 025805206 +000000129 000814079 000820806 D|018423569 072869184 +000000129 000872780 000844204 D|099121872 045483812 +000000129 000873356 000855338 D|007229637 036611778 +000000129 000875064 000855763 D|044432997 051566173 +000000129 000907541 000863673 D|005730648 081115226 +000000129 000936752 000902382 D|002288925 062344745 +000000129 000943105 000913117 D|044137992 049662073 +000000129 000955685 000919897 D|017513934 076497802 +000000129 000956360 000922564 D|021634243 024297228 +000000129 000960713 000946290 D|011302080 083269175 +000000129 000978931 000952443 D|059199623 025447110 +000000130 000011137 000000268 D|052542139 063509358 +000000130 000015961 000033709 D|039446351 053475187 +000000130 000047409 000036166 D|072264113 096810937 +000000130 000049463 000044702 D|056807659 064203786 +000000130 000053683 000065442 D|045800454 083665826 +000000130 000064823 000069140 D|051952897 002469375 +000000130 000089939 000080454 D|023765417 054648867 +000000130 000124551 000117793 D|049016241 051239130 +000000130 000137617 000173603 D|067807527 058149299 +000000130 000147626 000237897 D|005456482 071750361 +000000130 000152886 000244974 D|070090938 046542103 +000000130 000158273 000254590 D|070223480 050687856 +000000130 000172373 000268465 D|034316028 092538447 +000000130 000185135 000281057 D|017845949 099521096 +000000130 000237291 000293718 D|066264838 034248193 +000000130 000246815 000307069 D|075385304 030666157 +000000130 000266238 000326503 D|031629719 023285254 +000000130 000268412 000361092 D|006738782 021284762 +000000130 000270400 000401512 D|096758379 011135504 +000000130 000296548 000420821 D|019646126 078251850 +000000130 000299574 000425864 D|043266626 000202990 +000000130 000343656 000436107 D|095998426 035894394 +000000130 000379213 000437998 D|013287655 046519011 +000000130 000386249 000439799 D|097648508 057948298 +000000130 000398153 000445161 D|003718520 073355372 +000000130 000411826 000458328 D|069125276 095575322 +000000130 000427928 000458553 D|048424728 043378622 +000000130 000436631 000462644 D|046534885 056757909 +000000130 000461062 000468146 D|090507197 087865655 +000000130 000462718 000488510 D|023848063 036401783 +000000130 000463980 000544679 D|053624028 025377421 +000000130 000477821 000559602 D|098089342 052560733 +000000130 000492318 000567737 D|003672633 085540102 +000000130 000535198 000578127 D|078368867 047290693 +000000130 000556878 000586721 D|049706406 070850097 +000000130 000571067 000591264 D|016000486 066654465 +000000130 000593003 000603448 D|040741958 028013311 +000000130 000631861 000605854 D|079059591 079939071 +000000130 000641882 000634294 D|056802557 063815332 +000000130 000648626 000651376 D|018306127 063145981 +000000130 000717330 000664909 D|026521547 079941507 +000000130 000757770 000703920 D|050402722 074141763 +000000130 000763718 000715170 D|047860107 014957852 +000000130 000780479 000767815 D|065550114 011958673 +000000130 000811791 000833915 D|009533735 033957452 +000000130 000823458 000834893 D|055838299 049392685 +000000130 000847158 000877944 D|065471762 080571696 +000000130 000900893 000926088 D|044390747 024815610 +000000130 000948830 000929164 D|042729415 013277470 +000000130 000953602 000990985 D|064872215 056867595 +000000131 000058933 000006524 D|071331724 034174068 +000000131 000067857 000033777 D|072210474 006272930 +000000131 000081340 000042232 D|042208561 098153127 +000000131 000133826 000082651 D|038994860 073141266 +000000131 000174657 000089288 D|052823350 015689959 +000000131 000179117 000114103 D|031490340 064965277 +000000131 000186665 000134316 D|023727149 039144613 +000000131 000193593 000178345 D|058094406 069168260 +000000131 000206688 000198806 D|028692177 099317429 +000000131 000226406 000213408 D|070013358 097178019 +000000131 000264524 000223301 D|005521188 008704724 +000000131 000289775 000247487 D|005162954 018697461 +000000131 000341457 000331611 D|031715010 025464091 +000000131 000400734 000341983 D|031409632 081054217 +000000131 000405315 000380760 D|078952845 062605811 +000000131 000420242 000382195 D|026685946 084736519 +000000131 000427840 000413394 D|034692274 024091303 +000000131 000428503 000437764 D|035803406 013573643 +000000131 000429234 000467656 D|022361226 059821074 +000000131 000437915 000473846 D|040939567 078950379 +000000131 000448109 000479949 D|000876283 030089039 +000000131 000491708 000499590 D|021028238 012747817 +000000131 000492969 000520678 D|045142570 000447437 +000000131 000527943 000532331 D|074569770 050571059 +000000131 000536940 000557692 D|053527371 072914347 +000000131 000537511 000626523 D|012544829 027342957 +000000131 000543600 000638102 D|010853687 026432890 +000000131 000557199 000661483 D|016491872 097953999 +000000131 000587491 000676336 D|061106396 011603465 +000000131 000673962 000694697 D|028241639 029452273 +000000131 000687944 000717829 D|079226178 098807780 +000000131 000704114 000799061 D|002146630 028164422 +000000131 000716519 000823418 D|010995687 030324077 +000000131 000757463 000833687 D|043740161 071724208 +000000131 000759810 000870630 D|066444751 023067852 +000000131 000767492 000871510 D|098446198 046117676 +000000131 000773370 000878639 D|092984797 082945594 +000000131 000781297 000884888 D|003196454 073819542 +000000131 000783539 000905209 D|002496185 095058680 +000000131 000785525 000907940 D|035679961 047844720 +000000131 000791312 000915161 D|096066427 084162065 +000000131 000792846 000918222 D|026201218 062459580 +000000131 000808684 000930583 D|020115399 068625649 +000000131 000814152 000938019 D|042043744 070852796 +000000131 000823599 000938098 D|061431214 033335896 +000000131 000835097 000946928 D|059223894 023140290 +000000131 000930663 000949349 D|010436035 067410611 +000000131 000941792 000950669 D|013962164 099233339 +000000131 000961222 000953330 D|095456588 024473274 +000000131 000966323 000999182 D|086766519 045970208 +000000132 000035927 000010289 D|078681363 057499222 +000000132 000039652 000068393 D|074273711 059593150 +000000132 000041497 000081314 D|087729386 090712073 +000000132 000045236 000083800 D|039786816 043352752 +000000132 000050432 000113560 D|079995485 084063826 +000000132 000063352 000129000 D|082926589 046924848 +000000132 000064349 000137513 D|078384386 083642250 +000000132 000070047 000147016 D|068591895 093694316 +000000132 000074377 000156431 D|037076772 082235424 +000000132 000082653 000169085 D|070263586 012000284 +000000132 000194252 000192481 D|019514229 042235204 +000000132 000229502 000200215 D|071338227 030960768 +000000132 000246215 000214878 D|056120921 008543779 +000000132 000260882 000221078 D|066162242 046264305 +000000132 000298117 000299077 D|032510748 038438190 +000000132 000337480 000349908 D|090632572 032567909 +000000132 000353960 000368827 D|091306950 053373610 +000000132 000363835 000393800 D|043826840 093246526 +000000132 000389898 000444616 D|061208580 098999850 +000000132 000403425 000449696 D|082425835 022223607 +000000132 000412184 000477610 D|076630492 051784433 +000000132 000412546 000507238 D|062831239 070813832 +000000132 000430461 000509508 D|095413871 008585704 +000000132 000485522 000517943 D|080679207 090584431 +000000132 000486169 000525704 D|020793654 097093290 +000000132 000499061 000541448 D|013732273 078994539 +000000132 000531064 000585852 D|056815366 046252472 +000000132 000565558 000587149 D|022027231 087935928 +000000132 000587038 000589344 D|068709510 055897748 +000000132 000616357 000589446 D|068470799 056446845 +000000132 000621807 000589531 D|021930985 092376282 +000000132 000624952 000618965 D|063295726 060001781 +000000132 000627757 000644290 D|022054152 068469046 +000000132 000648960 000682853 D|067573374 096392059 +000000132 000654454 000688176 D|098915232 069991919 +000000132 000681487 000710039 D|010256260 065588502 +000000132 000702862 000713367 D|045189031 055898301 +000000132 000725354 000714348 D|013439278 013539545 +000000132 000735206 000802716 D|070294526 060504458 +000000132 000774857 000811492 D|051678802 027564016 +000000132 000826118 000858595 D|056585279 016602453 +000000132 000855995 000869505 D|075452553 018105550 +000000132 000876577 000869736 D|036278499 076273159 +000000132 000877223 000910699 D|095322874 060317806 +000000132 000907618 000963787 D|069687509 000123543 +000000132 000918919 000968741 D|074938297 070061500 +000000132 000927567 000969870 D|080203880 095838841 +000000132 000936526 000991761 D|083439517 021001428 +000000132 000990072 000992215 D|051308286 038146321 +000000132 000991617 000996241 D|017517591 090470132 +000000133 000015425 000000629 D|096949999 034675225 +000000133 000018480 000007402 D|053423516 050345290 +000000133 000057213 000007831 D|032682252 009408847 +000000133 000075838 000018286 D|058271779 089843322 +000000133 000082032 000064053 D|094391787 015554873 +000000133 000115423 000083297 D|021936537 055615482 +000000133 000118074 000104221 D|038721155 003647087 +000000133 000171667 000162444 D|077896658 086807624 +000000133 000180996 000167576 D|095956447 029379562 +000000133 000207656 000196310 D|033619306 030813447 +000000133 000257228 000247730 D|004638152 008403072 +000000133 000285939 000251747 D|072464645 069039499 +000000133 000289166 000253393 D|097409321 083196627 +000000133 000301804 000261925 D|004627657 097682062 +000000133 000338044 000303650 D|039782956 042499544 +000000133 000344702 000315636 D|005383403 035209451 +000000133 000366929 000342164 D|072009951 008108091 +000000133 000402753 000345960 D|032772319 094210109 +000000133 000412786 000364544 D|023644236 060983242 +000000133 000440802 000418159 D|075316774 024747700 +000000133 000443691 000428849 D|079585578 074314975 +000000133 000450290 000442403 D|093919045 048885114 +000000133 000485848 000444897 D|009661738 008972904 +000000133 000487773 000520884 D|004850375 026186408 +000000133 000493988 000523037 D|040338789 082387180 +000000133 000510660 000547046 D|028978893 052520739 +000000133 000526872 000556603 D|044417827 027971461 +000000133 000535103 000557034 D|072903791 094225200 +000000133 000545004 000561671 D|058219282 072940160 +000000133 000558270 000573423 D|088665385 058082743 +000000133 000577827 000575828 D|016261381 055186226 +000000133 000578042 000634817 D|044810751 014413740 +000000133 000610252 000635456 D|069706772 019468941 +000000133 000612990 000641986 D|051533583 030842060 +000000133 000622147 000674779 D|083484507 023714363 +000000133 000631264 000693847 D|089264024 036223305 +000000133 000651747 000730034 D|048485114 095052083 +000000133 000674335 000741060 D|068320465 080981640 +000000133 000702178 000801696 D|079626418 075356084 +000000133 000715071 000804558 D|048230734 066633807 +000000133 000747647 000829070 D|020870036 081763113 +000000133 000750377 000853941 D|039422318 028628520 +000000133 000756341 000911338 D|056319376 036354771 +000000133 000793065 000915643 D|078252562 026923803 +000000133 000819644 000954562 D|064248646 092821472 +000000133 000924128 000961365 D|041178037 087052002 +000000133 000942360 000961437 D|082703171 054194080 +000000133 000972746 000971274 D|061787884 018088841 +000000133 000973383 000971885 D|025872294 075907086 +000000133 000979200 000991640 D|073867643 075562608 +000000134 000007917 000017193 D|076351386 031233418 +000000134 000013083 000048009 D|049769901 067994505 +000000134 000025645 000059113 D|002221319 089155531 +000000134 000056817 000060679 D|038101912 048021206 +000000134 000103987 000064735 D|015030447 079713390 +000000134 000110910 000077908 D|008291158 052415536 +000000134 000130306 000083345 D|069515994 044418705 +000000134 000161645 000091879 D|020820526 009063242 +000000134 000176049 000097522 D|026645824 060095399 +000000134 000196585 000112811 D|055653712 094020826 +000000134 000204792 000118374 D|022271045 062613514 +000000134 000206476 000164432 D|009527692 085086036 +000000134 000230790 000166892 D|011974827 070274813 +000000134 000270974 000200307 D|021934198 053157186 +000000134 000274315 000238881 D|065554360 046053052 +000000134 000275780 000248359 D|051781872 051459833 +000000134 000284261 000277350 D|067141768 011099437 +000000134 000339267 000285914 D|018419190 053169453 +000000134 000350429 000303293 D|063831043 028059969 +000000134 000375602 000307479 D|009874169 084151945 +000000134 000392349 000332278 D|073166560 083609425 +000000134 000399584 000365825 D|005121157 004851690 +000000134 000412578 000440393 D|044890799 019237457 +000000134 000447839 000443256 D|028242572 001821195 +000000134 000516083 000467450 D|033230295 049956240 +000000134 000546914 000471913 D|035271809 043064116 +000000134 000575224 000490380 D|005642499 028465504 +000000134 000588708 000507746 D|083880062 099523414 +000000134 000618288 000537494 D|000732374 049135700 +000000134 000619579 000557915 D|035839344 097385500 +000000134 000701624 000578994 D|064322373 057158652 +000000134 000747471 000646851 D|022653412 048899321 +000000134 000762018 000686766 D|067814357 049191009 +000000134 000779293 000718734 D|092153291 013381508 +000000134 000802802 000722492 D|027575980 016173921 +000000134 000803726 000744027 D|007954670 022347121 +000000134 000809823 000761403 D|039714737 075328619 +000000134 000810950 000795744 D|031457108 096036695 +000000134 000839288 000831874 D|020910560 014479745 +000000134 000897888 000834055 D|078557363 006644479 +000000134 000913079 000857983 D|057544724 071511628 +000000134 000918972 000880329 D|081016174 064083564 +000000134 000923566 000898635 D|036287065 007792290 +000000134 000927875 000905570 D|026859135 042670551 +000000134 000947542 000918186 D|030369067 093980975 +000000134 000949289 000937873 D|044757934 050931512 +000000134 000952173 000960288 D|051330621 021718436 +000000134 000977503 000967889 D|099145510 034944915 +000000134 000986067 000978203 D|028986592 061578801 +000000134 000986093 000982653 D|034170255 085547747 +000000135 000012388 000041609 D|014522037 019635142 +000000135 000054173 000047062 D|032058483 003331649 +000000135 000078058 000054992 D|083044876 041805141 +000000135 000084227 000060021 D|074381942 035385711 +000000135 000119153 000087210 D|084795237 025559886 +000000135 000186505 000087863 D|007838841 031206462 +000000135 000196754 000106838 D|065582402 096260881 +000000135 000197625 000132849 D|001033828 013673028 +000000135 000274574 000134737 D|059624772 068548307 +000000135 000275252 000155511 D|017907510 085423666 +000000135 000299998 000169185 D|047445127 035923126 +000000135 000311940 000175200 D|039098895 041129885 +000000135 000316867 000194344 D|048138349 014347841 +000000135 000339829 000216693 D|087242687 041548785 +000000135 000357417 000218559 D|079782881 008896769 +000000135 000374709 000222253 D|013492897 098365033 +000000135 000414166 000256055 D|035558852 019959994 +000000135 000422719 000263651 D|019624082 061181075 +000000135 000422884 000269253 D|088032574 094271032 +000000135 000432145 000282460 D|013978394 035052576 +000000135 000434308 000297886 D|048557283 013816247 +000000135 000439498 000303920 D|083378047 046309887 +000000135 000456100 000323461 D|072311310 099081694 +000000135 000477051 000354224 D|004878841 009139569 +000000135 000492873 000364221 D|022808170 073604416 +000000135 000555823 000369306 D|011484793 045580718 +000000135 000558093 000418234 D|009968502 048020178 +000000135 000583743 000468969 D|046116918 060437622 +000000135 000616090 000481503 D|064818386 036183808 +000000135 000635391 000485411 D|021087907 054134733 +000000135 000643559 000510326 D|029779025 065656978 +000000135 000657682 000547405 D|045307243 004240660 +000000135 000694523 000577870 D|030160242 080051317 +000000135 000750545 000586476 D|008294973 064096631 +000000135 000753880 000615479 D|073252959 095806865 +000000135 000800069 000634556 D|056265428 022600919 +000000135 000805312 000681046 D|037669474 071367161 +000000135 000814451 000692967 D|062194679 058667919 +000000135 000826508 000699346 D|005504086 007850564 +000000135 000827818 000703952 D|077142278 057019756 +000000135 000834624 000723389 D|033125085 047355921 +000000135 000837554 000748891 D|097676539 047473190 +000000135 000848687 000788663 D|030932506 089326586 +000000135 000882667 000832748 D|041391858 043180088 +000000135 000891332 000891009 D|014200307 043479800 +000000135 000894229 000891738 D|065869384 042897763 +000000135 000896328 000941475 D|031390959 089905440 +000000135 000926881 000955574 D|004162444 043333958 +000000135 000930969 000981519 D|053501701 058627412 +000000135 000980604 000990835 D|065694969 064067974 +000000136 000019692 000002642 D|018603130 020690020 +000000136 000030934 000010785 D|059630247 058678636 +000000136 000039527 000020041 D|045486144 087692515 +000000136 000049185 000045564 D|060074485 000945016 +000000136 000095483 000047380 D|013867266 001387690 +000000136 000097622 000048650 D|000050987 007400883 +000000136 000129935 000106192 D|048548749 038431942 +000000136 000142333 000136817 D|010654937 052757979 +000000136 000146191 000146894 D|092840017 044863875 +000000136 000147686 000147112 D|015912546 069170746 +000000136 000183176 000187666 D|040583234 022850387 +000000136 000227137 000233181 D|034193084 003338418 +000000136 000269948 000245595 D|041017345 036565580 +000000136 000285760 000291696 D|058778437 065137950 +000000136 000302174 000292069 D|012793079 049910829 +000000136 000357291 000300952 D|099369504 017876790 +000000136 000395651 000319012 D|028120221 087332719 +000000136 000406473 000319067 D|058663535 089159027 +000000136 000460094 000331405 D|009159247 029237368 +000000136 000485013 000340029 D|050160142 074211349 +000000136 000494052 000423472 D|076920037 046850904 +000000136 000517340 000455916 D|010372531 083762526 +000000136 000523061 000457788 D|049171892 091610443 +000000136 000531527 000474334 D|048428084 053106071 +000000136 000591988 000476032 D|063603871 054574828 +000000136 000594970 000477134 D|029295824 026898760 +000000136 000599383 000495531 D|006810099 070855004 +000000136 000611171 000497273 D|093445997 058450877 +000000136 000634897 000530633 D|012687283 065113178 +000000136 000643206 000562329 D|091956975 055691267 +000000136 000655398 000588673 D|055188589 034493968 +000000136 000664290 000607603 D|040501651 013074734 +000000136 000705795 000618618 D|068209233 020369518 +000000136 000717931 000625188 D|085830178 079519441 +000000136 000733743 000658608 D|039987677 089171846 +000000136 000735218 000678776 D|074498605 054314869 +000000136 000735797 000684209 D|098291076 038492040 +000000136 000746404 000721123 D|064656646 007949339 +000000136 000773008 000731283 D|038939408 072944464 +000000136 000777143 000800985 D|084319842 091725526 +000000136 000814129 000844963 D|075332002 072808976 +000000136 000877980 000853198 D|014509094 025997137 +000000136 000883257 000863938 D|079565791 013512692 +000000136 000911757 000883493 D|066839106 042195616 +000000136 000919920 000883803 D|058182138 095922487 +000000136 000929912 000935305 D|087982863 053774061 +000000136 000965474 000958678 D|016392620 036167264 +000000136 000972983 000988221 D|002492920 064291867 +000000136 000985955 000992620 D|038594353 070501716 +000000136 000998375 000999006 D|065178303 016162934 +000000137 000007161 000002731 D|027670984 018831871 +000000137 000028165 000019071 D|045192420 005444423 +000000137 000052003 000025592 D|058021915 047870827 +000000137 000070494 000032284 D|071389749 040086301 +000000137 000132656 000049110 D|061929397 053810760 +000000137 000153990 000078992 D|082933783 048781274 +000000137 000168526 000090012 D|053128920 096948094 +000000137 000223874 000091436 D|018540379 073738910 +000000137 000227408 000095033 D|056588287 052627791 +000000137 000235541 000171450 D|074234624 023870116 +000000137 000284770 000176276 D|022340112 023661967 +000000137 000285743 000240055 D|063871689 079565885 +000000137 000305025 000245754 D|088661168 054895160 +000000137 000321164 000257252 D|037609252 011269128 +000000137 000354151 000258204 D|070092229 022425272 +000000137 000382730 000301708 D|020986132 019809511 +000000137 000400890 000306985 D|072586780 023931272 +000000137 000424087 000368833 D|010440152 040063401 +000000137 000438263 000375623 D|044780929 075245417 +000000137 000489418 000382188 D|011253418 020613151 +000000137 000502141 000393060 D|089367738 051967500 +000000137 000504607 000413854 D|045404798 079278231 +000000137 000517114 000436405 D|062325539 019506017 +000000137 000544057 000478132 D|057425611 051827575 +000000137 000576336 000488224 D|046772864 034446127 +000000137 000578292 000499811 D|043696938 033578657 +000000137 000587631 000504225 D|054202393 082450420 +000000137 000592588 000518268 D|055556763 073178196 +000000137 000610589 000532920 D|077235112 052893727 +000000137 000613116 000546642 D|084438219 040880387 +000000137 000622334 000614607 D|011663142 005075450 +000000137 000632466 000626193 D|053741064 042015651 +000000137 000636581 000630725 D|026296240 081419041 +000000137 000641406 000635532 D|051821699 017083322 +000000137 000654422 000644981 D|066244396 050983747 +000000137 000698025 000660497 D|019681635 088427249 +000000137 000725334 000670119 D|008607491 067473845 +000000137 000756601 000686311 D|059044424 074502075 +000000137 000775373 000723193 D|056270101 079067066 +000000137 000783410 000750244 D|063222642 090363252 +000000137 000807454 000764795 D|042021888 048476481 +000000137 000815025 000806242 D|039834612 059863516 +000000137 000836083 000812721 D|079930436 040878480 +000000137 000877157 000815153 D|051161376 040613596 +000000137 000882240 000829283 D|087682296 012081895 +000000137 000897767 000842629 D|086289674 005162201 +000000137 000919025 000864056 D|085789725 053176859 +000000137 000933955 000890250 D|086951038 092642546 +000000137 000947923 000959620 D|005544966 091742367 +000000137 000960858 000993503 D|005032476 098383658 +000000138 000001650 000007909 D|054786210 053551509 +000000138 000024995 000028384 D|003819725 057136550 +000000138 000033386 000042355 D|072258150 055678494 +000000138 000063648 000065734 D|080076598 053061265 +000000138 000097393 000078838 D|043403449 064131999 +000000138 000098941 000089323 D|063593650 026816239 +000000138 000109737 000090890 D|062665148 095517848 +000000138 000137221 000106922 D|032580921 000029850 +000000138 000141940 000134651 D|050628585 027092775 +000000138 000154851 000140281 D|037180195 067337531 +000000138 000166061 000144181 D|090822704 048706515 +000000138 000167329 000160599 D|040254382 035942790 +000000138 000205779 000183588 D|058439429 057421036 +000000138 000231323 000188647 D|010155285 065227793 +000000138 000279869 000212847 D|091047505 048072257 +000000138 000300135 000244812 D|003999969 065592235 +000000138 000329327 000250816 D|008677201 031085152 +000000138 000457550 000251106 D|064145859 027783038 +000000138 000468079 000263541 D|091441923 045700327 +000000138 000486351 000269895 D|094904332 022815018 +000000138 000488680 000273651 D|013148730 044386581 +000000138 000503121 000285469 D|002738006 071282293 +000000138 000527166 000293571 D|064267585 068923929 +000000138 000557726 000344306 D|090284956 038803440 +000000138 000575272 000344634 D|089747895 077564213 +000000138 000596524 000445115 D|067641061 095650043 +000000138 000599462 000486323 D|065112625 008412756 +000000138 000620639 000488606 D|082526132 084096883 +000000138 000636004 000504626 D|093087510 050413072 +000000138 000639824 000516608 D|051604069 049818137 +000000138 000646123 000527646 D|071626392 056426673 +000000138 000672180 000564899 D|074269340 059734110 +000000138 000694546 000605157 D|071481946 034896147 +000000138 000747775 000621239 D|050684878 073472999 +000000138 000748622 000656792 D|010899996 040460630 +000000138 000756570 000674748 D|067668110 087432101 +000000138 000791960 000683824 D|085263855 086137905 +000000138 000820874 000757986 D|084819944 039729647 +000000138 000831094 000758488 D|059007843 055516972 +000000138 000832819 000771685 D|050789529 071767035 +000000138 000846348 000775316 D|030294550 047182062 +000000138 000867491 000782168 D|033395407 082786468 +000000138 000868599 000795994 D|000702064 033198699 +000000138 000872853 000853591 D|051019710 056565280 +000000138 000876061 000860374 D|036516469 081369479 +000000138 000877452 000865800 D|020713748 089955535 +000000138 000891286 000882547 D|081239074 062265622 +000000138 000902068 000896219 D|006330634 038164436 +000000138 000933906 000961842 D|072379356 029345973 +000000138 000994220 000989552 D|038681929 057748166 +000000139 000019326 000045540 D|085321749 081316798 +000000139 000093286 000056401 D|098914284 091389016 +000000139 000111045 000059248 D|060151387 033386451 +000000139 000129252 000081374 D|082253937 016871166 +000000139 000140768 000087876 D|007007865 056370944 +000000139 000171016 000154181 D|041248652 065175925 +000000139 000202982 000163464 D|076642096 092474385 +000000139 000220039 000196210 D|094450272 080485736 +000000139 000259822 000232259 D|004797898 084049334 +000000139 000262758 000248775 D|032827476 040008390 +000000139 000264485 000291412 D|086381995 069768415 +000000139 000274759 000301249 D|089782575 056098321 +000000139 000301963 000304060 D|016526072 020738965 +000000139 000302259 000313487 D|050213484 093498028 +000000139 000312397 000315006 D|053620999 064010945 +000000139 000314414 000320131 D|004966042 063389083 +000000139 000325926 000322875 D|042284493 072692718 +000000139 000368483 000329342 D|047519853 047083064 +000000139 000368960 000343197 D|038578908 026353166 +000000139 000382230 000348273 D|069178207 082703428 +000000139 000399764 000361963 D|099448769 003633295 +000000139 000400167 000438326 D|041034877 095019329 +000000139 000422363 000445762 D|073529177 029876770 +000000139 000447719 000447768 D|062537794 072513112 +000000139 000462178 000495614 D|072728028 058446687 +000000139 000480060 000508359 D|062532828 099015854 +000000139 000502943 000516232 D|046275942 086479226 +000000139 000521583 000518559 D|070428036 057048266 +000000139 000533983 000526332 D|059150685 066753832 +000000139 000545767 000526486 D|055742441 048937045 +000000139 000572518 000556203 D|055364626 058335782 +000000139 000614145 000572847 D|051988785 072447482 +000000139 000622212 000617060 D|000260553 046471428 +000000139 000677472 000633872 D|078226602 052218712 +000000139 000678129 000652017 D|025879592 032314018 +000000139 000691614 000668377 D|094718316 010620230 +000000139 000812347 000713366 D|058506558 078286227 +000000139 000816510 000723313 D|064376356 082522228 +000000139 000821924 000763959 D|069093753 044058885 +000000139 000844932 000764267 D|041806093 016605286 +000000139 000857593 000775123 D|007346376 051104151 +000000139 000859880 000780417 D|004730374 009413461 +000000139 000868402 000783735 D|010552397 066614092 +000000139 000871768 000792258 D|080763566 048567064 +000000139 000896182 000858613 D|050375199 032006313 +000000139 000908052 000869223 D|077444744 084180238 +000000139 000912474 000890256 D|064128700 055750337 +000000139 000949993 000983343 D|086979385 027788835 +000000139 000958683 000984985 D|010871441 054110155 +000000139 000977909 000997611 D|053631858 085651169 +000000140 000047095 000028236 D|059513576 014287446 +000000140 000062529 000065585 D|086974363 029027761 +000000140 000074077 000094559 D|048457338 043876615 +000000140 000086215 000129862 D|086627509 026187699 +000000140 000091152 000160141 D|037682570 087960749 +000000140 000103344 000165983 D|035626808 027154364 +000000140 000106780 000167712 D|069860365 072352052 +000000140 000118559 000218549 D|075816413 025112569 +000000140 000143413 000224434 D|022553304 089165779 +000000140 000183052 000231754 D|032102341 050227948 +000000140 000195091 000243878 D|032306166 018881232 +000000140 000242957 000244491 D|097775822 049682106 +000000140 000246191 000253734 D|005521470 063877778 +000000140 000281995 000257628 D|086999545 015050101 +000000140 000299312 000287808 D|060923091 068211794 +000000140 000300458 000337493 D|038203963 058470729 +000000140 000307795 000340023 D|056115942 025759844 +000000140 000320188 000355455 D|065269723 004917649 +000000140 000397758 000361296 D|000798439 061551784 +000000140 000408464 000389313 D|009019735 039810537 +000000140 000428185 000391017 D|073529733 056736833 +000000140 000483179 000433424 D|037846659 079100819 +000000140 000487632 000440430 D|064806800 058290306 +000000140 000502471 000481651 D|047602576 022632385 +000000140 000584267 000505409 D|005706097 063627310 +000000140 000595628 000545126 D|055873179 091305466 +000000140 000598634 000584509 D|024508936 027259945 +000000140 000598701 000605969 D|026785998 073117420 +000000140 000631321 000636311 D|099405695 008683970 +000000140 000641800 000681366 D|082333233 023710448 +000000140 000690898 000692103 D|085498699 053788149 +000000140 000698422 000692896 D|073619169 098219418 +000000140 000742609 000698071 D|013607043 012113928 +000000140 000760299 000725001 D|065079414 039386839 +000000140 000806152 000732442 D|063618982 013331123 +000000140 000811234 000749396 D|013065338 072989584 +000000140 000832132 000758688 D|068428455 090906011 +000000140 000835071 000770322 D|094983212 078449532 +000000140 000840099 000789383 D|079134617 016474644 +000000140 000843781 000817552 D|043210464 029133956 +000000140 000846229 000847756 D|040791530 005691678 +000000140 000874734 000859709 D|010529650 027277410 +000000140 000878799 000892311 D|064067269 061732491 +000000140 000894220 000901249 D|084023745 064321620 +000000140 000895136 000904382 D|034367294 089748726 +000000140 000913795 000916108 D|067372226 065112660 +000000140 000925693 000970541 D|075983099 061226486 +000000140 000931900 000989537 D|090339026 066271908 +000000140 000987009 000994531 D|043623762 074439451 +000000140 000992618 000996614 D|035623292 088166753 +000000141 000012569 000005778 D|045644718 063445924 +000000141 000077013 000037001 D|004074426 098605474 +000000141 000087294 000052015 D|023161223 002203067 +000000141 000089776 000056327 D|027610242 003560323 +000000141 000122889 000059004 D|026869645 049583963 +000000141 000124766 000140325 D|031980620 050706184 +000000141 000160638 000158795 D|085243001 043115913 +000000141 000203242 000191873 D|034838147 028503241 +000000141 000216102 000213196 D|053211918 057286856 +000000141 000235248 000252957 D|047812788 007452234 +000000141 000304124 000253986 D|044636321 042375029 +000000141 000316123 000268795 D|053831788 082533984 +000000141 000320341 000289354 D|079736797 079513572 +000000141 000329886 000321919 D|054128692 046318927 +000000141 000351987 000328377 D|035962480 019225319 +000000141 000354980 000337435 D|084398508 070513869 +000000141 000364337 000344690 D|021939979 059820301 +000000141 000366771 000360554 D|034221686 099657971 +000000141 000409297 000365622 D|040443380 051496032 +000000141 000416523 000403880 D|080522817 067794780 +000000141 000432685 000410802 D|025663439 048098137 +000000141 000451140 000417123 D|001718068 089025569 +000000141 000485385 000456727 D|081786761 022357491 +000000141 000491003 000480785 D|024591403 055901768 +000000141 000503640 000490318 D|071085012 051779151 +000000141 000511366 000533103 D|092541841 054364930 +000000141 000514830 000555047 D|073780690 061423164 +000000141 000531893 000596877 D|069833134 018065035 +000000141 000544032 000615316 D|001763423 035069576 +000000141 000555570 000624809 D|054200076 013465712 +000000141 000557384 000625574 D|025791403 065930907 +000000141 000631468 000627254 D|065854461 027978227 +000000141 000640774 000646580 D|043857858 045809416 +000000141 000676087 000697251 D|087823073 064211845 +000000141 000692318 000708152 D|094094136 078605543 +000000141 000700470 000716021 D|011098901 082933877 +000000141 000718344 000723865 D|027552525 078137036 +000000141 000786270 000749492 D|018389873 081843452 +000000141 000801075 000753686 D|084047374 046414513 +000000141 000814095 000753723 D|054971476 075227475 +000000141 000836470 000766431 D|065647609 020192486 +000000141 000908022 000777331 D|027284087 000836623 +000000141 000918084 000875434 D|029165210 008233756 +000000141 000928676 000881257 D|081851260 061680817 +000000141 000962773 000907361 D|023137749 050111264 +000000141 000969518 000921581 D|026360056 070905185 +000000141 000976295 000962156 D|020794225 031309201 +000000141 000980561 000970256 D|096271238 087867855 +000000141 000982104 000980632 D|011077491 016833496 +000000141 000983046 000994075 D|096814743 082141095 +000000142 000044983 000010091 D|001214092 030443545 +000000142 000046215 000028838 D|090197975 060574328 +000000142 000091462 000057101 D|027227009 024938010 +000000142 000097539 000071484 D|030935186 045384281 +000000142 000109226 000088041 D|056453835 047433487 +000000142 000125214 000088572 D|093948258 063777244 +000000142 000132938 000112278 D|008636099 080121572 +000000142 000149631 000124722 D|029516057 068188594 +000000142 000150800 000131226 D|088357785 011476140 +000000142 000175882 000160619 D|093211097 029901688 +000000142 000202832 000163122 D|051796935 000165980 +000000142 000216425 000169215 D|064476306 066186148 +000000142 000219851 000226721 D|003026279 056492541 +000000142 000230142 000237274 D|038906890 094433085 +000000142 000246081 000238662 D|041144508 027088315 +000000142 000348481 000288110 D|058982741 019444571 +000000142 000358714 000307339 D|005459259 087073801 +000000142 000380713 000312473 D|065503412 031519915 +000000142 000382183 000324303 D|012185079 064524976 +000000142 000389400 000368198 D|036632137 048001506 +000000142 000413037 000402733 D|014173928 055059135 +000000142 000414181 000415514 D|074784036 025891810 +000000142 000469249 000451997 D|008308450 007542632 +000000142 000485809 000484057 D|054922630 015189997 +000000142 000490225 000492053 D|034173025 079918225 +000000142 000497139 000527012 D|048258948 032156906 +000000142 000499250 000561894 D|069780972 011361259 +000000142 000532558 000590716 D|092923522 092655641 +000000142 000552681 000608065 D|024901206 095351048 +000000142 000555096 000663234 D|030116991 036702449 +000000142 000558868 000668429 D|006453462 024142757 +000000142 000593438 000680419 D|047643274 050300490 +000000142 000632028 000691078 D|001900841 056355227 +000000142 000647715 000700264 D|093635247 035839817 +000000142 000656578 000712178 D|074060930 016404075 +000000142 000677521 000714815 D|034713433 004524448 +000000142 000679325 000779199 D|075290523 042487729 +000000142 000743834 000780938 D|029637831 059901133 +000000142 000747660 000789951 D|059229400 020858270 +000000142 000748047 000808180 D|072427310 086462607 +000000142 000750573 000822614 D|085110499 074026815 +000000142 000753285 000823373 D|073805777 027050557 +000000142 000761080 000830559 D|068260109 046880931 +000000142 000764191 000892945 D|056896742 033884734 +000000142 000787046 000926317 D|051621108 012367161 +000000142 000791495 000929530 D|008347911 046664334 +000000142 000810112 000930963 D|082206733 065007626 +000000142 000896597 000946749 D|013759960 096569908 +000000142 000938059 000983031 D|001298593 014494834 +000000142 000953772 000983674 D|048076907 025481731 +000000143 000038199 000028595 D|054836264 001125793 +000000143 000070145 000079009 D|071996859 071953560 +000000143 000070958 000086200 D|085268392 075166256 +000000143 000090067 000131704 D|021140909 067108396 +000000143 000090947 000134731 D|092766030 034721390 +000000143 000107146 000184283 D|041107233 002004176 +000000143 000107172 000223789 D|031272946 001989456 +000000143 000111588 000229556 D|024349986 075717816 +000000143 000128641 000233789 D|040955879 009179377 +000000143 000133870 000235186 D|070165621 012738671 +000000143 000155324 000237732 D|022327743 069901565 +000000143 000170419 000241514 D|061520658 080013460 +000000143 000204451 000249513 D|095800127 014590324 +000000143 000316522 000289754 D|050145338 038997682 +000000143 000336254 000334433 D|059106734 072047703 +000000143 000339690 000350576 D|081719143 010550249 +000000143 000357770 000377765 D|014040080 068300782 +000000143 000362159 000407680 D|000371366 094784537 +000000143 000366559 000420946 D|004235287 084647905 +000000143 000388768 000467844 D|093552605 077668670 +000000143 000395701 000495103 D|018193348 054501034 +000000143 000421202 000496193 D|093861704 047080184 +000000143 000511674 000510740 D|068300293 091406612 +000000143 000526776 000510783 D|088208712 023341466 +000000143 000542345 000536746 D|001395257 071557642 +000000143 000616395 000556170 D|021473595 035678155 +000000143 000621888 000557319 D|077453245 010826374 +000000143 000623597 000579634 D|087530848 002422092 +000000143 000629059 000604674 D|002416984 084671425 +000000143 000649339 000641406 D|026110238 069576382 +000000143 000705887 000662461 D|037270438 058266436 +000000143 000716243 000692965 D|086308668 043136090 +000000143 000730598 000695889 D|041098652 044158164 +000000143 000750565 000723038 D|079538837 033902769 +000000143 000760238 000750346 D|004009234 056743479 +000000143 000770757 000769319 D|082095031 019004647 +000000143 000772146 000772503 D|088194942 002152874 +000000143 000780307 000773188 D|088650915 095294441 +000000143 000790012 000786846 D|032697034 013171954 +000000143 000793264 000817698 D|020884783 050012999 +000000143 000839574 000818793 D|058623836 056766239 +000000143 000840134 000821885 D|001017138 010126416 +000000143 000846256 000838342 D|003074745 059111751 +000000143 000848463 000846721 D|039044959 008399258 +000000143 000862167 000853921 D|085210207 043244353 +000000143 000889301 000892508 D|024986090 094135309 +000000143 000937718 000956785 D|075880689 037605296 +000000143 000959578 000960971 D|037132877 000865660 +000000143 000979637 000969570 D|066797409 025775762 +000000143 000995631 000985904 D|082194479 025690777 +000000144 000005062 000022094 D|094968598 038353383 +000000144 000007940 000048798 D|044661731 071677213 +000000144 000038604 000050419 D|067629127 043526024 +000000144 000129014 000065557 D|062563206 049498005 +000000144 000131084 000080098 D|065611347 014033714 +000000144 000134896 000149572 D|045913781 063231230 +000000144 000137488 000171306 D|097717343 093265813 +000000144 000142225 000181744 D|039660857 087769161 +000000144 000188574 000196099 D|053093985 034899598 +000000144 000196887 000204636 D|035423962 033201449 +000000144 000210783 000207795 D|060066676 056438917 +000000144 000250101 000213833 D|001151863 043346737 +000000144 000276415 000230579 D|031691082 062844482 +000000144 000283999 000231032 D|018354266 061029550 +000000144 000326629 000242821 D|037135197 056002968 +000000144 000327440 000254586 D|072657866 095843954 +000000144 000348823 000264121 D|075882419 090344625 +000000144 000350438 000306831 D|013632669 092353888 +000000144 000395482 000322465 D|025077249 030451253 +000000144 000420981 000332473 D|085993898 096817015 +000000144 000453128 000338318 D|000937982 092253048 +000000144 000455001 000372267 D|012460128 002621930 +000000144 000456766 000381592 D|073631674 080109410 +000000144 000475821 000385582 D|021511908 096288028 +000000144 000488874 000394362 D|011419356 056417700 +000000144 000556109 000397441 D|063597486 091298034 +000000144 000582838 000428247 D|040301633 008499787 +000000144 000607723 000492143 D|023871746 022752450 +000000144 000614639 000544780 D|007528334 051531307 +000000144 000617811 000589445 D|073530643 045352428 +000000144 000638990 000591517 D|049600498 039572548 +000000144 000645782 000609313 D|069711256 042114506 +000000144 000665184 000693496 D|010747725 088545063 +000000144 000679487 000708503 D|031802687 044961997 +000000144 000683012 000714165 D|029323219 087685441 +000000144 000692621 000738439 D|093556983 098467562 +000000144 000700974 000748516 D|008292094 014152115 +000000144 000739866 000756935 D|001322044 016157622 +000000144 000774217 000811717 D|039681665 007404599 +000000144 000780287 000820664 D|045465355 061934561 +000000144 000799932 000852970 D|078107115 073349210 +000000144 000820693 000865142 D|089780679 048401816 +000000144 000822851 000872295 D|055568962 017282610 +000000144 000865021 000901548 D|056638080 042782892 +000000144 000868237 000908187 D|062747698 036819371 +000000144 000880482 000915084 D|025702796 035947868 +000000144 000884405 000915402 D|007830934 089214374 +000000144 000915560 000942488 D|056191000 052370979 +000000144 000916661 000973506 D|099412016 053020202 +000000144 000977842 000986448 D|044584249 019131496 +000000145 000049892 000005262 D|008362625 091199970 +000000145 000088873 000016877 D|056135986 036378374 +000000145 000116871 000020589 D|074119239 003425982 +000000145 000130922 000042916 D|013283008 036184004 +000000145 000153532 000083779 D|051478588 014830165 +000000145 000160280 000093242 D|060434584 044598846 +000000145 000162647 000113354 D|024137062 014769627 +000000145 000167894 000133027 D|085548912 062001818 +000000145 000241046 000171981 D|080793497 039149282 +000000145 000241906 000202947 D|008090067 084395637 +000000145 000343538 000208022 D|082058434 039866482 +000000145 000349225 000211132 D|051559179 060869498 +000000145 000358821 000240976 D|038621416 069651501 +000000145 000362981 000243856 D|019648302 028522981 +000000145 000372916 000274278 D|089646755 069816642 +000000145 000379595 000297724 D|003693333 015967471 +000000145 000383447 000299381 D|069187055 041852640 +000000145 000385983 000304992 D|082999236 093248775 +000000145 000389920 000357716 D|067169297 076153320 +000000145 000442995 000370025 D|010152838 036985483 +000000145 000445777 000386310 D|021285366 091358342 +000000145 000453784 000395991 D|094093661 068453154 +000000145 000456649 000417729 D|076763478 049327546 +000000145 000457185 000419927 D|012097782 005394940 +000000145 000475461 000438000 D|037261099 025408390 +000000145 000496974 000448028 D|087325996 079894821 +000000145 000565996 000483487 D|025609603 033859276 +000000145 000571955 000511829 D|029424524 094180782 +000000145 000573497 000546233 D|015205447 081777402 +000000145 000583929 000561326 D|074211443 011011720 +000000145 000592876 000582328 D|068435804 027047543 +000000145 000599211 000587608 D|032800559 004985401 +000000145 000623434 000596254 D|029394502 025972745 +000000145 000630478 000617351 D|045908293 042846416 +000000145 000649144 000620258 D|096469796 044773499 +000000145 000657338 000634480 D|066757690 087428559 +000000145 000675624 000644516 D|024174602 015550517 +000000145 000682048 000676699 D|058013883 083618572 +000000145 000697123 000682418 D|027216607 032743011 +000000145 000724451 000708251 D|029668203 034515391 +000000145 000755446 000770046 D|084589321 045200766 +000000145 000793681 000777604 D|013547851 081131106 +000000145 000833058 000785720 D|010155266 094270439 +000000145 000851864 000787265 D|071542811 023487277 +000000145 000877220 000794687 D|068530948 077165178 +000000145 000887913 000850038 D|015435782 017917151 +000000145 000903512 000891511 D|034042427 076563790 +000000145 000926675 000919438 D|037714937 073712594 +000000145 000942773 000934779 D|045302884 053493540 +000000145 000961220 000976147 D|054096096 048101310 +000000146 000014991 000073311 D|055451831 094624810 +000000146 000018892 000090054 D|031169099 024892491 +000000146 000047501 000101226 D|032186680 077756461 +000000146 000059024 000104863 D|029005570 090176948 +000000146 000070414 000114208 D|029673293 058270698 +000000146 000075775 000121426 D|076278875 010555642 +000000146 000147362 000151602 D|021721234 083899757 +000000146 000153797 000182234 D|027124139 011427578 +000000146 000164191 000218590 D|041863486 077744794 +000000146 000164936 000219218 D|074887113 071992105 +000000146 000177207 000231514 D|088522131 019865798 +000000146 000188455 000244618 D|018805457 043889186 +000000146 000190070 000271725 D|011319559 008792241 +000000146 000247369 000308167 D|058498987 039954709 +000000146 000262010 000322206 D|070251344 093770792 +000000146 000269529 000350393 D|036274397 083000480 +000000146 000285506 000365254 D|004076279 028512691 +000000146 000330146 000371715 D|034850459 021328975 +000000146 000336629 000371945 D|058201978 038643773 +000000146 000361820 000381725 D|024516884 029454312 +000000146 000362646 000386095 D|041781974 073386952 +000000146 000371626 000410146 D|000529385 014000491 +000000146 000392614 000440178 D|006765941 053133828 +000000146 000404570 000474356 D|042294158 084385262 +000000146 000417332 000496960 D|097412907 098197638 +000000146 000453034 000542328 D|019572702 087113051 +000000146 000516848 000550617 D|077104749 057314651 +000000146 000557093 000584281 D|013455409 029536521 +000000146 000565559 000605367 D|031344383 062640645 +000000146 000568075 000606059 D|064474391 027711137 +000000146 000568140 000644101 D|064633725 033206889 +000000146 000573482 000653111 D|010506692 092082912 +000000146 000596985 000713195 D|082257981 068563207 +000000146 000601927 000745647 D|065140333 095647640 +000000146 000632596 000769885 D|074377102 056753885 +000000146 000655114 000777853 D|093651612 063304167 +000000146 000673072 000779803 D|030903303 084005808 +000000146 000681784 000789388 D|020298668 058321128 +000000146 000748020 000806164 D|077553666 076827396 +000000146 000751551 000864428 D|007937374 091113228 +000000146 000759894 000869584 D|012365213 043105975 +000000146 000816401 000870460 D|047140380 009081534 +000000146 000821863 000915106 D|034862329 016259687 +000000146 000822403 000942233 D|084616899 059897873 +000000146 000864756 000951343 D|048629034 015289478 +000000146 000913534 000970154 D|019705874 000815559 +000000146 000915239 000971514 D|077017687 036067553 +000000146 000925362 000975243 D|095617787 072024564 +000000146 000940660 000992923 D|089677175 039162731 +000000146 000962198 000996894 D|079112703 033288398 +000000147 000027447 000008734 D|019739447 046443836 +000000147 000032286 000057111 D|065123305 030232464 +000000147 000038969 000077365 D|085984496 034596540 +000000147 000059600 000095734 D|080116326 045616568 +000000147 000061822 000121779 D|002076576 076740253 +000000147 000076394 000160085 D|056294269 011544509 +000000147 000082675 000245190 D|077606261 075535264 +000000147 000117292 000250734 D|022466491 020251048 +000000147 000126770 000251547 D|074953140 011310424 +000000147 000178503 000265374 D|076572775 026998319 +000000147 000212099 000272986 D|010491451 029432746 +000000147 000235561 000275506 D|030543458 034257041 +000000147 000238141 000288463 D|090539227 019609794 +000000147 000240802 000293924 D|079304564 082685182 +000000147 000262775 000329066 D|055108875 008590317 +000000147 000283617 000340114 D|093553023 077144366 +000000147 000286241 000357133 D|039744365 059813830 +000000147 000295688 000360991 D|078284092 070199816 +000000147 000304061 000400417 D|048547947 006256911 +000000147 000316099 000404795 D|041996134 090871761 +000000147 000420451 000458996 D|064886803 033708042 +000000147 000435179 000484082 D|084653157 086326191 +000000147 000446755 000487316 D|008369087 085105784 +000000147 000447850 000490219 D|010927225 034299343 +000000147 000512790 000504583 D|056081382 026961507 +000000147 000551362 000510973 D|041204843 049964082 +000000147 000551542 000533379 D|013759634 039201095 +000000147 000562219 000558655 D|096509523 081130884 +000000147 000563108 000560087 D|049646501 009894849 +000000147 000579194 000599394 D|085698102 028736696 +000000147 000592674 000607146 D|088943713 055687164 +000000147 000636245 000630494 D|020811487 021905822 +000000147 000659186 000640468 D|013522823 055512267 +000000147 000670940 000648826 D|051700736 046220785 +000000147 000707773 000654383 D|021008133 036820298 +000000147 000744473 000665064 D|097762042 073188620 +000000147 000756057 000687054 D|038332416 020783791 +000000147 000757479 000698442 D|073980474 061034324 +000000147 000774138 000722027 D|005261620 059620490 +000000147 000783736 000727887 D|080741090 076804492 +000000147 000797903 000738721 D|077199287 024072240 +000000147 000798395 000774055 D|062220187 071057816 +000000147 000929131 000877315 D|048063640 038593107 +000000147 000935961 000882746 D|060242036 006460303 +000000147 000939779 000887436 D|005106183 069191950 +000000147 000954539 000892301 D|093733684 068658627 +000000147 000955967 000943511 D|023001217 003517152 +000000147 000967407 000979865 D|091779733 072310244 +000000147 000981626 000995277 D|001655400 042356658 +000000147 000997158 000999246 D|000228792 081660142 +000000148 000012774 000048180 D|054711823 030328368 +000000148 000023866 000070736 D|001136696 023824249 +000000148 000041267 000094883 D|062229751 006201382 +000000148 000048692 000096158 D|052193758 069210125 +000000148 000052940 000153054 D|087099589 064256486 +000000148 000117075 000193544 D|001837199 048484048 +000000148 000129366 000201060 D|089754494 060890781 +000000148 000130207 000210339 D|028042443 071910265 +000000148 000216197 000234015 D|010653234 015857508 +000000148 000218510 000247220 D|046995910 031290794 +000000148 000223662 000249152 D|082697940 088203547 +000000148 000235596 000250243 D|015202831 020538924 +000000148 000265637 000280724 D|009519346 062380639 +000000148 000309956 000298506 D|085042222 077314872 +000000148 000310163 000312178 D|055863722 070093819 +000000148 000365814 000332354 D|000841362 081813682 +000000148 000368700 000346151 D|097192254 063548059 +000000148 000422051 000351468 D|061489885 016581443 +000000148 000423129 000377594 D|061741350 016720231 +000000148 000426435 000382509 D|036299685 027714232 +000000148 000438194 000453286 D|097426839 012298230 +000000148 000448968 000505871 D|009092982 022829590 +000000148 000464184 000545951 D|016957362 059538644 +000000148 000471475 000566530 D|021990301 072433384 +000000148 000499306 000588029 D|094685151 067564136 +000000148 000528266 000590101 D|090856033 009204894 +000000148 000533355 000595909 D|045784932 002697371 +000000148 000548253 000603675 D|099287435 091529306 +000000148 000550864 000620901 D|001365031 098777582 +000000148 000553973 000624377 D|036514244 026613374 +000000148 000574936 000657612 D|082767772 083218684 +000000148 000578042 000676528 D|096895390 017471170 +000000148 000586542 000678915 D|048094099 050880532 +000000148 000590936 000689345 D|082282289 001930914 +000000148 000595949 000698852 D|060223372 032572282 +000000148 000606219 000707473 D|008553437 027631407 +000000148 000645192 000714515 D|064424663 073806767 +000000148 000682376 000734954 D|065540327 071818405 +000000148 000737290 000758930 D|048730582 081149035 +000000148 000740948 000769707 D|094311732 041891244 +000000148 000746615 000775135 D|087052435 022402054 +000000148 000812879 000813198 D|094992293 078179250 +000000148 000846989 000820010 D|025103756 053404743 +000000148 000856919 000821158 D|030886735 028493857 +000000148 000890699 000859368 D|037416189 071078835 +000000148 000893680 000877108 D|042913939 054958255 +000000148 000917790 000893586 D|085075990 010299743 +000000148 000921992 000912446 D|044192729 085554391 +000000148 000931557 000923327 D|015916798 070881362 +000000148 000949704 000953232 D|047353416 071801497 +000000149 000012597 000023600 D|005769659 096286720 +000000149 000035129 000032870 D|070400074 065309353 +000000149 000059059 000042088 D|008735930 046388193 +000000149 000062298 000050584 D|011037610 065063130 +000000149 000063910 000065116 D|075111846 023492228 +000000149 000115922 000129134 D|016692537 020292523 +000000149 000117050 000138686 D|049558231 078189776 +000000149 000130649 000167275 D|058626049 025871490 +000000149 000145375 000178137 D|062138547 020677203 +000000149 000146194 000197263 D|007171033 061249734 +000000149 000147223 000210373 D|053547033 045451334 +000000149 000191818 000214962 D|039597182 053495437 +000000149 000208685 000220858 D|096893337 036226010 +000000149 000211614 000255228 D|032455328 022933483 +000000149 000294739 000267765 D|092639715 081481819 +000000149 000296890 000315627 D|064711377 057637971 +000000149 000298231 000406951 D|096230713 035574094 +000000149 000328136 000413774 D|066587988 050836109 +000000149 000336301 000432015 D|033261618 039893875 +000000149 000409587 000439798 D|040039522 066744727 +000000149 000429073 000440270 D|011898138 018921669 +000000149 000437248 000468164 D|014003645 014382605 +000000149 000438395 000475309 D|068658884 076679317 +000000149 000459531 000490976 D|016757921 070637532 +000000149 000464508 000495805 D|005555688 020395627 +000000149 000464899 000574536 D|024877944 014898954 +000000149 000470716 000580092 D|010171447 079244454 +000000149 000477978 000622196 D|039028932 087690480 +000000149 000479026 000671872 D|025297200 052752045 +000000149 000479034 000671962 D|089433524 061716443 +000000149 000481905 000673031 D|046623895 097600556 +000000149 000495153 000694096 D|058200775 081568320 +000000149 000502526 000704693 D|074473204 073035671 +000000149 000526631 000733622 D|024132191 096633101 +000000149 000564554 000743390 D|075030135 005474620 +000000149 000574514 000754499 D|012911644 017570311 +000000149 000585811 000755312 D|048369752 078585951 +000000149 000647231 000755840 D|097010279 008160341 +000000149 000660511 000804847 D|026744017 094772665 +000000149 000670318 000830854 D|039170234 091331279 +000000149 000695212 000886689 D|003333055 056587538 +000000149 000702474 000899682 D|092260559 043387169 +000000149 000712354 000908482 D|050738569 056146354 +000000149 000715814 000926157 D|018082039 073206555 +000000149 000721211 000928760 D|053782492 017815972 +000000149 000754871 000929030 D|077736402 082597859 +000000149 000799160 000948660 D|051503991 079316736 +000000149 000814045 000973528 D|080613824 054252739 +000000149 000953055 000981351 D|030201519 086018752 +000000149 000963917 000987215 D|063205297 040747985 +000000150 000070063 000094351 D|063480541 052761278 +000000150 000071861 000096019 D|077948244 046970940 +000000150 000072332 000103664 D|019245822 069288102 +000000150 000106925 000105021 D|025995809 014217061 +000000150 000112040 000131607 D|045948771 020599387 +000000150 000115764 000149142 D|098172117 092069001 +000000150 000117257 000154845 D|052829512 004403352 +000000150 000140034 000214799 D|035178146 031746130 +000000150 000196079 000243138 D|068969902 047680279 +000000150 000237492 000250279 D|040935004 048647638 +000000150 000238824 000264505 D|067730423 054354275 +000000150 000289240 000279048 D|045877215 044841629 +000000150 000291918 000298330 D|091212054 056940720 +000000150 000301923 000310258 D|059784532 055243969 +000000150 000308891 000347331 D|018528713 048917440 +000000150 000312476 000347685 D|067737971 091236820 +000000150 000332052 000353835 D|058475257 097074165 +000000150 000347342 000356850 D|013090460 046593882 +000000150 000362795 000365340 D|027323753 046047661 +000000150 000364872 000409271 D|081499896 064097649 +000000150 000396964 000454923 D|054363922 019427317 +000000150 000439477 000465092 D|054239995 013582697 +000000150 000452498 000471693 D|075957902 021420924 +000000150 000459640 000488415 D|076153410 001460200 +000000150 000484814 000509987 D|040675741 016908123 +000000150 000486959 000525795 D|019913955 063670829 +000000150 000503109 000547196 D|052788458 075390208 +000000150 000541031 000591397 D|087148852 016058091 +000000150 000541461 000595295 D|091979597 021707315 +000000150 000543096 000647366 D|096527625 036925357 +000000150 000585532 000662984 D|032888319 038845279 +000000150 000590755 000665316 D|065093258 042972419 +000000150 000628685 000683735 D|088109518 098501315 +000000150 000635619 000688587 D|016624820 009091867 +000000150 000651371 000694644 D|062840132 094131819 +000000150 000675254 000712990 D|006213227 095625251 +000000150 000677189 000720622 D|054339880 006321051 +000000150 000699544 000740825 D|050724422 034408109 +000000150 000712240 000745256 D|038991849 028847659 +000000150 000725042 000797731 D|088155502 068125765 +000000150 000734369 000807083 D|011936204 008455563 +000000150 000760775 000808256 D|012208760 019678264 +000000150 000806742 000809152 D|094598385 086774128 +000000150 000819640 000824547 D|051633879 060265847 +000000150 000894192 000895932 D|070859778 018629922 +000000150 000917427 000929157 D|011243873 030957278 +000000150 000925766 000943811 D|086044400 063204112 +000000150 000971358 000954133 D|035813180 085229259 +000000150 000975091 000983178 D|020579503 089954400 +000000150 000988528 000997688 D|043199221 005217329 +000000151 000015111 000013257 D|054409098 033293091 +000000151 000019681 000047057 D|014498081 091775784 +000000151 000031007 000081522 D|088558296 037596705 +000000151 000036578 000139408 D|043912077 048673541 +000000151 000043049 000142375 D|071713897 079432668 +000000151 000070632 000142908 D|079706677 023804003 +000000151 000076083 000169182 D|018157461 070328319 +000000151 000103320 000227337 D|064948086 037764139 +000000151 000116614 000241470 D|044211377 063925264 +000000151 000140536 000281214 D|093654922 007230935 +000000151 000165216 000291749 D|088698787 072010066 +000000151 000248436 000302742 D|085940105 024605462 +000000151 000260869 000302980 D|070218486 019414939 +000000151 000301860 000313497 D|096382550 071714330 +000000151 000303939 000365988 D|080256448 053538298 +000000151 000308618 000381557 D|031080416 005446180 +000000151 000321288 000383814 D|044418834 067062689 +000000151 000352806 000401836 D|011859551 097193655 +000000151 000362590 000413555 D|040821105 009579331 +000000151 000366824 000430499 D|056593330 048437646 +000000151 000372188 000462840 D|012190612 099076915 +000000151 000375589 000472700 D|090906794 005128471 +000000151 000376024 000474363 D|027407436 039764847 +000000151 000400948 000488739 D|029827212 009828931 +000000151 000436090 000555540 D|050045748 033852826 +000000151 000449497 000579681 D|059046957 088214163 +000000151 000469068 000600921 D|072020548 010126157 +000000151 000471256 000601315 D|044957540 043775661 +000000151 000473357 000605375 D|074193698 018178253 +000000151 000506276 000609142 D|004452039 093358070 +000000151 000528580 000615829 D|086811054 056040665 +000000151 000529637 000627941 D|094884107 042719358 +000000151 000533630 000643722 D|048116928 047736228 +000000151 000579208 000654077 D|001776321 056961019 +000000151 000628554 000707214 D|033163081 078750986 +000000151 000672695 000707550 D|036741922 000894918 +000000151 000693732 000717610 D|002850846 035693438 +000000151 000710665 000723105 D|050907403 086613490 +000000151 000742036 000724586 D|031885912 066814280 +000000151 000757049 000739219 D|053007506 007150954 +000000151 000823799 000754055 D|057596231 087225915 +000000151 000829529 000768583 D|099636169 097278991 +000000151 000838914 000815313 D|035663278 026047043 +000000151 000849272 000872489 D|021707499 032205455 +000000151 000856634 000883258 D|077510662 060571333 +000000151 000861908 000925902 D|071836880 061131764 +000000151 000866292 000950055 D|071991703 066842962 +000000151 000896893 000975564 D|020648684 020565427 +000000151 000929032 000993194 D|094468159 061334891 +000000151 000942787 000993484 D|082809943 031468054 +000000152 000007131 000003130 D|015304897 013232630 +000000152 000085467 000012811 D|079761109 076930567 +000000152 000125035 000021152 D|068803924 087306108 +000000152 000125431 000026694 D|057892061 091542058 +000000152 000159698 000054068 D|046468441 032141563 +000000152 000165978 000069758 D|064720099 091427594 +000000152 000183758 000074199 D|016062657 040656078 +000000152 000232551 000093692 D|067487446 016483668 +000000152 000243024 000109328 D|050951210 018939473 +000000152 000249656 000134819 D|075712048 055636038 +000000152 000255392 000164486 D|086545266 087699210 +000000152 000258986 000196796 D|027509792 039209302 +000000152 000269368 000253268 D|020161327 010441850 +000000152 000271275 000255920 D|063027224 048806341 +000000152 000294343 000258414 D|080305732 024243617 +000000152 000398057 000313386 D|031871762 076815432 +000000152 000399252 000338010 D|060058330 020729683 +000000152 000401191 000371120 D|083030029 046258638 +000000152 000454828 000380308 D|019474859 034502882 +000000152 000456779 000428208 D|057828899 036029273 +000000152 000553654 000441390 D|069060345 042618771 +000000152 000562273 000493864 D|038325216 008001985 +000000152 000568195 000499745 D|095401104 097035740 +000000152 000591138 000517304 D|031617249 015188628 +000000152 000610957 000521023 D|024374234 070857914 +000000152 000618663 000526509 D|080366304 020238946 +000000152 000619750 000527738 D|000406066 056034800 +000000152 000630403 000528330 D|052161310 022421581 +000000152 000642485 000538229 D|095506137 055281030 +000000152 000662167 000540091 D|003269813 066715333 +000000152 000671773 000589832 D|009837636 022485617 +000000152 000676428 000599893 D|040655121 025506265 +000000152 000692739 000628814 D|028601916 044141192 +000000152 000696235 000630174 D|069537282 054114759 +000000152 000706109 000651102 D|074999823 053820807 +000000152 000708830 000656674 D|012440971 086796634 +000000152 000730992 000701574 D|081543648 031935455 +000000152 000732667 000707654 D|043759175 053640724 +000000152 000738170 000726043 D|027347993 085892649 +000000152 000741170 000727133 D|034922520 014082649 +000000152 000779904 000728770 D|040599035 089606025 +000000152 000792911 000775688 D|091644926 095054321 +000000152 000804032 000804272 D|056741938 038244008 +000000152 000817175 000808808 D|040335941 051991462 +000000152 000823637 000825073 D|093944104 005239391 +000000152 000824580 000914563 D|085488546 082658521 +000000152 000837002 000938947 D|019859440 080425238 +000000152 000904460 000941342 D|072548514 011362964 +000000152 000905876 000949435 D|041355755 019552946 +000000152 000920928 000978211 D|060891119 028551640 +000000153 000048659 000005735 D|091125093 047615219 +000000153 000070553 000007917 D|086391647 080644199 +000000153 000082164 000046110 D|050194414 065768245 +000000153 000101900 000078321 D|042894234 019617121 +000000153 000102571 000093403 D|024027366 015733318 +000000153 000110269 000107107 D|070591869 031254245 +000000153 000147838 000112678 D|037132021 047548306 +000000153 000167315 000155546 D|083818808 017024139 +000000153 000215078 000172281 D|028156675 016895606 +000000153 000232460 000175646 D|078476970 009599343 +000000153 000242895 000181709 D|018724006 001242339 +000000153 000288656 000191721 D|030398333 029440408 +000000153 000300339 000223068 D|024650743 028979987 +000000153 000340066 000247605 D|031155562 072651584 +000000153 000345896 000254933 D|005915014 011273805 +000000153 000349850 000294386 D|055499220 088467002 +000000153 000355806 000316951 D|063533842 066112242 +000000153 000367742 000318392 D|008984816 095319102 +000000153 000370946 000318442 D|035478330 004804196 +000000153 000423612 000355130 D|042915711 083243212 +000000153 000433537 000374230 D|004212338 016942223 +000000153 000439838 000377254 D|091216065 005002908 +000000153 000495787 000380829 D|059715970 008775974 +000000153 000525205 000387535 D|079233429 051023846 +000000153 000542557 000415722 D|059241245 056704654 +000000153 000551085 000455750 D|013570950 055666107 +000000153 000553132 000485349 D|079354515 014947128 +000000153 000557033 000486453 D|074963741 064653800 +000000153 000595471 000521530 D|062053914 070436250 +000000153 000602964 000586128 D|040128289 039872890 +000000153 000633728 000603536 D|074845891 074217299 +000000153 000641843 000627700 D|039119288 062346952 +000000153 000659927 000645866 D|014432747 042516906 +000000153 000664100 000656094 D|071577678 082034469 +000000153 000671576 000736876 D|022653276 043382837 +000000153 000679548 000745936 D|063729540 046700856 +000000153 000681840 000752579 D|088810289 035777827 +000000153 000719742 000774149 D|049712123 034099001 +000000153 000737884 000820534 D|054133748 049857933 +000000153 000749685 000822873 D|043583556 015224082 +000000153 000765537 000826675 D|088082428 003103220 +000000153 000772917 000828389 D|020197295 053547410 +000000153 000840684 000850954 D|050613989 001807952 +000000153 000859739 000896391 D|088312901 027345545 +000000153 000921350 000898487 D|046362778 009676980 +000000153 000940615 000918652 D|042608853 096315011 +000000153 000956885 000954159 D|056939444 043516146 +000000153 000969655 000968997 D|038524280 005221813 +000000153 000982395 000986559 D|039163870 076997033 +000000153 000987188 000989610 D|055731337 099877988 +000000154 000000911 000000873 D|022272506 097671185 +000000154 000008879 000097011 D|090930847 090175019 +000000154 000030543 000129288 D|013917970 024151490 +000000154 000050303 000138099 D|067572425 065733042 +000000154 000076383 000158266 D|079291540 077764236 +000000154 000087581 000174141 D|069156577 084930052 +000000154 000104332 000191988 D|068038199 083580224 +000000154 000120433 000197564 D|063831127 021641626 +000000154 000135870 000221077 D|035519416 084660508 +000000154 000161227 000227864 D|080659738 066144440 +000000154 000173254 000259499 D|018774409 039421348 +000000154 000207114 000265532 D|061180699 060360454 +000000154 000215979 000279381 D|001078290 051417013 +000000154 000296371 000290023 D|056776481 030753717 +000000154 000312873 000293502 D|071995572 045962582 +000000154 000324800 000308152 D|011424522 047427713 +000000154 000333794 000328461 D|048767445 040201184 +000000154 000338631 000339683 D|027794352 034129520 +000000154 000341598 000347657 D|028596601 062109631 +000000154 000344710 000369057 D|070424885 087034940 +000000154 000348063 000375235 D|006130392 020945219 +000000154 000376324 000416636 D|030438166 046976591 +000000154 000389268 000425956 D|041990690 047328581 +000000154 000409161 000464082 D|066380445 003887937 +000000154 000416241 000465174 D|054628880 025484062 +000000154 000453070 000494680 D|004752395 028305885 +000000154 000490135 000494736 D|071173437 087391335 +000000154 000493337 000538648 D|031643057 097501896 +000000154 000508165 000568354 D|085982767 039917905 +000000154 000510557 000601838 D|085871011 014913051 +000000154 000516627 000638949 D|019588887 033598995 +000000154 000517266 000646915 D|040616723 050636418 +000000154 000518462 000671630 D|021217277 041680166 +000000154 000531624 000679507 D|098275850 052003885 +000000154 000594645 000686892 D|057887936 062621431 +000000154 000622070 000711491 D|042427351 053405089 +000000154 000639895 000728565 D|075312396 032450102 +000000154 000641630 000753044 D|072955938 077977029 +000000154 000643322 000756757 D|081635244 028957520 +000000154 000647881 000768281 D|057161384 056960299 +000000154 000669514 000789689 D|043810343 013502772 +000000154 000682075 000818447 D|006650673 070527965 +000000154 000718761 000821660 D|050472948 097925286 +000000154 000783809 000854067 D|090615852 034692348 +000000154 000826305 000896746 D|021689733 043780419 +000000154 000829697 000903879 D|045417206 090711944 +000000154 000851534 000909131 D|031529951 006554745 +000000154 000853576 000919807 D|029880916 064705789 +000000154 000898260 000975832 D|059169090 006881535 +000000154 000938676 000997577 D|085431695 010475643 +000000155 000073150 000014220 D|061847709 033725151 +000000155 000087507 000019785 D|076493777 049792664 +000000155 000092049 000049971 D|047496146 039631847 +000000155 000095466 000074509 D|058371510 094866338 +000000155 000160916 000095024 D|032643275 014127984 +000000155 000164093 000142708 D|012259906 056654009 +000000155 000172755 000143978 D|090810563 088291323 +000000155 000174570 000162579 D|071941938 019950994 +000000155 000185080 000184203 D|099353117 069792444 +000000155 000185899 000184401 D|034232411 081652023 +000000155 000198229 000230309 D|022473818 056780603 +000000155 000232112 000236730 D|084827903 011933672 +000000155 000237231 000242951 D|069486345 062318593 +000000155 000242525 000244767 D|062296226 066481748 +000000155 000251810 000246434 D|077363856 066725238 +000000155 000254658 000293387 D|048984144 015476923 +000000155 000255149 000298428 D|002215151 063344917 +000000155 000257186 000299784 D|063400931 029633740 +000000155 000288807 000349311 D|023788421 081075373 +000000155 000299698 000367008 D|026749874 024870691 +000000155 000308967 000398170 D|002729626 073055719 +000000155 000311204 000406544 D|004911078 025714815 +000000155 000336189 000421062 D|039438855 050268057 +000000155 000344141 000428310 D|094393861 044793707 +000000155 000348092 000433567 D|025177582 024709737 +000000155 000357218 000459405 D|082847162 072505673 +000000155 000363613 000466829 D|095665096 066749810 +000000155 000374501 000471058 D|013140121 069662189 +000000155 000375215 000491677 D|028884764 028206896 +000000155 000413344 000497806 D|036586086 030938999 +000000155 000465842 000512125 D|061641178 089802085 +000000155 000478838 000529568 D|061226671 083178262 +000000155 000479738 000549982 D|065237411 017493921 +000000155 000501489 000555604 D|066495476 031380495 +000000155 000546861 000588967 D|003747072 042983957 +000000155 000554648 000591353 D|035986033 022215957 +000000155 000568057 000624238 D|069474986 083703930 +000000155 000570077 000697145 D|066690870 094360461 +000000155 000571571 000697523 D|080808448 030293525 +000000155 000657703 000711875 D|011569719 035771721 +000000155 000723735 000744076 D|010024613 073831767 +000000155 000729263 000802349 D|069523537 040406480 +000000155 000729922 000818273 D|008514003 027453988 +000000155 000766225 000828942 D|048273441 017837942 +000000155 000801657 000829484 D|087204386 012835142 +000000155 000809933 000837721 D|060407349 072923390 +000000155 000873781 000882084 D|087767709 034659702 +000000155 000926726 000909010 D|066663955 050130054 +000000155 000950433 000911868 D|062198649 067701263 +000000155 000961640 000942999 D|002044504 048136896 +000000156 000023044 000004889 D|031020564 061852382 +000000156 000048079 000060313 D|026601340 099737563 +000000156 000076574 000069923 D|005266036 000436087 +000000156 000087068 000117795 D|082406139 025593537 +000000156 000088016 000159017 D|042696867 002821924 +000000156 000105315 000179292 D|067923689 081688187 +000000156 000107130 000184390 D|082231100 024571320 +000000156 000157812 000194086 D|093811105 009609779 +000000156 000191054 000207658 D|042810913 023541026 +000000156 000211996 000231634 D|066880911 054463394 +000000156 000225272 000251415 D|005705607 059774314 +000000156 000229574 000265912 D|074705591 090156881 +000000156 000294369 000266289 D|080045244 095946835 +000000156 000335053 000273523 D|019866051 091297169 +000000156 000345615 000281137 D|043686919 038610175 +000000156 000357046 000293399 D|041668287 003465352 +000000156 000413926 000293744 D|003141172 025775078 +000000156 000422334 000386723 D|021290931 041031775 +000000156 000431859 000387896 D|049191827 028400331 +000000156 000435945 000407166 D|026437843 052102009 +000000156 000457787 000450058 D|019564633 091197100 +000000156 000481816 000450178 D|024605724 092806432 +000000156 000501155 000453297 D|038081526 099849530 +000000156 000503715 000456322 D|002650419 013198807 +000000156 000573349 000458305 D|076673203 025112691 +000000156 000588286 000460909 D|067064589 041792208 +000000156 000598184 000479380 D|091992051 006117465 +000000156 000639167 000485520 D|051590690 032770883 +000000156 000652815 000495908 D|066848840 002311818 +000000156 000684325 000498271 D|047202393 093327358 +000000156 000686561 000505205 D|070801954 073132255 +000000156 000696214 000525876 D|071497411 000203431 +000000156 000707765 000530402 D|005364511 050612740 +000000156 000709228 000538433 D|004029259 033921654 +000000156 000716526 000562016 D|087094719 052152739 +000000156 000728467 000562824 D|033498669 027723552 +000000156 000736404 000596998 D|044757690 067181340 +000000156 000754247 000597080 D|084561281 077069753 +000000156 000765971 000609819 D|041325277 012928889 +000000156 000776212 000656703 D|023185954 071380134 +000000156 000776718 000659844 D|075754821 069625706 +000000156 000854252 000774897 D|087254049 086205105 +000000156 000877198 000817588 D|028916542 057839702 +000000156 000883929 000822254 D|055883174 062668586 +000000156 000918786 000829370 D|056388560 057866337 +000000156 000920403 000876020 D|075433395 014157195 +000000156 000931560 000894653 D|036101609 079408663 +000000156 000933597 000908210 D|049061930 017265303 +000000156 000949653 000958840 D|070027740 097608560 +000000156 000958963 000963219 D|093267875 032351398 +000000157 000016488 000040239 D|040379476 013524944 +000000157 000018793 000042606 D|076709005 038471063 +000000157 000063060 000049063 D|062255157 034638680 +000000157 000083172 000089230 D|050277076 085176730 +000000157 000086686 000106483 D|021943834 037565779 +000000157 000124819 000113904 D|026498503 074165534 +000000157 000129586 000129455 D|070067989 002167590 +000000157 000164636 000160369 D|096541146 064717592 +000000157 000195107 000186472 D|003210858 028216016 +000000157 000222042 000187670 D|018768758 018167315 +000000157 000242875 000214272 D|042123116 093470467 +000000157 000270587 000219084 D|064688960 089609126 +000000157 000271871 000270442 D|043382013 037040902 +000000157 000273380 000284217 D|058675061 077675973 +000000157 000319680 000314195 D|028360180 002839145 +000000157 000333838 000343328 D|034296993 030112858 +000000157 000340889 000381287 D|092749932 087683411 +000000157 000365040 000406028 D|048369485 028697522 +000000157 000375311 000415825 D|042055724 033595453 +000000157 000403426 000425780 D|035554501 056678727 +000000157 000406113 000430782 D|015141573 047115588 +000000157 000512964 000453401 D|085684149 009148257 +000000157 000536467 000462118 D|068665471 072203932 +000000157 000540995 000472432 D|009852011 010710565 +000000157 000572156 000489225 D|051590088 044833617 +000000157 000577742 000525725 D|037956530 045323011 +000000157 000588413 000556034 D|033747126 044456361 +000000157 000588520 000559634 D|011302757 045602870 +000000157 000672665 000585274 D|005590523 079321120 +000000157 000678717 000592868 D|087222506 036990501 +000000157 000697479 000619754 D|091551455 084234430 +000000157 000734972 000631827 D|052649478 047939067 +000000157 000751554 000678812 D|017812254 016347967 +000000157 000755588 000690457 D|085770120 053357504 +000000157 000785190 000730827 D|040519484 066616458 +000000157 000788668 000735747 D|064922570 022325425 +000000157 000790437 000752894 D|076808584 093315627 +000000157 000795268 000804557 D|004379459 031680785 +000000157 000798035 000867846 D|093444414 001316591 +000000157 000804136 000908418 D|083644669 041771206 +000000157 000810208 000925527 D|091280733 025500136 +000000157 000810279 000934502 D|016072121 065370855 +000000157 000813131 000942527 D|007410945 011352719 +000000157 000834699 000951227 D|075685219 072305707 +000000157 000839678 000972160 D|011454705 015441340 +000000157 000867919 000974910 D|027595451 036350950 +000000157 000898772 000990118 D|018836081 045797913 +000000157 000914379 000991630 D|048062382 096103020 +000000157 000955162 000993775 D|013675640 088966362 +000000157 000996246 000997540 D|081040157 074293297 +000000158 000085138 000013430 D|048530794 045428925 +000000158 000155673 000023494 D|036305470 029968802 +000000158 000163545 000033989 D|077736600 060841091 +000000158 000174893 000039609 D|079290617 065475143 +000000158 000187095 000090838 D|065686987 082686778 +000000158 000253011 000103409 D|043898984 065995438 +000000158 000264834 000122558 D|037707713 003228463 +000000158 000283063 000139532 D|048690150 079661710 +000000158 000296525 000147449 D|098290066 025424927 +000000158 000310633 000156610 D|013907960 072393536 +000000158 000321700 000164035 D|036892630 063760548 +000000158 000322353 000165754 D|064192231 017630375 +000000158 000340933 000172752 D|045629431 011167139 +000000158 000355609 000176903 D|083955895 003449307 +000000158 000369134 000197334 D|026047100 069774113 +000000158 000401839 000208950 D|081244169 013330689 +000000158 000406673 000241581 D|032263884 049137167 +000000158 000451735 000252327 D|058778455 067221865 +000000158 000453327 000260985 D|058212029 024549918 +000000158 000477807 000299938 D|039997436 051880589 +000000158 000499525 000304321 D|098632979 079506075 +000000158 000512258 000424479 D|080365389 032750597 +000000158 000529397 000426321 D|036277861 020709755 +000000158 000544025 000465800 D|081139550 067091825 +000000158 000546227 000482604 D|056224368 075723868 +000000158 000547596 000513522 D|058070435 046860530 +000000158 000553061 000524948 D|012958235 053112261 +000000158 000570102 000540135 D|029825687 057047470 +000000158 000586179 000562621 D|022381816 001831719 +000000158 000613175 000578606 D|086793104 031611263 +000000158 000635243 000580934 D|031223390 017283653 +000000158 000645297 000582900 D|023945914 026105919 +000000158 000648915 000601866 D|010088995 090829469 +000000158 000664476 000625454 D|051455907 062078987 +000000158 000689569 000634110 D|083058293 082010706 +000000158 000692586 000667587 D|077236055 092108140 +000000158 000733705 000693890 D|068116375 092677171 +000000158 000740795 000720766 D|093949710 058958986 +000000158 000772744 000726253 D|016729660 040638147 +000000158 000790618 000727591 D|009260056 068625744 +000000158 000810087 000728129 D|091165940 089368800 +000000158 000817973 000744790 D|056794389 071172871 +000000158 000843184 000748236 D|025599583 057877209 +000000158 000870287 000756983 D|060880054 029350048 +000000158 000946261 000758931 D|066880191 083746122 +000000158 000953484 000762398 D|016699744 098511883 +000000158 000962206 000813346 D|038268783 035040006 +000000158 000966920 000908707 D|094397726 028151966 +000000158 000975019 000963476 D|030411016 065120360 +000000158 000989413 000966385 D|015918052 097248654 +000000159 000006484 000021695 D|040837395 092565573 +000000159 000041143 000032070 D|065103643 022311037 +000000159 000060817 000075726 D|005283763 029005796 +000000159 000085484 000077459 D|098176369 093448540 +000000159 000109061 000117446 D|046745394 055580499 +000000159 000120683 000121839 D|064092130 042619126 +000000159 000142348 000149194 D|038391275 054227130 +000000159 000149199 000163715 D|007753086 047891464 +000000159 000176830 000167659 D|002566786 097878316 +000000159 000214385 000173298 D|080024209 091052250 +000000159 000252444 000210643 D|049785831 038125601 +000000159 000273332 000218167 D|012172170 057180202 +000000159 000284414 000268123 D|022857831 090394799 +000000159 000287742 000291305 D|094086697 037922998 +000000159 000304708 000291581 D|069790194 064505149 +000000159 000326328 000302441 D|097887529 055101387 +000000159 000331120 000324213 D|056960686 021575405 +000000159 000333121 000337408 D|095514777 006734055 +000000159 000363082 000344257 D|005105943 030493095 +000000159 000369891 000360238 D|019195336 044034769 +000000159 000372047 000382039 D|023718497 071758080 +000000159 000410255 000402000 D|059582289 006538436 +000000159 000454905 000403875 D|034237611 067667456 +000000159 000470905 000407213 D|034888361 002793055 +000000159 000476927 000428773 D|014481837 068091233 +000000159 000508162 000441570 D|034982664 088597584 +000000159 000533947 000491862 D|000065600 038944327 +000000159 000535005 000493182 D|082602664 033158578 +000000159 000539217 000520087 D|024157890 065508418 +000000159 000541298 000520290 D|028815686 097976012 +000000159 000554711 000528692 D|030184018 051964517 +000000159 000565251 000537331 D|015691178 054085080 +000000159 000603330 000542055 D|081338727 084267386 +000000159 000629914 000558287 D|099763810 013937537 +000000159 000632342 000594149 D|051591068 068619763 +000000159 000650731 000608018 D|022566586 076342696 +000000159 000664756 000621677 D|063288821 015976257 +000000159 000666575 000634044 D|011696224 077414882 +000000159 000720420 000641622 D|038930546 082855422 +000000159 000749354 000658316 D|093398204 046905566 +000000159 000763235 000725196 D|058715254 087723761 +000000159 000771595 000752961 D|078433203 010333058 +000000159 000773968 000760622 D|093511064 034707672 +000000159 000799008 000840111 D|087354055 064775441 +000000159 000836801 000866256 D|084447204 031008437 +000000159 000839216 000886881 D|011462757 070150165 +000000159 000885745 000913212 D|040470673 055232620 +000000159 000905601 000921290 D|005459129 026066758 +000000159 000959376 000925361 D|006479900 071245794 +000000159 000976702 000956367 D|059904547 036311460 +000000160 000013655 000013003 D|079086209 014318589 +000000160 000033402 000024440 D|048929163 088206128 +000000160 000086851 000048107 D|075793568 098705391 +000000160 000111130 000059393 D|011630682 062334333 +000000160 000146545 000073006 D|040845344 016319680 +000000160 000154302 000092203 D|035113726 047771316 +000000160 000186786 000096927 D|069591109 088056043 +000000160 000195849 000117532 D|075840167 006335793 +000000160 000201675 000126729 D|086373197 072164019 +000000160 000219796 000144428 D|017377762 010418217 +000000160 000222140 000182242 D|093108771 004018273 +000000160 000229529 000214052 D|030991837 099733972 +000000160 000259765 000224721 D|056982159 084946833 +000000160 000279475 000225376 D|022289626 057955097 +000000160 000294445 000225643 D|053181806 033928378 +000000160 000301144 000228627 D|051640668 009418729 +000000160 000307736 000235554 D|081002346 070697557 +000000160 000347758 000262754 D|020168031 099909802 +000000160 000362406 000280655 D|082457819 020668212 +000000160 000364097 000284357 D|007693421 013306863 +000000160 000385934 000325002 D|018399764 015070897 +000000160 000419665 000362617 D|026118934 034334889 +000000160 000480431 000384876 D|089008808 045689483 +000000160 000491223 000386034 D|040117674 068536185 +000000160 000533401 000390994 D|045603105 039150706 +000000160 000541374 000392487 D|029222841 017567250 +000000160 000554192 000415090 D|008713382 022581978 +000000160 000556991 000430269 D|046776869 058459329 +000000160 000562407 000459025 D|026833855 099067648 +000000160 000562427 000513619 D|022287479 040991327 +000000160 000580275 000540771 D|031103872 030594629 +000000160 000583935 000565945 D|091027310 004959549 +000000160 000621461 000580297 D|024094984 008778568 +000000160 000642029 000592244 D|097781396 016138722 +000000160 000644796 000615162 D|061706038 095751735 +000000160 000655671 000643721 D|015165941 089084830 +000000160 000657029 000671718 D|066378981 085882670 +000000160 000696251 000676128 D|055827612 010412806 +000000160 000711678 000688907 D|014765875 010199517 +000000160 000755773 000723745 D|001494433 023780972 +000000160 000773178 000767055 D|072728893 067959278 +000000160 000824710 000783168 D|097302197 037105083 +000000160 000845561 000798031 D|096385099 009113528 +000000160 000859161 000840100 D|012786734 014668078 +000000160 000866920 000864776 D|067017502 040024280 +000000160 000897083 000871571 D|087556658 086699915 +000000160 000904425 000874169 D|015282724 009273488 +000000160 000932768 000940121 D|082859933 086234151 +000000160 000940230 000947412 D|066812934 004661159 +000000160 000960553 000982345 D|030017887 004064717 +000000161 000054007 000026575 D|038354165 013024226 +000000161 000060784 000042246 D|031121447 091505689 +000000161 000066963 000050325 D|016712405 005576307 +000000161 000075864 000096474 D|014441285 070235303 +000000161 000077369 000123395 D|049731246 056342808 +000000161 000085290 000161926 D|053484719 016555980 +000000161 000089766 000175172 D|068688943 055470398 +000000161 000106935 000189613 D|032718067 002447253 +000000161 000121133 000195356 D|040907383 060549649 +000000161 000131759 000197572 D|015394318 021359657 +000000161 000157847 000215904 D|085681608 074294366 +000000161 000181186 000222927 D|070721807 001345994 +000000161 000189075 000241700 D|009370096 041821613 +000000161 000212969 000281560 D|045386809 035619686 +000000161 000221437 000287483 D|065746783 044173678 +000000161 000227628 000297169 D|066689265 099806909 +000000161 000259327 000323575 D|045178702 061117026 +000000161 000297144 000334022 D|078305654 067872242 +000000161 000341229 000356456 D|075729180 054266104 +000000161 000346739 000409556 D|081974611 023843973 +000000161 000434654 000421812 D|078183257 028964971 +000000161 000444735 000581674 D|028014729 087586959 +000000161 000445520 000625134 D|066929234 049963183 +000000161 000449301 000634623 D|072719102 097116410 +000000161 000461390 000668632 D|067806704 019310953 +000000161 000480653 000669109 D|087047430 066685059 +000000161 000499451 000670050 D|090326887 095377529 +000000161 000519761 000698818 D|052720758 092757961 +000000161 000542440 000709981 D|088446985 069140583 +000000161 000552080 000761356 D|067166819 053716145 +000000161 000558611 000763872 D|015371414 088319292 +000000161 000571211 000778514 D|062844679 006169810 +000000161 000590927 000796550 D|008431641 007374555 +000000161 000606335 000798667 D|080580141 021214366 +000000161 000620363 000805311 D|095213916 053251305 +000000161 000636007 000817851 D|085334612 061190189 +000000161 000664343 000822913 D|061320500 036046795 +000000161 000733897 000824785 D|006189791 014265340 +000000161 000766748 000854514 D|070428021 038268520 +000000161 000786650 000858724 D|037175772 003103568 +000000161 000831121 000876144 D|061737937 049837754 +000000161 000838961 000887928 D|017753682 092712303 +000000161 000849117 000889346 D|043460003 072541408 +000000161 000872700 000904725 D|048010148 041002499 +000000161 000873988 000914579 D|093960783 028158884 +000000161 000876793 000922379 D|002089079 069049007 +000000161 000899402 000942536 D|098509478 090651249 +000000161 000939782 000958760 D|011171095 067434563 +000000161 000974489 000961438 D|051279987 036453096 +000000161 000993933 000980068 D|099137928 046898800 +000000162 000013310 000073339 D|079095471 031754700 +000000162 000030926 000078923 D|024189424 008583339 +000000162 000045493 000085169 D|097165172 003184872 +000000162 000047149 000107605 D|085299982 044407649 +000000162 000078262 000116019 D|082266568 054548800 +000000162 000081880 000127068 D|059178637 035328223 +000000162 000082186 000145063 D|085425724 023114119 +000000162 000083867 000194981 D|032847677 056915661 +000000162 000084042 000208088 D|090918854 036246757 +000000162 000097962 000216164 D|029814623 017330271 +000000162 000131569 000243065 D|070985218 083994726 +000000162 000162773 000278839 D|020777566 046009580 +000000162 000165387 000305294 D|000163307 039611239 +000000162 000177035 000314810 D|040893950 026627768 +000000162 000202497 000317471 D|098176833 040670021 +000000162 000203664 000325668 D|042924071 099559425 +000000162 000207155 000341618 D|086843748 060662907 +000000162 000272091 000354308 D|049966636 091448240 +000000162 000289413 000381309 D|065010949 049418709 +000000162 000340987 000384838 D|015975068 014265651 +000000162 000346056 000445143 D|084008416 035817060 +000000162 000353251 000454765 D|051349018 098806241 +000000162 000361603 000457039 D|046859854 033310297 +000000162 000376939 000479621 D|006870146 072971826 +000000162 000412139 000501626 D|087958971 055258154 +000000162 000426005 000515382 D|073595677 094066227 +000000162 000434958 000590053 D|037647524 069544597 +000000162 000454394 000614848 D|061920539 025093065 +000000162 000454682 000633810 D|086364885 019906425 +000000162 000460961 000662120 D|071749550 056266982 +000000162 000473593 000680970 D|076276138 048950906 +000000162 000483775 000687314 D|054119328 011517710 +000000162 000522232 000713687 D|003319573 008751175 +000000162 000547384 000730808 D|053132909 073119978 +000000162 000607441 000744801 D|089541056 045026659 +000000162 000668533 000757983 D|057431890 048232653 +000000162 000722889 000779296 D|047726437 052753759 +000000162 000739914 000790790 D|073792393 025164423 +000000162 000759201 000795882 D|027989011 068356308 +000000162 000821836 000804294 D|073821939 090002424 +000000162 000825331 000815893 D|078635696 051606650 +000000162 000851397 000862627 D|008395394 096547679 +000000162 000863944 000897640 D|008675176 058129964 +000000162 000934175 000901240 D|042427201 097362231 +000000162 000942493 000902382 D|019829696 059914948 +000000162 000953780 000913034 D|051117190 067161067 +000000162 000981965 000924868 D|025425636 003867538 +000000162 000983790 000926693 D|042206972 090408187 +000000162 000988510 000949571 D|090287117 058885473 +000000162 000994502 000990195 D|026490889 055765946 +000000163 000021279 000002752 D|079042135 092099167 +000000163 000044455 000007382 D|022065559 002703277 +000000163 000078696 000064162 D|033491477 076226826 +000000163 000090282 000080732 D|022133819 063719733 +000000163 000130495 000086478 D|064027143 030449290 +000000163 000140210 000108828 D|005003584 023080441 +000000163 000162652 000124839 D|036845436 051110326 +000000163 000173314 000179333 D|086562353 073642044 +000000163 000177710 000219230 D|082571415 074871413 +000000163 000192056 000229469 D|049760037 077062575 +000000163 000231161 000255113 D|070764949 043332438 +000000163 000231277 000258963 D|012959884 076609413 +000000163 000233787 000264375 D|099152117 089220574 +000000163 000270813 000268096 D|082443173 022936679 +000000163 000288361 000276536 D|037697067 078070893 +000000163 000292964 000290733 D|051725958 039423916 +000000163 000297927 000327175 D|077003108 032559174 +000000163 000304971 000327908 D|022150128 029459011 +000000163 000307132 000345816 D|026269290 009823528 +000000163 000339251 000352691 D|042241098 055246401 +000000163 000341677 000360758 D|008094471 019289190 +000000163 000365944 000370126 D|074709020 003368475 +000000163 000373048 000388798 D|075969118 051007743 +000000163 000382136 000389167 D|018121765 069513946 +000000163 000392835 000396268 D|053924849 067065367 +000000163 000474448 000396859 D|044855365 081508896 +000000163 000505632 000407934 D|084817539 084852713 +000000163 000515664 000448930 D|065864900 044642555 +000000163 000528489 000480488 D|058794622 038099737 +000000163 000532383 000484465 D|031016490 074070384 +000000163 000606589 000521009 D|041930020 060252877 +000000163 000619737 000541034 D|083428515 033811950 +000000163 000644184 000571026 D|005463839 086936567 +000000163 000676889 000575957 D|039984336 060951886 +000000163 000680689 000595899 D|085083336 085564493 +000000163 000700147 000606926 D|078134655 055437999 +000000163 000716144 000665430 D|045729271 092086193 +000000163 000720123 000692615 D|006296826 009204921 +000000163 000741540 000694624 D|052573037 037438057 +000000163 000759250 000734771 D|065584158 046429488 +000000163 000777330 000748578 D|098673665 072670121 +000000163 000800684 000846473 D|028051870 038686807 +000000163 000864790 000859473 D|066022037 053626716 +000000163 000877248 000903404 D|002294534 040679907 +000000163 000880406 000910906 D|017670038 039658388 +000000163 000894883 000970966 D|006286981 032880015 +000000163 000951832 000978249 D|053100630 013162132 +000000163 000985558 000983116 D|029560080 098671797 +000000163 000989330 000985152 D|018524890 005153486 +000000163 000995992 000997931 D|076897329 073316582 +000000164 000020545 000009111 D|020406682 002876218 +000000164 000054627 000010250 D|015218063 007363657 +000000164 000065910 000010425 D|072676778 017185210 +000000164 000073239 000019077 D|055033994 047667973 +000000164 000075995 000019992 D|068554715 039131019 +000000164 000097751 000053248 D|025605467 094896559 +000000164 000100406 000063141 D|065400521 066043158 +000000164 000123040 000064442 D|083687068 060884290 +000000164 000126832 000088202 D|065064797 082409541 +000000164 000184912 000134231 D|011676280 099195206 +000000164 000195597 000158262 D|029381450 053985979 +000000164 000202683 000165641 D|096861962 000495169 +000000164 000213418 000167202 D|044731875 006554880 +000000164 000215784 000179805 D|010772683 094591417 +000000164 000219981 000191594 D|055276622 045047966 +000000164 000238032 000193630 D|003149124 010069726 +000000164 000261191 000221804 D|000266374 033243396 +000000164 000304869 000244625 D|042030901 019661267 +000000164 000306922 000273130 D|061097960 024209357 +000000164 000326904 000275931 D|023602026 018034046 +000000164 000357168 000321860 D|093161329 086156921 +000000164 000360967 000353501 D|079781996 017631746 +000000164 000434592 000371822 D|081897036 000029258 +000000164 000446718 000395792 D|089058642 018810912 +000000164 000452559 000408486 D|064456255 012427514 +000000164 000469696 000409929 D|068103352 092542332 +000000164 000526785 000411119 D|028673331 051450008 +000000164 000528357 000465130 D|081398901 072375528 +000000164 000536548 000525605 D|056852737 072632436 +000000164 000544095 000530598 D|056250052 096651617 +000000164 000552183 000558001 D|082600742 047460172 +000000164 000558066 000568916 D|049109853 095493254 +000000164 000568271 000576457 D|026354200 040664784 +000000164 000569706 000584040 D|074587462 008522354 +000000164 000595760 000606954 D|088402329 052974823 +000000164 000608617 000626033 D|037479872 045346878 +000000164 000609493 000630096 D|069730546 004572061 +000000164 000633793 000645832 D|087450427 039302431 +000000164 000639578 000650622 D|034925659 070875983 +000000164 000680145 000719091 D|028742029 070528640 +000000164 000703027 000742246 D|047303282 010541385 +000000164 000763772 000756586 D|065961342 065242436 +000000164 000784530 000785183 D|016289785 057602077 +000000164 000798963 000834440 D|085779502 021528673 +000000164 000804634 000897221 D|090063750 024300124 +000000164 000857957 000900586 D|058366740 087036123 +000000164 000862951 000936658 D|095296615 037662499 +000000164 000900443 000941156 D|025583426 022378432 +000000164 000948019 000982602 D|080976052 039943629 +000000164 000951061 000985905 D|011305325 071195671 +000000165 000028612 000045373 D|083967951 025986855 +000000165 000033131 000052560 D|034290413 088577704 +000000165 000035291 000053623 D|058906827 059741285 +000000165 000071267 000061559 D|041811372 016563706 +000000165 000082318 000115082 D|037917290 097902965 +000000165 000100969 000119596 D|067625841 063837206 +000000165 000101476 000175915 D|030684170 058968949 +000000165 000119554 000191383 D|095422294 085428110 +000000165 000133010 000201664 D|066745155 099022975 +000000165 000145987 000205105 D|031838857 042050728 +000000165 000150127 000214326 D|082876797 060258957 +000000165 000161522 000222407 D|064194387 000028874 +000000165 000183934 000222782 D|044278152 089946754 +000000165 000261011 000239102 D|032262438 052554284 +000000165 000343614 000262741 D|003986130 035181742 +000000165 000363864 000269148 D|054295362 030195213 +000000165 000366450 000290142 D|062635742 007186587 +000000165 000428776 000294050 D|038883602 083394587 +000000165 000430204 000323347 D|007512349 010253988 +000000165 000431885 000393097 D|032896146 024275966 +000000165 000440952 000408823 D|091551041 028471584 +000000165 000457549 000419228 D|002000805 081229339 +000000165 000462809 000457447 D|002458980 046412517 +000000165 000477019 000464682 D|030837690 022759296 +000000165 000510789 000480449 D|025640321 067883388 +000000165 000514506 000480998 D|097194376 079859789 +000000165 000525158 000510029 D|098430828 068922938 +000000165 000596894 000524334 D|033875776 028946716 +000000165 000611521 000535427 D|053642962 036934382 +000000165 000613440 000554567 D|072883740 082736637 +000000165 000613985 000597163 D|068636935 004387278 +000000165 000645434 000650353 D|021212687 035520290 +000000165 000647438 000684064 D|045370550 058082735 +000000165 000653000 000684134 D|064695992 043315633 +000000165 000688816 000716888 D|032675569 026867883 +000000165 000718290 000729849 D|094616518 032464624 +000000165 000748842 000751425 D|039006832 085476443 +000000165 000756873 000758236 D|032900375 072269985 +000000165 000759554 000763907 D|062357862 021970463 +000000165 000761241 000766291 D|070387646 053569917 +000000165 000809367 000844639 D|084244319 064547361 +000000165 000811470 000862970 D|031210488 060738660 +000000165 000870268 000884097 D|039027168 096411250 +000000165 000882193 000896690 D|097754950 083425443 +000000165 000911901 000908319 D|079120648 072830952 +000000165 000925247 000912029 D|011877275 034148183 +000000165 000931193 000913306 D|001739345 025888452 +000000165 000932101 000913470 D|017388719 071153683 +000000165 000943570 000987887 D|074939706 022900184 +000000165 000994799 000995003 D|014395665 097618490 +000000166 000024838 000025779 D|037242784 048008158 +000000166 000031112 000049715 D|094642662 048393668 +000000166 000031872 000051166 D|064568076 083412962 +000000166 000035179 000076093 D|047578182 010196780 +000000166 000115870 000101914 D|007123807 002509199 +000000166 000134818 000119159 D|051085533 018319853 +000000166 000138376 000133274 D|046219918 083519614 +000000166 000149701 000141131 D|046118135 077896120 +000000166 000213874 000161484 D|098561173 088060411 +000000166 000221962 000164360 D|046404856 054066099 +000000166 000243105 000195757 D|027222049 061179814 +000000166 000255890 000215746 D|045145155 044269154 +000000166 000294819 000232252 D|061938506 078506098 +000000166 000334520 000254725 D|090261544 072231933 +000000166 000338003 000258756 D|016024467 007631438 +000000166 000373772 000281880 D|088162564 051461681 +000000166 000385305 000291176 D|046174901 027582619 +000000166 000388748 000292475 D|090920746 012965052 +000000166 000393307 000294725 D|096938694 086654540 +000000166 000394157 000301037 D|059539587 096562173 +000000166 000416914 000313581 D|039365428 023328859 +000000166 000430258 000354372 D|055288793 081265204 +000000166 000462499 000369493 D|012787725 089942550 +000000166 000482899 000390852 D|098009569 030510830 +000000166 000514355 000440572 D|096590969 061270981 +000000166 000544029 000441949 D|062086572 076231232 +000000166 000547906 000462253 D|001074481 004267062 +000000166 000548026 000529426 D|034530955 003830495 +000000166 000564233 000531935 D|048127031 000672352 +000000166 000582941 000546069 D|010007070 049486965 +000000166 000584750 000587658 D|045940052 047881775 +000000166 000586724 000598129 D|060171420 037936755 +000000166 000593605 000612447 D|058472358 070287434 +000000166 000639601 000625302 D|019212579 084871103 +000000166 000678442 000648931 D|032106644 011146842 +000000166 000680713 000739921 D|017434950 094161630 +000000166 000714733 000740560 D|001280153 049174351 +000000166 000720589 000749113 D|022542524 094741089 +000000166 000773247 000859163 D|007427385 016933106 +000000166 000796767 000865253 D|093198781 088126689 +000000166 000813282 000886748 D|018516086 001149824 +000000166 000819022 000894414 D|073120109 036355736 +000000166 000837108 000906662 D|034834005 009448375 +000000166 000841553 000913912 D|039786683 008786611 +000000166 000895529 000926386 D|062603829 097074051 +000000166 000896928 000958989 D|048672594 043013717 +000000166 000946707 000969158 D|046438636 013256433 +000000166 000947346 000988374 D|004804751 007535774 +000000166 000954073 000991867 D|027711214 089020504 +000000166 000994355 000996526 D|002329669 056836755 +000000167 000022380 000014037 D|005453775 086603156 +000000167 000083486 000022733 D|075141579 096235024 +000000167 000113538 000043865 D|083307928 078626053 +000000167 000137639 000048717 D|019823751 080912154 +000000167 000159293 000053398 D|017270552 077066362 +000000167 000193642 000060895 D|057158732 009279717 +000000167 000219530 000063700 D|075691678 049490251 +000000167 000220233 000066500 D|009578399 087972706 +000000167 000243067 000073615 D|031974316 032123091 +000000167 000245759 000091560 D|024472581 008851514 +000000167 000265634 000093081 D|072620541 067512117 +000000167 000274196 000094099 D|066131070 002959211 +000000167 000281262 000133579 D|050946312 077573128 +000000167 000344488 000150549 D|077817592 009638074 +000000167 000364839 000160607 D|039282521 082992819 +000000167 000373245 000168996 D|044909079 049503315 +000000167 000375820 000191004 D|045956639 026671827 +000000167 000388197 000195685 D|052451818 075347153 +000000167 000414885 000210976 D|001846490 085055459 +000000167 000464327 000225199 D|043121007 057679582 +000000167 000471355 000230929 D|070517857 012723468 +000000167 000471719 000241670 D|035394468 043186825 +000000167 000490462 000251108 D|026873543 051792959 +000000167 000496695 000404591 D|073301380 075849594 +000000167 000511143 000429297 D|099027076 076692286 +000000167 000587544 000458723 D|024994442 009131542 +000000167 000596976 000462336 D|077533442 062192988 +000000167 000598628 000478428 D|006229888 071732438 +000000167 000644364 000520358 D|047483309 076978812 +000000167 000701313 000521061 D|032132883 048609946 +000000167 000705713 000528189 D|039494049 031403544 +000000167 000709156 000551688 D|046145367 079559428 +000000167 000731166 000577185 D|032971539 040702018 +000000167 000782665 000579873 D|063621781 085244640 +000000167 000803804 000620992 D|090559441 032275317 +000000167 000826272 000638473 D|057044978 059057188 +000000167 000841810 000687129 D|012117826 013346412 +000000167 000851998 000688879 D|098348642 002997171 +000000167 000896067 000696160 D|021889715 098393475 +000000167 000929204 000740999 D|036742556 020997048 +000000167 000935463 000771573 D|085984537 079554495 +000000167 000941531 000796326 D|043212869 000957204 +000000167 000945476 000802013 D|059439172 034291546 +000000167 000950262 000819283 D|081260787 079032052 +000000167 000960540 000826258 D|047511203 022201325 +000000167 000961208 000843873 D|051051941 095229532 +000000167 000971941 000848268 D|020920346 087458243 +000000167 000976707 000866848 D|021395039 033795544 +000000167 000987187 000896539 D|021956769 007682015 +000000167 000994541 000923332 D|003748239 018558559 +000000168 000047257 000003432 D|050199397 070949936 +000000168 000047742 000018092 D|068464851 089180794 +000000168 000048783 000023338 D|041535490 019070429 +000000168 000051105 000090243 D|071167381 050444284 +000000168 000093151 000118029 D|048584077 060900084 +000000168 000119131 000119386 D|048327170 077623247 +000000168 000163689 000123433 D|012541211 003810618 +000000168 000164666 000189311 D|064161543 074983537 +000000168 000206746 000205206 D|036467818 025826628 +000000168 000212282 000248759 D|067028365 042255314 +000000168 000214405 000266073 D|089471995 029686172 +000000168 000226488 000274631 D|016176398 027290613 +000000168 000258340 000310615 D|023423961 061088354 +000000168 000307845 000317367 D|013241006 079161366 +000000168 000321633 000324991 D|070049715 044781205 +000000168 000324745 000330108 D|091431077 014935459 +000000168 000333364 000333911 D|018472442 016869118 +000000168 000342413 000374979 D|042231050 086471984 +000000168 000360068 000380513 D|080831936 054392908 +000000168 000368590 000389584 D|027026599 095332030 +000000168 000436564 000394014 D|018459954 033636433 +000000168 000440364 000454831 D|081697264 093667680 +000000168 000452883 000456446 D|003628840 027355493 +000000168 000517498 000492844 D|051317172 086046051 +000000168 000545462 000512792 D|071911422 064747729 +000000168 000584397 000529592 D|090857841 097624633 +000000168 000595255 000551329 D|099642614 014475607 +000000168 000616567 000572210 D|074646662 005308112 +000000168 000637301 000573691 D|004679867 010340434 +000000168 000649766 000581614 D|092764441 097111528 +000000168 000679181 000589869 D|028493753 007260599 +000000168 000690226 000633719 D|032902003 027946119 +000000168 000695871 000644583 D|069145066 032025446 +000000168 000708166 000659579 D|033195544 017545081 +000000168 000715872 000660150 D|013332040 060925490 +000000168 000716941 000715579 D|057850158 008661578 +000000168 000718220 000725269 D|001350792 083142891 +000000168 000725971 000727547 D|073233311 028648604 +000000168 000769279 000767930 D|028930025 079313092 +000000168 000782054 000802164 D|085684491 014580456 +000000168 000799786 000810576 D|013718212 048753769 +000000168 000822511 000853212 D|063828718 041537162 +000000168 000840362 000860285 D|029547570 066132867 +000000168 000877401 000861200 D|064977203 064825616 +000000168 000883154 000869497 D|078228649 058090059 +000000168 000905561 000870936 D|041979380 082246020 +000000168 000933291 000875132 D|021465245 032118622 +000000168 000944242 000890762 D|084865964 010135161 +000000168 000975398 000963304 D|024055535 084351928 +000000168 000989306 000978840 D|062149613 088283096 +000000169 000003066 000007642 D|093855892 028842624 +000000169 000037951 000057592 D|042389968 038959625 +000000169 000081843 000075454 D|024097152 068018884 +000000169 000093251 000084652 D|095157555 099179522 +000000169 000102868 000088433 D|055412900 022713470 +000000169 000104975 000121209 D|019247254 088413177 +000000169 000113440 000156224 D|055254424 003314530 +000000169 000117984 000208941 D|084677768 025130193 +000000169 000215643 000274888 D|074434697 085145630 +000000169 000221877 000289513 D|050908183 002679202 +000000169 000223526 000300752 D|058450991 007363980 +000000169 000277710 000399400 D|099058530 007165211 +000000169 000288189 000422742 D|063392909 081159965 +000000169 000304545 000424265 D|026765493 011698810 +000000169 000356360 000452671 D|012597331 096528464 +000000169 000357555 000456535 D|049145384 077709973 +000000169 000358780 000467127 D|034565231 049439660 +000000169 000377279 000506590 D|002263062 077762793 +000000169 000395577 000508634 D|093598507 042921489 +000000169 000396796 000510860 D|008090306 004940900 +000000169 000398545 000519519 D|014858170 008336747 +000000169 000401529 000570008 D|099255331 012710405 +000000169 000413994 000571163 D|049382203 012693607 +000000169 000418033 000577614 D|048144326 074311934 +000000169 000434146 000586888 D|000715396 011141175 +000000169 000436081 000600364 D|085462250 060944649 +000000169 000526456 000609978 D|059106865 005204063 +000000169 000527635 000638144 D|072067413 015821686 +000000169 000537080 000640349 D|010269921 098260808 +000000169 000538213 000704895 D|042082486 063975799 +000000169 000538588 000729176 D|055385465 079491905 +000000169 000557569 000741535 D|076289561 013289239 +000000169 000593046 000741791 D|063268488 039129115 +000000169 000661837 000791177 D|087325167 067577070 +000000169 000667627 000792041 D|037401559 076008305 +000000169 000691386 000849710 D|001985967 097251288 +000000169 000727311 000854210 D|054236812 070600603 +000000169 000734317 000865968 D|099912971 010489716 +000000169 000764013 000875648 D|056356688 080529788 +000000169 000769987 000879532 D|054837664 025285368 +000000169 000804919 000882613 D|004443694 084766210 +000000169 000817933 000886877 D|043141494 077664468 +000000169 000820297 000900294 D|094962785 009682718 +000000169 000844360 000918398 D|039871863 077403962 +000000169 000887881 000919018 D|029000028 026036724 +000000169 000890648 000921471 D|069005757 063531183 +000000169 000921519 000922906 D|026305562 021678422 +000000169 000941473 000937120 D|067637699 076473787 +000000169 000969573 000951411 D|068061101 062378516 +000000169 000983704 000970334 D|040436576 093050091 +000000170 000009831 000008645 D|091867365 010669386 +000000170 000072769 000022035 D|014598292 033498433 +000000170 000118458 000028342 D|079053130 028391274 +000000170 000141328 000048049 D|043777527 080323396 +000000170 000174533 000086809 D|012988580 060617420 +000000170 000210881 000111393 D|064697733 076757884 +000000170 000247846 000126235 D|091230068 011207772 +000000170 000252826 000136279 D|096457868 033748125 +000000170 000265571 000156420 D|006661837 098890995 +000000170 000277019 000177923 D|090331942 020934624 +000000170 000295441 000187713 D|073755133 082778920 +000000170 000302115 000191446 D|025428325 021961098 +000000170 000353825 000191810 D|044022049 027465379 +000000170 000403378 000194154 D|045249512 090915808 +000000170 000407858 000202210 D|043763522 075683279 +000000170 000410635 000225485 D|003197258 072892951 +000000170 000411767 000232553 D|013600081 078319649 +000000170 000418237 000246536 D|047435698 052661268 +000000170 000476569 000265829 D|022132580 043002408 +000000170 000483384 000289731 D|039348652 005351551 +000000170 000486939 000289784 D|067150758 056437876 +000000170 000500923 000334576 D|064701220 043335554 +000000170 000505297 000364313 D|069848716 036765248 +000000170 000516451 000402898 D|016182765 031456517 +000000170 000522009 000408518 D|096004711 089467139 +000000170 000559845 000431703 D|049744580 030921011 +000000170 000609730 000444320 D|040751932 040201109 +000000170 000618799 000451166 D|017818459 043900215 +000000170 000651138 000469562 D|070164993 003540774 +000000170 000651921 000506695 D|009642443 081755919 +000000170 000732741 000546591 D|006131059 050514124 +000000170 000735714 000553295 D|017430776 009898947 +000000170 000752541 000554959 D|067962285 043329478 +000000170 000779518 000562693 D|066332930 089195459 +000000170 000786914 000566824 D|077951160 065821434 +000000170 000791798 000588736 D|024571011 056342190 +000000170 000798081 000617207 D|053196866 034265555 +000000170 000826439 000691967 D|097812148 050106824 +000000170 000856600 000695618 D|092737574 004180293 +000000170 000858355 000724148 D|066503795 052553040 +000000170 000873228 000736066 D|087906646 006508712 +000000170 000899108 000849364 D|077133770 028153760 +000000170 000920967 000855491 D|006679340 016377992 +000000170 000921646 000872080 D|077267074 034227589 +000000170 000964687 000886890 D|074742308 042710305 +000000170 000965226 000911676 D|099215289 053589797 +000000170 000978228 000927770 D|017015633 096183926 +000000170 000980613 000930632 D|083986630 094245387 +000000170 000989848 000964757 D|003728184 033938056 +000000170 000992057 000999494 D|076667705 085807158 +000000171 000000252 000013392 D|087313336 065754920 +000000171 000000536 000089214 D|059504286 019094435 +000000171 000014432 000100050 D|011839387 074330698 +000000171 000047468 000106428 D|004716775 083664316 +000000171 000049378 000111135 D|084940780 073614425 +000000171 000087552 000158803 D|056534226 013234262 +000000171 000119608 000183998 D|042194760 067571436 +000000171 000127162 000198834 D|044328973 046392132 +000000171 000169417 000214541 D|065121541 077250963 +000000171 000175443 000221258 D|011359112 028308839 +000000171 000185802 000253775 D|053763956 035146003 +000000171 000196381 000281634 D|013887893 003197198 +000000171 000227194 000291509 D|046599455 009009125 +000000171 000232352 000306622 D|056216940 097882368 +000000171 000248616 000327875 D|033474385 052350623 +000000171 000262708 000348105 D|085333792 002232767 +000000171 000278720 000351276 D|077807185 057640732 +000000171 000293055 000374168 D|074046706 019522578 +000000171 000296489 000441263 D|070669257 027788844 +000000171 000314907 000446124 D|056867590 081695243 +000000171 000318183 000449060 D|076333060 081643548 +000000171 000331609 000463177 D|083272912 056724121 +000000171 000348565 000483421 D|002104779 010088873 +000000171 000354390 000490689 D|014480733 062146576 +000000171 000371759 000515134 D|031590677 058250506 +000000171 000392481 000519686 D|088284221 044916978 +000000171 000430423 000583769 D|093468847 093852777 +000000171 000487371 000591553 D|072650687 048012249 +000000171 000491037 000613536 D|083284022 019307203 +000000171 000505080 000625283 D|065630194 061644905 +000000171 000546267 000625821 D|002089052 079380420 +000000171 000555081 000625919 D|097274409 028475764 +000000171 000651812 000635848 D|093065392 006535627 +000000171 000667831 000652726 D|006538829 052330954 +000000171 000680538 000662256 D|093959969 073680265 +000000171 000717108 000679192 D|091198091 089323603 +000000171 000737582 000706537 D|010474238 039390073 +000000171 000762281 000749160 D|097287452 098821680 +000000171 000777622 000752280 D|006013689 036428837 +000000171 000788347 000756126 D|024674819 057325434 +000000171 000794451 000768683 D|008297722 090340265 +000000171 000815701 000843007 D|054571433 088337265 +000000171 000818919 000879500 D|012613437 082272700 +000000171 000853027 000887578 D|043847324 082187815 +000000171 000898868 000901922 D|059071351 097369823 +000000171 000912507 000905700 D|036707126 002973607 +000000171 000925341 000938824 D|096891254 031730820 +000000171 000944993 000982657 D|024974415 037783657 +000000171 000948064 000985444 D|083066373 086929562 +000000171 000959532 000992554 D|085383734 008937895 +000000172 000014336 000036102 D|087793321 076720088 +000000172 000014666 000040472 D|029985671 013415304 +000000172 000022462 000051396 D|074867141 082514129 +000000172 000027472 000108049 D|075178579 065326019 +000000172 000032328 000162094 D|079584633 069426232 +000000172 000039238 000188516 D|089589982 021991389 +000000172 000053300 000201024 D|041440530 084062096 +000000172 000054891 000216033 D|026677171 029382966 +000000172 000079646 000235222 D|005316925 012625312 +000000172 000090966 000263505 D|074805542 053095135 +000000172 000134598 000263636 D|023933777 086548684 +000000172 000173477 000266002 D|073647535 099144193 +000000172 000173649 000291548 D|039576409 085894304 +000000172 000196522 000298049 D|084698358 063404066 +000000172 000231885 000317952 D|058271842 076624286 +000000172 000287982 000335238 D|007850368 084976267 +000000172 000298207 000355820 D|045795239 004423191 +000000172 000333307 000365078 D|049855090 004374128 +000000172 000396521 000374439 D|071070352 052335679 +000000172 000440977 000380512 D|098516970 038920471 +000000172 000452165 000385489 D|046585111 087865430 +000000172 000475882 000406327 D|079045917 038537915 +000000172 000476106 000459164 D|008628936 003029261 +000000172 000506234 000483643 D|088415174 027851598 +000000172 000511679 000487825 D|097077328 099251185 +000000172 000520862 000495226 D|053610974 056612075 +000000172 000532015 000518380 D|064119323 070706097 +000000172 000534111 000519560 D|022157013 064940371 +000000172 000540620 000522818 D|094854177 092931582 +000000172 000541407 000541861 D|026312857 077782724 +000000172 000544714 000549296 D|040996756 097964996 +000000172 000546147 000562569 D|088932959 034480123 +000000172 000566877 000562841 D|081860347 030745840 +000000172 000625675 000621797 D|027395670 024455435 +000000172 000657592 000640321 D|003250382 058986801 +000000172 000689678 000651521 D|041461739 089650762 +000000172 000697983 000691880 D|082994460 091280232 +000000172 000737124 000729141 D|015737547 046085433 +000000172 000740027 000736527 D|073860723 053161104 +000000172 000752629 000741870 D|072916558 028702034 +000000172 000758373 000754944 D|017189891 091218453 +000000172 000778062 000755302 D|068770247 081991815 +000000172 000778692 000763092 D|012339337 089132959 +000000172 000822158 000812717 D|064659045 072434462 +000000172 000849429 000827904 D|020154136 020890551 +000000172 000870314 000840994 D|053092500 035267134 +000000172 000967357 000852204 D|051704501 097074933 +000000172 000967826 000961436 D|054592285 039471306 +000000172 000981156 000976078 D|040412822 030820348 +000000172 000994519 000999928 D|089357079 068089983 +000000173 000043348 000009751 D|087409345 023785418 +000000173 000070053 000081889 D|048184748 041050137 +000000173 000073335 000086400 D|057269706 070128586 +000000173 000117047 000112053 D|037690965 006398173 +000000173 000131743 000121538 D|093869769 072451257 +000000173 000137060 000121545 D|063399420 069706061 +000000173 000145595 000141210 D|026205496 094852496 +000000173 000211143 000141513 D|099209954 064250467 +000000173 000243732 000148170 D|052158393 085268124 +000000173 000260672 000173928 D|033785015 035532805 +000000173 000266433 000181380 D|099395802 077156242 +000000173 000268732 000226626 D|021851370 072216827 +000000173 000328325 000240860 D|012359771 091650180 +000000173 000348867 000250609 D|047077198 045781869 +000000173 000356280 000251353 D|097631116 085137907 +000000173 000434418 000259037 D|004409080 080336303 +000000173 000447203 000262606 D|089695653 002507220 +000000173 000485331 000283225 D|092764639 029738663 +000000173 000489670 000317803 D|031486711 007287002 +000000173 000527372 000329863 D|031595292 051725086 +000000173 000528094 000332524 D|027990854 038900584 +000000173 000564326 000334332 D|068726837 011994021 +000000173 000566039 000335483 D|075390349 045281151 +000000173 000592792 000365886 D|024021194 055318394 +000000173 000598330 000385830 D|005661674 077502961 +000000173 000599078 000388525 D|000653392 048023821 +000000173 000608922 000449354 D|030232253 094383536 +000000173 000614216 000480230 D|002324975 076901695 +000000173 000626228 000548091 D|027506161 017931953 +000000173 000637720 000550693 D|045555848 033419777 +000000173 000645095 000554762 D|089358077 089276817 +000000173 000670657 000564708 D|074743823 040547629 +000000173 000678456 000581105 D|044089985 074610816 +000000173 000697633 000604263 D|009181630 044714334 +000000173 000722667 000606611 D|088061089 018872455 +000000173 000751413 000615479 D|058604227 018214140 +000000173 000757628 000618358 D|092336538 022230842 +000000173 000776551 000628869 D|013463926 071332709 +000000173 000782112 000629169 D|067037129 002573401 +000000173 000782970 000658904 D|063222963 026606721 +000000173 000796900 000676604 D|019494264 085914857 +000000173 000834895 000726263 D|017703308 044479068 +000000173 000853593 000735673 D|064480710 025126418 +000000173 000906865 000780362 D|064959795 024545670 +000000173 000912790 000786484 D|020188948 026465330 +000000173 000919040 000826188 D|007565811 060117709 +000000173 000961841 000827737 D|025211446 073377299 +000000173 000975167 000846678 D|034999092 057456079 +000000173 000986597 000851755 D|088911807 034959269 +000000173 000998667 000947229 D|096583422 020863454 +000000174 000061075 000017729 D|045819029 098682318 +000000174 000091440 000040495 D|004170533 026282173 +000000174 000117898 000105351 D|041247145 087727335 +000000174 000151244 000133594 D|055717487 084033000 +000000174 000178891 000145907 D|014223644 067699218 +000000174 000180060 000155920 D|046985312 089831809 +000000174 000198829 000166839 D|017816194 028089146 +000000174 000205521 000168262 D|050139486 001440616 +000000174 000232107 000168309 D|000974650 076195108 +000000174 000253918 000204775 D|097982755 094752591 +000000174 000267242 000235771 D|066020781 080815879 +000000174 000269528 000241606 D|018629399 028857211 +000000174 000272168 000271334 D|071158115 085403965 +000000174 000273310 000289242 D|090063855 089460361 +000000174 000289611 000293598 D|076623202 004548371 +000000174 000290266 000339094 D|014105983 040146072 +000000174 000319962 000368227 D|041308660 027972299 +000000174 000334903 000388650 D|017846223 086398175 +000000174 000368409 000395546 D|006943728 004437370 +000000174 000379492 000410504 D|075649689 067443376 +000000174 000380371 000440482 D|041963444 036092285 +000000174 000406300 000453650 D|024044853 027049942 +000000174 000433039 000474919 D|005977451 088853553 +000000174 000454958 000486545 D|077223180 008937933 +000000174 000457073 000493116 D|090446926 048105527 +000000174 000460770 000502684 D|098902537 030379958 +000000174 000462406 000522288 D|072881741 093154983 +000000174 000494810 000539102 D|039053710 066053789 +000000174 000533005 000548271 D|040671080 063744835 +000000174 000557149 000557049 D|053350958 090194879 +000000174 000576185 000567343 D|035123961 007540524 +000000174 000608253 000616163 D|091743991 029640336 +000000174 000613402 000629084 D|026133815 075271896 +000000174 000614132 000639100 D|020056155 018805478 +000000174 000632639 000684577 D|086685474 089983163 +000000174 000672496 000693276 D|013222152 065069629 +000000174 000676530 000694287 D|097791699 072240466 +000000174 000727796 000705497 D|029487505 092203319 +000000174 000735952 000731676 D|032667507 036631681 +000000174 000782331 000773821 D|069169204 065776825 +000000174 000796287 000819772 D|095492340 084824867 +000000174 000810583 000831796 D|055666261 065649110 +000000174 000838516 000863105 D|098805343 096438627 +000000174 000852685 000871575 D|011902188 031357645 +000000174 000893549 000918030 D|043818449 001998470 +000000174 000896148 000935091 D|089749518 093116118 +000000174 000914976 000944345 D|073891147 095780050 +000000174 000925545 000952209 D|037186968 067906332 +000000174 000940689 000954624 D|028038249 098492310 +000000174 000953499 000975610 D|059258592 029627261 +000000175 000021043 000003514 D|094763759 061206156 +000000175 000076100 000015777 D|082978033 067457872 +000000175 000090473 000078793 D|099288137 045579061 +000000175 000110899 000090345 D|036847574 021870200 +000000175 000130235 000092817 D|064422346 048025616 +000000175 000150878 000102551 D|003968657 012115979 +000000175 000161603 000124960 D|091944318 098065491 +000000175 000212292 000125199 D|068187202 097584571 +000000175 000229930 000134418 D|048488235 038005599 +000000175 000230695 000135689 D|096642003 017756564 +000000175 000232520 000167104 D|095698880 056425054 +000000175 000234966 000182611 D|015417302 060651106 +000000175 000281552 000238199 D|047324658 088886221 +000000175 000294926 000250006 D|096094578 055055197 +000000175 000308509 000307422 D|021600812 073451437 +000000175 000330418 000312883 D|061798408 060188904 +000000175 000421971 000338254 D|046020332 027868016 +000000175 000428063 000347506 D|048741150 070722313 +000000175 000431175 000376037 D|077030282 009169552 +000000175 000482940 000383246 D|064131039 020869732 +000000175 000494665 000420587 D|023017519 014137329 +000000175 000501793 000488287 D|066207199 021114507 +000000175 000534866 000505270 D|006016090 081512486 +000000175 000544583 000513275 D|058896603 015401872 +000000175 000585020 000521908 D|090975383 061755983 +000000175 000601236 000523446 D|081645412 031921750 +000000175 000604790 000547767 D|065952508 062681201 +000000175 000615059 000548690 D|052214085 068226515 +000000175 000659105 000552954 D|096647974 008768467 +000000175 000661411 000572513 D|076306672 078750556 +000000175 000702840 000577877 D|077703991 020187321 +000000175 000740247 000629243 D|035761722 091837464 +000000175 000740911 000673911 D|032132769 056282965 +000000175 000743352 000695489 D|049199002 091999289 +000000175 000764091 000710707 D|002286116 040383243 +000000175 000804517 000748721 D|016771827 046256166 +000000175 000812649 000760529 D|084519012 050965056 +000000175 000838649 000795077 D|096655643 034758553 +000000175 000857847 000817710 D|024917463 018543768 +000000175 000876675 000842443 D|031132646 023819890 +000000175 000899341 000846137 D|022216129 065231970 +000000175 000904856 000866097 D|008286469 039417649 +000000175 000905420 000898295 D|078687084 005434961 +000000175 000906471 000930513 D|073817409 053532705 +000000175 000914212 000930553 D|030333048 001652845 +000000175 000917176 000930984 D|066163236 078909538 +000000175 000919018 000941827 D|002710868 080562615 +000000175 000919263 000954141 D|038894954 081047103 +000000175 000938139 000981158 D|068663732 059430407 +000000175 000951374 000982784 D|084932391 031118050 +000000176 000027445 000047223 D|072973967 012313362 +000000176 000070765 000059509 D|086133354 018683224 +000000176 000087665 000076834 D|015518010 022355781 +000000176 000181459 000090815 D|020363356 068026719 +000000176 000193218 000118772 D|026307492 014384067 +000000176 000193442 000119211 D|058636106 059176823 +000000176 000205669 000164992 D|056214935 025906596 +000000176 000213846 000167192 D|095586334 012402020 +000000176 000244354 000177628 D|053783159 030606109 +000000176 000245972 000190489 D|083559939 002018856 +000000176 000247062 000198260 D|087061844 069613312 +000000176 000271002 000198676 D|058967314 056014055 +000000176 000291534 000231922 D|002285013 073829790 +000000176 000299418 000233608 D|065521839 088204838 +000000176 000336781 000247963 D|014160898 085413391 +000000176 000341179 000248665 D|017092971 008667691 +000000176 000422673 000252667 D|051015430 061978936 +000000176 000435075 000257297 D|033752253 030452294 +000000176 000441542 000334435 D|086030476 000815545 +000000176 000450453 000337700 D|006896206 019602349 +000000176 000469437 000354859 D|038980293 007855260 +000000176 000485966 000400077 D|022235633 040698964 +000000176 000521178 000412868 D|014861853 076590840 +000000176 000522356 000429234 D|061179482 091183660 +000000176 000533015 000452727 D|081084121 092014008 +000000176 000534835 000480045 D|085252590 030184015 +000000176 000547285 000502645 D|001633866 036815809 +000000176 000593557 000562407 D|098106980 087239488 +000000176 000599110 000562691 D|022653224 068491681 +000000176 000604430 000617640 D|008692696 003737411 +000000176 000618199 000641692 D|033475379 033943629 +000000176 000626683 000645097 D|040562530 055959534 +000000176 000632356 000664096 D|053862439 087998564 +000000176 000647441 000687035 D|041935653 043818988 +000000176 000654948 000688556 D|072907093 039027721 +000000176 000723274 000716377 D|018328890 001513464 +000000176 000730417 000770574 D|033196567 008748393 +000000176 000753738 000786473 D|003138056 019559321 +000000176 000790568 000860510 D|090152067 045716784 +000000176 000806387 000862538 D|048493634 098722004 +000000176 000842110 000867021 D|055908890 003374400 +000000176 000847417 000884006 D|028523792 018516169 +000000176 000848011 000893498 D|034073280 097290209 +000000176 000904846 000905858 D|038164307 060326044 +000000176 000927353 000923159 D|043666680 001732027 +000000176 000944218 000937220 D|027809205 083410143 +000000176 000962689 000960753 D|007811769 009427489 +000000176 000979787 000968064 D|087131094 016080921 +000000176 000990170 000980392 D|070007604 016397527 +000000176 000999724 000999667 D|060580935 010944563 +000000177 000045506 000003024 D|076202750 026307019 +000000177 000048464 000004202 D|035581056 055628146 +000000177 000053671 000026763 D|072900971 045896833 +000000177 000054081 000062626 D|037295290 017927317 +000000177 000064312 000064905 D|026418988 059647459 +000000177 000074219 000083904 D|008231213 022166318 +000000177 000077164 000103490 D|073969945 047554031 +000000177 000090510 000129255 D|065180900 070673316 +000000177 000093497 000236478 D|060170903 029783334 +000000177 000118833 000246543 D|067101340 097171444 +000000177 000123996 000268122 D|015537971 024464396 +000000177 000148238 000285063 D|087548601 023039610 +000000177 000148527 000321074 D|039554193 018299802 +000000177 000200035 000325098 D|029927112 075976292 +000000177 000212887 000331461 D|029809223 070258383 +000000177 000228786 000335302 D|041605014 031181864 +000000177 000241642 000335348 D|019275603 094661422 +000000177 000250728 000347806 D|024113884 031694134 +000000177 000256407 000359538 D|025981574 022052702 +000000177 000266637 000375587 D|099067225 038771835 +000000177 000290370 000402226 D|026227898 008933924 +000000177 000410960 000463073 D|015785446 081219887 +000000177 000413073 000464426 D|001108189 050805604 +000000177 000419777 000472217 D|039184486 067364550 +000000177 000425907 000474554 D|050409568 039278135 +000000177 000448764 000496975 D|083652029 055843040 +000000177 000466244 000498796 D|066062967 028829821 +000000177 000492769 000498953 D|041208127 012730497 +000000177 000494922 000502448 D|088475276 005138781 +000000177 000497504 000516114 D|014838353 090496128 +000000177 000508567 000532449 D|008197412 019856536 +000000177 000552744 000555520 D|053717522 044804147 +000000177 000565709 000582992 D|095140846 059259083 +000000177 000597434 000625512 D|091949747 014092689 +000000177 000621908 000633309 D|026032132 045963855 +000000177 000622602 000696647 D|013461039 047052544 +000000177 000668425 000699803 D|052238271 012768012 +000000177 000720579 000735045 D|029039174 020084209 +000000177 000730910 000745560 D|001392865 044379190 +000000177 000762136 000754625 D|011901828 040000460 +000000177 000788233 000791807 D|092697549 039263401 +000000177 000843401 000867636 D|052595402 022843565 +000000177 000862384 000885551 D|045383709 009656353 +000000177 000876435 000892571 D|051754535 006767310 +000000177 000878959 000893958 D|054459446 033587459 +000000177 000903865 000953883 D|042571231 016560870 +000000177 000921633 000959151 D|067640571 081098592 +000000177 000953484 000961977 D|072118306 003874001 +000000177 000968816 000968333 D|037622935 049947044 +000000177 000982933 000982626 D|036369358 086726696 +000000178 000010777 000004558 D|012116096 006251828 +000000178 000027410 000015028 D|068780100 002099902 +000000178 000031377 000066497 D|042250681 054929932 +000000178 000037055 000085694 D|071281804 008867972 +000000178 000039856 000086745 D|003310582 007465784 +000000178 000044748 000094143 D|006942029 031783156 +000000178 000060105 000096215 D|040595865 070782945 +000000178 000112885 000098322 D|029312766 028629093 +000000178 000128652 000126399 D|056960800 053570941 +000000178 000144921 000130609 D|073970783 017931121 +000000178 000148328 000147893 D|079260174 033232098 +000000178 000164465 000167889 D|053227352 024161225 +000000178 000164685 000257805 D|024028418 003555468 +000000178 000273724 000284816 D|024661571 037131234 +000000178 000274235 000309909 D|009056945 070612926 +000000178 000302432 000353245 D|012166577 042075315 +000000178 000312355 000377279 D|003746631 050442662 +000000178 000316157 000437353 D|097436927 044709522 +000000178 000331659 000450720 D|051526765 019977208 +000000178 000407120 000459993 D|074269518 090032411 +000000178 000430018 000471972 D|085421393 097234291 +000000178 000435970 000479119 D|048568688 055958922 +000000178 000437452 000485674 D|062247947 056464077 +000000178 000456985 000485933 D|086428677 058417386 +000000178 000469230 000545515 D|091037049 000931509 +000000178 000521221 000557509 D|065973478 086249259 +000000178 000533344 000573440 D|002234600 064483804 +000000178 000535616 000638737 D|013115405 064144761 +000000178 000558411 000639843 D|097448797 081156840 +000000178 000578884 000643679 D|095801198 089921511 +000000178 000586220 000647802 D|023939848 032124731 +000000178 000588942 000660431 D|055626360 050591928 +000000178 000619167 000684316 D|048909027 089745815 +000000178 000632404 000686775 D|041901162 006238799 +000000178 000642365 000687070 D|062105922 081072362 +000000178 000658425 000689694 D|053639988 024758960 +000000178 000678312 000725983 D|080393519 007907028 +000000178 000699549 000744082 D|003923821 062583631 +000000178 000710045 000766268 D|010409372 004207005 +000000178 000730710 000802469 D|072438735 083340468 +000000178 000753836 000830876 D|018719020 009323603 +000000178 000766476 000870191 D|036906465 069285512 +000000178 000790704 000936833 D|039041703 058005372 +000000178 000811964 000951443 D|041823527 017806601 +000000178 000857934 000955074 D|053313906 079368307 +000000178 000863048 000958867 D|008151931 043312939 +000000178 000870271 000970436 D|065601080 040572777 +000000178 000945073 000974900 D|021983049 048738182 +000000178 000955504 000984944 D|019429280 034646308 +000000178 000994822 000992582 D|094942951 023160946 +000000179 000015215 000032900 D|001236996 035763051 +000000179 000036871 000038327 D|024296256 021061718 +000000179 000056775 000051440 D|075071670 085594042 +000000179 000063743 000065048 D|028256934 079149234 +000000179 000078434 000070620 D|062386262 062634166 +000000179 000079340 000117792 D|013128535 054903367 +000000179 000105168 000125737 D|062649701 025288805 +000000179 000125448 000130366 D|066384835 010649749 +000000179 000151682 000146321 D|093859097 049653918 +000000179 000157462 000149310 D|043238198 007879911 +000000179 000158672 000165279 D|065065666 040081379 +000000179 000163052 000183211 D|059116164 011224306 +000000179 000172127 000193793 D|050805862 011809619 +000000179 000172719 000205661 D|085271202 025759879 +000000179 000219878 000226516 D|042866272 017145748 +000000179 000272204 000229297 D|005240504 040787187 +000000179 000279761 000231206 D|051666835 047048774 +000000179 000289268 000255628 D|035563604 086741429 +000000179 000327804 000282876 D|060125299 068324095 +000000179 000334397 000295606 D|091815457 063150367 +000000179 000339248 000301095 D|087928607 057965558 +000000179 000386719 000313926 D|056269069 000621481 +000000179 000417540 000330387 D|023069437 058688164 +000000179 000446684 000385856 D|079059956 038966877 +000000179 000484456 000429900 D|035568532 064281677 +000000179 000490878 000436585 D|010637358 089867879 +000000179 000503081 000447840 D|057812538 017031825 +000000179 000506310 000453633 D|054311457 029717557 +000000179 000539106 000479088 D|024224213 045150011 +000000179 000557285 000513572 D|058126255 033804838 +000000179 000574227 000524974 D|044433634 027474266 +000000179 000580067 000529042 D|066001338 050485693 +000000179 000596072 000534985 D|091272963 036426475 +000000179 000596282 000541270 D|040197206 091828553 +000000179 000624528 000556187 D|098634066 058519328 +000000179 000645134 000586413 D|097939400 061617652 +000000179 000697646 000653517 D|072100106 009614502 +000000179 000716913 000669494 D|097490950 054908052 +000000179 000765450 000700526 D|015028903 015643652 +000000179 000788156 000735395 D|042864579 038072404 +000000179 000790556 000819302 D|045224247 047150875 +000000179 000811888 000851188 D|020958173 088224613 +000000179 000841449 000858275 D|033807783 052210454 +000000179 000859277 000864411 D|024080643 098095730 +000000179 000862871 000885545 D|051766668 025409375 +000000179 000874207 000911117 D|049628712 074064490 +000000179 000888766 000913281 D|048454008 071199024 +000000179 000892275 000933171 D|052310573 059669589 +000000179 000950945 000945199 D|055862627 005312145 +000000179 000962046 000957838 D|087157623 007715024 +000000180 000002172 000012399 D|020032438 061935818 +000000180 000011034 000023391 D|035811084 047460765 +000000180 000014307 000032827 D|035050532 061282956 +000000180 000014583 000086754 D|005353234 093021917 +000000180 000025257 000088492 D|021246740 070076317 +000000180 000029517 000090994 D|010664561 001101609 +000000180 000049670 000119409 D|041398774 003983523 +000000180 000072826 000125343 D|081446567 076878829 +000000180 000077618 000131597 D|010747232 086583914 +000000180 000086747 000133850 D|011324922 052006541 +000000180 000138696 000140158 D|085989345 021955935 +000000180 000152356 000143089 D|053626471 028509920 +000000180 000161026 000159868 D|029443073 006886357 +000000180 000163151 000171596 D|029070025 077129942 +000000180 000166045 000185884 D|064511912 044538005 +000000180 000166158 000188056 D|092067630 019821923 +000000180 000193574 000191630 D|038559863 014184901 +000000180 000206411 000286939 D|048407677 016494708 +000000180 000220669 000313510 D|098350318 091404915 +000000180 000230309 000325337 D|022148046 069559385 +000000180 000300420 000335221 D|037636957 048835088 +000000180 000311682 000346657 D|008973720 039041302 +000000180 000327318 000346861 D|020727803 087963500 +000000180 000333566 000364291 D|030916378 070146104 +000000180 000344472 000394139 D|076081571 012623460 +000000180 000348771 000440704 D|026953306 054286986 +000000180 000377145 000456953 D|037969506 041419457 +000000180 000381374 000494407 D|085950558 086560327 +000000180 000450949 000518245 D|064523297 083648912 +000000180 000597832 000545815 D|023974880 028168312 +000000180 000598900 000590160 D|019761046 053485047 +000000180 000599788 000620098 D|004573904 090465341 +000000180 000604994 000621035 D|015292061 027037226 +000000180 000613221 000637178 D|088460318 074823138 +000000180 000653068 000694245 D|088550325 031552359 +000000180 000690592 000714991 D|012265620 030853803 +000000180 000709959 000724893 D|067902797 081268035 +000000180 000741380 000750294 D|096135830 029050912 +000000180 000790008 000791233 D|068059492 007710539 +000000180 000800287 000803258 D|053683017 056323163 +000000180 000815132 000815606 D|084485041 050847401 +000000180 000830621 000821144 D|074084603 024559147 +000000180 000838584 000827233 D|063408191 061403168 +000000180 000863429 000833092 D|046874471 098380444 +000000180 000867707 000835471 D|000535972 021002542 +000000180 000874018 000873601 D|039934955 079900007 +000000180 000900138 000954090 D|071470213 090929081 +000000180 000914912 000957273 D|044096575 004140889 +000000180 000960424 000967200 D|030934589 047919598 +000000180 000998951 000990243 D|063327130 026383466 +000000181 000008174 000008880 D|023868766 048548178 +000000181 000010362 000015529 D|024612145 062589303 +000000181 000022608 000022668 D|046681162 099154137 +000000181 000026684 000024012 D|040329145 084615660 +000000181 000031838 000027263 D|023444966 081385758 +000000181 000046049 000115308 D|010004713 080037885 +000000181 000082743 000150099 D|056721841 016794148 +000000181 000106176 000188528 D|018381718 092156856 +000000181 000106333 000218751 D|023190851 009299449 +000000181 000117180 000225515 D|022963112 013518844 +000000181 000185412 000237276 D|095703428 099741150 +000000181 000206872 000241360 D|089883935 020657632 +000000181 000229325 000246617 D|091708994 044199480 +000000181 000241558 000260476 D|043064294 096309248 +000000181 000294316 000273104 D|031537071 014361997 +000000181 000326367 000298127 D|052673240 032191906 +000000181 000327948 000303319 D|033542124 013739177 +000000181 000329469 000314373 D|029960925 044379142 +000000181 000337040 000386075 D|058734703 035773470 +000000181 000338922 000403624 D|010226148 079562709 +000000181 000345070 000437488 D|042346523 007458694 +000000181 000379990 000439396 D|021665751 046750540 +000000181 000380350 000449565 D|006885583 073386225 +000000181 000409821 000474794 D|060770046 091981416 +000000181 000435001 000531830 D|062662985 015880985 +000000181 000436378 000603116 D|097286378 040307564 +000000181 000475270 000607594 D|097218495 035686248 +000000181 000480375 000618086 D|051665050 069590539 +000000181 000511427 000642199 D|012043272 085216244 +000000181 000545557 000653822 D|092474047 095193352 +000000181 000585781 000678767 D|099637619 083071820 +000000181 000590257 000726759 D|014547846 013947570 +000000181 000592466 000734292 D|040075450 049441278 +000000181 000607623 000735429 D|003795588 009805170 +000000181 000608061 000740839 D|044984636 034857754 +000000181 000614128 000754940 D|005529501 011690998 +000000181 000663640 000769149 D|002361523 083939752 +000000181 000715239 000771500 D|018568788 014742840 +000000181 000739625 000808768 D|022641892 033474032 +000000181 000744962 000823456 D|032849547 039931646 +000000181 000761069 000865053 D|093699023 023344864 +000000181 000765825 000891944 D|085699693 003621783 +000000181 000806148 000896704 D|045543459 056436004 +000000181 000847468 000914151 D|099640066 079293285 +000000181 000855599 000947380 D|049297357 056931549 +000000181 000864569 000951369 D|050262755 022625039 +000000181 000927532 000957248 D|098057032 028599760 +000000181 000930421 000963224 D|054213323 090697614 +000000181 000985570 000970612 D|030735015 089130197 +000000181 000999744 000997994 D|030113467 088546966 +000000182 000004302 000009510 D|082306680 039489109 +000000182 000006832 000029338 D|076262461 097472320 +000000182 000016714 000031765 D|064327486 024351525 +000000182 000030889 000044311 D|019814928 011567971 +000000182 000039516 000065322 D|027386505 044170997 +000000182 000077581 000066917 D|072935523 046608167 +000000182 000105752 000093185 D|078855679 043927932 +000000182 000176874 000112252 D|069178792 057121969 +000000182 000190615 000135374 D|010160944 024436390 +000000182 000209330 000141263 D|024474134 065499519 +000000182 000226714 000236613 D|084826702 067341475 +000000182 000230473 000246080 D|016724776 023421903 +000000182 000240661 000273036 D|034337713 098297597 +000000182 000245897 000284403 D|019217732 022409424 +000000182 000265904 000379816 D|054776809 066690917 +000000182 000276380 000422260 D|053827820 023438203 +000000182 000293262 000441879 D|024065992 003310180 +000000182 000309684 000449676 D|038174492 036132547 +000000182 000320825 000471562 D|003008699 027567961 +000000182 000356661 000497578 D|001612759 025128303 +000000182 000468871 000522591 D|025380437 043978734 +000000182 000489857 000526097 D|082272526 063815725 +000000182 000499074 000534587 D|084087638 001898673 +000000182 000519636 000543251 D|039698915 078441445 +000000182 000522362 000568544 D|022508155 046343244 +000000182 000541426 000586113 D|062850798 094392406 +000000182 000554634 000586290 D|001554676 093357955 +000000182 000556733 000600043 D|099488734 022278919 +000000182 000568836 000658389 D|091438052 030502541 +000000182 000581412 000679618 D|057403011 056698651 +000000182 000584033 000693662 D|057227047 091444564 +000000182 000629958 000706607 D|075994726 000701004 +000000182 000697028 000723993 D|070926836 095148261 +000000182 000705790 000737998 D|024052293 002518950 +000000182 000708215 000748660 D|065796782 064937976 +000000182 000744029 000769206 D|009118193 078648971 +000000182 000758345 000775677 D|069928966 024330790 +000000182 000790307 000776584 D|073428972 041181670 +000000182 000804789 000806689 D|005181277 035685988 +000000182 000807192 000807354 D|016198844 081234914 +000000182 000818229 000847092 D|089174864 015180687 +000000182 000821093 000856689 D|089550211 094232173 +000000182 000821355 000876586 D|080807092 061026065 +000000182 000834177 000911734 D|040702538 069461272 +000000182 000914479 000913169 D|037202178 050159848 +000000182 000923435 000928244 D|090371010 002567130 +000000182 000942695 000947811 D|040863423 001969704 +000000182 000980623 000978262 D|025102388 036779654 +000000182 000988716 000981238 D|038754505 068879156 +000000182 000999863 000984661 D|062287425 095803391 +000000183 000004204 000005730 D|073178564 007769431 +000000183 000062911 000012624 D|023240237 078587901 +000000183 000067995 000017250 D|012854698 066944568 +000000183 000119713 000036766 D|012552287 031536487 +000000183 000141087 000047058 D|069510133 034081294 +000000183 000155658 000109416 D|036445533 023396742 +000000183 000156040 000119467 D|074502959 068934698 +000000183 000157525 000127207 D|080274270 056171160 +000000183 000169287 000165792 D|035827730 034930082 +000000183 000181227 000168675 D|024324908 016880539 +000000183 000186180 000191786 D|092962310 014519376 +000000183 000194583 000208260 D|056982962 026903283 +000000183 000201338 000208458 D|013575371 071976585 +000000183 000210266 000208843 D|077700972 036412471 +000000183 000245319 000234565 D|086731480 033472287 +000000183 000286762 000280947 D|051383636 094508772 +000000183 000311658 000321475 D|021406725 083229578 +000000183 000326093 000352051 D|046306292 083049266 +000000183 000351512 000355513 D|071060591 055407275 +000000183 000372423 000392761 D|058756473 054729017 +000000183 000385220 000398534 D|093876394 093003083 +000000183 000394313 000440437 D|033754798 059642086 +000000183 000405908 000441093 D|028144333 081653930 +000000183 000443283 000442369 D|057460715 057659976 +000000183 000521676 000487047 D|070426334 056261086 +000000183 000522173 000524956 D|064531845 077305394 +000000183 000537397 000552720 D|082298904 023161398 +000000183 000538155 000615141 D|046575398 036686093 +000000183 000548811 000628253 D|015732366 078900253 +000000183 000549365 000634133 D|019051454 095038946 +000000183 000586156 000650316 D|099450356 023381758 +000000183 000590459 000683255 D|037316121 014857444 +000000183 000590610 000686390 D|071363973 042924366 +000000183 000604788 000698857 D|025141015 040178277 +000000183 000617779 000709524 D|055702366 073391031 +000000183 000629590 000742967 D|007943785 080323881 +000000183 000668562 000747257 D|013062084 012951903 +000000183 000716699 000823704 D|055587719 060134359 +000000183 000750928 000849964 D|084563938 098009653 +000000183 000766028 000862810 D|056467682 034503080 +000000183 000783838 000873460 D|038902267 006715713 +000000183 000798503 000896981 D|099760497 013304072 +000000183 000821974 000897523 D|027634776 083253806 +000000183 000856725 000901904 D|019663525 077613873 +000000183 000866073 000902932 D|025817815 069703899 +000000183 000867618 000923935 D|079040702 094032744 +000000183 000899953 000927141 D|057507396 017130051 +000000183 000902416 000931671 D|052606065 003719105 +000000183 000925283 000932779 D|017683853 099458285 +000000183 000965709 000933007 D|023592963 095981627 +000000184 000011072 000009411 D|057548153 082768137 +000000184 000011933 000049655 D|044882429 018788125 +000000184 000098941 000077657 D|086014874 024986730 +000000184 000113105 000089695 D|025472376 020545966 +000000184 000144932 000097215 D|013412913 035770592 +000000184 000149726 000112524 D|087787815 066635971 +000000184 000151381 000123000 D|044223385 092742299 +000000184 000157567 000142526 D|054293364 094377773 +000000184 000189566 000145987 D|014227406 091516443 +000000184 000221448 000199288 D|032376721 049284944 +000000184 000236461 000205889 D|028572678 048496475 +000000184 000246671 000208934 D|078264260 082849687 +000000184 000265153 000213059 D|026459296 011141119 +000000184 000273833 000256749 D|040913967 075815397 +000000184 000293193 000257442 D|025942196 056503360 +000000184 000365352 000258643 D|054851993 059306657 +000000184 000400053 000274606 D|036025557 047827166 +000000184 000458815 000278552 D|086251072 017934389 +000000184 000477191 000281967 D|016566180 061189425 +000000184 000484270 000295909 D|021408934 027471900 +000000184 000485689 000346710 D|060439661 025213194 +000000184 000488389 000347800 D|010976567 048503628 +000000184 000508733 000349483 D|004270666 093107645 +000000184 000510615 000377886 D|032552144 019832373 +000000184 000520192 000380828 D|080827813 088786542 +000000184 000531274 000414935 D|063205535 047308455 +000000184 000576816 000446548 D|040132405 034360185 +000000184 000593163 000489376 D|050203507 059412265 +000000184 000598231 000512032 D|082422412 085433698 +000000184 000601511 000522118 D|070532415 033688318 +000000184 000616257 000527746 D|077825822 051089175 +000000184 000621933 000674730 D|024469797 046937641 +000000184 000647962 000691953 D|028312281 018066017 +000000184 000663587 000697680 D|027921716 086668610 +000000184 000762445 000697968 D|080644619 085312642 +000000184 000766782 000700038 D|098535330 012042068 +000000184 000767586 000715991 D|097404828 038264786 +000000184 000850005 000753625 D|036815570 084577977 +000000184 000851098 000757587 D|098406370 017073848 +000000184 000865963 000785736 D|018333150 014541837 +000000184 000872657 000791904 D|024438340 022796911 +000000184 000877876 000818270 D|007291026 023169469 +000000184 000878738 000823462 D|018166079 025469904 +000000184 000914546 000885352 D|020231977 098140562 +000000184 000934886 000888114 D|042664851 075315232 +000000184 000942040 000895102 D|024674808 056149781 +000000184 000948591 000904185 D|037562937 046568193 +000000184 000990988 000904533 D|061047041 036440986 +000000184 000993636 000974059 D|092144714 072693058 +000000184 000993724 000996053 D|051238900 018259347 +000000185 000015777 000003700 D|018296616 088437988 +000000185 000061015 000042413 D|083089932 098066375 +000000185 000129895 000047140 D|064655757 044468394 +000000185 000132217 000069051 D|026723903 010357482 +000000185 000148028 000074498 D|088423363 000645133 +000000185 000180014 000096964 D|046181258 038856515 +000000185 000207572 000108988 D|060791391 017874557 +000000185 000232203 000114265 D|038681425 044363226 +000000185 000345067 000156410 D|001398473 060375811 +000000185 000358749 000161987 D|090152145 031119844 +000000185 000370606 000182349 D|067040537 047858819 +000000185 000383012 000218454 D|021471281 055123138 +000000185 000384944 000245276 D|069098938 030245671 +000000185 000395978 000258019 D|080566882 008155782 +000000185 000414054 000273222 D|020221037 055601855 +000000185 000467446 000281489 D|085706357 038900514 +000000185 000470535 000290608 D|026811504 017662768 +000000185 000491156 000303477 D|012343916 047264867 +000000185 000491809 000307441 D|064783579 078849764 +000000185 000521599 000350352 D|066570088 001278118 +000000185 000542889 000356736 D|007187105 027756590 +000000185 000546526 000366834 D|090737575 093638473 +000000185 000558683 000384202 D|073465249 087510245 +000000185 000566549 000388652 D|092344080 062629856 +000000185 000580142 000398889 D|027285768 037160541 +000000185 000591350 000420278 D|037446238 053718284 +000000185 000615584 000436508 D|052692453 080760075 +000000185 000647121 000468391 D|062858338 000069524 +000000185 000722718 000518901 D|009127220 097735281 +000000185 000731695 000522712 D|089023560 039259888 +000000185 000739467 000546539 D|051857592 011404411 +000000185 000741980 000555014 D|069225180 032975108 +000000185 000763455 000592416 D|087513588 083614023 +000000185 000782578 000619438 D|089702356 049410283 +000000185 000782580 000620828 D|095514281 066899304 +000000185 000784584 000651691 D|000492629 048383119 +000000185 000788741 000676251 D|097966986 013609613 +000000185 000797319 000714933 D|099847779 058572023 +000000185 000801962 000716229 D|083090061 011903701 +000000185 000822486 000716485 D|062665803 038511667 +000000185 000886940 000728025 D|043807380 005202049 +000000185 000891767 000799120 D|013328490 074600449 +000000185 000900720 000800887 D|061924743 094145816 +000000185 000902865 000872382 D|076995320 070439124 +000000185 000921320 000908611 D|023927798 070087647 +000000185 000933483 000912732 D|095318894 070076443 +000000185 000934985 000957268 D|045478576 018966528 +000000185 000964968 000958650 D|073428598 022887956 +000000185 000965355 000989220 D|052232593 070134292 +000000185 000978709 000993409 D|094096941 066579969 +000000186 000000331 000015644 D|032768886 059230377 +000000186 000003696 000064602 D|008781880 097423274 +000000186 000026407 000068240 D|068898999 075215720 +000000186 000033312 000087259 D|052619545 049550572 +000000186 000041316 000096681 D|009133937 075894266 +000000186 000073470 000177301 D|008403989 040740556 +000000186 000076846 000183464 D|020364291 082125059 +000000186 000101222 000194078 D|011079707 039626587 +000000186 000122032 000226095 D|082393272 024844568 +000000186 000139965 000227274 D|051167391 067600418 +000000186 000168042 000240794 D|086226688 038941273 +000000186 000191789 000253233 D|074531079 024241224 +000000186 000193481 000262035 D|003623050 057290990 +000000186 000244697 000293126 D|029020633 097812677 +000000186 000306003 000335386 D|004248843 073227183 +000000186 000335205 000338367 D|073732723 030252741 +000000186 000350749 000354915 D|078386814 032252575 +000000186 000353864 000358218 D|035658753 098324801 +000000186 000360357 000388513 D|090338589 056647106 +000000186 000376467 000426045 D|011427848 039026051 +000000186 000403819 000441626 D|056805896 098588574 +000000186 000435799 000446897 D|028949573 046016240 +000000186 000450695 000461706 D|000393177 053508529 +000000186 000532172 000487102 D|034300036 041667171 +000000186 000540125 000495299 D|009713256 007469458 +000000186 000551677 000497205 D|064515508 047678441 +000000186 000566398 000503754 D|038104636 046918974 +000000186 000578242 000520986 D|045137398 094687502 +000000186 000667251 000565048 D|003928637 060314871 +000000186 000671744 000605674 D|031681056 090863251 +000000186 000673630 000643672 D|086756839 067409345 +000000186 000704687 000662105 D|014295699 036108620 +000000186 000713097 000695534 D|073473660 099507723 +000000186 000725821 000742740 D|041190749 062314196 +000000186 000746415 000763000 D|062222281 096040872 +000000186 000746652 000840028 D|028939294 054287111 +000000186 000767712 000848128 D|079754742 045397088 +000000186 000789044 000863785 D|070325796 076729538 +000000186 000803536 000882526 D|019716700 004578089 +000000186 000807117 000884033 D|017059688 050606479 +000000186 000844649 000889058 D|085022353 019696641 +000000186 000864187 000891127 D|036420284 040860840 +000000186 000864443 000913558 D|007316797 015559795 +000000186 000873539 000934707 D|045669093 011883920 +000000186 000880047 000938774 D|018535786 028648982 +000000186 000886330 000939589 D|006587508 009870087 +000000186 000894548 000946055 D|004363819 010992683 +000000186 000918962 000967017 D|072864728 085267495 +000000186 000926037 000978452 D|018213685 091088424 +000000186 000978542 000994556 D|056320150 010528549 +000000187 000001703 000023842 D|024337852 007899836 +000000187 000021992 000064304 D|022466321 060961410 +000000187 000029363 000080342 D|053261196 027459807 +000000187 000062946 000110074 D|002991566 036457387 +000000187 000134062 000114930 D|031779155 059174194 +000000187 000139349 000124706 D|082403392 040400160 +000000187 000143912 000178931 D|062108051 073023487 +000000187 000152663 000183953 D|029154551 001260286 +000000187 000171879 000189723 D|007759286 008636390 +000000187 000187279 000195374 D|093154650 049120147 +000000187 000199362 000200519 D|038070324 072204783 +000000187 000204316 000206871 D|051482689 011134277 +000000187 000214675 000244009 D|097758321 047383340 +000000187 000238619 000252531 D|079008231 040586231 +000000187 000242091 000264646 D|026709548 087881903 +000000187 000252577 000266789 D|014734911 040966642 +000000187 000255789 000279816 D|027118397 028775616 +000000187 000275187 000331939 D|070806280 023717701 +000000187 000280584 000348820 D|006872459 073203931 +000000187 000302399 000360295 D|051095599 028686820 +000000187 000331251 000388565 D|078792016 076697181 +000000187 000365623 000392579 D|093628115 054164992 +000000187 000440755 000403754 D|045630931 097369547 +000000187 000462947 000424435 D|081832690 068411209 +000000187 000466112 000433284 D|087203055 036181609 +000000187 000468008 000447054 D|009635246 043430410 +000000187 000503258 000452281 D|044098956 081023814 +000000187 000519154 000465377 D|048053335 019201295 +000000187 000527544 000466563 D|088940244 012998298 +000000187 000583754 000521247 D|018934838 097436598 +000000187 000584347 000573883 D|010746663 078257706 +000000187 000602708 000632176 D|056237368 090517139 +000000187 000620667 000648284 D|069308531 030084622 +000000187 000667041 000667727 D|040357559 063354309 +000000187 000702743 000670839 D|012708430 030503323 +000000187 000751610 000690528 D|096417753 052463602 +000000187 000772503 000715789 D|083328396 056683635 +000000187 000783276 000716386 D|042472640 039256860 +000000187 000806600 000751902 D|092763219 092200927 +000000187 000818867 000756534 D|050318210 094456634 +000000187 000829939 000780802 D|013594155 079188521 +000000187 000831568 000800720 D|061789023 054833521 +000000187 000841882 000860756 D|086844605 010859540 +000000187 000873497 000900465 D|036229704 076549186 +000000187 000897633 000929289 D|080813198 050475726 +000000187 000901085 000938881 D|068962558 096391304 +000000187 000932701 000943485 D|013495996 056703474 +000000187 000947196 000950810 D|063632831 031860802 +000000187 000953635 000986207 D|099093556 051933719 +000000187 000976376 000997490 D|030131124 083173441 +000000188 000000298 000011542 D|029008188 017732334 +000000188 000009912 000013417 D|025107567 006432211 +000000188 000013253 000026536 D|032288241 085146047 +000000188 000017400 000035795 D|042947520 097571346 +000000188 000038196 000037155 D|014124630 013787047 +000000188 000045011 000042874 D|039987179 089673732 +000000188 000067045 000062616 D|076303847 047811328 +000000188 000075380 000064637 D|043653076 094852547 +000000188 000080897 000125018 D|048393221 013877431 +000000188 000120789 000206986 D|071422205 011367138 +000000188 000151382 000214543 D|044811708 078919118 +000000188 000164768 000224396 D|061200972 036325547 +000000188 000217927 000248239 D|051157749 052093809 +000000188 000231789 000291273 D|028849014 017992036 +000000188 000252962 000303903 D|086750749 017890187 +000000188 000264684 000347268 D|068741979 094252822 +000000188 000275610 000447371 D|070353924 019758241 +000000188 000295754 000459183 D|005949812 026577521 +000000188 000326381 000480427 D|001114635 090509084 +000000188 000389231 000488875 D|043449634 098102901 +000000188 000414712 000510825 D|005939049 099634950 +000000188 000447210 000514848 D|034546195 099107045 +000000188 000474803 000562343 D|007055891 005004070 +000000188 000504228 000574034 D|079873756 041149792 +000000188 000555171 000611534 D|038775301 005588311 +000000188 000575398 000614369 D|056363378 007866649 +000000188 000584106 000622598 D|076817739 035426307 +000000188 000597891 000624692 D|056045123 048655168 +000000188 000610492 000625122 D|048622990 076447047 +000000188 000621699 000633237 D|013089328 088185832 +000000188 000622353 000659107 D|090736933 080577120 +000000188 000633334 000686572 D|021493419 089709525 +000000188 000655846 000706126 D|036430187 010850002 +000000188 000666049 000717583 D|000952244 073412202 +000000188 000666151 000741210 D|051550287 055084199 +000000188 000678167 000752443 D|062712217 077820400 +000000188 000680012 000756942 D|077372438 022577576 +000000188 000698662 000757234 D|053075737 044699735 +000000188 000698889 000770958 D|051936422 077234748 +000000188 000699721 000775147 D|019637974 045883000 +000000188 000756179 000780317 D|032513935 093397543 +000000188 000782238 000807048 D|052921106 042362959 +000000188 000808082 000829432 D|085499534 073140602 +000000188 000841205 000855658 D|037051995 043340129 +000000188 000899352 000905229 D|038587258 073658807 +000000188 000916901 000923052 D|065173774 007403354 +000000188 000926989 000925019 D|097075335 002312521 +000000188 000945314 000946391 D|011910087 085511044 +000000188 000968051 000950360 D|077455840 089932129 +000000188 000986210 000989851 D|036541393 010385093 +000000189 000026071 000002004 D|059622790 030477469 +000000189 000087594 000017542 D|047847660 082865858 +000000189 000087962 000021579 D|070622051 084176942 +000000189 000093986 000052924 D|069943530 088209935 +000000189 000096355 000070670 D|070257397 030154870 +000000189 000129588 000149773 D|061475235 032378861 +000000189 000135281 000156824 D|089583490 035806214 +000000189 000227609 000158624 D|024328172 066765083 +000000189 000246909 000174102 D|064838363 067841705 +000000189 000278309 000205636 D|045724067 035199748 +000000189 000300001 000230102 D|064424106 014018319 +000000189 000311773 000280833 D|064686743 075301731 +000000189 000353310 000284136 D|082362759 062797924 +000000189 000359633 000287529 D|028516522 062538510 +000000189 000422974 000296432 D|002250909 010846534 +000000189 000425720 000302602 D|006967128 043833028 +000000189 000427643 000317414 D|024143461 008382855 +000000189 000428971 000378197 D|085422428 046307592 +000000189 000452782 000400616 D|011884733 073166855 +000000189 000467514 000406265 D|031282700 098002717 +000000189 000516941 000421827 D|024529969 007238445 +000000189 000556922 000441855 D|038616137 065265268 +000000189 000582693 000453371 D|078349570 068908426 +000000189 000602448 000456446 D|079585170 025473450 +000000189 000605717 000494135 D|049978638 052619759 +000000189 000611410 000547090 D|098931899 093460118 +000000189 000613652 000566639 D|081387004 098334897 +000000189 000627956 000569509 D|071720225 069780387 +000000189 000630636 000570373 D|084946232 065715404 +000000189 000631040 000576005 D|002839868 099815272 +000000189 000660716 000591952 D|041384076 088539871 +000000189 000662062 000612582 D|090778700 008867935 +000000189 000679906 000638249 D|082097759 066604385 +000000189 000722141 000741764 D|049638334 083786951 +000000189 000760671 000748906 D|042721697 046213104 +000000189 000767854 000750681 D|079744943 089505215 +000000189 000777197 000778159 D|007928976 047554193 +000000189 000793818 000793107 D|097641582 016098128 +000000189 000797956 000805372 D|082863972 057067701 +000000189 000809901 000817143 D|038935552 057982619 +000000189 000823678 000827831 D|080524595 023341718 +000000189 000834908 000850536 D|024843800 053526096 +000000189 000853345 000867312 D|039788724 094596977 +000000189 000881261 000875288 D|043198679 061166682 +000000189 000884239 000881425 D|061297165 004778187 +000000189 000886638 000933570 D|063104976 038194931 +000000189 000929894 000948209 D|044855152 040856773 +000000189 000930833 000949796 D|082739189 016808393 +000000189 000937468 000958523 D|009714937 029396953 +000000189 000944532 000970314 D|077935730 026585213 +000000190 000030535 000034312 D|022123260 064593759 +000000190 000034334 000037190 D|045241153 063918647 +000000190 000043121 000070595 D|055788310 030430411 +000000190 000052238 000073980 D|085561624 034036260 +000000190 000060158 000084180 D|053995484 072086984 +000000190 000078459 000088192 D|028229332 022304032 +000000190 000096984 000153189 D|047440841 051821126 +000000190 000106201 000162692 D|082641549 098526120 +000000190 000108628 000170534 D|062878314 054617402 +000000190 000114018 000189926 D|067777852 059950577 +000000190 000168481 000224347 D|038191083 033798506 +000000190 000176881 000289750 D|031513798 030735391 +000000190 000191346 000291510 D|069621564 037543576 +000000190 000199462 000343940 D|042499730 039929197 +000000190 000232493 000353691 D|070126952 057792045 +000000190 000244519 000376176 D|062654287 091887320 +000000190 000273613 000380962 D|052628879 092741752 +000000190 000293714 000387288 D|031424498 099214672 +000000190 000297605 000411985 D|060743342 027543782 +000000190 000312649 000441650 D|045276268 057177578 +000000190 000322557 000450642 D|033948735 097900749 +000000190 000323306 000464338 D|010730145 009630754 +000000190 000333093 000464931 D|001350548 039888735 +000000190 000335811 000514193 D|076953668 013393922 +000000190 000341669 000541488 D|032221506 096132027 +000000190 000383612 000557813 D|001416518 088376477 +000000190 000426343 000583158 D|041296039 073535259 +000000190 000431126 000590704 D|063735984 048225676 +000000190 000529888 000594775 D|013594833 072115668 +000000190 000535707 000597306 D|006422132 032784151 +000000190 000557228 000603127 D|097272835 068240567 +000000190 000574905 000631485 D|049357411 022741480 +000000190 000591614 000644118 D|052406415 060888269 +000000190 000592851 000685997 D|054747902 012191683 +000000190 000608868 000699300 D|097100521 081402879 +000000190 000679944 000749927 D|009087602 021269555 +000000190 000723748 000751319 D|009986155 025259850 +000000190 000723910 000766744 D|063585492 092072673 +000000190 000755606 000778807 D|082696307 056413966 +000000190 000762451 000811130 D|063954130 014495862 +000000190 000805861 000816327 D|020210369 014794185 +000000190 000826976 000864791 D|019327683 089236279 +000000190 000827734 000898286 D|071005499 056056593 +000000190 000838784 000919452 D|056441411 084687925 +000000190 000839737 000932444 D|041885853 012405882 +000000190 000868221 000933897 D|062572430 069678222 +000000190 000874332 000947880 D|079489523 030437598 +000000190 000899946 000965295 D|096466411 042402464 +000000190 000904889 000965891 D|098301729 069550372 +000000190 000931691 000983124 D|099597546 042922521 +000000191 000003169 000040700 D|058602123 062945173 +000000191 000043880 000061391 D|092217968 019389519 +000000191 000053334 000068799 D|073206560 027287228 +000000191 000073930 000087437 D|014359610 075491235 +000000191 000106347 000106429 D|025923774 022856769 +000000191 000114387 000118414 D|037345537 054730796 +000000191 000129961 000122619 D|038780003 001669982 +000000191 000130133 000141004 D|093979467 017390381 +000000191 000166710 000152964 D|081946448 061687977 +000000191 000191412 000154771 D|031848514 074481927 +000000191 000199902 000168278 D|007740765 030894298 +000000191 000217913 000176624 D|013740319 000710498 +000000191 000238622 000183414 D|066728844 029492710 +000000191 000265285 000186043 D|027109507 056667285 +000000191 000265447 000208505 D|061474417 076356553 +000000191 000290194 000226193 D|070152140 048276302 +000000191 000297277 000229739 D|034649347 042419765 +000000191 000314070 000233886 D|067986550 072253665 +000000191 000316333 000268909 D|069133279 031655940 +000000191 000325697 000369267 D|034712096 056680946 +000000191 000337537 000373373 D|075833813 006883878 +000000191 000342845 000424349 D|014267252 094420418 +000000191 000345742 000428904 D|078780650 039878730 +000000191 000348237 000433717 D|044605559 005188193 +000000191 000349817 000438864 D|074091360 041668056 +000000191 000353378 000461225 D|076543084 057669581 +000000191 000356337 000474963 D|049570965 061712989 +000000191 000430573 000499830 D|083439081 090894410 +000000191 000447110 000532982 D|070144904 008012076 +000000191 000448041 000541185 D|043957989 034493747 +000000191 000457332 000552769 D|061950916 079552287 +000000191 000494027 000560489 D|048466691 038669785 +000000191 000575241 000569931 D|075272872 043811802 +000000191 000585072 000571527 D|048876227 086159229 +000000191 000604068 000574090 D|080438353 034354963 +000000191 000656855 000582108 D|071340796 083728669 +000000191 000694086 000604416 D|042325764 067909571 +000000191 000727130 000605412 D|083476508 033985356 +000000191 000752936 000613507 D|018093059 041596847 +000000191 000758145 000660012 D|064269954 040204091 +000000191 000839163 000685319 D|004968769 027829099 +000000191 000876401 000727677 D|024694020 077037946 +000000191 000876616 000747135 D|012533539 050352455 +000000191 000885022 000750604 D|045290853 065451565 +000000191 000890926 000857908 D|013156263 068146741 +000000191 000900839 000880441 D|095626390 048131637 +000000191 000911276 000899506 D|010442481 045239326 +000000191 000927689 000933344 D|002924512 075426865 +000000191 000972096 000964550 D|007572544 034015498 +000000191 000981853 000980708 D|034436532 069012388 +000000192 000027258 000018613 D|001370509 093552955 +000000192 000039782 000023511 D|046722737 046169439 +000000192 000042918 000034357 D|023431295 098852459 +000000192 000077207 000115564 D|069007786 019590231 +000000192 000082693 000118133 D|012590966 010950114 +000000192 000136692 000120356 D|065331247 090228243 +000000192 000165462 000126321 D|046171987 058945801 +000000192 000189848 000132984 D|004146227 037743466 +000000192 000201808 000189130 D|092648910 099435436 +000000192 000215655 000203395 D|086344072 071696063 +000000192 000220392 000226259 D|014245819 048391830 +000000192 000221317 000278416 D|079283552 066662371 +000000192 000232984 000290957 D|046241507 069672247 +000000192 000277286 000300209 D|006170534 095550623 +000000192 000284219 000300901 D|033564226 057096793 +000000192 000341334 000342341 D|062372144 059488773 +000000192 000384519 000354976 D|032413652 056960885 +000000192 000404095 000393733 D|077936648 018249769 +000000192 000407254 000400537 D|029813493 088775080 +000000192 000415748 000427429 D|033129447 009334062 +000000192 000442388 000431890 D|066985521 033323157 +000000192 000452519 000433322 D|029380989 042751418 +000000192 000490449 000439160 D|096712176 025203245 +000000192 000521578 000511408 D|074118772 039862896 +000000192 000533082 000536404 D|039425436 077567042 +000000192 000537928 000536733 D|084340174 097462781 +000000192 000544330 000547753 D|043765834 074961786 +000000192 000546308 000553152 D|072374064 049479019 +000000192 000563130 000568776 D|039677921 063201210 +000000192 000619504 000576838 D|023888333 045067191 +000000192 000673752 000597141 D|021045766 077978752 +000000192 000674510 000632256 D|082467359 097783833 +000000192 000704385 000666488 D|046022231 086342849 +000000192 000710645 000667581 D|025520829 099647626 +000000192 000714582 000713273 D|067488652 089390126 +000000192 000750285 000725489 D|090044596 056909795 +000000192 000750319 000745245 D|027469707 044556200 +000000192 000759259 000763227 D|051781527 074080407 +000000192 000870548 000782268 D|042840640 058320484 +000000192 000919045 000789437 D|065408960 041737848 +000000192 000928414 000802484 D|034093675 015782986 +000000192 000940559 000808884 D|093906979 019312288 +000000192 000942848 000901847 D|076183729 098180347 +000000192 000952125 000905054 D|099597746 022615459 +000000192 000958004 000940536 D|070488964 096030810 +000000192 000977957 000942316 D|005506817 072238410 +000000192 000992001 000945153 D|035177238 068994272 +000000192 000992048 000971853 D|018714454 087817571 +000000192 000992477 000985443 D|018850401 038957376 +000000192 000993611 000989720 D|054643409 063578755 +000000193 000012553 000013446 D|069435292 096087022 +000000193 000023936 000024609 D|062164971 060504117 +000000193 000054489 000025183 D|055380762 075976514 +000000193 000118654 000038598 D|072753018 003937103 +000000193 000146233 000039086 D|053167449 053863699 +000000193 000157738 000059546 D|091509783 077997924 +000000193 000160299 000066507 D|029662251 012811608 +000000193 000172387 000067525 D|033303600 068168644 +000000193 000190665 000081344 D|026319548 076299732 +000000193 000259794 000095912 D|044993454 092030958 +000000193 000317044 000150330 D|064017507 091737349 +000000193 000323139 000201711 D|001537086 001263221 +000000193 000340056 000209763 D|068733197 002408818 +000000193 000370374 000227864 D|060691656 035264964 +000000193 000373526 000233181 D|052450868 095257741 +000000193 000380713 000234604 D|023939385 098083200 +000000193 000447648 000237039 D|027460839 007669697 +000000193 000486052 000290485 D|088076616 021870121 +000000193 000498554 000295887 D|035422280 055091194 +000000193 000550323 000299277 D|008615295 098049566 +000000193 000571507 000352654 D|014870795 099885204 +000000193 000597903 000354443 D|049037983 027244853 +000000193 000641534 000384586 D|095066456 009305040 +000000193 000669189 000457451 D|016013853 018234045 +000000193 000672190 000481217 D|062946394 056564145 +000000193 000676842 000518546 D|011162289 091800665 +000000193 000719562 000520544 D|058640472 052558479 +000000193 000726618 000524547 D|042512349 003695311 +000000193 000727305 000542731 D|050134874 096361119 +000000193 000730553 000575610 D|008270846 022135058 +000000193 000735483 000582589 D|015425026 072203080 +000000193 000737117 000596778 D|080320462 086410110 +000000193 000737672 000604091 D|070788596 067697628 +000000193 000769855 000615457 D|055589526 009270318 +000000193 000789328 000617163 D|086280569 005493219 +000000193 000825800 000643468 D|070071361 057610355 +000000193 000837474 000649302 D|082221951 051472822 +000000193 000841125 000653670 D|050930752 063473583 +000000193 000846700 000711606 D|015203382 047775557 +000000193 000883985 000766499 D|076954343 091960775 +000000193 000897039 000774903 D|086611096 052686450 +000000193 000905392 000779493 D|095522244 088172148 +000000193 000905675 000812218 D|085543452 070856118 +000000193 000905836 000817306 D|053216195 070767133 +000000193 000921895 000825439 D|045043740 040486591 +000000193 000928264 000848323 D|019846881 069488178 +000000193 000929271 000865874 D|009734230 022928654 +000000193 000950716 000884106 D|049119320 094039424 +000000193 000988730 000961434 D|090593072 090939932 +000000193 000996805 000992961 D|029181211 027402110 +000000194 000007379 000003601 D|002467487 032851920 +000000194 000012159 000053270 D|056359239 014817555 +000000194 000020707 000078504 D|077119726 071115124 +000000194 000042539 000131878 D|060006461 022498329 +000000194 000045791 000152404 D|029489753 022009643 +000000194 000070440 000154834 D|090810401 026309753 +000000194 000087770 000156876 D|081867585 039104049 +000000194 000088767 000179077 D|015702148 029368628 +000000194 000105156 000199876 D|098034598 030406381 +000000194 000115612 000206702 D|060042192 092031039 +000000194 000126528 000213265 D|059006191 002743285 +000000194 000177125 000242157 D|043047188 053953047 +000000194 000183898 000258268 D|060106203 081664190 +000000194 000195722 000266536 D|052163096 061743584 +000000194 000232074 000275645 D|079911074 084649556 +000000194 000266162 000277362 D|092191607 061807207 +000000194 000266993 000283730 D|068409436 077796504 +000000194 000286404 000306275 D|031463916 064199410 +000000194 000306868 000353301 D|026056208 085229090 +000000194 000307254 000356386 D|063763143 015533874 +000000194 000311852 000376232 D|002956553 091986097 +000000194 000333368 000384640 D|065784743 011253209 +000000194 000351314 000388479 D|013713222 082955532 +000000194 000383866 000400050 D|023587373 012867535 +000000194 000400265 000411651 D|011188433 095818268 +000000194 000420374 000420966 D|077326332 057371216 +000000194 000444319 000451187 D|050385919 052403944 +000000194 000522915 000481074 D|061876672 067320048 +000000194 000559408 000497295 D|080061606 095204239 +000000194 000588824 000548476 D|093811720 011072659 +000000194 000609113 000557883 D|044477714 015370557 +000000194 000622341 000569128 D|061207895 084956519 +000000194 000644947 000595434 D|013441462 081767827 +000000194 000701056 000596712 D|015178583 036091340 +000000194 000709454 000600556 D|082570010 022044358 +000000194 000740841 000621898 D|064388411 074351040 +000000194 000761839 000702591 D|081548850 083210821 +000000194 000765153 000721571 D|079689322 037344953 +000000194 000791357 000742201 D|002439784 035380306 +000000194 000800224 000761601 D|078390115 019884976 +000000194 000852119 000770914 D|074820501 008593473 +000000194 000862047 000823610 D|088786201 072313544 +000000194 000870924 000859069 D|044896674 093281180 +000000194 000892338 000879041 D|003154556 015564803 +000000194 000923326 000898544 D|040680102 066472185 +000000194 000953385 000940261 D|004159596 028871257 +000000194 000956814 000954014 D|063822129 093856891 +000000194 000989094 000968329 D|094106385 087586786 +000000194 000992209 000981992 D|075756972 090165454 +000000194 000999610 000992048 D|067254549 025574246 +000000195 000010777 000005427 D|068280993 022217851 +000000195 000018369 000008211 D|007056332 031492060 +000000195 000029128 000024079 D|065405726 047246511 +000000195 000050213 000042204 D|017462435 061091979 +000000195 000060284 000084359 D|091304515 067217013 +000000195 000128298 000096021 D|058132171 012093663 +000000195 000146321 000104935 D|083045437 088347745 +000000195 000157973 000120071 D|031833138 030661023 +000000195 000172158 000121728 D|038831619 091944882 +000000195 000181729 000142802 D|057740250 009625137 +000000195 000256804 000144755 D|012963369 057450792 +000000195 000258566 000179007 D|047195068 065263032 +000000195 000263793 000257613 D|097527840 046218410 +000000195 000279475 000268687 D|086168744 086301309 +000000195 000298348 000306046 D|066826863 049372570 +000000195 000320195 000331437 D|033820139 071401940 +000000195 000340252 000332046 D|085586597 069661860 +000000195 000362528 000353534 D|084150254 062108661 +000000195 000382628 000366713 D|043480995 009717359 +000000195 000385033 000408699 D|071173789 071355214 +000000195 000386554 000443013 D|043820922 011906992 +000000195 000425576 000456329 D|031912199 003207247 +000000195 000495236 000468580 D|093034876 024616605 +000000195 000521662 000475816 D|023024751 022959164 +000000195 000536426 000478849 D|067619417 042315320 +000000195 000552154 000488155 D|083211999 024034986 +000000195 000566933 000527010 D|076067149 081849504 +000000195 000575927 000536833 D|012006847 065229671 +000000195 000579579 000575091 D|054777245 009082433 +000000195 000586270 000610437 D|007802093 070820226 +000000195 000619063 000611420 D|074122638 010041197 +000000195 000656748 000667117 D|014980163 098588654 +000000195 000683535 000687062 D|009920696 035051237 +000000195 000691181 000717544 D|041801727 004879117 +000000195 000706439 000723784 D|093134005 014649986 +000000195 000741967 000752621 D|098516780 013951208 +000000195 000748906 000763252 D|075635228 022230876 +000000195 000751512 000765481 D|072035554 003469645 +000000195 000752395 000791241 D|039275340 011446469 +000000195 000785916 000815098 D|030363296 029283099 +000000195 000809762 000863761 D|060511836 067614415 +000000195 000835807 000874853 D|036367147 090740832 +000000195 000851784 000885258 D|098037124 004364027 +000000195 000862380 000901926 D|080605474 099402504 +000000195 000934400 000906231 D|081530452 074695879 +000000195 000942676 000915169 D|088166253 048463647 +000000195 000954754 000969405 D|017729432 095047434 +000000195 000969844 000977244 D|081760185 017901774 +000000195 000988027 000984130 D|061587236 073618800 +000000195 000998204 000990870 D|043408849 028057060 +000000196 000027810 000047308 D|024142998 042340779 +000000196 000028376 000065035 D|029404708 025730769 +000000196 000034218 000068261 D|089281581 069086527 +000000196 000057576 000078195 D|007793449 090172264 +000000196 000080835 000098226 D|025101333 073166245 +000000196 000099339 000127933 D|015326752 026641748 +000000196 000122344 000148453 D|006501182 080550672 +000000196 000140085 000160926 D|042618475 014639334 +000000196 000174588 000177427 D|094224036 038406225 +000000196 000192099 000195817 D|011910443 068897734 +000000196 000193098 000204132 D|086124120 011848562 +000000196 000215976 000207798 D|019709815 085653294 +000000196 000352113 000223035 D|093858148 083298694 +000000196 000369664 000249921 D|089400418 048393997 +000000196 000371186 000253992 D|049492207 061915174 +000000196 000392522 000256836 D|007864008 020973281 +000000196 000431848 000274977 D|068807589 032971114 +000000196 000433067 000275693 D|084420662 079531559 +000000196 000460702 000297305 D|073697104 065935139 +000000196 000476637 000302912 D|033409089 096809616 +000000196 000479996 000310981 D|012781047 038635120 +000000196 000480539 000346166 D|028236257 095009794 +000000196 000500406 000352909 D|028417202 036484339 +000000196 000534698 000370901 D|046544825 036594579 +000000196 000560440 000403539 D|072343784 047583854 +000000196 000566312 000413634 D|030774253 024905380 +000000196 000570557 000457182 D|055191605 062476158 +000000196 000573358 000469037 D|029660904 010457271 +000000196 000636091 000484733 D|008130661 079960188 +000000196 000642472 000487945 D|052029118 059995892 +000000196 000651341 000488038 D|024949983 097282550 +000000196 000672655 000498016 D|004481191 026520057 +000000196 000680626 000502364 D|045951480 008698025 +000000196 000722440 000558382 D|084012298 082002563 +000000196 000755405 000604384 D|028279684 019288774 +000000196 000759115 000645746 D|086031013 036807129 +000000196 000761178 000647741 D|039076235 024309998 +000000196 000787513 000698837 D|037727775 057513277 +000000196 000816375 000705850 D|090609404 027109793 +000000196 000821211 000724314 D|033860766 002576065 +000000196 000837496 000731358 D|038168831 056783963 +000000196 000869256 000804536 D|028989888 076033694 +000000196 000877034 000822199 D|050986533 060493513 +000000196 000903405 000827282 D|091789252 093553530 +000000196 000935274 000853815 D|095664991 013099577 +000000196 000943161 000876745 D|063987786 043600540 +000000196 000963349 000926024 D|064039768 095529727 +000000196 000972304 000951489 D|027305608 028504525 +000000196 000990921 000959997 D|043109660 081755189 +000000196 000992832 000971585 D|079275548 096789522 +000000197 000030325 000029333 D|083711171 066165146 +000000197 000031035 000054493 D|008303603 036166166 +000000197 000045516 000118262 D|066812170 053475882 +000000197 000076331 000123041 D|095108933 089261162 +000000197 000079639 000153496 D|058940773 022481013 +000000197 000104374 000173480 D|085923591 063520999 +000000197 000127817 000187474 D|020584148 087695042 +000000197 000174871 000263775 D|027110963 032899038 +000000197 000255046 000265579 D|018231204 019466621 +000000197 000286755 000303525 D|064753532 013783360 +000000197 000295532 000313388 D|085431585 054890718 +000000197 000298571 000315166 D|067732156 003467307 +000000197 000335995 000342627 D|043571473 064139239 +000000197 000336951 000391645 D|086393837 085120141 +000000197 000367467 000402734 D|097180445 041478803 +000000197 000409454 000406210 D|042964062 064781175 +000000197 000416438 000409633 D|022099808 011358926 +000000197 000449225 000416421 D|077586390 050025215 +000000197 000464770 000448616 D|069004680 025473881 +000000197 000465095 000471657 D|083629725 018157523 +000000197 000489582 000488847 D|070736205 070874488 +000000197 000496929 000538385 D|032497326 029935097 +000000197 000497692 000543342 D|083204852 076749055 +000000197 000500715 000549177 D|059333814 035730887 +000000197 000514856 000604144 D|071778956 017957396 +000000197 000516018 000656070 D|002308379 006605123 +000000197 000525851 000703340 D|008301256 062387777 +000000197 000540370 000711003 D|066220295 066059720 +000000197 000549684 000716225 D|095494740 036664816 +000000197 000552244 000718233 D|070818052 035599033 +000000197 000564071 000734193 D|025506307 064173058 +000000197 000572146 000741870 D|054292913 031612630 +000000197 000579501 000781840 D|018961793 077280029 +000000197 000628464 000791660 D|095896377 065795596 +000000197 000640494 000807267 D|011336448 038229816 +000000197 000651926 000833210 D|092246090 000556269 +000000197 000663176 000837921 D|049893654 033791013 +000000197 000731339 000871600 D|043383011 046800933 +000000197 000803735 000874671 D|003610663 084480790 +000000197 000808404 000885601 D|028405280 036633110 +000000197 000813108 000896992 D|079081475 029308673 +000000197 000848159 000899282 D|030266851 032633541 +000000197 000868372 000903833 D|055198104 007244184 +000000197 000915949 000912913 D|031016492 088060319 +000000197 000922597 000913767 D|071813414 017484247 +000000197 000932557 000952368 D|051646683 052418014 +000000197 000976599 000953378 D|083680413 036300475 +000000197 000977210 000965611 D|035765394 076827696 +000000197 000979520 000967340 D|086913587 099523001 +000000197 000992456 000996763 D|065845344 070850403 +000000198 000008616 000010273 D|026141164 059386855 +000000198 000013848 000021587 D|015691030 066536088 +000000198 000044923 000021794 D|084854568 018084322 +000000198 000055967 000022123 D|050935979 025991516 +000000198 000101890 000034412 D|025894784 050898337 +000000198 000108201 000034920 D|045915089 034127738 +000000198 000117798 000037451 D|058682061 003571788 +000000198 000121223 000038498 D|081870522 077449416 +000000198 000132149 000046245 D|093821661 007511680 +000000198 000176106 000091170 D|074559182 072250791 +000000198 000221685 000159774 D|087391833 065538177 +000000198 000228074 000164318 D|014166339 014135111 +000000198 000296652 000169938 D|029847037 072656057 +000000198 000318194 000177758 D|089400118 042099414 +000000198 000319361 000210122 D|053122907 079788030 +000000198 000327579 000213043 D|038711574 069660305 +000000198 000336658 000263417 D|079082559 027389913 +000000198 000340096 000281331 D|098445367 070895447 +000000198 000344354 000283985 D|092526973 096643622 +000000198 000368775 000289976 D|070808630 079205523 +000000198 000371142 000305872 D|064119673 022053586 +000000198 000377648 000306123 D|036232162 038133753 +000000198 000409099 000314924 D|066531307 006839974 +000000198 000409250 000346402 D|036991407 005844065 +000000198 000413115 000378226 D|005264865 048522727 +000000198 000444164 000386599 D|055648760 076206795 +000000198 000466101 000424010 D|089619286 034953156 +000000198 000485503 000427697 D|027232600 098487543 +000000198 000493094 000429726 D|087325046 003594050 +000000198 000509138 000452623 D|013540014 064940742 +000000198 000557531 000470341 D|034408180 096724040 +000000198 000566541 000471144 D|084620346 043946186 +000000198 000569788 000490138 D|007262929 030395589 +000000198 000573420 000497113 D|005181204 051564936 +000000198 000583169 000514528 D|011363080 000573660 +000000198 000633456 000559149 D|059936627 010751517 +000000198 000652412 000590590 D|016321821 001981698 +000000198 000688215 000633756 D|049867634 087422075 +000000198 000705377 000681884 D|012134173 086424266 +000000198 000732828 000683950 D|015501043 010553419 +000000198 000741791 000746971 D|022491450 006656719 +000000198 000762873 000758444 D|068430207 007619967 +000000198 000764641 000781887 D|033948883 059983811 +000000198 000775990 000797816 D|099800324 086252794 +000000198 000806642 000805934 D|071497509 025596436 +000000198 000839162 000813263 D|012008334 068966460 +000000198 000886262 000848450 D|065735745 054676908 +000000198 000888599 000897162 D|009448358 046537184 +000000198 000899769 000909087 D|070667073 054893816 +000000198 000965303 000972673 D|034511910 061528096 +000000199 000006561 000007687 D|054889304 040608352 +000000199 000020975 000042196 D|089977608 027312049 +000000199 000058210 000063321 D|036374568 014901451 +000000199 000059492 000077881 D|060212037 097475562 +000000199 000063568 000079466 D|036430975 016862665 +000000199 000069584 000095873 D|097284957 072028248 +000000199 000069910 000151801 D|012767290 022517943 +000000199 000079798 000166780 D|004142334 055642412 +000000199 000116693 000169304 D|033912124 077885442 +000000199 000126441 000178969 D|083182201 027892045 +000000199 000171778 000201095 D|009691243 021194922 +000000199 000189737 000209926 D|080912461 050178460 +000000199 000193404 000216654 D|099896121 010541700 +000000199 000242695 000223650 D|033002157 089948639 +000000199 000309747 000271083 D|054033468 013976540 +000000199 000320513 000278227 D|005996782 040194588 +000000199 000339731 000282064 D|074830267 036375677 +000000199 000349507 000287025 D|055059971 083343296 +000000199 000373230 000287239 D|017220486 099520265 +000000199 000373530 000289221 D|092310587 069305741 +000000199 000389705 000291881 D|036297838 008010760 +000000199 000397468 000339444 D|087950936 032057415 +000000199 000413788 000342421 D|076836038 088645714 +000000199 000451142 000350098 D|083859339 028086500 +000000199 000460243 000378395 D|096256555 040905471 +000000199 000517196 000407489 D|087346668 039519076 +000000199 000580143 000440094 D|009650460 059257490 +000000199 000588393 000446276 D|075820069 017316052 +000000199 000639819 000500254 D|073420572 082791073 +000000199 000642536 000556859 D|006286296 073884616 +000000199 000643164 000558468 D|066142431 074709790 +000000199 000645759 000568198 D|076766621 082630568 +000000199 000677990 000606280 D|055782756 063690906 +000000199 000687962 000618722 D|044576993 082831235 +000000199 000716865 000619078 D|085708547 098299286 +000000199 000724726 000664229 D|010348684 066218060 +000000199 000728709 000674619 D|087892801 048802577 +000000199 000765260 000679469 D|058134643 013107782 +000000199 000785949 000686372 D|066299224 076431176 +000000199 000835917 000689416 D|045008384 093118872 +000000199 000849561 000697758 D|079003876 070679463 +000000199 000856317 000753428 D|021701692 016941718 +000000199 000899024 000782112 D|013750414 017979760 +000000199 000901447 000829345 D|056351100 072056713 +000000199 000970776 000832870 D|010156025 014180280 +000000199 000975754 000865399 D|051713453 055752743 +000000199 000977354 000911279 D|097231030 065380080 +000000199 000987469 000911390 D|033030078 018352540 +000000199 000987505 000956353 D|089976730 056202033 +000000199 000997074 000992674 D|054601836 031585928 +000000200 000007328 000008118 D|052004694 081159039 +000000200 000051403 000027156 D|036601914 013810298 +000000200 000052758 000027976 D|044892962 089792828 +000000200 000086003 000029106 D|063669016 065165488 +000000200 000090492 000088449 D|014260106 039012582 +000000200 000120111 000108453 D|043143766 057145445 +000000200 000125097 000115127 D|062998732 006934896 +000000200 000136417 000128596 D|029544974 093710300 +000000200 000137457 000167968 D|034511691 014719543 +000000200 000144022 000181201 D|052894752 076067549 +000000200 000145240 000216440 D|025207028 033728678 +000000200 000163471 000222429 D|076467946 091036081 +000000200 000182957 000278020 D|005232778 037996826 +000000200 000205510 000284111 D|056063721 039074281 +000000200 000210443 000302927 D|012815717 020164691 +000000200 000216214 000318442 D|035615672 050160179 +000000200 000218164 000332977 D|077708451 050094305 +000000200 000222684 000340700 D|027006532 037152481 +000000200 000229280 000344998 D|077256608 066691445 +000000200 000242793 000376142 D|038327755 020706238 +000000200 000270645 000420729 D|020980688 015190234 +000000200 000270938 000436664 D|005641298 001843013 +000000200 000329820 000454832 D|035343021 067601630 +000000200 000331983 000456528 D|098265600 075547908 +000000200 000341559 000464956 D|043880710 037223104 +000000200 000364078 000488725 D|069506596 030789882 +000000200 000381434 000508471 D|020457478 026880921 +000000200 000387433 000613307 D|011518454 041523664 +000000200 000406672 000621306 D|023898756 086652848 +000000200 000428238 000632761 D|077497959 048068915 +000000200 000436092 000691979 D|086609470 013226212 +000000200 000568949 000723237 D|087493538 028300322 +000000200 000648574 000727060 D|042608325 012434218 +000000200 000666142 000728328 D|006367394 049964331 +000000200 000670505 000740378 D|037143603 032325884 +000000200 000675241 000748680 D|050667690 050289128 +000000200 000743371 000754247 D|009393898 002370747 +000000200 000763967 000788173 D|055008597 028561281 +000000200 000768057 000803201 D|022186412 024864753 +000000200 000768789 000810434 D|039424401 072349379 +000000200 000802430 000821928 D|042310413 062936511 +000000200 000803101 000847634 D|080766996 019791870 +000000200 000810662 000854518 D|041939770 056379922 +000000200 000832084 000857345 D|004261527 078175608 +000000200 000854605 000873690 D|066976717 098606198 +000000200 000864121 000902838 D|067135264 067416334 +000000200 000899774 000912088 D|011187273 045986966 +000000200 000983064 000936870 D|084405010 010879095 +000000200 000990174 000952391 D|089474662 057637718 +000000200 000999222 000984667 D|046568701 091360767 +000000201 000018207 000041913 D|063078124 000126752 +000000201 000026822 000074293 D|027902480 036909209 +000000201 000029862 000081068 D|036038410 011265920 +000000201 000039964 000090040 D|069696399 013622931 +000000201 000057273 000094878 D|038157064 000548523 +000000201 000071616 000111742 D|081627308 094150012 +000000201 000078862 000121616 D|040801789 068611719 +000000201 000089669 000124107 D|094561033 091037076 +000000201 000140280 000126908 D|043104462 007537354 +000000201 000159228 000160032 D|032180307 086359361 +000000201 000181694 000161094 D|072442895 068524775 +000000201 000183104 000183156 D|087269875 031124802 +000000201 000186280 000184696 D|035777456 012103331 +000000201 000227606 000191484 D|040856776 094553671 +000000201 000275106 000247396 D|006758874 055853808 +000000201 000340463 000301476 D|007229221 009973241 +000000201 000363053 000334187 D|021865257 009189168 +000000201 000445003 000340983 D|053105314 077147037 +000000201 000458201 000402198 D|086631408 000649671 +000000201 000461145 000420605 D|038484650 009198769 +000000201 000462160 000430071 D|019219331 080909471 +000000201 000518686 000439753 D|067950515 021417880 +000000201 000524843 000464154 D|081814548 026551810 +000000201 000527333 000498395 D|095984936 021077166 +000000201 000539368 000512960 D|070576991 091130029 +000000201 000559289 000520091 D|023766725 034571118 +000000201 000561067 000524597 D|063949374 001322496 +000000201 000573110 000539777 D|039481104 028676870 +000000201 000580618 000554272 D|023382501 089007973 +000000201 000594505 000578924 D|013768765 095267328 +000000201 000604638 000583930 D|035526268 075424711 +000000201 000636541 000589924 D|081892270 001197185 +000000201 000667912 000607829 D|046737384 083486912 +000000201 000692436 000618938 D|056590458 086734714 +000000201 000693933 000627773 D|074237355 051572091 +000000201 000752506 000656042 D|054262063 040665013 +000000201 000753419 000662701 D|090224810 043295759 +000000201 000766553 000700693 D|022317813 005600986 +000000201 000793714 000724369 D|030475820 085327873 +000000201 000812446 000728091 D|026763534 035242301 +000000201 000847396 000740843 D|097869170 029035268 +000000201 000876212 000756702 D|091356242 084611970 +000000201 000905193 000763740 D|082564023 016098814 +000000201 000907668 000769826 D|079726990 003087536 +000000201 000911741 000774130 D|042297557 067037556 +000000201 000917338 000805820 D|092600223 026140102 +000000201 000942973 000868595 D|063815488 062779439 +000000201 000962531 000953320 D|039605664 034876664 +000000201 000965501 000984598 D|086856390 000187271 +000000201 000975699 000988575 D|031405641 089102638 +000000202 000030660 000047415 D|018244317 062431369 +000000202 000045601 000074062 D|021288413 055446492 +000000202 000088337 000103701 D|031184502 047964965 +000000202 000092166 000116244 D|032104173 057649613 +000000202 000100695 000154073 D|029842961 020052345 +000000202 000115920 000163206 D|080068769 083460060 +000000202 000115951 000174846 D|035441311 013422033 +000000202 000123521 000176418 D|030098230 070716593 +000000202 000125447 000187869 D|041618894 002060190 +000000202 000138648 000198528 D|053717952 083975465 +000000202 000187872 000203196 D|074721630 033655655 +000000202 000213376 000224895 D|005151948 035362939 +000000202 000225280 000233230 D|072877768 070385055 +000000202 000237020 000257147 D|007736072 026669267 +000000202 000261156 000262971 D|084180280 043827165 +000000202 000334727 000273516 D|052942605 036863972 +000000202 000335621 000281698 D|003880114 037951953 +000000202 000338388 000291543 D|063417728 076030098 +000000202 000348689 000354482 D|095500512 086111545 +000000202 000362877 000363415 D|037674824 050391381 +000000202 000368701 000366376 D|069835957 076131608 +000000202 000384018 000381331 D|071385271 079030412 +000000202 000408881 000394896 D|088890564 021773235 +000000202 000429937 000429303 D|063659796 039633662 +000000202 000460102 000435292 D|059302043 091936097 +000000202 000476825 000471040 D|096299239 063199824 +000000202 000512102 000498341 D|066470181 043114214 +000000202 000512665 000508485 D|092519565 059603992 +000000202 000512853 000553858 D|027635593 098774397 +000000202 000518871 000581965 D|036238539 003385948 +000000202 000528890 000628850 D|098363008 004978816 +000000202 000603803 000644096 D|029310703 046298249 +000000202 000604800 000659115 D|034809210 055510727 +000000202 000621214 000659279 D|004913296 004168944 +000000202 000636717 000670600 D|045775685 053987235 +000000202 000644667 000675467 D|009726872 086414186 +000000202 000666439 000692272 D|075086158 015404007 +000000202 000670135 000698077 D|025089422 065487653 +000000202 000670995 000710995 D|014840397 033840855 +000000202 000719745 000726042 D|039503203 068673451 +000000202 000742849 000734258 D|083978752 046218203 +000000202 000792492 000739759 D|015995310 044089185 +000000202 000848879 000746971 D|072952107 062044904 +000000202 000859268 000750439 D|026688109 048313327 +000000202 000887476 000765089 D|098399051 057686103 +000000202 000895076 000795715 D|059268560 079389569 +000000202 000910356 000802807 D|082380118 023085200 +000000202 000937380 000811575 D|006923363 036023996 +000000202 000953232 000893658 D|066543582 048648917 +000000202 000989045 000990032 D|023185629 034532963 +000000203 000002802 000005179 D|005697376 076776249 +000000203 000010224 000027318 D|064350323 034592613 +000000203 000037266 000054469 D|008848475 071243220 +000000203 000052736 000062445 D|027568526 062544942 +000000203 000053354 000063148 D|012813379 006812252 +000000203 000108247 000083893 D|058575713 050749015 +000000203 000130846 000090726 D|047410649 078888728 +000000203 000187337 000104928 D|023128142 035675970 +000000203 000202911 000140915 D|084759915 081274381 +000000203 000238846 000149180 D|097793597 091623252 +000000203 000250320 000174709 D|067169701 073840760 +000000203 000251537 000181025 D|044143995 088629434 +000000203 000263511 000181610 D|090955879 045142149 +000000203 000270827 000197025 D|002434972 077025318 +000000203 000287868 000215842 D|040383653 057158591 +000000203 000291839 000226230 D|091244209 084310122 +000000203 000322924 000234600 D|035974080 099779887 +000000203 000324391 000271442 D|064174559 001902380 +000000203 000326062 000293496 D|000216831 020119681 +000000203 000371585 000304497 D|040070985 043287260 +000000203 000387789 000372565 D|003689175 028488647 +000000203 000444418 000397125 D|027444430 046507686 +000000203 000455128 000408866 D|009280308 060631174 +000000203 000482378 000427616 D|014670239 059164308 +000000203 000526756 000438632 D|001891611 057658489 +000000203 000529608 000463372 D|053226395 059986088 +000000203 000552400 000480250 D|010724874 080787810 +000000203 000569579 000500606 D|081015220 055689197 +000000203 000592122 000560720 D|049780237 070400264 +000000203 000613277 000591484 D|008110763 026100048 +000000203 000640896 000621363 D|047484437 058256096 +000000203 000644699 000634437 D|078341642 041432505 +000000203 000700676 000726897 D|054032448 018170651 +000000203 000711484 000743697 D|065028946 010840977 +000000203 000714967 000754168 D|031480252 066505982 +000000203 000716075 000766352 D|070133860 052223115 +000000203 000732917 000814224 D|000069913 020782514 +000000203 000750454 000819267 D|025045920 049127423 +000000203 000779403 000829970 D|093366836 010592543 +000000203 000781386 000832978 D|017763956 032959246 +000000203 000800995 000842217 D|067794888 010771067 +000000203 000805449 000857443 D|017186020 093647956 +000000203 000815233 000888402 D|041242250 020299601 +000000203 000828145 000898338 D|006715126 011575762 +000000203 000857355 000900305 D|044343158 020174947 +000000203 000909409 000904527 D|080511651 022586853 +000000203 000910072 000904978 D|096698218 074720461 +000000203 000930933 000921950 D|043450851 055520638 +000000203 000942719 000953000 D|073285647 098781517 +000000203 000974572 000975442 D|045556625 039196243 +000000204 000011543 000013965 D|064377941 036457734 +000000204 000022018 000019597 D|080002940 090803362 +000000204 000024029 000020311 D|017772107 046866060 +000000204 000067672 000127612 D|027303868 064475345 +000000204 000082021 000130952 D|035184775 008743041 +000000204 000088049 000137534 D|074765016 015322316 +000000204 000096817 000142518 D|039470999 050825862 +000000204 000122847 000155654 D|009662029 099546656 +000000204 000167998 000181987 D|038403891 041035575 +000000204 000192474 000207605 D|004607401 030717306 +000000204 000224067 000215950 D|073214114 069450032 +000000204 000236282 000225602 D|026371331 082473015 +000000204 000265220 000231474 D|014986816 004190375 +000000204 000342465 000244599 D|049728349 033672977 +000000204 000355834 000259930 D|083498452 082948438 +000000204 000365038 000271647 D|019595691 023143397 +000000204 000367911 000287361 D|093120525 020205945 +000000204 000383474 000291460 D|016080621 065436983 +000000204 000395303 000292836 D|042191635 067170410 +000000204 000441240 000297042 D|033285189 035171173 +000000204 000454464 000304640 D|057622126 049033925 +000000204 000457144 000311791 D|087371203 028154983 +000000204 000460616 000361146 D|044940834 059541656 +000000204 000464600 000365123 D|099623536 068490286 +000000204 000491590 000366331 D|067148049 055896044 +000000204 000505194 000379701 D|018885076 055178347 +000000204 000510692 000382693 D|009151724 058117157 +000000204 000535686 000427113 D|098166446 011970747 +000000204 000541906 000451206 D|033436291 060106254 +000000204 000554464 000452147 D|064058350 035700332 +000000204 000556580 000453797 D|092179943 078578850 +000000204 000557878 000456925 D|035899812 026000613 +000000204 000587660 000508100 D|019432868 041486253 +000000204 000588215 000518524 D|036937488 067932289 +000000204 000598875 000560679 D|065534943 079093353 +000000204 000609354 000601785 D|020400491 057149994 +000000204 000636689 000624059 D|045460887 065338906 +000000204 000739520 000629440 D|040800133 086681186 +000000204 000758168 000681470 D|015892377 081002972 +000000204 000835050 000687314 D|097214874 001826621 +000000204 000846157 000699077 D|047921653 012668202 +000000204 000848457 000711358 D|095833362 028323627 +000000204 000860927 000731131 D|025891778 067691088 +000000204 000901380 000743429 D|095206817 071188608 +000000204 000912920 000753199 D|078802659 074972223 +000000204 000916318 000811940 D|070254295 045007258 +000000204 000932185 000852950 D|025916560 026540987 +000000204 000937201 000870288 D|073856178 080173579 +000000204 000938853 000997843 D|017023426 015479751 +000000204 000957007 000999942 D|019190993 017859857 +000000205 000002016 000037493 D|027280683 057727804 +000000205 000063307 000044156 D|066852600 094081303 +000000205 000073568 000057160 D|099118490 037686750 +000000205 000077443 000060499 D|032599438 052324806 +000000205 000078822 000109364 D|052131422 081302365 +000000205 000104942 000110467 D|025833446 038548778 +000000205 000129320 000151252 D|079428529 050409919 +000000205 000133000 000159287 D|061666784 000962351 +000000205 000143751 000199755 D|032796563 078279691 +000000205 000152037 000337743 D|015891635 097941860 +000000205 000169753 000367895 D|094473628 036616004 +000000205 000196427 000372128 D|072839627 096508363 +000000205 000208438 000385125 D|085526627 070303648 +000000205 000253988 000394078 D|017767736 079436593 +000000205 000261968 000401544 D|018119616 075920092 +000000205 000288857 000437786 D|023083861 032596082 +000000205 000296209 000461757 D|076346582 043063946 +000000205 000302241 000470607 D|044505968 089254386 +000000205 000350318 000505225 D|026918603 012459138 +000000205 000369045 000510953 D|032466004 095002076 +000000205 000387980 000511621 D|096191719 008674185 +000000205 000403991 000547894 D|000549007 007423974 +000000205 000405112 000549187 D|086634043 094749742 +000000205 000418439 000558188 D|056390107 083115330 +000000205 000456057 000578108 D|043973230 087479386 +000000205 000504965 000606652 D|097108824 009419814 +000000205 000580351 000614259 D|051108778 067273783 +000000205 000614636 000616827 D|053851323 051394265 +000000205 000622216 000632606 D|011181648 035086786 +000000205 000624173 000649059 D|063534910 075909954 +000000205 000624306 000658037 D|089090978 050432587 +000000205 000666375 000681270 D|058053687 073289154 +000000205 000675208 000689690 D|005263824 098123348 +000000205 000713089 000713621 D|038911809 076452944 +000000205 000717875 000719073 D|088590131 006478803 +000000205 000719455 000726893 D|038241001 019860846 +000000205 000720489 000733251 D|054222878 044986939 +000000205 000723661 000761745 D|004337207 004721316 +000000205 000733301 000767422 D|090829570 099223893 +000000205 000774499 000780869 D|038734684 064150655 +000000205 000776590 000825904 D|027028724 095221023 +000000205 000812923 000845621 D|005023592 020070539 +000000205 000815257 000861820 D|045857226 070399569 +000000205 000832688 000871729 D|075363088 058852984 +000000205 000861669 000907548 D|066509695 080964705 +000000205 000886244 000918624 D|085295290 044793753 +000000205 000920734 000936155 D|067984796 051177185 +000000205 000955791 000970514 D|078717288 040241790 +000000205 000990881 000979033 D|055513776 076764600 +000000205 000993225 000990621 D|093631088 053930826 +000000206 000005255 000005027 D|033142907 061083615 +000000206 000024700 000007330 D|088593733 015436909 +000000206 000065963 000014468 D|086479105 023941143 +000000206 000080639 000016531 D|047809827 076592677 +000000206 000101354 000052651 D|024239191 058344479 +000000206 000113519 000099176 D|085597539 049178699 +000000206 000143507 000122644 D|023281628 064814050 +000000206 000144075 000220542 D|070324611 084299755 +000000206 000219768 000243422 D|074884163 068776585 +000000206 000240990 000269038 D|029057139 059296590 +000000206 000246037 000274587 D|065566302 048581698 +000000206 000280149 000297275 D|048830473 069817437 +000000206 000309675 000319029 D|091629216 072967619 +000000206 000317598 000319828 D|024492654 068720709 +000000206 000341895 000331114 D|097449816 029959130 +000000206 000342608 000336629 D|070778820 050830409 +000000206 000366617 000343323 D|067738556 092857459 +000000206 000378010 000384928 D|039163351 022598063 +000000206 000388825 000407905 D|029486140 079058934 +000000206 000410196 000438003 D|095327700 070655156 +000000206 000491523 000467200 D|095682508 009735092 +000000206 000546851 000493377 D|023274043 081101762 +000000206 000556405 000500610 D|038818812 001387477 +000000206 000567784 000506380 D|068324549 044634039 +000000206 000576473 000558558 D|017690190 062522314 +000000206 000585772 000564910 D|052220508 039305138 +000000206 000610942 000577680 D|052240759 097514319 +000000206 000665603 000635151 D|043281238 067559518 +000000206 000684245 000666691 D|020239238 099839825 +000000206 000697002 000701684 D|044513420 004828650 +000000206 000697347 000710951 D|025811908 071230615 +000000206 000759594 000723225 D|048014436 041408168 +000000206 000761047 000747739 D|004753762 063548414 +000000206 000779747 000752536 D|033633252 049287469 +000000206 000795635 000759406 D|093050789 031779485 +000000206 000795875 000800339 D|039326219 070392506 +000000206 000844443 000807739 D|094847846 036821851 +000000206 000848500 000818274 D|089970951 034016356 +000000206 000850712 000835425 D|021079905 085224413 +000000206 000864657 000836094 D|027672631 024824868 +000000206 000874587 000839983 D|000522457 083972363 +000000206 000881331 000856269 D|030238883 008935367 +000000206 000896336 000885791 D|010096483 012572053 +000000206 000924107 000912772 D|008375448 052636037 +000000206 000929557 000924400 D|012692460 085212902 +000000206 000948569 000956400 D|027552285 064959315 +000000206 000951947 000971921 D|081006316 023012752 +000000206 000960634 000975940 D|029128608 099780526 +000000206 000985482 000977501 D|025200377 098064897 +000000206 000993771 000993549 D|071372703 032440959 +000000207 000005653 000019604 D|041463096 042529972 +000000207 000008171 000019777 D|029505879 010369007 +000000207 000072406 000022763 D|076030467 073978126 +000000207 000079380 000027233 D|070141568 082080438 +000000207 000081867 000066935 D|075084775 067417755 +000000207 000117929 000076015 D|061960604 044412024 +000000207 000129984 000084210 D|012590511 048157566 +000000207 000145718 000094391 D|026298371 075093849 +000000207 000147812 000164587 D|099507479 027049485 +000000207 000166107 000182816 D|052053122 038474865 +000000207 000185044 000189020 D|023149335 067047332 +000000207 000202668 000285775 D|081762491 062108713 +000000207 000259806 000287125 D|012943146 045481346 +000000207 000329544 000322965 D|098331942 075009479 +000000207 000334740 000330676 D|085206493 079850325 +000000207 000382447 000347385 D|091904158 014748114 +000000207 000386267 000348330 D|082857728 031052781 +000000207 000399326 000382182 D|034808321 056007685 +000000207 000417919 000416732 D|010232196 017571849 +000000207 000418400 000439337 D|098288800 070645441 +000000207 000425704 000454388 D|016125083 083030485 +000000207 000428042 000471415 D|096063666 055242909 +000000207 000458966 000498419 D|027807872 081237872 +000000207 000468343 000514142 D|062086127 062993299 +000000207 000490951 000536123 D|063863213 072482481 +000000207 000527807 000542041 D|059412828 090299245 +000000207 000532265 000576493 D|028797276 041400985 +000000207 000591557 000588893 D|016023210 033483374 +000000207 000614713 000595434 D|084257123 061530690 +000000207 000629982 000596570 D|040183796 065511582 +000000207 000632718 000618600 D|087465914 073222721 +000000207 000636525 000622966 D|042469374 022392059 +000000207 000636800 000643166 D|074443934 060182354 +000000207 000642797 000645897 D|012684512 094834705 +000000207 000656407 000677567 D|048960854 051836950 +000000207 000679249 000736828 D|084249495 081535129 +000000207 000686643 000759631 D|091708157 061515659 +000000207 000699909 000772649 D|048445948 082469863 +000000207 000759599 000779632 D|026973427 070860572 +000000207 000797839 000803731 D|031762342 091119883 +000000207 000821755 000810078 D|081710794 038683102 +000000207 000839136 000819228 D|020797737 027238093 +000000207 000851193 000822591 D|017625489 041506629 +000000207 000867946 000855671 D|045178450 015688270 +000000207 000879689 000864321 D|000308807 001369468 +000000207 000930166 000892052 D|025281418 043756524 +000000207 000933482 000953001 D|003906498 073190715 +000000207 000945729 000963881 D|031962366 027803362 +000000207 000990399 000964821 D|090383200 021239930 +000000207 000992550 000977717 D|032424368 087259082 +000000208 000014104 000011247 D|093806901 071031645 +000000208 000019469 000065969 D|052869184 027400235 +000000208 000034879 000069764 D|026674793 029322875 +000000208 000088903 000076598 D|006408495 024263214 +000000208 000098418 000088648 D|016605043 003423273 +000000208 000146648 000097654 D|071953038 069919938 +000000208 000154043 000100423 D|044930317 021511530 +000000208 000167733 000114130 D|055649712 028599125 +000000208 000185217 000117648 D|037849924 038437936 +000000208 000208103 000132336 D|033000881 008267158 +000000208 000217272 000138838 D|001568922 003358714 +000000208 000226441 000160710 D|033143518 056275243 +000000208 000235022 000216390 D|073815378 030408332 +000000208 000246475 000232520 D|028140973 097767435 +000000208 000252649 000275848 D|039995949 069413220 +000000208 000263741 000313407 D|045131411 008676113 +000000208 000276640 000322257 D|040299164 015380060 +000000208 000305323 000333933 D|037632534 052847403 +000000208 000307640 000422069 D|036639285 070221208 +000000208 000347052 000459529 D|061083833 052224087 +000000208 000377219 000501170 D|025155067 013218757 +000000208 000394098 000508611 D|043647502 080510554 +000000208 000403847 000554789 D|025639838 069481730 +000000208 000421381 000608923 D|013586759 080658653 +000000208 000430161 000612121 D|043253780 010573151 +000000208 000450389 000621557 D|006591733 069890010 +000000208 000457430 000671626 D|042484268 008972862 +000000208 000467957 000678278 D|037875942 017289797 +000000208 000524574 000678982 D|056047457 019096753 +000000208 000537118 000679395 D|030276450 048002719 +000000208 000544853 000700850 D|005043967 044770246 +000000208 000545353 000721495 D|054028430 060770673 +000000208 000604251 000729339 D|028752889 072339141 +000000208 000671340 000734316 D|040424527 072053117 +000000208 000700224 000750736 D|084014511 026934385 +000000208 000721945 000776414 D|094173047 016684914 +000000208 000729953 000802258 D|014526856 099981821 +000000208 000810582 000836916 D|073605944 071978219 +000000208 000847941 000846207 D|046953505 069342244 +000000208 000852932 000866499 D|082723023 048751328 +000000208 000865536 000890860 D|075589277 068601721 +000000208 000871870 000919166 D|086298978 014974241 +000000208 000909542 000941422 D|060668454 074701314 +000000208 000911855 000946932 D|000985019 083046500 +000000208 000913727 000954786 D|073270192 078088711 +000000208 000933751 000962861 D|021367770 089697138 +000000208 000940246 000965778 D|035268316 096261668 +000000208 000941467 000979034 D|099649308 006099446 +000000208 000990030 000987530 D|034576825 002456238 +000000208 000996452 000994682 D|074296411 080016473 +000000209 000041985 000027152 D|067218530 013324771 +000000209 000047737 000050375 D|029420831 014907020 +000000209 000049254 000078321 D|040476210 099702716 +000000209 000055176 000110610 D|028603340 097269546 +000000209 000086018 000149097 D|011348162 036286790 +000000209 000118713 000166112 D|043932791 018361970 +000000209 000154790 000184312 D|025898479 080902792 +000000209 000177194 000200790 D|028676066 093226087 +000000209 000200019 000249078 D|007196485 015562909 +000000209 000200157 000275794 D|061653902 066116790 +000000209 000213812 000312363 D|009264311 066174933 +000000209 000220436 000335747 D|061844025 091122750 +000000209 000242910 000369477 D|082679598 045777710 +000000209 000279085 000380824 D|043546311 002908563 +000000209 000289028 000393598 D|060117939 092681667 +000000209 000304590 000402333 D|057644031 069108284 +000000209 000329040 000414868 D|063007049 096010026 +000000209 000363097 000418480 D|002635170 023883121 +000000209 000390749 000433319 D|014054556 039462905 +000000209 000397040 000435922 D|036322116 048785341 +000000209 000411434 000437268 D|029647068 045166145 +000000209 000420934 000464842 D|004810703 022520233 +000000209 000423454 000474421 D|083035344 052665144 +000000209 000436212 000542970 D|000440342 073245406 +000000209 000503493 000573270 D|045880361 013272571 +000000209 000529194 000578574 D|018896898 050463038 +000000209 000539831 000580188 D|072054371 010942845 +000000209 000553527 000582194 D|079948249 025468058 +000000209 000601019 000594577 D|052754437 033389309 +000000209 000603642 000653826 D|095763094 075075765 +000000209 000620395 000671008 D|005199370 064499382 +000000209 000646146 000709705 D|034287954 027122992 +000000209 000655576 000745572 D|038689580 044169714 +000000209 000657030 000759238 D|024629537 020765799 +000000209 000664674 000767264 D|034947500 049351636 +000000209 000666119 000814667 D|034578095 032558361 +000000209 000677734 000819167 D|035956841 059962470 +000000209 000679058 000836447 D|025579942 052883274 +000000209 000771451 000861206 D|073440210 003951264 +000000209 000778425 000869789 D|053488560 022001758 +000000209 000806608 000883192 D|085003088 020614819 +000000209 000828509 000917876 D|040475772 041349343 +000000209 000852027 000925287 D|013603837 001711374 +000000209 000857340 000953146 D|083202917 090303773 +000000209 000859950 000954861 D|075418126 047894566 +000000209 000875420 000956026 D|016257382 090908809 +000000209 000890077 000961245 D|089908227 062051926 +000000209 000917108 000961798 D|056255071 086229186 +000000209 000982185 000993796 D|027667922 015273243 +000000209 000990445 000997941 D|064622444 064969764 +000000210 000010787 000000392 D|097684330 066966235 +000000210 000049233 000034119 D|006631998 092326672 +000000210 000067097 000053605 D|050381334 036427032 +000000210 000067641 000078414 D|069270168 078529652 +000000210 000089800 000121893 D|081937295 097067526 +000000210 000181228 000202074 D|065352057 056744563 +000000210 000188966 000220897 D|060582100 065454830 +000000210 000259536 000223244 D|013388317 002805515 +000000210 000325780 000230974 D|041502253 076861244 +000000210 000339079 000239220 D|009807817 036369434 +000000210 000349640 000250590 D|003396168 047007810 +000000210 000349699 000278988 D|060128676 037451694 +000000210 000356506 000301224 D|087866528 053949703 +000000210 000382459 000331549 D|011545637 089661825 +000000210 000401236 000355369 D|042372292 081271005 +000000210 000410412 000364000 D|037089102 057331235 +000000210 000421756 000370482 D|079279599 081668174 +000000210 000444047 000377992 D|002823435 034525368 +000000210 000481310 000382668 D|000230679 091907548 +000000210 000523585 000392614 D|012873380 000813937 +000000210 000531816 000421615 D|086738495 044245833 +000000210 000556271 000463743 D|021920058 091694108 +000000210 000563203 000541205 D|017023483 077487058 +000000210 000588029 000543154 D|084861138 017020417 +000000210 000615893 000561601 D|043072291 039890369 +000000210 000630028 000613417 D|098814901 033605916 +000000210 000642607 000636548 D|029688346 044616946 +000000210 000669805 000652851 D|082483828 042915130 +000000210 000685691 000655481 D|015595620 066443637 +000000210 000695983 000666641 D|081782251 038667353 +000000210 000699558 000672899 D|095215333 061775414 +000000210 000704612 000696433 D|018555267 060702442 +000000210 000724664 000700123 D|024265417 006704992 +000000210 000732405 000721543 D|010832443 010959372 +000000210 000733282 000740871 D|070755083 071479063 +000000210 000747763 000745978 D|017375679 020254792 +000000210 000753840 000748025 D|024831370 026526292 +000000210 000777038 000759489 D|040642722 028785461 +000000210 000791940 000776754 D|047119855 028572960 +000000210 000794333 000782537 D|066322607 046768492 +000000210 000806391 000812336 D|081747018 093446306 +000000210 000840694 000812788 D|098072114 091144788 +000000210 000866498 000818333 D|002839426 079734478 +000000210 000867717 000820351 D|042766947 078597214 +000000210 000878642 000868873 D|096119887 039585253 +000000210 000912079 000903859 D|095972439 060953352 +000000210 000933358 000975510 D|027773842 067825911 +000000210 000958113 000993375 D|052597049 054897867 +000000210 000984490 000994038 D|008082346 074265700 +000000210 000985713 000994527 D|053819676 088791740 +000000211 000004619 000003227 D|002005243 036534483 +000000211 000007320 000029297 D|074600055 011486013 +000000211 000052890 000046490 D|018437753 036910851 +000000211 000062078 000065330 D|022970030 053555218 +000000211 000063811 000070401 D|031745468 026657971 +000000211 000067726 000076018 D|016003342 083438044 +000000211 000168284 000086386 D|007051033 015179616 +000000211 000199097 000091579 D|057598134 097306402 +000000211 000207070 000109142 D|069043289 081292022 +000000211 000262911 000118294 D|046060510 053730813 +000000211 000265615 000121646 D|029983541 012816269 +000000211 000270704 000130374 D|085825093 056063012 +000000211 000275779 000138454 D|085336955 060016831 +000000211 000282983 000156874 D|033457041 074649671 +000000211 000318420 000177600 D|009937894 032656472 +000000211 000320105 000207537 D|037605628 020765285 +000000211 000327650 000215784 D|081880748 077500641 +000000211 000360390 000227876 D|054717939 010383311 +000000211 000384894 000264130 D|080205953 085149559 +000000211 000385209 000306920 D|043012764 068362026 +000000211 000398630 000310108 D|035124434 078493167 +000000211 000431183 000343946 D|025404548 071775686 +000000211 000459792 000369344 D|094087297 098558872 +000000211 000542076 000411305 D|084567214 023557480 +000000211 000556924 000475718 D|090090653 005959983 +000000211 000559704 000507475 D|091465146 035601088 +000000211 000572332 000550126 D|026731056 030970789 +000000211 000592203 000576896 D|085611464 009499346 +000000211 000594702 000585806 D|052545891 079000324 +000000211 000609452 000609649 D|035651819 054067220 +000000211 000617464 000618793 D|006025316 002240757 +000000211 000658941 000636727 D|088849389 079113024 +000000211 000691022 000642598 D|031309631 022709511 +000000211 000691570 000687252 D|006159182 030648920 +000000211 000714555 000691410 D|026549129 006798401 +000000211 000735077 000697433 D|037961508 053936980 +000000211 000757961 000734120 D|039074147 035841126 +000000211 000761299 000744764 D|009451114 046640247 +000000211 000764884 000745394 D|041584936 031684024 +000000211 000779949 000752159 D|012103730 038032124 +000000211 000802600 000775890 D|070012731 051436118 +000000211 000814837 000810508 D|012023188 025287103 +000000211 000820545 000817384 D|004994511 008050189 +000000211 000840210 000826458 D|055996470 065643427 +000000211 000861073 000827797 D|006982528 009887705 +000000211 000862608 000873502 D|016042076 063375946 +000000211 000891984 000936740 D|093103757 069808570 +000000211 000924180 000938477 D|018603222 077503639 +000000211 000980420 000954521 D|028897940 015052472 +000000211 000993367 000990491 D|092313467 086176839 +000000212 000027811 000005062 D|029804372 059776116 +000000212 000055122 000011047 D|077390755 059198877 +000000212 000055335 000022436 D|042404243 064403132 +000000212 000081069 000034614 D|067437579 001675975 +000000212 000149679 000035349 D|029269661 042866838 +000000212 000209099 000127186 D|094515139 077201650 +000000212 000217634 000132050 D|055771364 021410984 +000000212 000230011 000140584 D|075348144 008029046 +000000212 000238460 000147820 D|046577915 047627380 +000000212 000268306 000165607 D|068148596 062653986 +000000212 000269204 000172910 D|027897433 029397554 +000000212 000274009 000173805 D|043442488 097338343 +000000212 000281628 000244686 D|072290557 029195928 +000000212 000301555 000252085 D|004734040 088827949 +000000212 000309086 000293848 D|088906319 082896134 +000000212 000315270 000293971 D|084488534 053149848 +000000212 000328927 000296820 D|098589446 095330089 +000000212 000330330 000338404 D|092603055 061926551 +000000212 000449776 000349540 D|069021514 095463025 +000000212 000468940 000392667 D|066530585 093073687 +000000212 000474539 000397368 D|075989121 035291050 +000000212 000486542 000399308 D|015073207 048472638 +000000212 000491715 000453459 D|052099886 045096465 +000000212 000495077 000457267 D|095011317 071085293 +000000212 000506507 000484033 D|095663028 096773193 +000000212 000524040 000534448 D|087093945 016248131 +000000212 000533277 000544759 D|055974920 096056376 +000000212 000556556 000556055 D|090085556 053864287 +000000212 000560462 000569062 D|017169132 037438707 +000000212 000616895 000571171 D|003411314 008055548 +000000212 000625060 000591109 D|000635816 079354396 +000000212 000637017 000658153 D|007413643 021372514 +000000212 000656809 000679013 D|033346806 079388021 +000000212 000668502 000679919 D|079714550 036515527 +000000212 000686790 000693773 D|095696805 085908980 +000000212 000730749 000699521 D|066988999 074722595 +000000212 000752693 000719132 D|090697579 005781191 +000000212 000755337 000729432 D|052603518 006785496 +000000212 000770531 000735889 D|013534636 036307271 +000000212 000770562 000736737 D|086835562 085076845 +000000212 000773192 000784058 D|066745440 018033412 +000000212 000849876 000800662 D|037628280 009934146 +000000212 000864021 000826647 D|077189937 023230885 +000000212 000865032 000843464 D|094464169 074852114 +000000212 000899252 000856737 D|068740153 074774851 +000000212 000932058 000940633 D|087477268 098283630 +000000212 000943330 000952938 D|009530790 021351942 +000000212 000945633 000961557 D|040095862 025940237 +000000212 000991724 000975811 D|020267298 078396901 +000000212 000998045 000985360 D|067419384 016819148 +000000213 000001612 000005791 D|062469037 012957374 +000000213 000007655 000023195 D|012216364 046813982 +000000213 000043303 000040624 D|007239029 052616393 +000000213 000064174 000042536 D|023987059 002747384 +000000213 000125059 000070467 D|007973786 054865259 +000000213 000139157 000074275 D|044681268 011724060 +000000213 000147269 000084287 D|092992039 005622003 +000000213 000166704 000088913 D|031918833 061834226 +000000213 000172400 000099008 D|048634147 026302830 +000000213 000185843 000136295 D|043359488 064949534 +000000213 000194776 000147815 D|073827805 078717670 +000000213 000196399 000163490 D|067280777 093861577 +000000213 000225083 000205484 D|047775205 049952763 +000000213 000232419 000252983 D|076985285 080807946 +000000213 000242064 000253569 D|096269000 044966458 +000000213 000251708 000270625 D|047798402 019280438 +000000213 000292639 000270894 D|084112285 031646349 +000000213 000293708 000351439 D|057756836 055502381 +000000213 000304563 000363402 D|058034509 011098705 +000000213 000329716 000374343 D|015640472 094488386 +000000213 000356199 000414754 D|002494937 012124736 +000000213 000396868 000488355 D|062898243 056119614 +000000213 000415804 000489135 D|012661395 013765624 +000000213 000423665 000523531 D|056970663 077182395 +000000213 000438048 000526664 D|067435622 030607504 +000000213 000452704 000535618 D|076063729 026667349 +000000213 000497287 000540332 D|014990789 047653573 +000000213 000507784 000555053 D|029156236 068847327 +000000213 000523413 000566256 D|090360013 034555874 +000000213 000525537 000583541 D|073979390 001966073 +000000213 000529237 000589719 D|072851406 036116212 +000000213 000546032 000605195 D|067076398 007018823 +000000213 000594596 000617718 D|046525166 029330334 +000000213 000596724 000659250 D|025672032 024854651 +000000213 000633316 000692332 D|093858982 009151364 +000000213 000646975 000714267 D|022421118 016285420 +000000213 000649806 000733053 D|056058344 087985763 +000000213 000662478 000736843 D|051431387 080093098 +000000213 000668592 000759685 D|010184130 089859168 +000000213 000718441 000765178 D|056294314 017930069 +000000213 000776828 000770133 D|011080222 062357583 +000000213 000789604 000788085 D|083342226 093813076 +000000213 000810920 000859981 D|056429946 023754535 +000000213 000862255 000898862 D|092043897 091099784 +000000213 000879960 000907916 D|014533573 095884660 +000000213 000886057 000957149 D|016460420 086292182 +000000213 000912887 000972669 D|021799069 020601421 +000000213 000927215 000974334 D|012835328 079656822 +000000213 000956532 000974835 D|088159339 085564458 +000000213 000958769 000988858 D|093027062 048723868 +000000214 000002217 000013233 D|025399316 060934536 +000000214 000062459 000015850 D|051225093 035667331 +000000214 000064044 000047596 D|075615029 016483843 +000000214 000069697 000074739 D|003997658 066477077 +000000214 000070382 000083486 D|012155263 076420518 +000000214 000097721 000100911 D|026875574 027851011 +000000214 000098930 000109445 D|089394796 089210075 +000000214 000128400 000115088 D|089286536 084664695 +000000214 000151396 000116628 D|009822074 003457644 +000000214 000165020 000225320 D|055719953 051734386 +000000214 000211036 000229113 D|008633517 040823499 +000000214 000217066 000234763 D|016982790 062364015 +000000214 000221301 000247585 D|036467863 035153109 +000000214 000241031 000248824 D|069360138 083980808 +000000214 000245362 000261797 D|016561235 001224639 +000000214 000246571 000289676 D|084463370 073922946 +000000214 000262204 000303224 D|042821861 064827964 +000000214 000263154 000317786 D|022644004 089748183 +000000214 000325801 000349426 D|081705990 071388466 +000000214 000332649 000351104 D|015422975 016323387 +000000214 000349222 000372527 D|085803826 087458376 +000000214 000353864 000402430 D|047722063 066257925 +000000214 000435625 000406143 D|015318067 060867343 +000000214 000472577 000443964 D|037986642 061966595 +000000214 000517896 000484012 D|003351067 016381464 +000000214 000523749 000484884 D|036714663 010524339 +000000214 000524123 000522987 D|016901111 061528144 +000000214 000548515 000534122 D|016527466 030794703 +000000214 000583207 000550816 D|000444052 005372371 +000000214 000603910 000555011 D|059250439 019582743 +000000214 000603944 000564640 D|020785548 048169866 +000000214 000622611 000596135 D|065336597 014180788 +000000214 000643682 000611171 D|002996101 040260420 +000000214 000646214 000639206 D|039803303 088490253 +000000214 000719557 000648087 D|000272237 052173067 +000000214 000739769 000656134 D|077805899 033764652 +000000214 000740047 000676582 D|049927289 062323545 +000000214 000767481 000753532 D|046804710 026445479 +000000214 000791276 000787289 D|076111072 087488871 +000000214 000805022 000788181 D|023682883 014187488 +000000214 000834345 000795720 D|035743228 081163195 +000000214 000848477 000808984 D|063716718 084017806 +000000214 000869060 000812604 D|039271262 076520499 +000000214 000900639 000825545 D|029123902 088310653 +000000214 000932782 000853514 D|053492166 074389305 +000000214 000933080 000861657 D|064970193 066004114 +000000214 000940903 000888622 D|037108354 042956279 +000000214 000957998 000909993 D|078494876 081646107 +000000214 000995118 000911536 D|053334640 023801923 +000000214 000998779 000915703 D|017057827 048937134 +000000215 000005284 000021845 D|053994303 008086870 +000000215 000015509 000048947 D|093894460 018307707 +000000215 000038611 000052655 D|024305919 073815884 +000000215 000055474 000072394 D|083138390 008091450 +000000215 000056508 000075627 D|035045183 001895406 +000000215 000058341 000092782 D|093157085 016257281 +000000215 000067359 000118736 D|063014879 078821607 +000000215 000075183 000137329 D|014739623 064564476 +000000215 000125256 000148734 D|056421362 057654519 +000000215 000125927 000154968 D|007213300 037476390 +000000215 000185219 000166561 D|014574292 067468036 +000000215 000189037 000176757 D|021633119 070749923 +000000215 000215252 000178919 D|070537950 050794237 +000000215 000289559 000192068 D|056201325 049965195 +000000215 000293043 000220122 D|073129471 045279898 +000000215 000296252 000230544 D|030200593 085832960 +000000215 000322946 000267576 D|099493244 034275038 +000000215 000385694 000270839 D|032952334 044735084 +000000215 000399536 000290079 D|039912523 083246583 +000000215 000415702 000302034 D|058037527 013597343 +000000215 000418090 000322107 D|055779681 017207072 +000000215 000434379 000331839 D|048130127 032207238 +000000215 000473047 000362299 D|097121706 057889214 +000000215 000475314 000378128 D|050558318 003578918 +000000215 000478116 000443523 D|089876854 042774719 +000000215 000484747 000443952 D|075502020 050385024 +000000215 000505641 000453740 D|078993440 034880172 +000000215 000527353 000484597 D|044305644 099068333 +000000215 000550343 000560937 D|088949625 063749396 +000000215 000550642 000582369 D|010366418 073580293 +000000215 000567942 000610137 D|039032698 082134564 +000000215 000588677 000613352 D|003347802 065286188 +000000215 000605029 000638208 D|018732308 019405563 +000000215 000634216 000646296 D|015208040 040148692 +000000215 000637195 000677396 D|077821442 051339717 +000000215 000651990 000677858 D|082943431 043489295 +000000215 000711987 000684047 D|065501593 003855144 +000000215 000733515 000719069 D|049833009 027048798 +000000215 000748781 000746130 D|045786707 044162783 +000000215 000782354 000746518 D|005373310 005353075 +000000215 000790871 000781630 D|014129179 060257551 +000000215 000812459 000828594 D|038642988 070373428 +000000215 000857789 000952420 D|079919880 062868059 +000000215 000892679 000954951 D|093775651 054663288 +000000215 000901478 000957510 D|060117595 032086923 +000000215 000913396 000958739 D|033130445 009175019 +000000215 000917450 000972144 D|046632253 045283253 +000000215 000942505 000974447 D|095141168 016985546 +000000215 000965507 000985540 D|066424109 018625021 +000000215 000979020 000989281 D|094819798 087420570 +000000216 000003946 000015075 D|037176503 094341948 +000000216 000044624 000015248 D|055413595 050841370 +000000216 000056208 000025466 D|000037328 061531535 +000000216 000102819 000027408 D|001211631 050624704 +000000216 000136324 000029608 D|084465615 056783925 +000000216 000162006 000065639 D|069821963 003601338 +000000216 000164200 000079329 D|027575182 083681178 +000000216 000169438 000095030 D|073416720 001682731 +000000216 000173699 000159368 D|023380990 051252306 +000000216 000230877 000199327 D|011132547 010555200 +000000216 000245666 000199792 D|036146330 021764482 +000000216 000247221 000214583 D|016714111 053764844 +000000216 000262664 000215248 D|055150975 076353388 +000000216 000272710 000235156 D|004791805 023000740 +000000216 000309391 000246574 D|072394435 083594989 +000000216 000317289 000274640 D|094273183 099852492 +000000216 000336099 000281498 D|097879498 023720091 +000000216 000395910 000285062 D|043529361 016079211 +000000216 000410819 000297948 D|087484676 065886914 +000000216 000435918 000319097 D|029710882 068225171 +000000216 000439421 000321437 D|008337974 093587012 +000000216 000494190 000360708 D|003409464 059171908 +000000216 000496843 000434586 D|082068143 002689993 +000000216 000499281 000450381 D|065074446 041879270 +000000216 000505949 000479091 D|075952238 025565171 +000000216 000507667 000495996 D|060381214 046078148 +000000216 000549526 000499267 D|013588822 019861239 +000000216 000577106 000530142 D|072837160 057820858 +000000216 000592438 000537263 D|052443908 003861940 +000000216 000604813 000570500 D|043690435 065842701 +000000216 000610561 000580579 D|007616720 063328952 +000000216 000634268 000617594 D|019402330 015826073 +000000216 000647695 000622010 D|045222422 081378610 +000000216 000707807 000626708 D|021646616 038346356 +000000216 000748694 000630237 D|080202087 012078456 +000000216 000752808 000652759 D|099137421 084328888 +000000216 000780376 000654319 D|090934774 025198444 +000000216 000780865 000656392 D|034365348 079840107 +000000216 000806914 000679042 D|099465241 081345104 +000000216 000819346 000727826 D|031102859 071646227 +000000216 000821054 000782968 D|027424624 030385429 +000000216 000832228 000789392 D|030414997 000551251 +000000216 000842424 000812196 D|036929604 020887674 +000000216 000851888 000814085 D|070104268 053904082 +000000216 000858634 000820363 D|076632456 013634176 +000000216 000880258 000842839 D|018730339 035275298 +000000216 000896174 000867339 D|022431909 079797945 +000000216 000952181 000930554 D|065426704 075640490 +000000216 000957394 000937287 D|055534599 026709625 +000000216 000976790 000950681 D|034884116 043655865 +000000217 000037732 000027818 D|087797599 017801814 +000000217 000055794 000045515 D|002671463 030835957 +000000217 000070968 000053067 D|025362498 033007916 +000000217 000089660 000059818 D|028837801 098789565 +000000217 000116513 000073324 D|027529339 006078417 +000000217 000121489 000083398 D|076589460 009848804 +000000217 000127190 000098282 D|061545346 045485727 +000000217 000147592 000125570 D|089904163 072225008 +000000217 000149309 000157443 D|087030087 026340444 +000000217 000194332 000157657 D|089949145 014479480 +000000217 000209083 000181897 D|091932613 040793652 +000000217 000227350 000192653 D|045570900 083411349 +000000217 000239679 000194450 D|016704860 005542159 +000000217 000258419 000211295 D|075600170 052220108 +000000217 000264647 000234412 D|081014730 053163205 +000000217 000282114 000238986 D|012685569 021342230 +000000217 000283620 000242265 D|083434506 025054656 +000000217 000302924 000260800 D|073044639 029575967 +000000217 000382567 000277875 D|010480126 021571334 +000000217 000393676 000295653 D|002921862 013093865 +000000217 000403371 000302989 D|027725313 021260374 +000000217 000438240 000328929 D|095396430 052316348 +000000217 000460964 000374636 D|006712046 087811578 +000000217 000502078 000381719 D|093983334 043563163 +000000217 000512775 000386780 D|050568832 057948584 +000000217 000533208 000426755 D|075584274 095110443 +000000217 000561657 000450346 D|049082863 046137677 +000000217 000582599 000511565 D|022677508 025344151 +000000217 000588708 000555013 D|004460908 075438542 +000000217 000593708 000556714 D|065844072 083357302 +000000217 000616259 000562844 D|052140657 093176527 +000000217 000650630 000563306 D|034276988 074580160 +000000217 000684010 000610665 D|072818741 082714051 +000000217 000715994 000619682 D|037499972 050474773 +000000217 000719264 000625635 D|012702531 093633801 +000000217 000729320 000643612 D|003253192 033166161 +000000217 000773734 000649934 D|077722621 079169143 +000000217 000779770 000656938 D|067412046 097244132 +000000217 000785378 000669385 D|079102689 078203230 +000000217 000815994 000681434 D|036608812 035845033 +000000217 000873980 000733198 D|016435366 011025631 +000000217 000882238 000806733 D|098793666 082032517 +000000217 000907131 000869500 D|032908230 053514715 +000000217 000910287 000883895 D|016078223 009179695 +000000217 000914199 000884204 D|051655630 011594220 +000000217 000922437 000901193 D|053830842 039162074 +000000217 000922619 000915217 D|057535385 088936625 +000000217 000962992 000916722 D|011663881 082962366 +000000217 000980595 000934930 D|054665058 050519991 +000000217 000985775 000953358 D|077135463 060942768 +000000218 000035675 000054680 D|054827136 051605150 +000000218 000036329 000056258 D|057241397 078768079 +000000218 000086122 000077111 D|010515106 003453929 +000000218 000091733 000099003 D|063593001 027908699 +000000218 000099009 000107184 D|054215376 045109389 +000000218 000109998 000136911 D|034810108 048664483 +000000218 000144069 000137899 D|047075067 008768120 +000000218 000155815 000180804 D|058107782 059524526 +000000218 000161572 000198990 D|040469239 020175717 +000000218 000169592 000210439 D|031952909 048044907 +000000218 000170671 000235507 D|027857374 020714064 +000000218 000193656 000245994 D|014035547 088140211 +000000218 000198062 000321923 D|065653849 035041109 +000000218 000295877 000338276 D|020024476 026097533 +000000218 000374543 000348071 D|062707031 045381072 +000000218 000386015 000354114 D|015653234 033098940 +000000218 000388520 000361331 D|030535506 046823020 +000000218 000419075 000372671 D|061569077 050576384 +000000218 000485254 000377335 D|020037341 054111283 +000000218 000487670 000395049 D|041784598 043704181 +000000218 000493060 000408535 D|060692477 054403397 +000000218 000515759 000412543 D|085083206 093874931 +000000218 000522038 000442649 D|073718148 035526246 +000000218 000549903 000444741 D|096243738 081372997 +000000218 000557585 000467670 D|072296540 063074259 +000000218 000561203 000478441 D|006403735 019925364 +000000218 000565772 000488177 D|065511496 062637089 +000000218 000579127 000535109 D|045065196 007531336 +000000218 000614955 000545357 D|036363360 046017528 +000000218 000637549 000560375 D|063857969 044749357 +000000218 000658136 000564903 D|031439534 039182869 +000000218 000664743 000576795 D|018141973 096073938 +000000218 000667226 000606083 D|050975675 072464296 +000000218 000682642 000644339 D|049267644 041503458 +000000218 000718833 000656676 D|044278284 045513031 +000000218 000726628 000713718 D|095405877 089390270 +000000218 000769720 000713990 D|067423387 050605933 +000000218 000790449 000723902 D|086245568 046373829 +000000218 000821568 000729388 D|068681635 065595591 +000000218 000830095 000789105 D|062591628 062437589 +000000218 000855047 000813734 D|056688645 048332903 +000000218 000864352 000839748 D|041813515 005208744 +000000218 000873785 000855008 D|015008130 006115360 +000000218 000893534 000873451 D|038437541 000097705 +000000218 000897373 000894211 D|008365104 013062909 +000000218 000906046 000921981 D|020088869 049122317 +000000218 000917040 000940495 D|091752816 088365788 +000000218 000919689 000950803 D|098121745 063122535 +000000218 000948722 000985784 D|060079683 012933131 +000000218 000981965 000987906 D|083679276 095509705 +000000219 000012784 000003736 D|051345024 029263540 +000000219 000020585 000010703 D|091551975 047776783 +000000219 000034279 000013607 D|030960959 033848685 +000000219 000070535 000020188 D|068973620 020095684 +000000219 000078764 000022128 D|014616985 057988894 +000000219 000080055 000041926 D|064115769 041229078 +000000219 000091253 000042961 D|041431361 039677256 +000000219 000138734 000066345 D|054909114 006001007 +000000219 000153631 000078748 D|064698555 084991396 +000000219 000182845 000078794 D|053370404 015883224 +000000219 000190099 000098024 D|083085024 075100421 +000000219 000217343 000102775 D|083814265 006358113 +000000219 000277721 000109029 D|055213846 066873444 +000000219 000291923 000134755 D|098066532 097536785 +000000219 000319359 000170369 D|045111888 083932493 +000000219 000324702 000182546 D|076148104 026736087 +000000219 000333311 000187564 D|004440631 020510576 +000000219 000353793 000191822 D|004903796 067414959 +000000219 000398666 000199645 D|087119010 050398273 +000000219 000461584 000294219 D|007844972 001179247 +000000219 000465842 000332299 D|067680917 063212763 +000000219 000468833 000365397 D|059529085 066327053 +000000219 000517341 000400966 D|032023246 012264670 +000000219 000522999 000454448 D|060559745 017913638 +000000219 000539834 000461999 D|002519525 020970447 +000000219 000544453 000463637 D|061878126 063388513 +000000219 000581456 000474663 D|056819479 021603355 +000000219 000585228 000478646 D|008012637 099120311 +000000219 000586164 000518418 D|014305709 048334973 +000000219 000604278 000604999 D|027302579 025610356 +000000219 000612647 000618032 D|071173883 045023608 +000000219 000630913 000619225 D|056932739 016406140 +000000219 000700059 000645233 D|054819725 027137623 +000000219 000712615 000672617 D|010689428 040199852 +000000219 000717393 000677255 D|099033870 041722979 +000000219 000728619 000682710 D|072257484 051462293 +000000219 000729798 000698112 D|023249207 028815432 +000000219 000779098 000717679 D|019581862 068744645 +000000219 000790857 000746083 D|049976432 013622129 +000000219 000892236 000810236 D|067894799 054627841 +000000219 000894830 000837469 D|038160869 013620167 +000000219 000901031 000850464 D|056272398 052650366 +000000219 000919496 000866612 D|066997262 063646992 +000000219 000925566 000871637 D|087179516 027739491 +000000219 000939344 000897947 D|033741635 060686877 +000000219 000967111 000921621 D|099509002 064075494 +000000219 000979784 000923454 D|036443450 016652539 +000000219 000983712 000932078 D|003179152 064139943 +000000219 000985343 000959300 D|011578930 024824829 +000000219 000987283 000959800 D|050114759 022180682 +000000220 000008878 000004684 D|018833697 027300716 +000000220 000025648 000021928 D|037838047 070094854 +000000220 000086008 000033922 D|096727862 051461302 +000000220 000096919 000107486 D|039155248 000003492 +000000220 000143387 000201398 D|091083931 000934427 +000000220 000188850 000207264 D|029970976 009625350 +000000220 000214105 000240040 D|021030757 060884913 +000000220 000226478 000245762 D|058418528 076756678 +000000220 000233022 000251665 D|047212006 089509082 +000000220 000253713 000269899 D|091996856 098984899 +000000220 000254090 000273530 D|065675021 020539995 +000000220 000257114 000295649 D|093936208 038427808 +000000220 000290405 000300344 D|071282923 085928256 +000000220 000306340 000315595 D|004605331 081125201 +000000220 000324346 000320433 D|021343803 051142428 +000000220 000335495 000377086 D|065467440 092794194 +000000220 000357890 000384950 D|056822725 017819332 +000000220 000363784 000385683 D|050604790 042320476 +000000220 000365459 000387112 D|067778313 048816063 +000000220 000365775 000388931 D|075302921 045362608 +000000220 000369572 000437259 D|049891192 069659604 +000000220 000384211 000480961 D|039886671 080933911 +000000220 000398271 000498723 D|033678253 095343550 +000000220 000408776 000508997 D|035449098 043844736 +000000220 000450859 000519991 D|095566856 003196391 +000000220 000451035 000572484 D|060581238 069721891 +000000220 000482866 000575738 D|005564801 095141795 +000000220 000510001 000595825 D|072002390 019534187 +000000220 000552291 000615536 D|019491455 042933988 +000000220 000559461 000621309 D|057613648 065306188 +000000220 000597335 000626051 D|025716495 097758268 +000000220 000648872 000648328 D|088918733 060661583 +000000220 000659942 000658352 D|052302107 021353042 +000000220 000678529 000667256 D|088728932 049008139 +000000220 000704573 000682310 D|064409134 027755397 +000000220 000710550 000693756 D|024461888 070480568 +000000220 000716386 000695770 D|069824879 052512535 +000000220 000717563 000708683 D|017140202 077730013 +000000220 000733218 000738952 D|051525823 017130346 +000000220 000760252 000743134 D|084897618 060086596 +000000220 000818899 000769793 D|008379200 074925907 +000000220 000823081 000772534 D|069055710 038410799 +000000220 000865416 000776712 D|095061248 033595355 +000000220 000882206 000782089 D|082000567 014756116 +000000220 000890297 000835082 D|000307902 000447267 +000000220 000909655 000944947 D|070891935 004371137 +000000220 000933213 000966696 D|087636803 048239414 +000000220 000958011 000968671 D|051339585 052060511 +000000220 000979488 000979823 D|087366653 083451867 +000000220 000988902 000998939 D|098367278 038154429 +000000221 000000524 000000719 D|081446517 062826889 +000000221 000002090 000001551 D|022709976 081504430 +000000221 000007294 000006011 D|066592899 009596283 +000000221 000033795 000047913 D|097501293 031925670 +000000221 000053468 000050885 D|023178477 068785965 +000000221 000059769 000052449 D|044895669 002482668 +000000221 000064582 000099754 D|032844591 097847821 +000000221 000099620 000100404 D|049155811 083331474 +000000221 000119299 000110667 D|087551527 091950804 +000000221 000144922 000141737 D|079372836 047496633 +000000221 000193844 000162521 D|029027081 054263349 +000000221 000206871 000169413 D|098804493 053960947 +000000221 000220410 000169499 D|008703317 075082637 +000000221 000236041 000182302 D|040296866 079695855 +000000221 000238943 000187874 D|089617228 095891582 +000000221 000301750 000188322 D|010699069 011760558 +000000221 000317370 000213033 D|088411761 037625596 +000000221 000321469 000237689 D|080152263 006753462 +000000221 000335162 000260377 D|067162936 053602438 +000000221 000365255 000339748 D|091677362 083163414 +000000221 000371060 000352763 D|037554769 073042544 +000000221 000374990 000376921 D|008494359 074090636 +000000221 000391470 000417268 D|003049005 074761242 +000000221 000417559 000428791 D|070379175 053874161 +000000221 000460926 000441412 D|058551641 023345619 +000000221 000485732 000446471 D|028191999 018299091 +000000221 000486849 000479690 D|035414817 001375493 +000000221 000494438 000487803 D|096622096 098728576 +000000221 000499037 000491278 D|059023365 092505242 +000000221 000502091 000506521 D|076871553 097209315 +000000221 000553369 000549891 D|046910278 060217295 +000000221 000555221 000585682 D|019890859 079861927 +000000221 000564645 000597967 D|077620123 023993846 +000000221 000577280 000610136 D|047556059 056329968 +000000221 000600754 000615477 D|050200341 032480735 +000000221 000648576 000665165 D|020471036 047969176 +000000221 000734517 000684556 D|046720924 021568084 +000000221 000762836 000691558 D|000421419 056905147 +000000221 000811966 000757686 D|057223919 069874284 +000000221 000823120 000779337 D|062444732 090674969 +000000221 000826623 000835859 D|005806393 037628630 +000000221 000828919 000837212 D|021686261 069316058 +000000221 000847269 000838591 D|085041573 007272961 +000000221 000856922 000840896 D|065464031 040809957 +000000221 000867913 000840918 D|060896882 001178067 +000000221 000869831 000898193 D|097917048 098410356 +000000221 000889930 000926759 D|026693651 039465649 +000000221 000902458 000966127 D|099560576 041773409 +000000221 000990204 000979086 D|093206651 065176247 +000000221 000997285 000984372 D|013902770 064085871 +000000222 000012308 000007261 D|002646425 033371059 +000000222 000023800 000017079 D|062742414 072913251 +000000222 000026475 000017465 D|080087574 035686644 +000000222 000060657 000026983 D|087353421 061996832 +000000222 000072616 000027860 D|064282659 042852303 +000000222 000098444 000050339 D|065336942 009838867 +000000222 000099031 000057510 D|099277148 039166697 +000000222 000105066 000078262 D|022347337 072279198 +000000222 000170366 000088746 D|034142776 024815755 +000000222 000176648 000091572 D|012583574 008280706 +000000222 000183020 000109607 D|068613368 074280488 +000000222 000207921 000129698 D|089563465 049365796 +000000222 000213084 000138187 D|054770193 006976502 +000000222 000238488 000140947 D|040163548 052478762 +000000222 000245114 000141070 D|061816832 089186262 +000000222 000263006 000200552 D|054387079 038202799 +000000222 000319487 000221738 D|027657934 018914820 +000000222 000325369 000282648 D|019478551 010602216 +000000222 000349165 000304546 D|065647395 043446537 +000000222 000357737 000355645 D|027473180 042404168 +000000222 000375347 000393613 D|019106594 037676338 +000000222 000402537 000396883 D|017358208 074493467 +000000222 000411281 000397149 D|009641600 035374042 +000000222 000427388 000447416 D|026157273 008541668 +000000222 000457593 000453700 D|098678928 065283297 +000000222 000472752 000461328 D|026122238 027188205 +000000222 000497574 000495876 D|055409998 075239908 +000000222 000577778 000546372 D|000614298 066682015 +000000222 000599861 000548898 D|034690501 036670247 +000000222 000610243 000555962 D|017221627 086551369 +000000222 000666228 000626819 D|049697542 073812740 +000000222 000669505 000692464 D|052944152 045820023 +000000222 000743378 000707471 D|063772723 031866438 +000000222 000744073 000734528 D|094046180 081017465 +000000222 000758934 000775398 D|085736206 002303299 +000000222 000768727 000787064 D|019265328 084863783 +000000222 000778468 000792968 D|026744482 036869220 +000000222 000783079 000797452 D|029159356 080655670 +000000222 000808766 000817436 D|077841434 027637553 +000000222 000845674 000820644 D|006555234 065267750 +000000222 000852543 000840696 D|051043606 003763048 +000000222 000920047 000841826 D|028574256 089403787 +000000222 000923251 000895026 D|011975332 070876641 +000000222 000960194 000895259 D|067144159 047056983 +000000222 000965869 000901780 D|085327705 007973187 +000000222 000974394 000915325 D|014770109 028547826 +000000222 000991738 000925371 D|092772410 064090846 +000000222 000995067 000969218 D|002069973 086521571 +000000222 000997912 000991699 D|056224294 068164400 +000000222 000998115 000999017 D|008996702 010677499 +000000223 000027145 000012283 D|044900729 035210809 +000000223 000027562 000015323 D|074118628 018817699 +000000223 000033692 000024977 D|000058981 002188376 +000000223 000116250 000062753 D|037533508 082612339 +000000223 000122265 000080686 D|094645827 063599076 +000000223 000150865 000089119 D|075639298 053364764 +000000223 000167733 000093595 D|031629452 063187586 +000000223 000173954 000110868 D|055996648 036141482 +000000223 000174918 000140154 D|048848203 086717987 +000000223 000188357 000140941 D|047849698 078851765 +000000223 000193764 000144047 D|018779660 090778736 +000000223 000193785 000146477 D|041807025 041811915 +000000223 000219926 000161360 D|062662916 047661803 +000000223 000249655 000178481 D|042142871 042436485 +000000223 000288436 000210477 D|013651311 057409049 +000000223 000305286 000214360 D|083781545 025470920 +000000223 000337706 000280542 D|037851739 000111344 +000000223 000344180 000281823 D|070837582 048820205 +000000223 000348627 000289567 D|096954069 017287852 +000000223 000352145 000330620 D|079255698 087911158 +000000223 000374715 000334269 D|073674468 018339022 +000000223 000381861 000359442 D|078411649 080660064 +000000223 000382833 000378720 D|000048115 067135274 +000000223 000389687 000409085 D|097088327 098084714 +000000223 000397505 000449292 D|080505024 071950711 +000000223 000401389 000458026 D|080583951 094572465 +000000223 000469272 000526374 D|083753060 003167940 +000000223 000482710 000531289 D|087338580 098389948 +000000223 000581394 000585002 D|027766737 003372981 +000000223 000590946 000593272 D|098998011 023547831 +000000223 000593649 000627970 D|052038476 044979249 +000000223 000594016 000654813 D|048565663 083563384 +000000223 000605878 000679935 D|011006003 003011825 +000000223 000615091 000726171 D|066218953 042294747 +000000223 000615292 000734772 D|001584601 033353760 +000000223 000660766 000749593 D|086130302 043882186 +000000223 000697562 000763920 D|017052682 029634438 +000000223 000704228 000794610 D|003853695 046329072 +000000223 000709851 000808013 D|001780957 083219944 +000000223 000710799 000821173 D|002836483 010228617 +000000223 000762866 000827145 D|024950473 061840195 +000000223 000819475 000835908 D|082392482 002831975 +000000223 000852397 000842168 D|093732318 038204413 +000000223 000883097 000849763 D|049848187 080157023 +000000223 000912478 000862654 D|070861194 077768214 +000000223 000923395 000874261 D|006662268 086615837 +000000223 000928135 000885918 D|029313353 071054776 +000000223 000942163 000899616 D|000731224 058393670 +000000223 000949880 000928031 D|051078714 062764382 +000000223 000990251 000981031 D|015357520 036037536 +000000224 000054595 000013174 D|041280646 082644969 +000000224 000063448 000017069 D|007653105 081428109 +000000224 000105630 000097119 D|014874562 064429028 +000000224 000128971 000105801 D|046846707 043254937 +000000224 000130686 000130351 D|059472599 034279204 +000000224 000132108 000132254 D|055385404 039519841 +000000224 000139252 000185074 D|017279410 076035084 +000000224 000140634 000209189 D|020184186 029963138 +000000224 000141827 000225324 D|057779292 044074380 +000000224 000146720 000245062 D|018683784 057455103 +000000224 000167043 000246277 D|098111236 050796210 +000000224 000223319 000271620 D|080386378 037071753 +000000224 000244432 000276182 D|095993550 038186280 +000000224 000253285 000280166 D|066917440 015586205 +000000224 000262856 000289203 D|036159129 083334462 +000000224 000269391 000353452 D|057466328 041915317 +000000224 000273744 000354212 D|081663937 044750368 +000000224 000282053 000361025 D|046205703 010623941 +000000224 000284066 000373657 D|077690509 018264803 +000000224 000307300 000394732 D|090439209 046080515 +000000224 000313553 000418441 D|028733247 084563904 +000000224 000322635 000432845 D|028449852 071627057 +000000224 000387098 000442570 D|017467229 076084423 +000000224 000452193 000455878 D|073659025 095717709 +000000224 000458529 000461425 D|087425625 084139530 +000000224 000488192 000502929 D|070199854 000731381 +000000224 000503760 000505205 D|038976414 055702101 +000000224 000508994 000523005 D|088995326 023708091 +000000224 000548578 000621942 D|058672175 003844832 +000000224 000548696 000633003 D|033743224 082228162 +000000224 000587409 000638119 D|020396719 088174968 +000000224 000594962 000686262 D|035317824 012401344 +000000224 000658385 000697616 D|067803687 010697724 +000000224 000680618 000707295 D|027327469 035657260 +000000224 000688973 000729373 D|065488826 037494918 +000000224 000704977 000764671 D|061120999 005727108 +000000224 000708523 000766381 D|024555916 055400534 +000000224 000753214 000805648 D|029860995 041237865 +000000224 000763762 000809191 D|026998602 024987391 +000000224 000793352 000813160 D|003549286 052984421 +000000224 000800300 000817515 D|071609642 099917998 +000000224 000817063 000825048 D|080692506 086633202 +000000224 000817889 000832121 D|099263150 041670860 +000000224 000829204 000848574 D|075452411 058934488 +000000224 000867435 000857293 D|098448400 058207547 +000000224 000890956 000866233 D|095187653 000005829 +000000224 000914304 000914796 D|076167432 096103327 +000000224 000957521 000941120 D|031344262 003761824 +000000224 000991983 000962317 D|055667300 027895312 +000000224 000992698 000991411 D|012587181 039207277 +000000225 000011097 000036712 D|012246072 036221861 +000000225 000026186 000041845 D|059361152 055915004 +000000225 000041638 000049285 D|099177141 074312189 +000000225 000044205 000055451 D|063272134 076184792 +000000225 000055595 000055482 D|027625328 030663849 +000000225 000086796 000056702 D|013078426 083676369 +000000225 000089228 000062789 D|029761778 073939626 +000000225 000175383 000137381 D|009031800 015400851 +000000225 000227220 000166518 D|072995338 012167007 +000000225 000233276 000236316 D|028418165 070780093 +000000225 000258073 000237750 D|032611536 093036451 +000000225 000266768 000270883 D|010751359 040379879 +000000225 000267695 000280933 D|085958141 025346004 +000000225 000273225 000288073 D|001675561 015509553 +000000225 000276710 000291432 D|072384791 090997533 +000000225 000288693 000308605 D|034028268 072422967 +000000225 000294029 000345166 D|032713237 025074479 +000000225 000320782 000347158 D|069189205 064905781 +000000225 000336434 000382152 D|004201864 039381665 +000000225 000350156 000405585 D|095277811 031558728 +000000225 000384320 000420708 D|052871621 090696069 +000000225 000388189 000446822 D|033969751 021207798 +000000225 000388841 000470972 D|088470873 090032350 +000000225 000465033 000472404 D|044889121 086536111 +000000225 000470203 000474133 D|095429038 015074391 +000000225 000500461 000535383 D|010965727 076027675 +000000225 000500678 000557228 D|005174462 040274358 +000000225 000517561 000565319 D|037327070 083955838 +000000225 000556976 000596587 D|010264580 056646266 +000000225 000575345 000603605 D|012107250 083079527 +000000225 000599798 000610969 D|031522180 070158362 +000000225 000622558 000627087 D|095507206 065177268 +000000225 000646418 000636063 D|023898160 046428365 +000000225 000661098 000673950 D|015014709 086665535 +000000225 000665452 000707211 D|023546356 040183089 +000000225 000692615 000720823 D|024539707 012797665 +000000225 000699662 000733181 D|093496079 050712031 +000000225 000714106 000738764 D|042975766 020442418 +000000225 000719586 000826733 D|005528092 026080576 +000000225 000725037 000869482 D|059150722 039239754 +000000225 000733368 000888373 D|097729092 045743235 +000000225 000790258 000888588 D|073544701 042773483 +000000225 000828678 000892847 D|041416867 076338740 +000000225 000833027 000899032 D|032548363 051970140 +000000225 000846370 000912620 D|018443408 083065518 +000000225 000863092 000925376 D|071267017 048056158 +000000225 000880215 000957682 D|066615431 027411988 +000000225 000959358 000965155 D|022451690 003774172 +000000225 000980362 000966780 D|003827036 092993425 +000000225 000993756 000986074 D|043158935 090117264 +000000226 000009329 000001040 D|063176309 039176640 +000000226 000022611 000011477 D|048249903 076089201 +000000226 000046687 000068893 D|060548545 034770262 +000000226 000047735 000094724 D|050434371 021313602 +000000226 000052215 000098899 D|045791654 088999477 +000000226 000069476 000143141 D|033830309 046032245 +000000226 000072631 000188138 D|000652013 067071661 +000000226 000077969 000192115 D|018307531 067872604 +000000226 000106356 000200461 D|047883304 053419619 +000000226 000107124 000220614 D|009882703 018816974 +000000226 000134808 000222352 D|028957091 006752588 +000000226 000135046 000246144 D|084611549 066368572 +000000226 000233873 000258700 D|096502783 032944771 +000000226 000242524 000260328 D|053201136 085776810 +000000226 000243190 000271768 D|054044266 029441596 +000000226 000249831 000294776 D|010368664 086008089 +000000226 000256320 000348518 D|035802131 047404082 +000000226 000259161 000367578 D|009194464 024167866 +000000226 000275525 000396167 D|052842297 059518899 +000000226 000330834 000400735 D|044768755 011570452 +000000226 000353618 000441028 D|035675686 091360187 +000000226 000358903 000456105 D|030274574 021766526 +000000226 000376483 000481070 D|083530876 047846160 +000000226 000401795 000489814 D|079424452 011698818 +000000226 000405262 000509883 D|059188502 034042512 +000000226 000435975 000510906 D|061794553 031625178 +000000226 000438492 000522751 D|094279982 087361981 +000000226 000451644 000523005 D|084651966 067150508 +000000226 000473352 000527423 D|070614115 099383443 +000000226 000482084 000528075 D|096026489 011062809 +000000226 000487710 000540524 D|033309943 015770279 +000000226 000585199 000547393 D|011684041 077899561 +000000226 000611133 000574673 D|012926932 060625496 +000000226 000642907 000580498 D|052841515 007001353 +000000226 000645549 000596678 D|092188455 075333579 +000000226 000652803 000616054 D|098072608 052509382 +000000226 000711678 000675929 D|001610152 055347573 +000000226 000737571 000702725 D|029845334 010688819 +000000226 000766230 000741924 D|004132817 012877425 +000000226 000767643 000771745 D|074590768 029583954 +000000226 000801697 000773289 D|019535981 054210513 +000000226 000812283 000791163 D|049646034 061249539 +000000226 000814567 000804375 D|004817835 057311644 +000000226 000818378 000873520 D|011651463 018163100 +000000226 000851925 000879644 D|075639130 013655114 +000000226 000887547 000894817 D|091587979 086672023 +000000226 000911412 000955667 D|085804103 013368707 +000000226 000944108 000972736 D|042722503 015408631 +000000226 000978298 000976413 D|050350491 054240942 +000000226 000986605 000982313 D|081879972 021344422 +000000227 000049396 000003627 D|049155794 043343007 +000000227 000050345 000021974 D|025362770 098425993 +000000227 000067606 000060625 D|097874241 070533583 +000000227 000075999 000121399 D|085756619 065408081 +000000227 000077231 000134303 D|075651017 048766850 +000000227 000081864 000135796 D|020212451 001130644 +000000227 000101225 000165380 D|088120723 087019299 +000000227 000111398 000168424 D|066005012 058738835 +000000227 000128381 000184184 D|041899468 076274445 +000000227 000171291 000201736 D|091052986 017869760 +000000227 000173476 000209702 D|099486443 032988597 +000000227 000186116 000252742 D|049987992 008831487 +000000227 000211107 000267145 D|086139364 084345546 +000000227 000213219 000270444 D|087943300 085416157 +000000227 000242964 000360630 D|059921738 090819395 +000000227 000275509 000376134 D|022243369 030676503 +000000227 000290847 000376440 D|031580617 046193313 +000000227 000303632 000392690 D|040768199 081023653 +000000227 000333644 000414800 D|021604394 065843296 +000000227 000393584 000454813 D|016384734 046325948 +000000227 000429618 000456416 D|049885454 080173863 +000000227 000496548 000491140 D|033398123 061365060 +000000227 000512447 000513696 D|086127621 038563106 +000000227 000558931 000517319 D|032510675 053594559 +000000227 000570402 000541688 D|083261684 053045728 +000000227 000579687 000561607 D|046866641 027717657 +000000227 000582701 000567472 D|009139102 032202297 +000000227 000591402 000568739 D|075820212 017868460 +000000227 000668237 000588935 D|044106137 092865771 +000000227 000670885 000590466 D|023896957 012507962 +000000227 000671736 000605687 D|065125892 024251071 +000000227 000691044 000620755 D|096566540 059276698 +000000227 000706971 000625536 D|094814524 040723271 +000000227 000710979 000654195 D|081537681 040653686 +000000227 000732363 000679521 D|079457002 028464701 +000000227 000764508 000691671 D|087255318 081743730 +000000227 000778212 000719208 D|088421300 092706948 +000000227 000781731 000764876 D|075693977 046003163 +000000227 000804279 000772131 D|062647226 092604456 +000000227 000811029 000777787 D|021550091 089399957 +000000227 000884808 000809256 D|071200340 079609334 +000000227 000886769 000870323 D|095924436 021610803 +000000227 000906708 000880173 D|011110622 030979998 +000000227 000907761 000896373 D|099942360 017309209 +000000227 000924930 000912822 D|037437362 078012831 +000000227 000939138 000922984 D|086042654 085579817 +000000227 000967022 000933287 D|074006628 037982067 +000000227 000990172 000943405 D|004871569 063100893 +000000227 000998155 000958023 D|067523144 044851378 +000000227 000998889 000971600 D|026307369 061992699 +000000228 000024963 000004254 D|012938991 074622025 +000000228 000057757 000055776 D|048088129 022967823 +000000228 000060927 000058172 D|036588633 076725926 +000000228 000063617 000089431 D|034277472 013751350 +000000228 000068601 000181850 D|045050692 033984792 +000000228 000085655 000183684 D|084740633 041561665 +000000228 000113889 000268539 D|067201942 095156438 +000000228 000115232 000279325 D|062575163 049160532 +000000228 000127498 000301894 D|028264253 055045910 +000000228 000129643 000303381 D|028462564 062346661 +000000228 000148092 000325494 D|095399554 077720789 +000000228 000209255 000332443 D|090732414 036737618 +000000228 000227225 000375978 D|095246999 037574389 +000000228 000246782 000393396 D|017589054 005296160 +000000228 000260959 000452420 D|079126581 037677363 +000000228 000267070 000456758 D|001343139 092345163 +000000228 000286904 000468748 D|028311731 059696533 +000000228 000309182 000482348 D|030918245 040793337 +000000228 000327768 000485645 D|079604268 074634098 +000000228 000347666 000503742 D|068234907 022709480 +000000228 000371815 000506265 D|050946253 095536442 +000000228 000378476 000508518 D|049490095 012622596 +000000228 000409203 000515555 D|047566101 077344417 +000000228 000458908 000529182 D|068461425 043486451 +000000228 000474321 000536529 D|082283034 019683275 +000000228 000485979 000564106 D|085389223 014105477 +000000228 000552547 000574174 D|017512956 017705568 +000000228 000553856 000577067 D|015296005 059141338 +000000228 000580886 000581240 D|092277515 050461852 +000000228 000582713 000583746 D|026397252 042447330 +000000228 000599203 000595505 D|053685585 093995041 +000000228 000600187 000614929 D|067920878 086012627 +000000228 000610688 000631479 D|085210697 018030706 +000000228 000614866 000662020 D|041370283 078604727 +000000228 000625906 000664424 D|093500128 036425891 +000000228 000644608 000665231 D|034259131 018056267 +000000228 000671775 000687272 D|022512802 085176833 +000000228 000724465 000708781 D|004762942 006363261 +000000228 000742908 000719248 D|092345339 075586205 +000000228 000748722 000729184 D|080155871 008469568 +000000228 000776465 000734375 D|011941144 056463630 +000000228 000863206 000743776 D|084295936 039748164 +000000228 000871326 000757517 D|087193936 043271078 +000000228 000923846 000769496 D|077016454 025167624 +000000228 000926582 000841516 D|000362195 016348796 +000000228 000930851 000872592 D|049796554 068768947 +000000228 000934321 000887081 D|008975520 013907819 +000000228 000968193 000905208 D|004413895 006878912 +000000228 000972637 000923823 D|053518886 027699075 +000000228 000988151 000961285 D|042599474 033128447 +000000229 000026944 000016790 D|068181805 081621508 +000000229 000066682 000023377 D|024446928 062113789 +000000229 000087251 000032211 D|030455322 063920801 +000000229 000145705 000040627 D|047110257 017650950 +000000229 000186337 000081446 D|061127513 017662260 +000000229 000189199 000088119 D|029593552 091266347 +000000229 000230959 000114063 D|024294428 037235277 +000000229 000240530 000144702 D|010328981 090297503 +000000229 000247401 000144726 D|071206323 081143570 +000000229 000258567 000170742 D|035893406 012372318 +000000229 000260076 000172158 D|066034084 081489821 +000000229 000260103 000178059 D|043191244 045885397 +000000229 000269746 000184593 D|014137334 093268707 +000000229 000292388 000222607 D|043226909 001533956 +000000229 000292945 000245678 D|088994685 072783643 +000000229 000302582 000260748 D|046051534 046587566 +000000229 000388287 000265491 D|029288327 056706721 +000000229 000392797 000291819 D|029735258 083047973 +000000229 000398867 000306933 D|015129883 055122651 +000000229 000466065 000354310 D|086045100 021461928 +000000229 000473384 000364642 D|094600775 009689210 +000000229 000490693 000367751 D|033992613 025058050 +000000229 000517863 000423814 D|004980460 002046839 +000000229 000517901 000434369 D|037706293 002996568 +000000229 000528272 000443162 D|076486212 057006899 +000000229 000530693 000457524 D|087296276 016440127 +000000229 000543735 000511837 D|060702706 059128041 +000000229 000567202 000535059 D|046388466 046444917 +000000229 000580125 000567189 D|097917218 062204930 +000000229 000604497 000616975 D|030385255 099869423 +000000229 000617571 000621765 D|000647086 087265056 +000000229 000619249 000626379 D|065052371 004176785 +000000229 000666304 000655740 D|067734143 071434229 +000000229 000672979 000657373 D|036702296 019554783 +000000229 000680386 000669737 D|038048211 002292430 +000000229 000703591 000689048 D|022783838 014206254 +000000229 000723599 000710367 D|032080319 024039690 +000000229 000729736 000722116 D|099821828 091665958 +000000229 000775519 000741796 D|020279263 059940774 +000000229 000799944 000777966 D|033715933 099235875 +000000229 000800476 000793771 D|058363650 092861021 +000000229 000814386 000809637 D|021698840 024389183 +000000229 000845463 000828614 D|034429864 053428559 +000000229 000848591 000854186 D|073559064 084178717 +000000229 000853163 000874153 D|057951226 072748699 +000000229 000870434 000879464 D|084333913 058080754 +000000229 000916864 000882800 D|061237662 058297546 +000000229 000955398 000913177 D|094541070 014479031 +000000229 000960372 000914363 D|078881115 020624697 +000000229 000972148 000999556 D|062885131 094600830 +000000230 000006395 000037636 D|010251376 006449973 +000000230 000012525 000039323 D|062104778 042434388 +000000230 000025344 000040090 D|038809609 063483018 +000000230 000073995 000081809 D|076042702 028940243 +000000230 000101192 000128835 D|087871361 041653577 +000000230 000122542 000151659 D|057822095 075858796 +000000230 000122614 000161848 D|030061446 030842643 +000000230 000151558 000170735 D|028541787 039284407 +000000230 000183770 000195292 D|000378912 035605613 +000000230 000188267 000197841 D|039761563 059053497 +000000230 000192498 000217544 D|061171205 041339633 +000000230 000201464 000237674 D|076389033 092056039 +000000230 000204468 000240956 D|009571083 055852057 +000000230 000318463 000247331 D|032364893 060765044 +000000230 000404584 000265879 D|055079716 099580469 +000000230 000438611 000279703 D|006369647 045886092 +000000230 000450757 000283718 D|055830263 096949619 +000000230 000450857 000301311 D|003942238 037510669 +000000230 000451402 000322464 D|008462941 016870611 +000000230 000468700 000328949 D|035028356 024099691 +000000230 000486681 000398118 D|042893562 058228353 +000000230 000505592 000435041 D|043284440 095913504 +000000230 000506334 000447768 D|068416295 004241029 +000000230 000541300 000491844 D|074018608 072078691 +000000230 000541716 000508156 D|092258161 025866962 +000000230 000567562 000522363 D|035404012 009520705 +000000230 000580685 000565860 D|088934926 023620766 +000000230 000605484 000578895 D|054636560 040401168 +000000230 000616044 000631579 D|039461522 025936577 +000000230 000636905 000647908 D|051121724 092229476 +000000230 000639282 000658275 D|041471006 024884635 +000000230 000645495 000665258 D|053218331 001202162 +000000230 000705469 000665900 D|083162870 002494163 +000000230 000709753 000677907 D|013300260 014988269 +000000230 000739031 000700862 D|098057970 005541447 +000000230 000757274 000714997 D|011261652 015494114 +000000230 000762641 000727899 D|026453129 095675368 +000000230 000767199 000764025 D|026362002 076741878 +000000230 000769079 000787317 D|091357940 012585446 +000000230 000769489 000821904 D|087996952 032741064 +000000230 000774951 000822958 D|035506295 041345254 +000000230 000796698 000827700 D|036132036 039457898 +000000230 000819497 000841122 D|033363316 079059272 +000000230 000832497 000848849 D|056139861 044989952 +000000230 000878936 000856948 D|040922998 012891844 +000000230 000909924 000862640 D|043999821 021316820 +000000230 000932192 000941218 D|026280453 040895743 +000000230 000960607 000959549 D|057510304 046821386 +000000230 000963996 000988224 D|036203353 000947598 +000000230 000980258 000995532 D|046177913 034418048 +000000231 000003322 000004372 D|027401515 040873558 +000000231 000045415 000049217 D|048550905 020312384 +000000231 000073949 000086846 D|095653779 004467510 +000000231 000082842 000110622 D|087495650 053831264 +000000231 000091789 000123490 D|004947267 025675917 +000000231 000102036 000155259 D|094667630 020936606 +000000231 000106359 000155719 D|007814266 085231488 +000000231 000107233 000177303 D|070572686 098343570 +000000231 000165411 000208511 D|087176254 010531197 +000000231 000179839 000220879 D|089475460 011676467 +000000231 000207047 000229865 D|010986976 026791223 +000000231 000220212 000245278 D|085321630 057265946 +000000231 000221789 000256050 D|083167355 000966840 +000000231 000228977 000283057 D|020413531 034481594 +000000231 000242381 000319370 D|059731808 059554716 +000000231 000248341 000357444 D|068998716 055821169 +000000231 000260332 000371983 D|085468808 074270015 +000000231 000334713 000379423 D|054218046 098538518 +000000231 000352615 000393403 D|035821128 000092994 +000000231 000366190 000396085 D|095681283 019550097 +000000231 000380541 000414099 D|091398629 054312173 +000000231 000383784 000461298 D|078941676 060274283 +000000231 000390973 000472395 D|056029344 078265787 +000000231 000489580 000481381 D|016941534 047474615 +000000231 000490188 000502497 D|043995715 020718865 +000000231 000511652 000505565 D|054337910 041620320 +000000231 000539775 000556732 D|085874013 068019903 +000000231 000558217 000575384 D|007244885 053394246 +000000231 000560183 000583320 D|085244750 039127380 +000000231 000573937 000605464 D|012983827 080565561 +000000231 000576036 000606736 D|061010559 042168008 +000000231 000595557 000607306 D|080200865 068421881 +000000231 000618267 000637615 D|068187879 025219535 +000000231 000622216 000645937 D|059814580 031152821 +000000231 000632511 000660377 D|075009770 081295297 +000000231 000660877 000677686 D|021401577 010052321 +000000231 000669011 000701952 D|015958696 055245894 +000000231 000723201 000717253 D|062667899 050989381 +000000231 000724076 000726308 D|005816585 045617909 +000000231 000743937 000731320 D|097756321 004604243 +000000231 000759933 000760630 D|077498088 093657104 +000000231 000768644 000782903 D|038762517 075475792 +000000231 000781825 000783173 D|071182474 038556367 +000000231 000794499 000840037 D|064726788 022670031 +000000231 000795531 000858429 D|051840181 071640208 +000000231 000804994 000876558 D|049692261 007549041 +000000231 000878029 000898200 D|047466326 008896120 +000000231 000930072 000898554 D|041727127 000475659 +000000231 000972777 000915199 D|074061048 086073018 +000000231 000996951 000933076 D|007788537 017234518 +000000232 000053849 000104189 D|003110448 082038186 +000000232 000072286 000122375 D|010686235 010483058 +000000232 000087881 000141869 D|032162873 069888726 +000000232 000088071 000164704 D|056332723 002900848 +000000232 000139347 000190336 D|052890085 087279017 +000000232 000163535 000246068 D|038091635 097846130 +000000232 000189981 000291690 D|086124134 070118237 +000000232 000203027 000301141 D|009200031 070535719 +000000232 000219105 000303783 D|031252362 005867879 +000000232 000259700 000304503 D|054306468 028546583 +000000232 000271143 000306208 D|091810247 047898717 +000000232 000281623 000310237 D|076612798 043077816 +000000232 000311001 000322023 D|041693239 074496160 +000000232 000341320 000333626 D|049355771 012995405 +000000232 000344088 000339643 D|045620863 088910105 +000000232 000347882 000361420 D|029567538 053052217 +000000232 000415817 000362775 D|041763011 052668693 +000000232 000424614 000388694 D|067650923 023665359 +000000232 000462321 000405910 D|093981280 079731731 +000000232 000467813 000408171 D|020391741 010402222 +000000232 000476199 000470960 D|095192241 006292009 +000000232 000497232 000474499 D|005829943 040209510 +000000232 000532281 000475351 D|058692944 028156314 +000000232 000558278 000479728 D|012276175 026798537 +000000232 000573446 000504857 D|049224306 091242482 +000000232 000578811 000533982 D|045269837 025451347 +000000232 000641810 000545286 D|069772884 081310015 +000000232 000654283 000553132 D|022858157 077896268 +000000232 000666079 000564191 D|026437816 062911412 +000000232 000693764 000581151 D|068209927 034458989 +000000232 000699321 000584794 D|006275476 090550490 +000000232 000711883 000619377 D|085199257 075793649 +000000232 000745396 000639018 D|074189197 080112013 +000000232 000749572 000667515 D|090205391 083884723 +000000232 000751199 000695055 D|002581805 062917285 +000000232 000753066 000725868 D|031854665 000790138 +000000232 000800851 000743064 D|041160981 073698317 +000000232 000809300 000757043 D|096043290 024885904 +000000232 000817730 000758648 D|024362856 081438446 +000000232 000830527 000787244 D|011664018 040122189 +000000232 000838406 000794015 D|087795351 017603587 +000000232 000856241 000806163 D|091413079 012273380 +000000232 000889024 000825440 D|015397376 019003288 +000000232 000897068 000864287 D|014187963 014042925 +000000232 000903599 000875301 D|020302989 022669485 +000000232 000943378 000877884 D|097864524 022965142 +000000232 000944430 000891683 D|026118710 000044452 +000000232 000953618 000918901 D|094731381 015082167 +000000232 000956403 000978084 D|078678488 019670282 +000000232 000974844 000985611 D|021559822 038971698 +000000233 000016325 000018492 D|030740735 055590253 +000000233 000032370 000051811 D|017104636 027566274 +000000233 000035239 000068242 D|045180113 053255950 +000000233 000041314 000095819 D|045682615 015548373 +000000233 000044789 000113934 D|057874727 038195791 +000000233 000053690 000116138 D|045292125 019074408 +000000233 000068679 000118953 D|076377512 005980068 +000000233 000078842 000142400 D|040210363 013265792 +000000233 000099750 000155035 D|028627677 052488970 +000000233 000116538 000160825 D|080539092 037733843 +000000233 000152032 000178274 D|069373132 054878544 +000000233 000155017 000181356 D|058024602 045921533 +000000233 000162575 000193846 D|020135247 038154417 +000000233 000197154 000217459 D|035306091 052799241 +000000233 000265215 000269505 D|032880331 002011133 +000000233 000299603 000280309 D|064063623 091613595 +000000233 000315655 000281787 D|082101030 060514584 +000000233 000321523 000291565 D|027690960 054737547 +000000233 000321741 000320277 D|012854959 017418111 +000000233 000327459 000326395 D|012739753 010475784 +000000233 000395452 000349464 D|049122171 023031388 +000000233 000481062 000353361 D|097019918 021679799 +000000233 000484260 000368655 D|003069257 035776526 +000000233 000484623 000415268 D|043112313 093605482 +000000233 000513681 000436233 D|029099749 019468316 +000000233 000529914 000454302 D|043911803 089154890 +000000233 000537629 000463703 D|082171113 036699391 +000000233 000562902 000477207 D|094045940 064605522 +000000233 000581459 000501840 D|020411099 035293097 +000000233 000590669 000526254 D|051045163 092044408 +000000233 000601196 000626034 D|035674569 051092525 +000000233 000610572 000638474 D|087055143 062694319 +000000233 000623635 000649749 D|012207593 052242542 +000000233 000636069 000653675 D|034007472 054549981 +000000233 000640824 000678497 D|055274149 056953113 +000000233 000700822 000684288 D|075674855 081712613 +000000233 000712315 000692215 D|078947125 090461452 +000000233 000715491 000714009 D|069889406 033228644 +000000233 000762469 000734922 D|026767456 042755485 +000000233 000769161 000771929 D|047963576 091298219 +000000233 000796607 000779080 D|074093045 001705925 +000000233 000816638 000826085 D|067051410 069708198 +000000233 000866540 000826758 D|079617375 048369261 +000000233 000867122 000837971 D|038473853 055355154 +000000233 000870146 000859733 D|029067409 088100420 +000000233 000912585 000903418 D|035983456 058641283 +000000233 000916514 000928609 D|012857662 059456314 +000000233 000975384 000936513 D|060399699 031093904 +000000233 000992314 000976923 D|014876797 055961772 +000000233 000995306 000982539 D|096675015 086161978 +000000234 000016450 000014298 D|024656485 088238212 +000000234 000098575 000015523 D|012694647 010106529 +000000234 000148759 000043799 D|007747761 091804404 +000000234 000216345 000073200 D|077622678 051881297 +000000234 000220704 000080205 D|008480460 092956526 +000000234 000221261 000115794 D|040308380 020859330 +000000234 000245867 000159645 D|096512268 074625221 +000000234 000296441 000165333 D|056832670 053814108 +000000234 000307498 000173392 D|003618337 040239817 +000000234 000315696 000190939 D|053722291 026437281 +000000234 000326037 000235654 D|052342673 006203880 +000000234 000326423 000245058 D|058520749 052863069 +000000234 000329927 000370790 D|029299790 085947475 +000000234 000360655 000375158 D|037566204 024089089 +000000234 000408579 000408999 D|026951836 088615919 +000000234 000417719 000422661 D|024925685 089171808 +000000234 000423641 000427379 D|094521334 033281307 +000000234 000445048 000429558 D|071749762 086494659 +000000234 000446013 000445634 D|002510869 070763009 +000000234 000464830 000456837 D|034390734 050826548 +000000234 000490552 000468951 D|005473927 066409676 +000000234 000498061 000469219 D|062540728 030392244 +000000234 000510329 000486169 D|086037219 033750117 +000000234 000520058 000491336 D|052675905 069984728 +000000234 000530851 000494420 D|068722249 002457377 +000000234 000594651 000495824 D|081311670 028427227 +000000234 000643561 000539584 D|041410058 016678285 +000000234 000647740 000584897 D|005316015 005492779 +000000234 000665780 000623039 D|036114142 095178103 +000000234 000669793 000632076 D|031873155 098805903 +000000234 000671987 000647566 D|094715154 063894087 +000000234 000677149 000673593 D|029369859 058796031 +000000234 000696214 000685832 D|071415510 086223485 +000000234 000710338 000688043 D|078234506 090891901 +000000234 000724568 000692201 D|077910188 085584430 +000000234 000727823 000693552 D|049268849 004894040 +000000234 000750942 000708416 D|097848864 058450084 +000000234 000785800 000714607 D|026284397 066352163 +000000234 000786842 000759758 D|028543934 055974729 +000000234 000796087 000768546 D|012158648 029801357 +000000234 000819193 000772175 D|081426316 094305913 +000000234 000857057 000825790 D|001076693 059762380 +000000234 000874622 000827577 D|084133097 096543756 +000000234 000894378 000838224 D|057276178 001211083 +000000234 000900801 000874464 D|034257498 067513669 +000000234 000902350 000880558 D|080304850 049224030 +000000234 000939256 000900813 D|028172080 023791381 +000000234 000963098 000916755 D|099792048 036860102 +000000234 000966705 000917239 D|000873694 059182814 +000000234 000979237 000952188 D|018189360 053768946 +000000235 000000971 000013171 D|094756653 064442811 +000000235 000005571 000053221 D|045495006 003746148 +000000235 000019142 000058437 D|090799776 012257632 +000000235 000036481 000071900 D|034201543 009224196 +000000235 000037025 000079908 D|034149840 026792248 +000000235 000051248 000129076 D|020552310 067386016 +000000235 000100658 000174622 D|009805719 068369166 +000000235 000161105 000193731 D|050800768 004775338 +000000235 000176824 000196930 D|036680871 039340979 +000000235 000178931 000222005 D|029150197 026550385 +000000235 000202235 000224941 D|034255221 079604514 +000000235 000206905 000227538 D|014172877 056788351 +000000235 000208948 000234851 D|019242196 067929102 +000000235 000247926 000293163 D|001339922 070438899 +000000235 000288283 000299520 D|076047331 006205885 +000000235 000294499 000302195 D|085519884 055288544 +000000235 000316262 000340497 D|012558855 060448510 +000000235 000325049 000431814 D|052709529 072285407 +000000235 000332224 000444512 D|061515710 071949213 +000000235 000366514 000457277 D|029941421 057247797 +000000235 000417889 000505663 D|030225471 088418668 +000000235 000433674 000509696 D|072441119 081325196 +000000235 000455576 000511078 D|031441155 050208772 +000000235 000462409 000516331 D|010655457 056367367 +000000235 000495563 000529470 D|034889948 054704022 +000000235 000497949 000546180 D|044582918 057058094 +000000235 000512637 000557320 D|054553230 099159132 +000000235 000523363 000567195 D|056914456 014429865 +000000235 000536451 000583229 D|009608901 078636905 +000000235 000542695 000596531 D|082328230 079559423 +000000235 000544621 000599425 D|099779173 031988036 +000000235 000565712 000614023 D|032835432 090299788 +000000235 000578807 000621529 D|018428273 059212098 +000000235 000621477 000651064 D|003406105 023620209 +000000235 000628042 000662644 D|032489945 045956755 +000000235 000658347 000663626 D|002284859 043932356 +000000235 000658921 000677473 D|040795948 035373023 +000000235 000706709 000681435 D|014117629 051647679 +000000235 000709837 000689822 D|058882446 001567680 +000000235 000718943 000700651 D|026185926 062601113 +000000235 000727441 000706162 D|021710369 030489169 +000000235 000820925 000719753 D|044557449 025046553 +000000235 000835120 000800955 D|096469334 063792362 +000000235 000848972 000819519 D|007219481 024143451 +000000235 000880337 000829276 D|094711101 034009159 +000000235 000914388 000834147 D|026490859 029293928 +000000235 000916349 000859195 D|019532235 071841178 +000000235 000923970 000884025 D|025683945 012708977 +000000235 000954168 000961182 D|032379117 015408906 +000000235 000976001 000998211 D|067686227 045357576 +000000236 000009714 000007015 D|033267370 059961569 +000000236 000012054 000022455 D|078919369 078030200 +000000236 000014752 000031464 D|006777783 093959046 +000000236 000017271 000061961 D|063780095 044868121 +000000236 000054879 000079263 D|040488454 067909245 +000000236 000057783 000096866 D|018243853 041295299 +000000236 000104069 000105983 D|063034221 054539006 +000000236 000121304 000115348 D|024113691 061811221 +000000236 000169355 000126017 D|050965866 000643288 +000000236 000181234 000133293 D|087904655 011535451 +000000236 000181348 000135935 D|040570295 043441003 +000000236 000189055 000159928 D|083082668 061288350 +000000236 000212908 000189102 D|023445600 009224047 +000000236 000261148 000220676 D|083731494 004833985 +000000236 000330723 000223292 D|012826819 092429063 +000000236 000339921 000275048 D|070522262 098460792 +000000236 000351014 000280905 D|011984924 045848998 +000000236 000381036 000296753 D|036797736 051946929 +000000236 000397358 000301562 D|028804189 077626877 +000000236 000403946 000333994 D|008837251 078210359 +000000236 000407042 000335144 D|089575454 086704260 +000000236 000424728 000344160 D|074911958 092059459 +000000236 000426694 000357607 D|090459738 047081044 +000000236 000436926 000373338 D|089128069 074559812 +000000236 000451281 000415580 D|089784842 051496305 +000000236 000457850 000421263 D|077430860 047959616 +000000236 000474878 000486007 D|060049502 063637135 +000000236 000488068 000497615 D|075571273 022343668 +000000236 000490804 000510849 D|038931847 065489739 +000000236 000505236 000526793 D|044021286 061902817 +000000236 000621582 000537646 D|083004912 078111896 +000000236 000652396 000539084 D|047605295 058820110 +000000236 000664848 000598248 D|041717507 090051330 +000000236 000683991 000639373 D|032687189 064654093 +000000236 000726063 000646740 D|060681980 031705447 +000000236 000730249 000673814 D|047674558 010449143 +000000236 000742033 000680065 D|018634167 014013912 +000000236 000756369 000709414 D|087753141 013165950 +000000236 000830223 000774307 D|036494915 009846635 +000000236 000870892 000783633 D|078693637 021472485 +000000236 000873144 000842695 D|095610810 097940894 +000000236 000890842 000855674 D|033059592 009249527 +000000236 000890975 000882991 D|035555415 043479625 +000000236 000909863 000898774 D|068673326 008620310 +000000236 000924569 000900446 D|005114268 069639988 +000000236 000941211 000901796 D|045602333 045624632 +000000236 000950743 000903373 D|081792010 063518034 +000000236 000956955 000942628 D|017473382 053509660 +000000236 000966841 000988247 D|083923236 052188248 +000000236 000976313 000997163 D|043401883 040306139 +000000237 000019577 000034266 D|072708917 046806234 +000000237 000029484 000061084 D|084568637 016715549 +000000237 000121007 000082683 D|046149491 044400161 +000000237 000133969 000086742 D|082761064 088820608 +000000237 000145101 000112169 D|007966966 015116618 +000000237 000165098 000118768 D|062351865 033098677 +000000237 000167995 000120532 D|023634236 003997857 +000000237 000180276 000162395 D|018255772 061693209 +000000237 000182561 000170206 D|047160411 020114217 +000000237 000206262 000191915 D|025524196 014645575 +000000237 000206422 000214958 D|089554163 026680595 +000000237 000250492 000254219 D|026140946 077630471 +000000237 000257681 000277580 D|009739132 003917042 +000000237 000291622 000278234 D|004730052 052876169 +000000237 000338495 000359252 D|084237179 045068706 +000000237 000362259 000397098 D|084408389 052535609 +000000237 000398568 000406872 D|024205032 073431631 +000000237 000417366 000421364 D|051971144 053832812 +000000237 000454942 000444592 D|006608080 079696860 +000000237 000454982 000471638 D|077434255 006705097 +000000237 000454997 000488971 D|069438522 019222500 +000000237 000458727 000511560 D|073803596 030066552 +000000237 000492900 000524183 D|035858860 098506604 +000000237 000495080 000552692 D|097555795 068398931 +000000237 000517285 000553235 D|014272933 035964141 +000000237 000546653 000557813 D|037555884 038584152 +000000237 000549518 000567430 D|027687684 071824554 +000000237 000578475 000609646 D|039484996 091284197 +000000237 000608366 000615283 D|031769714 055431139 +000000237 000610375 000626297 D|003120060 032889929 +000000237 000622346 000647877 D|019784011 099235558 +000000237 000671874 000648680 D|000903472 021035812 +000000237 000688649 000670459 D|008512548 076369867 +000000237 000698544 000739641 D|019567180 073964503 +000000237 000725579 000773072 D|080763153 070263084 +000000237 000763217 000773350 D|045754739 064407481 +000000237 000782138 000774501 D|017788920 078031986 +000000237 000786819 000797046 D|056888371 092649699 +000000237 000817684 000803198 D|003246035 060012540 +000000237 000819989 000807431 D|037634201 085016581 +000000237 000837659 000830699 D|020402961 031600784 +000000237 000858074 000851152 D|057202741 061036640 +000000237 000861927 000875517 D|099991285 017915181 +000000237 000890023 000936038 D|095804807 080060689 +000000237 000891130 000941936 D|029513149 058167298 +000000237 000947204 000943203 D|032473407 081217782 +000000237 000955111 000956052 D|005616255 030895085 +000000237 000984796 000959801 D|017514540 051473349 +000000237 000987551 000972786 D|068605915 038203358 +000000237 000997793 000997116 D|060263883 033544771 +000000238 000044222 000008535 D|071778853 099971965 +000000238 000049170 000034833 D|081812619 040901227 +000000238 000060389 000040357 D|003743780 063717989 +000000238 000073016 000133359 D|099185679 090466022 +000000238 000155578 000141171 D|096948096 072633484 +000000238 000161710 000162707 D|072443043 075996874 +000000238 000179899 000172547 D|015076359 090569764 +000000238 000190634 000190081 D|062461992 010141483 +000000238 000202451 000209284 D|061187256 040181220 +000000238 000206785 000218764 D|075862534 036353780 +000000238 000254979 000247607 D|076356865 020295193 +000000238 000264036 000304336 D|035862106 056283745 +000000238 000296105 000328192 D|016912077 032678320 +000000238 000299727 000334553 D|087569627 055004079 +000000238 000314994 000357730 D|077781490 097069142 +000000238 000336188 000359362 D|053999972 091881680 +000000238 000358327 000390590 D|070586105 068790227 +000000238 000358662 000446061 D|045004513 081289602 +000000238 000365506 000455312 D|069177435 097759123 +000000238 000425963 000463168 D|040438387 023202015 +000000238 000433084 000477291 D|046730047 009050605 +000000238 000504217 000501480 D|050841852 046680210 +000000238 000542986 000502199 D|052650467 060847096 +000000238 000572542 000516999 D|069620581 061271807 +000000238 000627770 000530605 D|003657714 052596959 +000000238 000628280 000554163 D|022467315 066887443 +000000238 000629940 000568706 D|008916077 063412474 +000000238 000669498 000585099 D|094906741 050863517 +000000238 000677819 000588149 D|002997977 013805943 +000000238 000680095 000645641 D|073341952 032253889 +000000238 000684675 000659231 D|001688570 051423999 +000000238 000762643 000703513 D|000629469 010757602 +000000238 000764945 000723594 D|034307053 094007727 +000000238 000767767 000757615 D|078182505 014120784 +000000238 000771913 000765994 D|029673234 083533269 +000000238 000787568 000775521 D|078472204 057745752 +000000238 000796927 000799663 D|067042701 048559594 +000000238 000804411 000808569 D|027237621 009748315 +000000238 000807369 000813711 D|021127179 077311157 +000000238 000807598 000860401 D|003600138 054480253 +000000238 000810071 000860866 D|088322426 076833880 +000000238 000814463 000873858 D|066882121 013469867 +000000238 000842355 000897018 D|025212248 097962922 +000000238 000867292 000909584 D|061645327 050998744 +000000238 000879252 000910829 D|008771814 018056433 +000000238 000912180 000913459 D|060326145 049568626 +000000238 000914057 000922908 D|088858418 092868434 +000000238 000914319 000930385 D|092150609 082471465 +000000238 000972026 000986628 D|027493245 069936192 +000000238 000993559 000995005 D|047371810 073134014 +000000239 000019303 000019495 D|099603706 040418477 +000000239 000024656 000041212 D|089419770 023105874 +000000239 000032851 000047558 D|078404273 033779075 +000000239 000077849 000064312 D|048860155 003909116 +000000239 000113743 000075678 D|022049539 013928813 +000000239 000125274 000125766 D|029222353 034286922 +000000239 000145425 000134927 D|015977235 049730175 +000000239 000146333 000162309 D|041540216 078945343 +000000239 000163420 000169025 D|097729459 024232378 +000000239 000177990 000195028 D|083162540 070595185 +000000239 000198949 000227500 D|088901547 054813632 +000000239 000214640 000252295 D|046900208 078945095 +000000239 000232393 000324858 D|047972157 031676716 +000000239 000237374 000330179 D|026263485 045231908 +000000239 000285221 000343637 D|096688211 088807554 +000000239 000289841 000369138 D|098803519 051174386 +000000239 000293468 000373474 D|039988850 048081119 +000000239 000320715 000375920 D|098005821 065560893 +000000239 000338148 000426486 D|040992407 054921266 +000000239 000375885 000434558 D|092757690 091603134 +000000239 000382077 000455787 D|093523202 099478100 +000000239 000401390 000484291 D|075963874 031456163 +000000239 000430609 000502723 D|038676504 012291373 +000000239 000437319 000543481 D|080983232 008527490 +000000239 000487456 000547343 D|084756321 060618315 +000000239 000518619 000555884 D|051976665 073687631 +000000239 000526807 000602431 D|014168855 066553165 +000000239 000534611 000605147 D|009542903 020337779 +000000239 000646776 000610581 D|000085320 070793687 +000000239 000660119 000618547 D|058414710 033667786 +000000239 000724916 000622398 D|031678732 008808721 +000000239 000731046 000634250 D|077134575 033021668 +000000239 000734551 000646853 D|085333782 075289313 +000000239 000757347 000683962 D|097881307 006055644 +000000239 000757798 000696221 D|097256053 095224820 +000000239 000764386 000705627 D|078935996 026308687 +000000239 000775378 000714780 D|068011386 023000379 +000000239 000781217 000741517 D|005071217 073094214 +000000239 000832214 000755394 D|086139240 085236477 +000000239 000838337 000756699 D|009725617 070880798 +000000239 000846150 000756771 D|045787970 045799880 +000000239 000853296 000815846 D|080790642 021930315 +000000239 000856606 000832868 D|065837717 021113946 +000000239 000859572 000841391 D|010154268 091141423 +000000239 000935504 000889519 D|062626530 088456803 +000000239 000950189 000900783 D|068604768 044138017 +000000239 000956821 000908832 D|044735139 027277730 +000000239 000964037 000954988 D|025791242 067385902 +000000239 000993617 000983464 D|097674793 096752388 +000000239 000997157 000998743 D|009896302 026690181 +000000240 000002952 000025282 D|034870703 073247223 +000000240 000005567 000045919 D|044544187 097994212 +000000240 000011759 000053284 D|012491158 064054129 +000000240 000018834 000078759 D|073532381 097649938 +000000240 000023278 000089957 D|022185654 054889660 +000000240 000030773 000131781 D|023872076 056154224 +000000240 000044869 000155925 D|004471959 008743126 +000000240 000079265 000168302 D|002070829 049314678 +000000240 000084282 000183261 D|026871306 032415388 +000000240 000127205 000233088 D|063249356 070851954 +000000240 000151268 000249952 D|097071882 042280101 +000000240 000168349 000258123 D|035269282 082283004 +000000240 000179634 000273189 D|081729654 002506333 +000000240 000193022 000277185 D|043323500 059199049 +000000240 000209272 000278304 D|006290276 037473683 +000000240 000230540 000316112 D|005276233 027028190 +000000240 000240916 000354494 D|098150654 012073146 +000000240 000245654 000408114 D|037073051 037882235 +000000240 000362389 000452174 D|041266115 084600933 +000000240 000366138 000469312 D|094702469 070299313 +000000240 000370328 000469731 D|023521081 024421556 +000000240 000387036 000537597 D|046386635 031906153 +000000240 000416467 000563650 D|021006829 013395668 +000000240 000424741 000601934 D|097817354 080043518 +000000240 000485337 000602109 D|007577131 066430278 +000000240 000494254 000605764 D|085867054 051525754 +000000240 000499991 000606611 D|066612489 092053585 +000000240 000522232 000607668 D|072024728 008171533 +000000240 000531018 000617349 D|032210777 035806459 +000000240 000557205 000654765 D|064772786 054204066 +000000240 000562058 000671707 D|078795229 089531418 +000000240 000589323 000678873 D|066604994 059156956 +000000240 000631089 000692021 D|006468775 005981618 +000000240 000634776 000748931 D|096507648 053333140 +000000240 000660246 000764046 D|092823442 072578556 +000000240 000719749 000805841 D|072964747 065115599 +000000240 000741004 000809161 D|000655340 045877283 +000000240 000779707 000816138 D|049336643 047078675 +000000240 000782005 000819019 D|037250043 028059336 +000000240 000845303 000822342 D|083486679 079103760 +000000240 000892505 000830439 D|024870666 005695945 +000000240 000912984 000850283 D|077759088 032845507 +000000240 000930756 000851935 D|008418313 080779996 +000000240 000957170 000852299 D|030316255 069552910 +000000240 000966910 000859235 D|073354200 061065080 +000000240 000983931 000862189 D|084385238 006946433 +000000240 000985998 000868575 D|042111546 053985889 +000000240 000995704 000908748 D|068609735 097321159 +000000240 000996041 000910970 D|035136063 056018410 +000000240 000996106 000986136 D|051697570 040991471 +000000241 000005954 000001894 D|097590416 068918830 +000000241 000016119 000018676 D|096502765 066761537 +000000241 000046056 000021414 D|001721431 015567903 +000000241 000046245 000035353 D|069657068 078773752 +000000241 000051441 000086909 D|068575144 093466604 +000000241 000056939 000102211 D|032849062 091608457 +000000241 000071325 000126534 D|073664081 054641183 +000000241 000079534 000134913 D|057415515 080536808 +000000241 000111131 000167436 D|021042012 096299717 +000000241 000111218 000188916 D|090242478 043127821 +000000241 000119332 000215075 D|090434535 084730651 +000000241 000133881 000222445 D|051233006 049885629 +000000241 000164663 000224869 D|042965666 092113483 +000000241 000175978 000231836 D|036722687 072115750 +000000241 000205501 000250252 D|053278083 067857722 +000000241 000234635 000263146 D|023746577 068163102 +000000241 000248604 000267669 D|040213132 021213901 +000000241 000277872 000354046 D|055552055 047321042 +000000241 000286060 000361456 D|088539131 057446170 +000000241 000311882 000372933 D|022544912 042916167 +000000241 000330653 000374345 D|063326517 058343457 +000000241 000372356 000385609 D|017880701 085319956 +000000241 000379995 000467080 D|032458769 078749723 +000000241 000390278 000524913 D|096936050 080207078 +000000241 000473328 000525839 D|002333304 078298572 +000000241 000481330 000578324 D|037085624 074108825 +000000241 000506315 000628784 D|055903678 056000787 +000000241 000507647 000637191 D|074519813 042036779 +000000241 000509101 000676486 D|052505038 008624096 +000000241 000565063 000677701 D|045117407 041128133 +000000241 000618675 000683144 D|079459154 085813148 +000000241 000655432 000703078 D|071632269 029663016 +000000241 000679765 000727718 D|000176596 020183847 +000000241 000707001 000735852 D|025762800 057430857 +000000241 000725841 000759826 D|035166069 066607301 +000000241 000744525 000772032 D|090830728 083399342 +000000241 000772829 000794177 D|060243045 088472421 +000000241 000782842 000795164 D|087713566 014414509 +000000241 000783718 000819944 D|034031098 064924918 +000000241 000788573 000824697 D|011860630 056654266 +000000241 000793891 000835502 D|016890958 044108361 +000000241 000798726 000865789 D|050493201 034381206 +000000241 000822986 000873243 D|088606728 086859777 +000000241 000828011 000882883 D|084830365 003795573 +000000241 000841005 000905544 D|034169294 077695632 +000000241 000841785 000948024 D|074236976 045117927 +000000241 000854050 000977987 D|088216340 015666329 +000000241 000882678 000987272 D|086748363 003466439 +000000241 000942327 000991273 D|085463383 030289636 +000000241 000996833 000994350 D|009575875 019885488 +000000242 000001203 000039741 D|038812277 006232745 +000000242 000014160 000068426 D|004591791 064693752 +000000242 000042922 000090104 D|073599378 004420259 +000000242 000092799 000110305 D|027784198 047261984 +000000242 000117313 000114268 D|011626097 019167475 +000000242 000147448 000139455 D|074559102 028468209 +000000242 000182090 000147706 D|072219259 056855943 +000000242 000190924 000171247 D|004938952 045540469 +000000242 000206181 000187658 D|099373741 033900329 +000000242 000244847 000188727 D|087941594 097865115 +000000242 000271714 000198560 D|014578960 001585522 +000000242 000280855 000202225 D|041862035 076541374 +000000242 000299443 000207312 D|068042925 013338883 +000000242 000314591 000312168 D|020233114 008875941 +000000242 000349006 000343098 D|050769475 044457807 +000000242 000365638 000358657 D|050275442 098304981 +000000242 000369580 000374049 D|073332655 002712718 +000000242 000379095 000401589 D|001482123 000532907 +000000242 000386260 000406770 D|064814695 030192560 +000000242 000406307 000421652 D|021550688 091938957 +000000242 000420664 000429654 D|039587044 013636367 +000000242 000451106 000460720 D|070960982 015807465 +000000242 000451260 000462307 D|000005931 029671963 +000000242 000456783 000499311 D|021891196 033893746 +000000242 000500855 000509732 D|012227596 083786603 +000000242 000504235 000550487 D|084023055 041508517 +000000242 000509434 000578447 D|074006720 059395487 +000000242 000527628 000582294 D|037480699 070895879 +000000242 000541148 000588197 D|097886688 083302166 +000000242 000570917 000593266 D|068558577 058535514 +000000242 000584678 000677640 D|047279878 082550353 +000000242 000626571 000701925 D|069249143 077140228 +000000242 000634630 000704860 D|066954921 079648192 +000000242 000653233 000747013 D|069935333 004000832 +000000242 000656275 000784430 D|058290113 054743928 +000000242 000683567 000786138 D|092502170 006456201 +000000242 000716914 000795035 D|001855420 010244864 +000000242 000719503 000807253 D|067896892 019460409 +000000242 000721334 000814952 D|064393613 018308702 +000000242 000726130 000837818 D|067493396 048175404 +000000242 000729914 000843226 D|013160619 006088015 +000000242 000738579 000861896 D|033057548 002435938 +000000242 000747291 000892571 D|003417780 088879655 +000000242 000754668 000898289 D|030201279 040192053 +000000242 000845416 000920249 D|015893100 032179644 +000000242 000858402 000920578 D|019182745 037212571 +000000242 000859110 000921077 D|017640400 069818492 +000000242 000879722 000940840 D|078640954 045764693 +000000242 000904610 000955489 D|091276389 096890998 +000000242 000989457 000973865 D|045746847 014495503 +000000243 000003354 000005900 D|064709046 056987162 +000000243 000022070 000025259 D|075458025 074885382 +000000243 000039294 000035866 D|083705536 047396802 +000000243 000101518 000045227 D|089456686 066069944 +000000243 000127209 000049336 D|081835046 087017027 +000000243 000170444 000075549 D|074004993 050711261 +000000243 000179746 000099150 D|080450886 047366721 +000000243 000210115 000118324 D|004721365 091334039 +000000243 000240059 000156174 D|015752255 081425770 +000000243 000253820 000159629 D|052680324 087754603 +000000243 000266832 000167079 D|078687392 044963075 +000000243 000293332 000232529 D|054450704 020182347 +000000243 000333916 000243081 D|029734522 018821411 +000000243 000345630 000301643 D|088680250 066706125 +000000243 000351592 000334903 D|080856843 099085490 +000000243 000360199 000352373 D|023431328 012191755 +000000243 000399696 000364590 D|019587907 097714927 +000000243 000410426 000382949 D|021218528 005535888 +000000243 000432931 000401253 D|097135880 009776941 +000000243 000458017 000419850 D|058951323 010800775 +000000243 000481111 000463652 D|055509654 035436520 +000000243 000491182 000463812 D|075099672 024567865 +000000243 000532781 000480762 D|080064909 055708782 +000000243 000544772 000485043 D|049612965 029097663 +000000243 000557365 000513612 D|029922038 009684533 +000000243 000590966 000545863 D|007783877 084783914 +000000243 000596896 000554161 D|033755173 091373433 +000000243 000614628 000554857 D|081183643 027057123 +000000243 000620208 000568867 D|036474036 088555361 +000000243 000626708 000587948 D|003608992 059431811 +000000243 000637340 000623174 D|020440356 067974110 +000000243 000657244 000630169 D|059122088 075625569 +000000243 000665350 000704447 D|060224726 008121793 +000000243 000666837 000733448 D|076822301 085421481 +000000243 000684048 000737997 D|093602548 073043223 +000000243 000704174 000740291 D|000507279 061047862 +000000243 000721441 000742845 D|083204310 005229488 +000000243 000737376 000745409 D|053032675 040702204 +000000243 000748112 000756109 D|036797537 098142006 +000000243 000769861 000761227 D|030836257 018962334 +000000243 000796306 000769860 D|020202199 015638837 +000000243 000805076 000822928 D|024163370 072747864 +000000243 000806376 000823936 D|075868265 039248307 +000000243 000838684 000836828 D|074172535 039516004 +000000243 000840183 000860431 D|089932225 055299301 +000000243 000866407 000892939 D|023177853 090364171 +000000243 000903439 000938371 D|035637905 062988490 +000000243 000943551 000958694 D|095884032 034125848 +000000243 000963237 000971273 D|083569544 073969482 +000000243 000987982 000985912 D|077369647 092310889 +000000244 000003979 000022142 D|053142853 012324052 +000000244 000021130 000049752 D|039106862 057400728 +000000244 000028365 000064215 D|026481502 066675090 +000000244 000072486 000096878 D|011030577 049549611 +000000244 000079359 000113220 D|097760298 025738030 +000000244 000120055 000117079 D|058618669 056872594 +000000244 000124233 000161355 D|054057893 028784659 +000000244 000173749 000179279 D|091724692 067049603 +000000244 000189266 000191807 D|072943917 002648958 +000000244 000195149 000197585 D|061011208 079591021 +000000244 000205155 000220676 D|018872119 076757066 +000000244 000214456 000227024 D|008914752 013912517 +000000244 000245882 000229880 D|021946370 042553433 +000000244 000263791 000232347 D|051394829 050888437 +000000244 000293614 000239153 D|023426591 080185761 +000000244 000320571 000246049 D|076413946 038553982 +000000244 000340970 000312584 D|033307155 064912065 +000000244 000341289 000314991 D|062716739 010250081 +000000244 000359963 000329660 D|098627687 036314114 +000000244 000398389 000360379 D|099919399 045179748 +000000244 000414367 000372331 D|083264740 074538237 +000000244 000420696 000375040 D|047088200 072141892 +000000244 000428871 000381707 D|057028028 036303282 +000000244 000445440 000382483 D|065319981 099405899 +000000244 000465458 000412596 D|099897041 063984627 +000000244 000513532 000430922 D|084840371 044971541 +000000244 000526996 000442825 D|070321935 076804565 +000000244 000547901 000466489 D|023025721 055620242 +000000244 000560670 000467640 D|080511166 040159489 +000000244 000561284 000473297 D|044607356 053628196 +000000244 000575614 000473899 D|082384105 097754902 +000000244 000577292 000493859 D|036456194 065865762 +000000244 000578648 000528027 D|036480004 072011282 +000000244 000601877 000565064 D|020164827 064546486 +000000244 000632028 000578005 D|067754450 024504632 +000000244 000672823 000580952 D|026052359 043926012 +000000244 000682092 000584876 D|039118482 011662269 +000000244 000689276 000624368 D|066142846 000978809 +000000244 000704591 000641258 D|037954027 028926180 +000000244 000713666 000751148 D|050755521 039479794 +000000244 000715227 000758116 D|021368980 055997932 +000000244 000723190 000760723 D|044216653 025288915 +000000244 000723699 000764252 D|042188093 000020743 +000000244 000741204 000812160 D|086994863 069999892 +000000244 000757394 000848630 D|097741649 018735325 +000000244 000763265 000858157 D|060998720 016834789 +000000244 000763399 000887820 D|030494883 025659923 +000000244 000872819 000961905 D|032391196 004015949 +000000244 000932472 000964589 D|040854815 079806920 +000000244 000956727 000970090 D|014725008 011780423 +000000245 000014009 000019174 D|003694536 048052343 +000000245 000079273 000027547 D|058722135 034463461 +000000245 000100987 000033178 D|051295124 039107951 +000000245 000121560 000070477 D|062168985 040768049 +000000245 000134928 000096951 D|091594484 082077048 +000000245 000158458 000124369 D|080432066 038378890 +000000245 000176225 000131335 D|041350972 000700119 +000000245 000201549 000170022 D|099727090 053475093 +000000245 000230318 000174987 D|027397239 038188274 +000000245 000252205 000298321 D|075411372 078648248 +000000245 000258583 000323939 D|022657311 073680933 +000000245 000262333 000369801 D|045642741 080761615 +000000245 000298147 000393677 D|014946765 074068367 +000000245 000304673 000393679 D|029593531 083526780 +000000245 000314618 000433253 D|027413443 012080675 +000000245 000330506 000440825 D|089623426 090838293 +000000245 000331922 000460302 D|054067995 064676019 +000000245 000340853 000468001 D|089889440 070223627 +000000245 000363466 000469520 D|059839109 053300114 +000000245 000367003 000477583 D|056208773 014648807 +000000245 000371743 000493821 D|021847016 084912211 +000000245 000382834 000497498 D|012905645 042609001 +000000245 000401631 000510504 D|096985265 083010425 +000000245 000419627 000561805 D|001624892 003415234 +000000245 000424816 000584169 D|005208419 014347641 +000000245 000453926 000588839 D|017763115 090087016 +000000245 000490853 000593598 D|064564735 041934493 +000000245 000491832 000608408 D|008575339 039877974 +000000245 000502913 000619784 D|042848124 010608005 +000000245 000520812 000636832 D|072286745 076572834 +000000245 000537048 000694887 D|055525999 080519548 +000000245 000583148 000701015 D|086329699 010879823 +000000245 000633464 000714710 D|008671151 084690405 +000000245 000681359 000727333 D|042228207 051276624 +000000245 000725625 000757007 D|075891354 068040185 +000000245 000729367 000761097 D|077485476 073591064 +000000245 000752711 000780550 D|077070932 027463070 +000000245 000772729 000789694 D|094015444 070101840 +000000245 000781719 000798361 D|000890550 012168172 +000000245 000832325 000807675 D|097163873 081761673 +000000245 000840327 000809770 D|065537243 050565003 +000000245 000853203 000826149 D|067212660 055240350 +000000245 000896601 000910180 D|044506907 046362369 +000000245 000901173 000915592 D|022989654 008091926 +000000245 000951228 000916249 D|072581700 026002071 +000000245 000957452 000928356 D|025264267 006958839 +000000245 000975937 000940201 D|042319500 000760135 +000000245 000983107 000950650 D|075100061 092203932 +000000245 000991031 000961888 D|009443247 005570960 +000000245 000996647 000985192 D|024101392 017346580 +000000246 000002139 000008106 D|039970269 058874906 +000000246 000014309 000079797 D|060598308 037544945 +000000246 000036018 000097688 D|009883848 020429292 +000000246 000075986 000105400 D|035218939 025059763 +000000246 000088865 000107204 D|012180220 027338107 +000000246 000093467 000123729 D|063298516 098491821 +000000246 000119019 000130663 D|088658454 086033134 +000000246 000129820 000130993 D|013054903 099509750 +000000246 000164102 000144436 D|040643427 080286003 +000000246 000168559 000154660 D|044878658 060301738 +000000246 000186518 000155048 D|082505389 037742208 +000000246 000239808 000157606 D|006344925 000269473 +000000246 000278901 000168163 D|039106204 084975755 +000000246 000320107 000182765 D|047258233 007342553 +000000246 000321616 000200367 D|019054088 076137038 +000000246 000337877 000250347 D|024842702 003498704 +000000246 000366119 000275876 D|041797130 056092355 +000000246 000394041 000287247 D|025159936 078427041 +000000246 000401812 000289972 D|034532325 091071675 +000000246 000487726 000318535 D|020993522 059723959 +000000246 000492050 000337703 D|070676351 083579657 +000000246 000505592 000370031 D|066537008 056383395 +000000246 000510632 000410752 D|087881323 079103975 +000000246 000535557 000439029 D|060387497 088191902 +000000246 000541331 000455312 D|014505651 061425568 +000000246 000559122 000478871 D|089156407 079039647 +000000246 000578279 000481302 D|087019736 065130728 +000000246 000578690 000518844 D|060606708 031647854 +000000246 000679508 000523172 D|033221591 020568531 +000000246 000690290 000528872 D|082803039 026814148 +000000246 000697841 000538817 D|074026542 019777355 +000000246 000712453 000593581 D|047643756 072800151 +000000246 000734788 000603015 D|090242115 028031343 +000000246 000739057 000626106 D|028140927 081949711 +000000246 000778230 000638360 D|002350412 030714932 +000000246 000787907 000656819 D|066150441 015671044 +000000246 000793430 000675885 D|087794643 096454132 +000000246 000797452 000687537 D|047821259 023936368 +000000246 000815025 000690850 D|063953394 052570168 +000000246 000821893 000737830 D|072258781 078813981 +000000246 000825895 000751821 D|000468102 050624178 +000000246 000857445 000776759 D|099569631 088251371 +000000246 000859376 000804138 D|067587437 037635775 +000000246 000887313 000827673 D|098770300 060592619 +000000246 000912491 000844998 D|061128631 030072352 +000000246 000948597 000855030 D|020842047 045129910 +000000246 000963012 000885303 D|013124663 007457920 +000000246 000982731 000930651 D|017343636 085559605 +000000246 000994987 000935006 D|046248538 022749831 +000000246 000998837 000949882 D|089756978 047067472 +000000247 000013907 000049235 D|065258851 058244309 +000000247 000014472 000078720 D|094395154 073038137 +000000247 000023882 000089594 D|098387169 008889193 +000000247 000032955 000096269 D|063855616 033481120 +000000247 000041238 000096414 D|048102078 028262156 +000000247 000071353 000113776 D|000236892 030715596 +000000247 000092108 000157828 D|078586220 089817908 +000000247 000153524 000210026 D|093275231 089358208 +000000247 000156869 000231682 D|042206976 027815472 +000000247 000176143 000262500 D|039364482 076750439 +000000247 000182278 000269482 D|019775523 088044329 +000000247 000239694 000283954 D|074982863 032076595 +000000247 000243442 000294669 D|023131497 081397272 +000000247 000263042 000316541 D|006157064 063291738 +000000247 000291801 000333941 D|048468469 075028183 +000000247 000305532 000351327 D|023291054 015458050 +000000247 000309164 000353352 D|054296841 032990485 +000000247 000320237 000364836 D|021533276 064630384 +000000247 000320682 000378125 D|073726085 046640810 +000000247 000380066 000420369 D|088983757 021089845 +000000247 000380537 000424736 D|059824078 070194577 +000000247 000429910 000445002 D|073138588 077407943 +000000247 000457209 000447358 D|094526062 034707894 +000000247 000465644 000472694 D|032759297 010243586 +000000247 000485659 000498887 D|096759682 083737743 +000000247 000518584 000526163 D|076525578 057240627 +000000247 000542563 000541839 D|094466887 099370783 +000000247 000560024 000550136 D|060567081 050857299 +000000247 000581930 000550742 D|024513089 056593796 +000000247 000584644 000561735 D|066094004 042816721 +000000247 000588122 000566875 D|096210296 064541440 +000000247 000589317 000572742 D|095768422 060526887 +000000247 000601653 000620127 D|039436133 093503742 +000000247 000630691 000665157 D|089178023 043811346 +000000247 000653917 000684783 D|059179363 065512496 +000000247 000686850 000691079 D|041241442 057458590 +000000247 000731504 000696569 D|091895284 075874435 +000000247 000743453 000699427 D|063435807 014390665 +000000247 000776085 000708474 D|004772559 045224624 +000000247 000794729 000726135 D|055080615 017100484 +000000247 000812711 000759624 D|001937746 066353417 +000000247 000828475 000778903 D|064155183 061315238 +000000247 000832270 000815278 D|086041770 082886788 +000000247 000836408 000817907 D|081131955 049708768 +000000247 000864852 000835013 D|068029732 065495985 +000000247 000919151 000858567 D|091338281 054450112 +000000247 000927657 000895615 D|000049923 040265089 +000000247 000928722 000961992 D|065093102 086766588 +000000247 000937927 000980473 D|095582027 050441285 +000000247 000983009 000996298 D|035859680 023594368 +000000248 000000819 000036380 D|085254411 083627642 +000000248 000010467 000063967 D|070970150 089850717 +000000248 000036502 000064187 D|028285720 097330751 +000000248 000046783 000074306 D|091610298 011495651 +000000248 000075196 000085697 D|016999019 026278300 +000000248 000097139 000110178 D|049093733 027538125 +000000248 000111522 000113722 D|025955959 040801724 +000000248 000126183 000119799 D|074642579 010178673 +000000248 000190036 000140088 D|016455077 076875578 +000000248 000211849 000166616 D|066746572 080462416 +000000248 000240261 000233994 D|080749888 062701640 +000000248 000246434 000241108 D|079919975 062082963 +000000248 000270319 000249098 D|018183643 067808489 +000000248 000277809 000260774 D|022946389 065770771 +000000248 000287235 000355153 D|009982533 039450313 +000000248 000338442 000391253 D|037806224 074387036 +000000248 000339508 000401987 D|049543615 093981829 +000000248 000342991 000418634 D|060153693 094459504 +000000248 000347582 000427872 D|082987215 036966511 +000000248 000347626 000456938 D|086108616 058354715 +000000248 000363684 000467143 D|023047196 070067344 +000000248 000370479 000478960 D|020893682 003962951 +000000248 000390106 000496893 D|005834573 076464687 +000000248 000464824 000538963 D|026811696 033927014 +000000248 000473262 000563321 D|071304569 089423634 +000000248 000578858 000572404 D|054895562 000004859 +000000248 000578995 000588369 D|021594971 007595752 +000000248 000624350 000595293 D|091659199 084450788 +000000248 000630667 000604505 D|000315627 098885047 +000000248 000645703 000625154 D|046821558 092872226 +000000248 000667954 000646927 D|085249474 066085149 +000000248 000674504 000666683 D|053449352 036566188 +000000248 000680705 000686725 D|039637003 061578503 +000000248 000709797 000689156 D|017722926 036827481 +000000248 000715129 000701193 D|034897492 040806144 +000000248 000732532 000719704 D|072302313 006952396 +000000248 000743848 000738319 D|072375631 016730960 +000000248 000770955 000740412 D|098717868 033988243 +000000248 000773047 000757980 D|012916093 076481937 +000000248 000774788 000806724 D|037088841 053545113 +000000248 000793744 000812895 D|027282932 093686532 +000000248 000796726 000827163 D|049998986 047365738 +000000248 000799189 000832474 D|006917981 041389317 +000000248 000806504 000847084 D|066239425 009052910 +000000248 000822507 000869154 D|070405250 089852786 +000000248 000851112 000901518 D|057406849 009059843 +000000248 000871872 000910018 D|045214447 032330463 +000000248 000882779 000954379 D|059972144 016107871 +000000248 000992009 000971140 D|082003325 085235834 +000000248 000996998 000987538 D|020951813 023710114 +000000249 000019087 000002242 D|092104582 022316155 +000000249 000035080 000022610 D|090121377 033104450 +000000249 000036447 000039400 D|077519407 060759502 +000000249 000103755 000048542 D|008847427 009509281 +000000249 000130764 000066013 D|040982041 090707867 +000000249 000132655 000076289 D|043333112 039915177 +000000249 000186211 000135605 D|010743087 098084478 +000000249 000210535 000150982 D|012293343 017742246 +000000249 000211325 000175797 D|040800851 000414421 +000000249 000219035 000225214 D|082423372 065311697 +000000249 000266925 000230193 D|067274636 008739154 +000000249 000337591 000249634 D|045291049 049213249 +000000249 000342358 000270262 D|064758856 071398512 +000000249 000346554 000280436 D|056549196 086553945 +000000249 000375535 000289584 D|039938991 018425278 +000000249 000402834 000293310 D|066713044 015565938 +000000249 000408679 000309160 D|029992030 008456465 +000000249 000410797 000320286 D|014342121 006265676 +000000249 000411526 000329771 D|094272398 054896417 +000000249 000445834 000340852 D|081708046 033743320 +000000249 000466814 000345217 D|017096782 037931764 +000000249 000493595 000371343 D|035065472 095462644 +000000249 000502105 000400668 D|095362810 036731985 +000000249 000505760 000405645 D|070852584 039561503 +000000249 000520643 000412819 D|038008194 094092966 +000000249 000536516 000427278 D|086165789 076731522 +000000249 000538101 000465810 D|004664463 013131414 +000000249 000553122 000474782 D|024857561 030156721 +000000249 000580826 000537155 D|036741137 084044579 +000000249 000605598 000560606 D|039253017 033088444 +000000249 000664154 000573470 D|079561720 013902312 +000000249 000688181 000581302 D|044566747 010560581 +000000249 000711684 000592722 D|051254063 008681320 +000000249 000713277 000634431 D|021088377 088637340 +000000249 000715269 000659131 D|013567465 080043181 +000000249 000719526 000693599 D|021559131 048219505 +000000249 000740801 000735762 D|017829288 008514659 +000000249 000751858 000745299 D|007186537 046265215 +000000249 000768648 000781938 D|004691508 075040507 +000000249 000770890 000798979 D|043177852 058771753 +000000249 000786280 000803280 D|076645395 059277408 +000000249 000836397 000852593 D|032263730 073782092 +000000249 000877211 000873272 D|025826003 054652425 +000000249 000892516 000891245 D|055549727 085383008 +000000249 000914928 000933464 D|040631149 010079994 +000000249 000922825 000954240 D|070344994 023804281 +000000249 000939250 000962761 D|052207285 090751733 +000000249 000972618 000964316 D|054515123 067898143 +000000249 000977393 000980805 D|075565547 085404571 +000000249 000980543 000993671 D|045385097 008695607 +000000250 000119886 000009825 D|088495966 093014852 +000000250 000132003 000030802 D|079344566 032047194 +000000250 000132311 000038158 D|023558707 051612047 +000000250 000137752 000053721 D|013634167 008462435 +000000250 000143261 000069763 D|013598552 049900710 +000000250 000165979 000071880 D|050997805 036622693 +000000250 000199455 000076668 D|058936197 048781091 +000000250 000287166 000077400 D|007168035 099363778 +000000250 000289069 000084040 D|020132220 008792137 +000000250 000320576 000094959 D|089758350 037338109 +000000250 000321473 000134332 D|067128511 044267898 +000000250 000321952 000143229 D|015405638 065127708 +000000250 000333392 000157420 D|035721247 001802918 +000000250 000349345 000199953 D|022692208 073718070 +000000250 000349815 000226558 D|097318491 058344841 +000000250 000350041 000234079 D|063046523 044946768 +000000250 000358343 000258009 D|014727100 090130156 +000000250 000372680 000266762 D|087470175 061084647 +000000250 000410281 000336000 D|028797209 098629155 +000000250 000420614 000354499 D|058298331 023179231 +000000250 000422147 000371828 D|073141763 089288132 +000000250 000429002 000387244 D|066890559 033268730 +000000250 000456648 000418290 D|081568238 066705659 +000000250 000461106 000424077 D|072940035 065445170 +000000250 000493050 000424401 D|037144775 041156871 +000000250 000508105 000431820 D|046140935 091503319 +000000250 000522670 000440273 D|048523892 023278565 +000000250 000524843 000502344 D|017932526 063692694 +000000250 000529148 000525658 D|045996441 042771776 +000000250 000598824 000558096 D|082780550 055748288 +000000250 000612743 000561749 D|025634205 033296263 +000000250 000617718 000590587 D|025851933 024795826 +000000250 000640111 000592180 D|095639771 082704395 +000000250 000643694 000614368 D|032955440 059900460 +000000250 000672287 000639175 D|040300228 065103859 +000000250 000679643 000689490 D|075261848 017076789 +000000250 000698216 000770014 D|004074998 050980726 +000000250 000713862 000770378 D|007102260 048175833 +000000250 000715635 000771456 D|063793525 085181952 +000000250 000755254 000771978 D|037465869 000830878 +000000250 000767638 000802964 D|007332853 059721606 +000000250 000794360 000804860 D|034665110 098463117 +000000250 000808098 000829266 D|007909425 065715076 +000000250 000828469 000830921 D|021498784 024604469 +000000250 000849928 000833223 D|093069162 084198395 +000000250 000881474 000848930 D|074615596 096318272 +000000250 000962306 000887411 D|052377900 059206927 +000000250 000993062 000902868 D|093186087 033856690 +000000250 000993808 000917294 D|094786799 096864939 +000000250 000996840 000976262 D|032602086 050627598 +000000251 000009381 000041182 D|099076493 089791333 +000000251 000034559 000084159 D|014498468 024979875 +000000251 000040536 000117467 D|099515300 086381901 +000000251 000042739 000145483 D|020490156 011774322 +000000251 000069353 000147207 D|042505508 008447683 +000000251 000091056 000158284 D|041176009 094227994 +000000251 000119001 000234671 D|005263213 005803373 +000000251 000207282 000238547 D|088538287 058241002 +000000251 000211324 000240839 D|011168937 016591636 +000000251 000220999 000257656 D|095579340 072880505 +000000251 000231690 000274915 D|060126546 030830396 +000000251 000270354 000280713 D|083057237 099381744 +000000251 000270494 000284836 D|053635761 064700287 +000000251 000296786 000305999 D|044636945 000319657 +000000251 000298811 000314880 D|050295731 062104626 +000000251 000302850 000343764 D|019847791 016552812 +000000251 000326793 000344042 D|040295889 040670310 +000000251 000329694 000406080 D|083974341 082376164 +000000251 000379190 000418084 D|090757030 063335413 +000000251 000379679 000438083 D|009948651 048167590 +000000251 000385385 000452940 D|094312905 047542303 +000000251 000408160 000470967 D|029428796 069012224 +000000251 000440418 000510279 D|054960196 052422048 +000000251 000482310 000515020 D|042998290 079024105 +000000251 000564200 000534965 D|087041335 087939203 +000000251 000568931 000548570 D|062382987 012563417 +000000251 000597546 000555425 D|008019796 081761064 +000000251 000626129 000569990 D|092932240 090554171 +000000251 000629079 000572563 D|006642137 018203349 +000000251 000666055 000624237 D|045142537 010210770 +000000251 000682581 000631431 D|026065856 088898739 +000000251 000684894 000635428 D|070996955 008467704 +000000251 000690200 000646522 D|008170693 025783005 +000000251 000726930 000702771 D|089572668 004938033 +000000251 000743433 000717163 D|017725144 045594601 +000000251 000791129 000724780 D|048178168 015220397 +000000251 000796022 000755978 D|061086005 093059640 +000000251 000801643 000785273 D|009128285 038666597 +000000251 000811086 000788479 D|008124699 046753577 +000000251 000863852 000790569 D|027983240 062843035 +000000251 000865800 000792277 D|069602368 063328947 +000000251 000905343 000812126 D|002681170 087466953 +000000251 000925971 000827506 D|019771101 023312674 +000000251 000934011 000904866 D|094846380 038235808 +000000251 000944818 000909669 D|047581809 048210784 +000000251 000961478 000924134 D|063338131 029682540 +000000251 000977053 000948374 D|048785909 087223449 +000000251 000986397 000950392 D|023301366 092875389 +000000251 000998064 000984186 D|085629573 008791888 +000000251 000998323 000993551 D|025001280 065657543 +000000252 000006246 000031835 D|021787272 041658843 +000000252 000008318 000125099 D|051373808 043573961 +000000252 000047942 000128389 D|077272748 035091184 +000000252 000056830 000129251 D|098920703 030530175 +000000252 000085071 000130678 D|039891969 086928575 +000000252 000090217 000132366 D|069633439 097031509 +000000252 000096775 000148179 D|012335802 025202000 +000000252 000101020 000174662 D|025967996 084910499 +000000252 000116170 000184108 D|057565868 047432933 +000000252 000118643 000243136 D|058453445 095681023 +000000252 000120284 000274736 D|002187453 000538389 +000000252 000132774 000319826 D|009776076 027129378 +000000252 000168346 000339371 D|049806125 033089823 +000000252 000178203 000391495 D|013405975 022703469 +000000252 000187878 000391697 D|089661645 050660598 +000000252 000201326 000401694 D|090817224 074834783 +000000252 000203112 000409837 D|092006288 074420459 +000000252 000208790 000430046 D|047368396 057676181 +000000252 000219974 000444840 D|081750955 060367555 +000000252 000229086 000459158 D|050859447 013647908 +000000252 000235673 000466206 D|097606162 065122195 +000000252 000265727 000472818 D|049256777 029458183 +000000252 000304139 000473258 D|058641164 098276453 +000000252 000321649 000485831 D|062532544 012468070 +000000252 000368634 000489395 D|019623806 059801326 +000000252 000387309 000492023 D|000662663 065905483 +000000252 000392297 000494595 D|083322879 079199970 +000000252 000417744 000523935 D|095186863 071666455 +000000252 000504386 000539045 D|082212929 010503106 +000000252 000616000 000556425 D|066627451 010509413 +000000252 000624935 000600672 D|001174747 066311084 +000000252 000678182 000630812 D|071226682 085397105 +000000252 000687275 000640696 D|084919694 032294852 +000000252 000698500 000677885 D|068330617 006875063 +000000252 000704624 000678877 D|069139166 091456202 +000000252 000715734 000696021 D|055190887 091315677 +000000252 000729031 000715080 D|044018419 043973054 +000000252 000755119 000736309 D|066290738 098434319 +000000252 000789818 000741446 D|071634224 025894604 +000000252 000793858 000743017 D|029926805 040873970 +000000252 000808094 000752501 D|064921464 007901405 +000000252 000865858 000782514 D|063466534 020222437 +000000252 000867054 000802373 D|031412777 048059042 +000000252 000872281 000819358 D|001081982 027082966 +000000252 000877321 000823529 D|065207539 058083494 +000000252 000893677 000853244 D|069033286 028238486 +000000252 000897204 000865799 D|005017983 007869084 +000000252 000899054 000952966 D|053594468 039569709 +000000252 000925049 000967381 D|096795240 001024229 +000000252 000982014 000981394 D|065848447 030440081 +000000253 000003921 000016919 D|004791952 041951679 +000000253 000021125 000030299 D|033142928 060253661 +000000253 000024757 000060430 D|025066996 039120564 +000000253 000035286 000065021 D|095705759 012881515 +000000253 000050324 000102382 D|069290341 089983114 +000000253 000051177 000102617 D|069138087 012983519 +000000253 000079652 000104198 D|008390142 037975930 +000000253 000119458 000105027 D|086962019 050650767 +000000253 000141067 000124936 D|052921000 000230740 +000000253 000157707 000126328 D|061699593 062134151 +000000253 000181784 000193142 D|018947599 093136257 +000000253 000184098 000199865 D|064337477 078432925 +000000253 000190477 000202683 D|058830352 053048318 +000000253 000202011 000222855 D|056321504 072830505 +000000253 000249818 000230698 D|044583492 062301219 +000000253 000269348 000265949 D|000095845 036108684 +000000253 000284846 000276153 D|019615260 002760906 +000000253 000285401 000297356 D|085718318 081907506 +000000253 000302418 000302688 D|083706312 010373854 +000000253 000304566 000313338 D|055211792 013972626 +000000253 000320653 000322888 D|096516646 036708494 +000000253 000322651 000342950 D|032609908 006633905 +000000253 000348627 000370280 D|006245116 097334342 +000000253 000381247 000392560 D|075007124 086290315 +000000253 000399346 000398040 D|036302953 093134054 +000000253 000425094 000442430 D|053724572 018680925 +000000253 000483782 000456139 D|024164672 083666913 +000000253 000533067 000488109 D|059933079 046275825 +000000253 000539519 000510012 D|022001926 058124535 +000000253 000566641 000517037 D|077949528 086214645 +000000253 000583578 000567129 D|081285212 050523877 +000000253 000585284 000604388 D|068675701 060187014 +000000253 000649928 000605802 D|019503169 010142457 +000000253 000662481 000625376 D|031469937 037117443 +000000253 000700837 000682978 D|053574490 027613909 +000000253 000707235 000689558 D|030367233 006380437 +000000253 000742249 000700266 D|062800817 010775332 +000000253 000760219 000746943 D|051078649 080313247 +000000253 000761798 000792304 D|046622138 033692751 +000000253 000771247 000808428 D|024846568 008981309 +000000253 000797600 000810699 D|069928812 056317059 +000000253 000811113 000847175 D|036394150 015649220 +000000253 000811553 000848012 D|081327653 056156697 +000000253 000842520 000850566 D|054054160 084514429 +000000253 000850361 000854811 D|081092874 074617196 +000000253 000870999 000857019 D|043902182 054735279 +000000253 000881603 000924970 D|011716924 035740602 +000000253 000896872 000971874 D|096720856 040222617 +000000253 000914908 000976396 D|008604432 042101541 +000000253 000924302 000985520 D|055303243 031542455 +000000254 000002034 000006103 D|016493680 015574212 +000000254 000017046 000011564 D|040060049 083968246 +000000254 000034461 000029030 D|054360868 012065310 +000000254 000065681 000030660 D|096035559 031589278 +000000254 000084784 000038953 D|086081102 044419654 +000000254 000105462 000054975 D|085299647 050293584 +000000254 000111743 000059318 D|064159832 091215631 +000000254 000117205 000089587 D|048708286 091150186 +000000254 000119036 000091500 D|001912454 086114841 +000000254 000131939 000091917 D|082845282 029550149 +000000254 000147294 000208603 D|089054630 090827772 +000000254 000156936 000252683 D|005912376 087625156 +000000254 000157334 000252828 D|058957312 087358919 +000000254 000176776 000265382 D|019777948 003801000 +000000254 000180527 000275889 D|022225470 073953743 +000000254 000184225 000301661 D|002760403 004477073 +000000254 000223171 000307558 D|006330493 053511529 +000000254 000225700 000330054 D|046022860 075797416 +000000254 000255103 000333095 D|033650129 068271360 +000000254 000283408 000350156 D|034367734 089851551 +000000254 000307455 000355338 D|003554708 069895386 +000000254 000378977 000364139 D|086691798 010120295 +000000254 000393022 000367599 D|071357652 000498600 +000000254 000444795 000413621 D|059815336 028378471 +000000254 000445004 000429831 D|058807399 041219068 +000000254 000448027 000430390 D|025150161 011081735 +000000254 000474552 000449660 D|005564549 007714517 +000000254 000509588 000466258 D|085389383 018670712 +000000254 000552829 000470701 D|083130329 045932155 +000000254 000567720 000473417 D|003241855 046139540 +000000254 000571177 000518881 D|053805626 065209884 +000000254 000610892 000519942 D|004572752 006171972 +000000254 000626726 000547203 D|086326280 048998110 +000000254 000639863 000563308 D|054216330 026497418 +000000254 000654571 000566546 D|008918758 083040715 +000000254 000668810 000578196 D|090866872 027860329 +000000254 000686749 000652561 D|057718444 007912891 +000000254 000687971 000743188 D|013241388 038191327 +000000254 000713883 000745297 D|088317408 039349551 +000000254 000755225 000779936 D|070825225 083962528 +000000254 000818825 000803332 D|014178448 072744512 +000000254 000876146 000811384 D|052892965 050412117 +000000254 000909474 000842362 D|092915023 037655995 +000000254 000914656 000862901 D|083151450 054731688 +000000254 000928865 000919881 D|005317632 035496072 +000000254 000931554 000959457 D|045268191 095989587 +000000254 000935773 000970889 D|094699653 041219751 +000000254 000971125 000973605 D|074219698 007575447 +000000254 000974374 000974638 D|053804202 044257055 +000000254 000984392 000986240 D|006929683 043681228 +000000255 000036312 000046105 D|075667805 087192000 +000000255 000071937 000057073 D|080189348 090029654 +000000255 000072170 000059914 D|025283171 055132459 +000000255 000103721 000076796 D|068539140 089140785 +000000255 000113945 000080206 D|054246536 041506378 +000000255 000122825 000087737 D|062985693 060735757 +000000255 000126552 000100786 D|043106012 094970294 +000000255 000140122 000104595 D|062539182 048419751 +000000255 000147004 000106116 D|021496095 062135282 +000000255 000160726 000107731 D|052380191 067036868 +000000255 000170401 000126563 D|083507934 012610280 +000000255 000182934 000133896 D|028302474 010551929 +000000255 000235299 000176117 D|043386054 004977579 +000000255 000235756 000179961 D|010499967 072856971 +000000255 000266942 000193641 D|065209645 061224919 +000000255 000269662 000196499 D|060045303 005311642 +000000255 000281611 000197066 D|044584337 061721512 +000000255 000304035 000237303 D|047114813 023063678 +000000255 000306567 000238208 D|027085447 026084903 +000000255 000322250 000271666 D|072217408 027875650 +000000255 000385393 000272322 D|085164588 051299895 +000000255 000386929 000300644 D|033564727 049745187 +000000255 000388636 000323177 D|067136413 027953070 +000000255 000395592 000325221 D|083623232 048046173 +000000255 000412608 000333125 D|053595619 008788315 +000000255 000413824 000351488 D|087919310 007249701 +000000255 000478282 000356696 D|066458154 024441874 +000000255 000486882 000403708 D|041829045 072862773 +000000255 000512861 000420941 D|081207708 082943084 +000000255 000521323 000424003 D|095987539 014780156 +000000255 000546752 000435503 D|019132215 005640196 +000000255 000557652 000452301 D|072718369 013149606 +000000255 000569752 000456294 D|044828971 038969799 +000000255 000604186 000462194 D|060418057 011575163 +000000255 000701405 000465162 D|070031682 036846427 +000000255 000714800 000499266 D|039225427 026665268 +000000255 000715250 000509090 D|085871196 094818685 +000000255 000747184 000523383 D|030375650 057072627 +000000255 000757576 000525337 D|017374908 064420451 +000000255 000786980 000598357 D|097421016 073653984 +000000255 000869130 000618700 D|012974378 007737485 +000000255 000885083 000693706 D|016053915 009925970 +000000255 000906298 000774086 D|051602301 074418868 +000000255 000907214 000819964 D|088935512 029352125 +000000255 000916829 000826202 D|064840157 022024881 +000000255 000918385 000844123 D|015066264 041610544 +000000255 000945181 000905040 D|059694379 095215603 +000000255 000966635 000916661 D|042761424 010805092 +000000255 000972271 000927773 D|053014025 037665123 +000000255 000986078 000960224 D|036451410 072584318 +000000256 000000797 000003910 D|050202464 062666973 +000000256 000019922 000045545 D|030435317 023299945 +000000256 000048957 000067751 D|030624747 044874253 +000000256 000049779 000090248 D|095628746 097740921 +000000256 000067719 000090508 D|068397564 070022038 +000000256 000089812 000091736 D|085487282 071021692 +000000256 000116432 000092650 D|093990875 080778158 +000000256 000161818 000118383 D|068310162 073792329 +000000256 000166261 000166854 D|022759373 003977779 +000000256 000234893 000167575 D|001882926 037434618 +000000256 000246521 000207232 D|098101016 018038760 +000000256 000257791 000244925 D|066077777 028063394 +000000256 000297393 000247083 D|075811391 033485958 +000000256 000309582 000257697 D|062792131 031593526 +000000256 000326865 000272083 D|039059943 071270280 +000000256 000334198 000273207 D|046945343 038301366 +000000256 000364200 000289105 D|068614475 036323349 +000000256 000370649 000325023 D|001206808 005872209 +000000256 000382883 000333010 D|074090659 091150865 +000000256 000387506 000347609 D|051036842 064746297 +000000256 000431485 000360754 D|069479281 098826450 +000000256 000483581 000375288 D|035002782 018698235 +000000256 000504101 000385389 D|099353051 023397416 +000000256 000521658 000416110 D|084081313 094845492 +000000256 000567483 000434950 D|039378258 013055195 +000000256 000597029 000468907 D|003232550 011347322 +000000256 000605687 000601252 D|016018307 060488814 +000000256 000635640 000620347 D|003124675 014634715 +000000256 000640938 000634283 D|005017055 013100903 +000000256 000643988 000636860 D|023188349 087560890 +000000256 000658587 000644001 D|054337525 080976082 +000000256 000702271 000644617 D|073500070 075063109 +000000256 000707028 000653853 D|079349431 037514245 +000000256 000728634 000664307 D|029229374 068313458 +000000256 000735200 000674139 D|068337195 048930867 +000000256 000750744 000703358 D|004978251 026741668 +000000256 000773860 000713072 D|034642494 029737594 +000000256 000777138 000718261 D|088535770 066351835 +000000256 000805738 000737876 D|040442993 046150422 +000000256 000825962 000759340 D|050017758 086998311 +000000256 000830645 000777058 D|092678876 066612101 +000000256 000847608 000790822 D|084663645 051081039 +000000256 000867553 000797490 D|026855355 000924788 +000000256 000925156 000841247 D|045477033 095568844 +000000256 000931371 000885508 D|071423719 082917421 +000000256 000937846 000899905 D|015797428 078177914 +000000256 000961200 000934405 D|098650914 079529423 +000000256 000976541 000942195 D|009696464 046724519 +000000256 000979723 000978655 D|035340637 053497488 +000000256 000985351 000988291 D|003811404 098557214 +000000257 000011770 000011337 D|068914656 055112496 +000000257 000044645 000034200 D|069618416 003096296 +000000257 000056041 000037928 D|030187775 015068783 +000000257 000063872 000044609 D|005644053 003421476 +000000257 000080092 000068180 D|066133680 031369726 +000000257 000081126 000079194 D|075098090 044761390 +000000257 000081408 000086762 D|080907180 038913873 +000000257 000097687 000090253 D|099266483 066065716 +000000257 000098098 000100009 D|028291203 007117358 +000000257 000135916 000120386 D|067563642 038634299 +000000257 000160219 000137952 D|073757743 065243650 +000000257 000160972 000158818 D|049362232 033793696 +000000257 000172791 000176626 D|019967835 071140459 +000000257 000193261 000178788 D|031152392 008838521 +000000257 000193387 000194251 D|073818131 038597882 +000000257 000220731 000212780 D|095698783 085507833 +000000257 000224845 000238350 D|042384557 047007455 +000000257 000279961 000242571 D|022942951 032949057 +000000257 000287898 000369901 D|033686969 013569722 +000000257 000303740 000376283 D|041117175 043798880 +000000257 000348844 000388002 D|081557263 045902454 +000000257 000350364 000403716 D|074858745 083185946 +000000257 000356482 000426400 D|006039185 006280131 +000000257 000364763 000456377 D|031600749 087504349 +000000257 000389981 000463687 D|033446063 084216235 +000000257 000393425 000473283 D|038624259 040074066 +000000257 000400128 000493076 D|002298825 001326786 +000000257 000421033 000585371 D|040900566 045729536 +000000257 000447657 000608599 D|029970508 076105414 +000000257 000475503 000634320 D|041406813 090966296 +000000257 000496598 000649167 D|030880591 012593697 +000000257 000514770 000654772 D|068958507 029292628 +000000257 000520057 000657759 D|073471201 035742284 +000000257 000535332 000666616 D|032554655 072915777 +000000257 000601230 000672431 D|011436066 006016946 +000000257 000611292 000695686 D|040841567 062237122 +000000257 000630139 000704147 D|079987258 020970408 +000000257 000636169 000726968 D|088150205 076422134 +000000257 000657885 000791032 D|030974386 043273951 +000000257 000702990 000816129 D|061154640 020356855 +000000257 000786652 000828284 D|083899444 071642057 +000000257 000791070 000839999 D|086398257 038897231 +000000257 000842106 000885629 D|087999996 025300407 +000000257 000846361 000888789 D|048888986 053001538 +000000257 000856955 000898810 D|069237640 075419077 +000000257 000875066 000913627 D|085762480 097271821 +000000257 000907003 000921807 D|011574634 053860503 +000000257 000914659 000930139 D|058763862 050474866 +000000257 000937918 000932266 D|092157251 001502498 +000000257 000994960 000949495 D|057423596 012673803 +000000258 000015563 000017540 D|040421745 067652661 +000000258 000016794 000024640 D|090512857 019243500 +000000258 000037026 000032158 D|070747887 087083297 +000000258 000039927 000051173 D|053965205 094879437 +000000258 000048759 000060432 D|002019458 061031747 +000000258 000062095 000063555 D|071941812 068903252 +000000258 000111803 000065273 D|044844724 068707438 +000000258 000136635 000093211 D|020396891 020185838 +000000258 000178693 000124696 D|090463787 012211765 +000000258 000186524 000131215 D|093696269 044213350 +000000258 000216660 000131569 D|049097947 074655703 +000000258 000252430 000142155 D|022634159 011795287 +000000258 000258887 000152815 D|029836549 020393114 +000000258 000268214 000222323 D|052211640 058917549 +000000258 000334668 000223746 D|044931739 061737037 +000000258 000338840 000249087 D|070803488 012577110 +000000258 000356259 000249450 D|031758636 050755963 +000000258 000368192 000290333 D|084707478 006033631 +000000258 000369785 000305100 D|030383036 034774527 +000000258 000371579 000311502 D|079534526 060504404 +000000258 000394901 000322956 D|070244940 052074828 +000000258 000431230 000331778 D|022483771 009055458 +000000258 000448591 000346681 D|094515012 091939704 +000000258 000531926 000360018 D|083033339 027416936 +000000258 000563736 000373743 D|026110798 089849403 +000000258 000614807 000374462 D|001305878 010293596 +000000258 000617508 000399169 D|020203203 097871984 +000000258 000631744 000407801 D|030935619 017134186 +000000258 000653637 000438826 D|053014804 037517401 +000000258 000656610 000449397 D|072198750 049507946 +000000258 000686119 000497519 D|066232872 036314854 +000000258 000686384 000503032 D|048165154 050058275 +000000258 000704354 000542227 D|020362307 010114701 +000000258 000710351 000592955 D|082843258 085802362 +000000258 000744522 000613169 D|028329114 085235836 +000000258 000776154 000629398 D|013490772 087836518 +000000258 000781607 000653167 D|059364540 045417190 +000000258 000787263 000678251 D|047594202 077113928 +000000258 000788976 000709581 D|024332238 042500366 +000000258 000791216 000712792 D|076218676 093302476 +000000258 000810993 000726641 D|069245752 029048054 +000000258 000845932 000727490 D|032102244 051678403 +000000258 000849164 000764208 D|004922585 014584088 +000000258 000861716 000824096 D|059450710 090037306 +000000258 000882320 000868468 D|080500307 003014800 +000000258 000897530 000905028 D|007512264 015672920 +000000258 000925576 000931404 D|099702381 041250647 +000000258 000925764 000946708 D|061688504 072330504 +000000258 000954905 000995715 D|076533945 062315282 +000000258 000995840 000996458 D|008258803 048459908 +000000259 000014881 000055824 D|071330162 051759263 +000000259 000042764 000066720 D|028360373 057294716 +000000259 000063780 000093281 D|044672205 055870073 +000000259 000071369 000101283 D|031908187 027851882 +000000259 000072894 000113442 D|040499277 078646720 +000000259 000120653 000123481 D|089628664 006336890 +000000259 000152489 000134626 D|004327799 008157613 +000000259 000158398 000136942 D|076867224 053955681 +000000259 000217102 000145673 D|042454243 065468348 +000000259 000233907 000155283 D|032461767 030641520 +000000259 000262161 000183622 D|033202011 090805282 +000000259 000268509 000213014 D|090708130 066056029 +000000259 000314473 000224567 D|009653117 000803795 +000000259 000353812 000260962 D|026661891 097966696 +000000259 000388941 000261929 D|091778943 050217487 +000000259 000414138 000344280 D|034432748 066565522 +000000259 000436726 000350593 D|056058969 092349644 +000000259 000441058 000356862 D|051198304 082066490 +000000259 000445344 000359290 D|073972001 048239047 +000000259 000453162 000385366 D|005565841 000884887 +000000259 000456854 000388436 D|020945348 090313676 +000000259 000475219 000388998 D|016379954 080719848 +000000259 000488088 000403623 D|090226858 014331386 +000000259 000546075 000413305 D|042719606 026124102 +000000259 000562531 000415826 D|016509623 080586551 +000000259 000612792 000439246 D|021248115 032025134 +000000259 000624572 000440123 D|029162017 087524425 +000000259 000651366 000479841 D|091549000 096530102 +000000259 000665327 000489659 D|042147432 008906409 +000000259 000666775 000545106 D|079165302 087728728 +000000259 000667391 000553916 D|077405128 023379430 +000000259 000668984 000592152 D|013792266 029349826 +000000259 000679015 000595193 D|089657158 099886040 +000000259 000683054 000603744 D|018058466 068218034 +000000259 000690477 000632620 D|062081736 083899204 +000000259 000695534 000705983 D|064383262 030888489 +000000259 000702963 000743525 D|028083972 022539420 +000000259 000727011 000781307 D|056790053 040443779 +000000259 000737592 000802085 D|023533182 018608585 +000000259 000759859 000815792 D|004031834 043816910 +000000259 000795188 000823142 D|046306508 093194569 +000000259 000796954 000840570 D|063369528 062173885 +000000259 000801756 000872589 D|011866401 097115269 +000000259 000804077 000914416 D|013786194 092701403 +000000259 000870699 000933061 D|008675355 027632135 +000000259 000939003 000935840 D|086196679 012542838 +000000259 000946227 000942930 D|075970781 070578586 +000000259 000946727 000963514 D|049554407 081936237 +000000259 000962371 000983718 D|003495335 071915443 +000000259 000996419 000989746 D|034704757 064400977 +000000260 000004770 000012989 D|090434046 020352395 +000000260 000026011 000045354 D|053638040 035071992 +000000260 000081266 000062545 D|039642751 068822036 +000000260 000103341 000074256 D|052601335 060580065 +000000260 000112707 000077803 D|064155161 017978661 +000000260 000146833 000090977 D|048821842 024107898 +000000260 000161993 000097691 D|072829352 083877483 +000000260 000178666 000118383 D|049113706 030209536 +000000260 000188861 000172805 D|071021985 003397255 +000000260 000190512 000187737 D|093438457 087021498 +000000260 000200137 000205534 D|013746500 017432146 +000000260 000219556 000222750 D|063008312 094985397 +000000260 000222744 000265809 D|077439439 078766408 +000000260 000253655 000281709 D|042071428 092098832 +000000260 000278128 000287227 D|025026465 091738512 +000000260 000279193 000294073 D|048698979 049013334 +000000260 000298908 000296705 D|097523980 085396552 +000000260 000314252 000299374 D|028572882 034758146 +000000260 000323751 000300385 D|083355277 086248771 +000000260 000346939 000310150 D|019248463 090865197 +000000260 000365736 000334142 D|051424973 068845861 +000000260 000410382 000342564 D|026930705 003276079 +000000260 000411367 000364669 D|087974648 030936501 +000000260 000449597 000371617 D|082193932 058205260 +000000260 000470610 000383733 D|043796000 056432466 +000000260 000497672 000401320 D|018235758 093334533 +000000260 000505789 000414584 D|083220412 059707371 +000000260 000516113 000442264 D|023778855 002749825 +000000260 000604654 000478834 D|073160964 022471178 +000000260 000607681 000513381 D|064755154 034488834 +000000260 000646507 000515942 D|052875877 012439673 +000000260 000659342 000537341 D|060832254 072003521 +000000260 000672506 000567996 D|035986966 047115464 +000000260 000709479 000627436 D|047776046 053259063 +000000260 000737723 000647687 D|055822145 003302726 +000000260 000747531 000653199 D|009263679 052888894 +000000260 000773992 000677017 D|077423015 000372034 +000000260 000785997 000708223 D|076737795 057370895 +000000260 000799638 000709818 D|093141037 061202312 +000000260 000811228 000714625 D|019215114 026957462 +000000260 000812141 000727587 D|022054489 081136752 +000000260 000825051 000738543 D|008036213 063574245 +000000260 000853602 000773129 D|072343900 071812644 +000000260 000864901 000805722 D|033544893 044166262 +000000260 000899459 000828530 D|094702031 031410993 +000000260 000903716 000831560 D|005529928 098278093 +000000260 000925612 000851844 D|041871688 069873622 +000000260 000945618 000869717 D|032607100 085886965 +000000260 000947816 000960810 D|035540483 067474229 +000000260 000951194 000972287 D|077126772 017234300 +000000261 000026548 000006303 D|075254863 027423157 +000000261 000040249 000081454 D|023708164 066849306 +000000261 000060688 000106702 D|083142320 012548125 +000000261 000078667 000139647 D|040018299 071366862 +000000261 000107006 000149067 D|006298225 088231426 +000000261 000116629 000177026 D|041787499 070069240 +000000261 000171521 000186377 D|051545281 067830841 +000000261 000206347 000186992 D|027714310 006729572 +000000261 000219676 000188013 D|036241386 069427103 +000000261 000235098 000205431 D|055235209 065775692 +000000261 000244018 000222350 D|085154940 089415168 +000000261 000246082 000234009 D|057941924 066789262 +000000261 000250072 000250521 D|098954004 031325447 +000000261 000261252 000256894 D|031694850 025716063 +000000261 000294402 000274813 D|062098527 073551642 +000000261 000299267 000284899 D|016250784 058751820 +000000261 000311117 000293917 D|000813162 021089557 +000000261 000322586 000294021 D|004707519 049456891 +000000261 000327388 000324438 D|005122229 085929938 +000000261 000353794 000356868 D|057975255 010317340 +000000261 000419694 000383395 D|010200432 095055458 +000000261 000447623 000408861 D|009589430 085346629 +000000261 000480457 000429374 D|045219484 032789280 +000000261 000502594 000430664 D|041172904 010224223 +000000261 000517300 000460313 D|052341669 035891261 +000000261 000524146 000479379 D|089733137 026075211 +000000261 000526374 000519536 D|002699408 057010968 +000000261 000557930 000535401 D|075991101 064345089 +000000261 000580212 000566895 D|018248485 002052788 +000000261 000585999 000567381 D|034445532 079072151 +000000261 000626267 000599197 D|028904820 044991449 +000000261 000631533 000610793 D|095747592 062065813 +000000261 000657171 000615184 D|021126521 081181764 +000000261 000664989 000657677 D|060560095 004539997 +000000261 000671732 000663388 D|019623936 003039704 +000000261 000676421 000675045 D|045114881 070996162 +000000261 000705122 000722519 D|070133925 002676919 +000000261 000709796 000751042 D|096869334 019355686 +000000261 000738873 000792094 D|007004000 040745576 +000000261 000746044 000803642 D|075915556 013228462 +000000261 000754719 000818223 D|004964459 029689756 +000000261 000758106 000841424 D|028378440 065580515 +000000261 000825756 000859442 D|090514676 010939848 +000000261 000829700 000890598 D|057965604 011864607 +000000261 000871920 000894200 D|080038704 047702159 +000000261 000874084 000894668 D|089690474 024007227 +000000261 000898184 000970710 D|069798024 004135101 +000000261 000899972 000984807 D|039496264 085142135 +000000261 000913495 000992278 D|029087074 076440622 +000000261 000994943 000993398 D|008877654 045558661 +000000262 000015998 000001354 D|056234791 096811643 +000000262 000022057 000002056 D|032857017 018579122 +000000262 000043210 000020058 D|079852949 014858557 +000000262 000053535 000035366 D|041472846 084595734 +000000262 000102228 000038992 D|076736804 026362045 +000000262 000104802 000064088 D|030239800 023369318 +000000262 000160059 000102061 D|069529414 009419057 +000000262 000200847 000104636 D|080892245 020035135 +000000262 000203879 000120811 D|065872940 072617011 +000000262 000206863 000126951 D|002409073 097723264 +000000262 000230636 000132316 D|019277605 069925174 +000000262 000253471 000140242 D|046852400 099884731 +000000262 000264596 000141530 D|007852114 001537051 +000000262 000274318 000227543 D|028844492 054207732 +000000262 000307825 000243391 D|078860633 006600779 +000000262 000326125 000328615 D|062614735 095797435 +000000262 000342738 000332842 D|030957855 023848758 +000000262 000349173 000349464 D|043001702 079954072 +000000262 000355796 000362578 D|003715733 024236525 +000000262 000367341 000409025 D|014768922 074787455 +000000262 000368268 000416573 D|064297436 086886195 +000000262 000369234 000447556 D|067384358 065088772 +000000262 000385035 000490357 D|049320628 083802180 +000000262 000394361 000497863 D|078728775 018332215 +000000262 000401434 000515952 D|043944760 048526919 +000000262 000408347 000517488 D|091298361 081353953 +000000262 000408364 000549730 D|055272745 070735173 +000000262 000424078 000582945 D|050618165 097124090 +000000262 000436464 000586441 D|089978647 006746689 +000000262 000459918 000588777 D|027647346 085958517 +000000262 000493646 000605089 D|063351866 084990491 +000000262 000517826 000609493 D|033211521 097976884 +000000262 000565414 000621506 D|075773539 054788143 +000000262 000601627 000624544 D|027093125 050368957 +000000262 000634802 000647192 D|067110906 024871105 +000000262 000636861 000712443 D|077281671 030356100 +000000262 000656545 000720109 D|056843790 011778247 +000000262 000677685 000742532 D|069220820 055625989 +000000262 000694967 000746625 D|091164297 045624537 +000000262 000703904 000819330 D|043240333 093740307 +000000262 000734733 000825085 D|030766910 037937528 +000000262 000787908 000828927 D|087412050 072108089 +000000262 000811503 000836007 D|057712449 059492600 +000000262 000836593 000852659 D|035537940 082787774 +000000262 000847108 000882146 D|072650535 032291933 +000000262 000849990 000889077 D|053513137 085625130 +000000262 000868529 000906443 D|056538151 010250363 +000000262 000875709 000917459 D|078262413 030140893 +000000262 000883536 000975224 D|015219965 021675057 +000000262 000910158 000977348 D|051577200 066487139 +000000263 000060979 000014685 D|080793147 089020280 +000000263 000061374 000023672 D|085912283 013407004 +000000263 000102703 000024975 D|027215093 018515776 +000000263 000120084 000056472 D|021942564 027369371 +000000263 000146569 000067733 D|039706029 056621640 +000000263 000194650 000135543 D|092191977 027307647 +000000263 000200533 000142141 D|027660759 073532597 +000000263 000204015 000152389 D|037936454 026682158 +000000263 000204799 000183382 D|058625947 008275451 +000000263 000234693 000197815 D|097311018 000080490 +000000263 000244663 000221661 D|084491392 000901540 +000000263 000293107 000237738 D|084816322 025989032 +000000263 000293649 000259660 D|043892490 050992774 +000000263 000355167 000268475 D|028543798 041388202 +000000263 000357984 000279283 D|076254000 050028170 +000000263 000379051 000296675 D|003509364 075735509 +000000263 000385719 000302437 D|033353046 054897059 +000000263 000395859 000322242 D|095489532 006510235 +000000263 000429537 000337912 D|044106917 006378278 +000000263 000435500 000345261 D|006854821 049740641 +000000263 000439652 000361350 D|079855986 036411851 +000000263 000466079 000370317 D|053670001 048323042 +000000263 000469883 000385396 D|024987971 036583874 +000000263 000470827 000440295 D|022313435 018979949 +000000263 000475604 000443672 D|064986571 025490041 +000000263 000483968 000480537 D|017161642 075844103 +000000263 000494884 000526583 D|024004677 087797882 +000000263 000517827 000532316 D|071190152 052185664 +000000263 000545952 000536808 D|094102950 025448830 +000000263 000584019 000545069 D|027623349 056833285 +000000263 000593079 000576597 D|016397606 088500500 +000000263 000601963 000588842 D|083174190 077444325 +000000263 000613507 000603702 D|026111183 044836379 +000000263 000630828 000622574 D|097582656 022673831 +000000263 000632392 000635471 D|080494544 092898429 +000000263 000644098 000651804 D|014361559 054329379 +000000263 000689344 000655625 D|039172841 009667762 +000000263 000794640 000674444 D|086509064 092560630 +000000263 000798042 000682273 D|097841772 014361281 +000000263 000813870 000718260 D|086771568 017123362 +000000263 000858003 000741230 D|061759233 033034890 +000000263 000859950 000747419 D|045437451 095484926 +000000263 000860032 000757760 D|070338334 037938115 +000000263 000869751 000768611 D|020934058 022890447 +000000263 000872617 000774127 D|082264670 024410379 +000000263 000952350 000800591 D|088378213 047606521 +000000263 000953254 000807447 D|088732595 068793363 +000000263 000973506 000925994 D|032375347 055962978 +000000263 000981989 000955298 D|017487664 042660506 +000000263 000986307 000959634 D|004987904 033982758 +000000264 000006232 000018659 D|049447960 059060242 +000000264 000006418 000021285 D|023346916 013008009 +000000264 000037699 000093330 D|017215161 037117979 +000000264 000054427 000104288 D|050411550 002175342 +000000264 000069357 000110990 D|024512483 021506184 +000000264 000113925 000142428 D|016054069 017928186 +000000264 000120490 000159904 D|009183536 059140999 +000000264 000123271 000167775 D|068412685 035550542 +000000264 000143998 000233832 D|039162668 046274972 +000000264 000145570 000238810 D|090065542 070785918 +000000264 000153474 000264348 D|076637835 049178311 +000000264 000180143 000277802 D|071858075 053929868 +000000264 000181843 000278938 D|095121428 037035607 +000000264 000199281 000297102 D|094810927 064024921 +000000264 000243063 000332004 D|055617151 004654724 +000000264 000259910 000351401 D|027739000 051217873 +000000264 000265313 000374769 D|023517062 083311369 +000000264 000266572 000391547 D|015642928 033051003 +000000264 000269685 000402763 D|019309112 008208610 +000000264 000270519 000418257 D|025694029 039087319 +000000264 000285779 000421243 D|077967937 061845774 +000000264 000315742 000429115 D|044681183 095511750 +000000264 000324849 000506987 D|011622304 006238581 +000000264 000344248 000522906 D|003091378 018440030 +000000264 000361532 000528795 D|075286857 022819663 +000000264 000394145 000543602 D|062946673 026666047 +000000264 000432117 000557839 D|088034657 046166546 +000000264 000468683 000609071 D|024256304 039500706 +000000264 000475717 000611480 D|078776201 037709140 +000000264 000492419 000619111 D|074637629 060258686 +000000264 000515286 000628472 D|029887521 031048893 +000000264 000536225 000636185 D|058662780 079975785 +000000264 000584718 000639002 D|071473976 015789200 +000000264 000604145 000640238 D|018905623 095678616 +000000264 000642130 000657191 D|096783965 054044620 +000000264 000670822 000658973 D|035074774 046731562 +000000264 000705454 000687960 D|097227291 080832472 +000000264 000734204 000712119 D|060701962 061382924 +000000264 000737283 000795245 D|013760906 077681416 +000000264 000738746 000822132 D|028091158 098401473 +000000264 000786367 000872370 D|060695231 056900019 +000000264 000831405 000936992 D|025078800 089791764 +000000264 000857180 000945917 D|073563634 025766486 +000000264 000875390 000946040 D|026344773 083486493 +000000264 000888432 000953953 D|067841023 085496205 +000000264 000897724 000957108 D|034767037 072839911 +000000264 000913629 000961638 D|072713900 042386055 +000000264 000934706 000961755 D|005467431 036505840 +000000264 000935865 000963872 D|059369226 060427430 +000000264 000974069 000977155 D|062109911 036876859 +000000265 000001283 000003853 D|069575765 092003131 +000000265 000003920 000027804 D|065998188 028085549 +000000265 000018494 000059091 D|006371723 017457689 +000000265 000031587 000065852 D|049483962 060018931 +000000265 000067932 000108090 D|052751880 036617902 +000000265 000114868 000124706 D|002527404 007562088 +000000265 000148612 000134233 D|053633759 091128808 +000000265 000161575 000137465 D|083686201 093868410 +000000265 000164263 000148073 D|084088570 007794860 +000000265 000181111 000164006 D|066434393 011693318 +000000265 000205932 000174387 D|019734528 011853528 +000000265 000240781 000179364 D|058875723 014195993 +000000265 000272132 000184435 D|091276349 042344040 +000000265 000272929 000199151 D|096334038 011163309 +000000265 000394303 000222642 D|029279053 014721451 +000000265 000424968 000244450 D|010330838 010136129 +000000265 000463710 000264595 D|076231687 077213640 +000000265 000474734 000296243 D|020437117 011806823 +000000265 000482721 000304725 D|096250898 053911730 +000000265 000538520 000403302 D|080552181 036356906 +000000265 000553929 000505679 D|058869853 093072234 +000000265 000560985 000511390 D|000318823 086950373 +000000265 000566311 000543191 D|093114571 056946278 +000000265 000568400 000562284 D|013241261 030041283 +000000265 000608032 000582789 D|066863190 065642944 +000000265 000622828 000583807 D|097300146 038912724 +000000265 000624591 000628756 D|067370900 050854929 +000000265 000635997 000637425 D|003223489 050932354 +000000265 000643587 000637785 D|068736167 067434459 +000000265 000648380 000645785 D|006413440 073899930 +000000265 000653077 000652751 D|005638899 093427609 +000000265 000665887 000656701 D|019043360 026375702 +000000265 000730207 000659422 D|091749767 033022198 +000000265 000739170 000684275 D|048655038 027033707 +000000265 000741289 000741779 D|065432306 046659215 +000000265 000756483 000755028 D|047981404 037356653 +000000265 000778861 000769034 D|005294245 068975948 +000000265 000795281 000816670 D|040598324 056211555 +000000265 000797300 000817621 D|097975631 007039218 +000000265 000807403 000827565 D|049936739 094624123 +000000265 000812277 000874290 D|003860299 011594010 +000000265 000835855 000896982 D|099834949 089182777 +000000265 000840853 000900914 D|028381697 076316357 +000000265 000909024 000903350 D|095414901 088491580 +000000265 000913837 000903551 D|070021230 098026472 +000000265 000949646 000924773 D|008172129 075595999 +000000265 000976775 000966603 D|027224751 090058818 +000000265 000978354 000975606 D|074960681 058722574 +000000265 000987960 000985581 D|015263971 049926348 +000000265 000991886 000986715 D|016664203 070473708 +000000266 000076144 000008756 D|078963352 052791058 +000000266 000090244 000064168 D|098290511 031620320 +000000266 000094476 000082915 D|014683641 034428596 +000000266 000120996 000098771 D|077030839 062820174 +000000266 000143970 000101747 D|073217715 021419271 +000000266 000161911 000121032 D|095826514 070001018 +000000266 000168464 000145285 D|098506344 030326130 +000000266 000170301 000170960 D|027481681 050631576 +000000266 000177452 000189479 D|030369171 052166694 +000000266 000225078 000191052 D|074110836 006153172 +000000266 000268959 000194229 D|099140186 028319395 +000000266 000279544 000204433 D|074745702 030968381 +000000266 000299325 000204762 D|019970686 059174029 +000000266 000301528 000209203 D|066693703 051681868 +000000266 000313287 000211736 D|092293253 041567565 +000000266 000346767 000238648 D|092199113 088362874 +000000266 000348513 000273588 D|067266683 012291473 +000000266 000359887 000331780 D|057978605 093582313 +000000266 000391640 000368778 D|066390273 097099055 +000000266 000435292 000390002 D|068827045 005480864 +000000266 000444551 000471518 D|060698814 084918648 +000000266 000457127 000493903 D|003349335 078799864 +000000266 000533644 000496232 D|087937235 042946523 +000000266 000535579 000508210 D|007949184 020291605 +000000266 000549968 000539056 D|066473688 071832994 +000000266 000551102 000562363 D|003971676 026667470 +000000266 000569876 000599471 D|026638589 008313491 +000000266 000589279 000665760 D|092780791 049466886 +000000266 000594267 000667710 D|085985839 096012976 +000000266 000618812 000667929 D|023567928 082661118 +000000266 000646983 000725668 D|061249977 089349146 +000000266 000653098 000726548 D|013320592 080266507 +000000266 000654773 000737522 D|039559868 063896089 +000000266 000673879 000753172 D|030973251 033335652 +000000266 000685881 000754966 D|047309408 022605144 +000000266 000727782 000766827 D|018454934 060149689 +000000266 000769514 000781076 D|000452439 038416066 +000000266 000775010 000799152 D|012822917 051413674 +000000266 000801085 000800395 D|031413656 086424633 +000000266 000811106 000818156 D|067290182 078953328 +000000266 000814890 000880917 D|051603118 020892609 +000000266 000816501 000880979 D|032961077 016797890 +000000266 000836254 000898123 D|095128158 086985675 +000000266 000840134 000917728 D|073169019 068274209 +000000266 000867902 000923217 D|094325777 098263654 +000000266 000868801 000940273 D|058269004 095568830 +000000266 000898320 000945470 D|007266700 031848137 +000000266 000958063 000973726 D|052021870 056613868 +000000266 000962775 000980721 D|077124404 055918022 +000000266 000977082 000993728 D|007674226 051318771 +000000267 000002194 000023257 D|001200861 075355007 +000000267 000046497 000037698 D|037337464 057654455 +000000267 000065808 000055961 D|039048508 035706848 +000000267 000106503 000099923 D|005309569 071380354 +000000267 000124278 000108079 D|074662410 061376760 +000000267 000131225 000118984 D|018416706 019710179 +000000267 000154264 000141013 D|056703402 031088825 +000000267 000165670 000150915 D|026537225 087991803 +000000267 000169393 000184280 D|096115878 016808792 +000000267 000182210 000205852 D|090658829 009832726 +000000267 000210024 000227726 D|014989682 035236616 +000000267 000248930 000240899 D|056545351 079380638 +000000267 000252779 000281409 D|080256789 080811546 +000000267 000300319 000292193 D|082211248 002787119 +000000267 000318007 000300680 D|053067362 026135313 +000000267 000393357 000310596 D|072204150 038170053 +000000267 000420106 000311170 D|082227847 066880812 +000000267 000420682 000339668 D|065900921 015101412 +000000267 000426592 000360622 D|042813133 064289439 +000000267 000435642 000368073 D|023295274 055072095 +000000267 000443992 000420434 D|000551227 071159283 +000000267 000447168 000437931 D|015666319 098640944 +000000267 000449987 000440351 D|056554877 016838711 +000000267 000462950 000492229 D|041286453 069379044 +000000267 000471229 000506070 D|081604103 000382232 +000000267 000485130 000551290 D|070006301 050844113 +000000267 000485485 000568561 D|025834140 048207130 +000000267 000505670 000575897 D|037801576 011501219 +000000267 000506467 000593050 D|069466072 012892398 +000000267 000555719 000613248 D|076612340 072952967 +000000267 000557412 000614687 D|055372822 004312360 +000000267 000653623 000617276 D|012200090 001329276 +000000267 000657233 000642857 D|012311946 014908844 +000000267 000662742 000669127 D|088693780 077114880 +000000267 000664962 000677815 D|072689502 095600352 +000000267 000671677 000715537 D|091446896 013860212 +000000267 000707963 000716632 D|027739846 034187128 +000000267 000710388 000726631 D|075278778 070795088 +000000267 000772883 000762339 D|041066409 040354615 +000000267 000777578 000778860 D|054184971 012622998 +000000267 000799772 000794404 D|079655142 038248824 +000000267 000807621 000811375 D|040785357 013630339 +000000267 000851899 000830237 D|064076203 068824647 +000000267 000896484 000833211 D|013323952 088391888 +000000267 000899442 000834568 D|005052568 069000798 +000000267 000906560 000864506 D|014974350 054047120 +000000267 000907657 000904671 D|057171389 017305718 +000000267 000910002 000913705 D|055809588 059781240 +000000267 000951858 000986751 D|011791629 066269689 +000000267 000955069 000989941 D|022674291 004524303 +000000268 000093859 000014770 D|059144569 047070539 +000000268 000118266 000025726 D|045167147 098259661 +000000268 000168733 000035343 D|052539009 097274563 +000000268 000190687 000040536 D|097065201 044724075 +000000268 000198680 000079743 D|037872500 003701618 +000000268 000199934 000089016 D|030857809 036350683 +000000268 000226313 000089848 D|043333625 006833984 +000000268 000235310 000103846 D|048993968 078096206 +000000268 000247340 000131046 D|027497021 050502637 +000000268 000264432 000134630 D|014869973 083324946 +000000268 000267635 000214391 D|075972782 084950002 +000000268 000269333 000221510 D|077732668 066717338 +000000268 000272416 000237320 D|008342452 035939454 +000000268 000277315 000294031 D|038989181 047598843 +000000268 000307957 000318670 D|081786684 018046872 +000000268 000321347 000323237 D|044406398 044133970 +000000268 000347010 000360653 D|026540501 051358332 +000000268 000366423 000383826 D|081846405 007061166 +000000268 000478514 000387248 D|056752485 095490998 +000000268 000485254 000409234 D|099728566 090131458 +000000268 000510700 000421396 D|060492934 068469071 +000000268 000556488 000422586 D|089008496 016429971 +000000268 000643423 000444094 D|076297005 017561452 +000000268 000659614 000458866 D|006460651 088163675 +000000268 000666493 000462648 D|074630106 072823627 +000000268 000669825 000490733 D|065397211 064215945 +000000268 000699369 000507649 D|094300157 062166220 +000000268 000700750 000541657 D|095022995 000210875 +000000268 000712959 000558816 D|007692417 047127064 +000000268 000739039 000566062 D|076410387 099027851 +000000268 000748071 000572178 D|040293560 046709764 +000000268 000776649 000599514 D|085333488 074671826 +000000268 000776791 000613104 D|097213966 003356462 +000000268 000782331 000623448 D|004049470 000102780 +000000268 000816908 000638600 D|092869327 067188610 +000000268 000818809 000647513 D|099127094 081964202 +000000268 000841481 000657095 D|048186052 048711309 +000000268 000846602 000668283 D|083839735 050548419 +000000268 000856485 000670782 D|053996931 069083822 +000000268 000865899 000671717 D|015480011 097250761 +000000268 000867922 000705347 D|055331229 065563105 +000000268 000877296 000745435 D|020450267 018415348 +000000268 000884051 000755516 D|012945739 094151810 +000000268 000891416 000773690 D|049495970 041406589 +000000268 000899082 000782782 D|076101415 028039324 +000000268 000927363 000842456 D|083889992 075211519 +000000268 000932114 000946653 D|097652103 083986714 +000000268 000937127 000954588 D|062050682 000950781 +000000268 000970555 000960365 D|057786641 019124651 +000000268 000989247 000985891 D|052164048 035021289 +000000269 000026682 000016991 D|063356567 075802713 +000000269 000036703 000032533 D|061434203 003391896 +000000269 000054577 000045285 D|001852263 051850473 +000000269 000055657 000107470 D|091654750 042944990 +000000269 000056011 000161432 D|083252006 053783065 +000000269 000128613 000186790 D|074361324 076175137 +000000269 000130969 000189233 D|069212702 027190406 +000000269 000157652 000192370 D|070025640 046561804 +000000269 000162189 000196130 D|021313812 050829807 +000000269 000181621 000284674 D|059665148 057024171 +000000269 000218736 000297316 D|009290344 075972022 +000000269 000238257 000313595 D|064915131 010150416 +000000269 000252077 000329098 D|019582600 022803469 +000000269 000365870 000330314 D|059076066 038032921 +000000269 000392337 000335438 D|010520515 078722634 +000000269 000423763 000340807 D|014252266 065616658 +000000269 000433855 000348469 D|095999727 041776682 +000000269 000435617 000349318 D|072952289 015246415 +000000269 000447338 000367226 D|013308072 088402945 +000000269 000457967 000404763 D|070492863 069731494 +000000269 000462345 000410652 D|061603780 048067851 +000000269 000484274 000419288 D|072058795 066538713 +000000269 000503816 000432913 D|093064289 054456278 +000000269 000559880 000487407 D|078056399 021419800 +000000269 000567201 000496989 D|038659467 075081541 +000000269 000572677 000528934 D|040601617 024192649 +000000269 000573751 000542082 D|064679100 026541633 +000000269 000584881 000573111 D|015094949 037942210 +000000269 000604799 000584837 D|051114388 016689035 +000000269 000605822 000586708 D|014260811 046031690 +000000269 000618881 000603871 D|087570285 040744025 +000000269 000647506 000627005 D|005220400 059107506 +000000269 000658748 000665489 D|025771267 082717980 +000000269 000666781 000665501 D|089424218 023584799 +000000269 000728851 000675662 D|042442931 000295376 +000000269 000752632 000677875 D|019670869 061458571 +000000269 000766896 000693278 D|032245727 080980112 +000000269 000807326 000699142 D|061227614 094083205 +000000269 000825551 000733340 D|089363548 039052891 +000000269 000837297 000759320 D|005379287 075109970 +000000269 000856580 000763614 D|005209903 060804086 +000000269 000868134 000779074 D|072834963 094921058 +000000269 000872768 000798241 D|079655867 052342283 +000000269 000897258 000894445 D|025541512 052568388 +000000269 000919056 000914179 D|031387715 036081073 +000000269 000925400 000930723 D|006879529 067259454 +000000269 000930326 000941781 D|048818312 062510620 +000000269 000958512 000977347 D|064154100 094328743 +000000269 000976542 000989638 D|015883183 065394784 +000000269 000979505 000991117 D|098957873 030045029 +000000270 000023446 000001302 D|054843191 086683070 +000000270 000040044 000008775 D|088270431 086736804 +000000270 000138975 000010558 D|010059258 021008757 +000000270 000168190 000023722 D|095651081 098664870 +000000270 000188349 000026980 D|094639875 028164661 +000000270 000201590 000029470 D|080512108 037861864 +000000270 000244060 000030182 D|010270529 056593079 +000000270 000257816 000040820 D|041909713 094556907 +000000270 000275120 000105173 D|007112760 064915431 +000000270 000332860 000111229 D|090100201 083977410 +000000270 000339907 000116354 D|044993045 066833098 +000000270 000342347 000168725 D|019069341 099770208 +000000270 000363255 000192837 D|000785995 049499696 +000000270 000394368 000204140 D|047595575 025755348 +000000270 000414268 000231898 D|042940024 064892496 +000000270 000428328 000236340 D|076327790 087093393 +000000270 000437720 000237621 D|061046359 097278596 +000000270 000455952 000253267 D|025085780 090495801 +000000270 000487883 000253772 D|083361455 038286044 +000000270 000505619 000254573 D|074136914 013396495 +000000270 000516437 000259279 D|043237737 046518698 +000000270 000527000 000293248 D|017160026 074940384 +000000270 000530061 000297967 D|067558191 053570258 +000000270 000533756 000363153 D|009285657 014429000 +000000270 000574783 000370282 D|046841045 073080621 +000000270 000598577 000395759 D|054885607 023142934 +000000270 000628455 000400526 D|002284829 014061026 +000000270 000644442 000418225 D|049464507 028912367 +000000270 000673355 000421694 D|027439608 078753034 +000000270 000685339 000525473 D|031942555 066280903 +000000270 000707811 000527026 D|097793037 045638472 +000000270 000709591 000540874 D|094699062 025599360 +000000270 000731154 000554952 D|090996410 012772547 +000000270 000735110 000570872 D|034286285 057298169 +000000270 000735707 000630752 D|021430738 000858911 +000000270 000749806 000649653 D|084909937 054646580 +000000270 000771404 000651167 D|042859200 007289697 +000000270 000788818 000660496 D|036943880 019988124 +000000270 000812537 000678175 D|049160217 093191797 +000000270 000817041 000716743 D|032394220 038047768 +000000270 000865067 000754313 D|042152154 072369972 +000000270 000891765 000758008 D|024286711 023812179 +000000270 000901394 000773661 D|019110509 057714137 +000000270 000914580 000783275 D|090025340 083319554 +000000270 000930869 000802148 D|047959832 073947017 +000000270 000932177 000810346 D|019344290 056401333 +000000270 000944198 000826625 D|014196269 094511913 +000000270 000967925 000862895 D|077070880 041751653 +000000270 000973339 000983261 D|096306834 038177588 +000000270 000985471 000985014 D|095677856 049018942 +000000271 000016163 000010596 D|030945360 031088942 +000000271 000059471 000015016 D|047925918 021787254 +000000271 000066419 000052450 D|085098543 053377185 +000000271 000083002 000053800 D|072625089 058757606 +000000271 000101314 000098058 D|094881062 076541039 +000000271 000102847 000109992 D|066427510 092515759 +000000271 000117971 000149505 D|051301180 025459352 +000000271 000124741 000175785 D|031374948 089808612 +000000271 000140901 000176730 D|075962400 029403570 +000000271 000148069 000183193 D|049879797 001189200 +000000271 000160637 000196455 D|011342813 061613372 +000000271 000203018 000253130 D|099253906 086697132 +000000271 000206560 000256556 D|009159762 069953353 +000000271 000214020 000267927 D|061108029 068732700 +000000271 000214986 000280648 D|085549497 015512820 +000000271 000244420 000285577 D|052847411 031320437 +000000271 000248833 000294077 D|090498399 075850877 +000000271 000255643 000354509 D|086743611 041050470 +000000271 000291526 000423314 D|054322714 000369268 +000000271 000298304 000424756 D|003425226 045749221 +000000271 000303403 000434255 D|040277337 025363204 +000000271 000356172 000434832 D|094215071 066442679 +000000271 000372309 000450022 D|044383668 087523297 +000000271 000376654 000450912 D|013065500 040887555 +000000271 000449463 000497957 D|022205331 025136077 +000000271 000456046 000498030 D|049684534 092253548 +000000271 000489133 000506814 D|087601009 001345098 +000000271 000498703 000525405 D|036688295 020160638 +000000271 000592169 000528235 D|066432700 069867730 +000000271 000596474 000553483 D|083417151 017276455 +000000271 000597345 000582161 D|071648602 004057826 +000000271 000617823 000624403 D|006303532 021041529 +000000271 000618849 000629531 D|005463299 075489668 +000000271 000622032 000638874 D|062290436 057193085 +000000271 000633466 000644787 D|069980463 068796820 +000000271 000660016 000655230 D|012364055 056731386 +000000271 000679015 000703680 D|064113483 002583957 +000000271 000716640 000728489 D|017315601 044935752 +000000271 000785883 000732189 D|017778020 036279309 +000000271 000814283 000733376 D|065247164 024019153 +000000271 000827764 000736369 D|041227047 044174386 +000000271 000855044 000774465 D|079727093 047069156 +000000271 000877878 000792182 D|032196406 026402542 +000000271 000888530 000837625 D|088162533 099931518 +000000271 000904979 000838313 D|060254768 005606161 +000000271 000938492 000841336 D|048832889 024269501 +000000271 000949779 000918777 D|004732684 048517750 +000000271 000960501 000930131 D|088884232 020230279 +000000271 000963058 000941334 D|004017315 051874438 +000000271 000988497 000987837 D|002110772 084360525 +000000272 000011119 000007229 D|040568071 072075984 +000000272 000053012 000059242 D|084429223 087017462 +000000272 000066895 000068177 D|070170401 016561776 +000000272 000072226 000094292 D|030525941 027434627 +000000272 000090830 000109115 D|072464484 069587593 +000000272 000129197 000117437 D|018326315 086904834 +000000272 000134760 000174896 D|006242711 040740770 +000000272 000147688 000180298 D|009023335 057395286 +000000272 000156102 000194732 D|066866661 021788812 +000000272 000224640 000205384 D|088750098 000172329 +000000272 000237522 000206332 D|076362773 045407015 +000000272 000328481 000229657 D|030559171 096606553 +000000272 000347598 000232337 D|052200446 001381460 +000000272 000354021 000244655 D|097052782 013923307 +000000272 000356911 000247477 D|054442236 003798987 +000000272 000369714 000293003 D|009901345 077126274 +000000272 000380936 000319273 D|034317811 000265946 +000000272 000382481 000323415 D|085936876 049243678 +000000272 000388632 000344639 D|069209319 088272718 +000000272 000392819 000345049 D|006188282 086438109 +000000272 000422044 000368589 D|013408813 069218363 +000000272 000431036 000397122 D|008479155 001135016 +000000272 000433058 000426199 D|048134364 094122765 +000000272 000465770 000441576 D|036939753 021662025 +000000272 000490347 000466065 D|015846839 031828053 +000000272 000493949 000475572 D|020224537 097914842 +000000272 000504941 000478535 D|077554535 066313649 +000000272 000509172 000525453 D|093715977 062614911 +000000272 000548938 000607805 D|000978352 003150746 +000000272 000631253 000617409 D|020190931 045687661 +000000272 000702930 000633945 D|089827203 023185283 +000000272 000703671 000648629 D|017045784 064306077 +000000272 000710934 000656981 D|031140652 019024081 +000000272 000711868 000658480 D|097325643 018164432 +000000272 000760145 000666449 D|059784281 049610186 +000000272 000767337 000669728 D|027553755 001848737 +000000272 000782293 000695853 D|049782853 044417426 +000000272 000782931 000716550 D|056535321 017376354 +000000272 000807818 000720751 D|017138515 067023668 +000000272 000854738 000778715 D|042757366 046885281 +000000272 000897760 000803480 D|042057799 064678158 +000000272 000907428 000807417 D|046832241 095193267 +000000272 000907698 000816142 D|073567981 070199043 +000000272 000917476 000816522 D|005767985 083258328 +000000272 000930620 000841118 D|054307431 067845677 +000000272 000938158 000856866 D|039245127 009765746 +000000272 000962573 000914474 D|010065517 042799440 +000000272 000965189 000919989 D|028829101 030072075 +000000272 000969052 000972737 D|070817583 022502924 +000000272 000971760 000989579 D|094223248 080168067 +000000273 000015385 000016548 D|082234946 003369971 +000000273 000030425 000033099 D|061774807 021374622 +000000273 000041940 000038395 D|003018760 035384942 +000000273 000063363 000041943 D|039222516 083038655 +000000273 000085791 000096630 D|093361243 051745224 +000000273 000087235 000158506 D|051272543 091548529 +000000273 000096689 000159668 D|068826864 017232159 +000000273 000123483 000191641 D|044653916 048467784 +000000273 000126104 000211620 D|007429969 032790677 +000000273 000134360 000223760 D|066835481 093139566 +000000273 000197038 000234491 D|068005174 019835895 +000000273 000218291 000244244 D|078526651 091722279 +000000273 000232404 000254410 D|065183604 006009984 +000000273 000241489 000292476 D|014207865 082408493 +000000273 000266195 000292827 D|059794246 031173374 +000000273 000325066 000297060 D|097889492 081649017 +000000273 000343878 000305493 D|039636844 047253215 +000000273 000370273 000320793 D|073662832 091844261 +000000273 000375713 000373647 D|064650648 090494105 +000000273 000394971 000389319 D|077643618 050232880 +000000273 000438541 000391220 D|027604084 052679942 +000000273 000454286 000421183 D|065099473 050409813 +000000273 000468467 000428716 D|073855762 091242406 +000000273 000484901 000432344 D|088585335 004511395 +000000273 000531621 000441085 D|021207681 004713501 +000000273 000619601 000450980 D|023645845 017838150 +000000273 000684148 000491004 D|042361263 021863636 +000000273 000692552 000500773 D|011577274 099352688 +000000273 000697298 000513415 D|066886983 044152148 +000000273 000699320 000591213 D|040760143 033992791 +000000273 000707765 000623887 D|075295446 023835672 +000000273 000743115 000666585 D|098585075 046637782 +000000273 000801569 000683233 D|007623071 081050745 +000000273 000813299 000692534 D|077584819 035759866 +000000273 000818261 000703475 D|072497851 054007424 +000000273 000826208 000707654 D|057112163 083418875 +000000273 000837130 000711343 D|042956123 032681575 +000000273 000843644 000725323 D|041906497 057228261 +000000273 000846421 000750060 D|094998767 044096827 +000000273 000857419 000761954 D|074664125 029628219 +000000273 000879143 000765792 D|094270434 017717376 +000000273 000895697 000796916 D|023049284 064286454 +000000273 000897823 000878387 D|024209981 038220541 +000000273 000914051 000908463 D|061472368 053219453 +000000273 000929703 000911437 D|077229774 092952804 +000000273 000950180 000913872 D|083010371 063255637 +000000273 000964687 000931886 D|020371192 095788521 +000000273 000970641 000938427 D|061734160 095315362 +000000273 000973821 000958508 D|028756345 059307529 +000000273 000980170 000981033 D|012173559 004075066 +000000274 000021874 000021611 D|013829428 034949055 +000000274 000029804 000029440 D|078670385 027659405 +000000274 000067229 000046564 D|039013087 045316391 +000000274 000081823 000049106 D|067742901 006525550 +000000274 000115904 000079983 D|001539802 058413138 +000000274 000153650 000086995 D|050842874 004948417 +000000274 000163826 000116015 D|088671118 063183029 +000000274 000180587 000125445 D|046684166 045897537 +000000274 000187559 000127907 D|035134013 003285711 +000000274 000191456 000142251 D|083177526 087352436 +000000274 000192798 000177742 D|004235822 064140989 +000000274 000198030 000196032 D|045790166 033257150 +000000274 000220172 000205457 D|096528069 046691030 +000000274 000239026 000207474 D|055107729 065644363 +000000274 000275667 000250904 D|081751311 083830492 +000000274 000290628 000260382 D|063291466 059209677 +000000274 000301355 000326899 D|061015296 090716434 +000000274 000376201 000348016 D|079353783 058293640 +000000274 000376465 000362391 D|070097838 002665988 +000000274 000415359 000368615 D|083281975 095982484 +000000274 000454610 000383478 D|033364065 029946446 +000000274 000476506 000396788 D|062695519 078855535 +000000274 000518279 000405412 D|057141102 015925927 +000000274 000576440 000423095 D|003247881 010713056 +000000274 000579009 000429730 D|049216307 056045947 +000000274 000608727 000435815 D|042250415 021101605 +000000274 000618434 000538326 D|045984406 040018734 +000000274 000676562 000543922 D|059746050 069529391 +000000274 000694723 000547494 D|030194905 080621859 +000000274 000696915 000568280 D|082262204 085890394 +000000274 000721426 000588800 D|005108814 029942582 +000000274 000727234 000598610 D|098137829 021026520 +000000274 000727334 000600125 D|049081022 040896250 +000000274 000733233 000639095 D|062200786 080460900 +000000274 000737506 000639625 D|000504483 087989720 +000000274 000827906 000649256 D|064378828 076046484 +000000274 000828211 000651553 D|004977004 071238057 +000000274 000841066 000674289 D|064214864 044338165 +000000274 000849181 000700499 D|048641937 087977147 +000000274 000853336 000713244 D|009415477 013148327 +000000274 000859712 000767831 D|070387699 034001264 +000000274 000864059 000814440 D|026478400 023511362 +000000274 000877438 000857282 D|046352711 060201018 +000000274 000880352 000860747 D|081447320 007952267 +000000274 000894512 000870783 D|062055956 082686502 +000000274 000896702 000926449 D|082886323 026959355 +000000274 000922111 000936699 D|094648630 041158592 +000000274 000926184 000939176 D|076969769 094674245 +000000274 000939533 000956772 D|004658817 001409246 +000000274 000994824 000965449 D|018868816 016310617 +000000275 000005082 000073348 D|097022143 034760026 +000000275 000022990 000084307 D|044813251 012292682 +000000275 000023251 000089395 D|008355011 022303300 +000000275 000041440 000096861 D|084488229 036932737 +000000275 000072526 000105081 D|005469003 055473156 +000000275 000136503 000110701 D|099537539 072350220 +000000275 000152452 000116945 D|038287368 086702400 +000000275 000156647 000133409 D|099694345 081003724 +000000275 000181690 000157064 D|042930779 044352958 +000000275 000185923 000165448 D|073053399 051588812 +000000275 000194094 000200058 D|097376791 012610763 +000000275 000206532 000211409 D|084516784 084467551 +000000275 000209344 000237457 D|066448342 053792158 +000000275 000277614 000253440 D|052007738 084260915 +000000275 000283659 000296591 D|045302111 062624580 +000000275 000285743 000307478 D|023997499 089339899 +000000275 000293211 000330990 D|016978544 032233111 +000000275 000307639 000358683 D|027748692 087040375 +000000275 000311370 000371314 D|024618162 011874108 +000000275 000343118 000398535 D|014193426 024586709 +000000275 000365820 000413268 D|080116044 049215861 +000000275 000374875 000429328 D|029251252 056141991 +000000275 000429828 000436292 D|000113895 006195754 +000000275 000445724 000459689 D|093257068 034898197 +000000275 000479143 000489685 D|084344229 029236048 +000000275 000488404 000535125 D|052998902 057643711 +000000275 000489095 000537215 D|073599992 090802865 +000000275 000503444 000575164 D|035061124 002642142 +000000275 000536642 000581771 D|089086669 081626018 +000000275 000552089 000597184 D|018174586 086998407 +000000275 000613563 000608347 D|074001100 019372658 +000000275 000629357 000611332 D|077298422 048243186 +000000275 000682062 000661485 D|022308319 008965200 +000000275 000689500 000676867 D|047038279 047540482 +000000275 000700503 000690603 D|077182268 060629978 +000000275 000746592 000692677 D|077717833 074266007 +000000275 000791335 000718547 D|062134432 021912609 +000000275 000825841 000720184 D|007836020 011434278 +000000275 000826936 000726721 D|008619852 090446608 +000000275 000829638 000763364 D|051508085 032676962 +000000275 000842302 000783725 D|034675491 022974122 +000000275 000845492 000820172 D|035231747 085492380 +000000275 000887481 000821604 D|094134802 093133879 +000000275 000905164 000848310 D|050369923 011646835 +000000275 000910485 000852175 D|058419045 079066413 +000000275 000917341 000858850 D|019864595 099256609 +000000275 000918439 000936422 D|095678719 083819654 +000000275 000940214 000978690 D|089981598 086414643 +000000275 000940913 000981021 D|007834065 045751307 +000000275 000979403 000990710 D|043064221 050008488 +000000276 000017066 000012056 D|030851133 035099552 +000000276 000026926 000013958 D|015270861 093656932 +000000276 000036444 000017788 D|079033090 079007512 +000000276 000058748 000039288 D|087603783 090245287 +000000276 000066264 000078933 D|011990055 099183604 +000000276 000103101 000116581 D|025012383 017221828 +000000276 000116505 000124314 D|039739766 013297836 +000000276 000155208 000132852 D|032840989 075631826 +000000276 000157592 000199049 D|068222756 062720012 +000000276 000161358 000202219 D|034628835 099221548 +000000276 000173897 000241621 D|008421049 031498340 +000000276 000195172 000297265 D|063343463 018705843 +000000276 000239889 000319284 D|015340797 019861278 +000000276 000245876 000349516 D|069385004 037533605 +000000276 000254807 000355647 D|035129496 056509306 +000000276 000303087 000356165 D|051594028 087560250 +000000276 000341473 000360312 D|017331233 042525260 +000000276 000377436 000381684 D|069652956 003223721 +000000276 000386400 000479530 D|008879846 023065468 +000000276 000440621 000497958 D|060991085 036385934 +000000276 000443363 000535751 D|073607655 003412307 +000000276 000449191 000545657 D|062358497 079777814 +000000276 000468507 000558694 D|060412391 032523384 +000000276 000488938 000582840 D|033285047 007464041 +000000276 000518637 000602925 D|047933530 060946730 +000000276 000533532 000628585 D|014406947 068522693 +000000276 000571656 000634797 D|013576842 061827607 +000000276 000594210 000661249 D|032046267 057752562 +000000276 000610393 000701220 D|063452735 089414129 +000000276 000619502 000718136 D|088985077 099659403 +000000276 000633285 000740749 D|095034524 013903667 +000000276 000646086 000761173 D|076662484 090938772 +000000276 000672396 000765920 D|000708058 025584818 +000000276 000734084 000769916 D|054642989 047805048 +000000276 000778197 000775026 D|098857125 036947961 +000000276 000810460 000786345 D|008310405 079459632 +000000276 000845097 000818447 D|046564497 044275804 +000000276 000859947 000821026 D|090562268 052427537 +000000276 000862237 000830540 D|074782789 090383112 +000000276 000871587 000832872 D|094565510 047839883 +000000276 000872149 000842206 D|088424149 019944017 +000000276 000879093 000844256 D|049517111 021947921 +000000276 000887158 000898523 D|023280705 064135074 +000000276 000891899 000914912 D|076688124 026595577 +000000276 000907067 000917508 D|091396361 090038084 +000000276 000920700 000952760 D|069432079 002010617 +000000276 000928379 000958360 D|072271987 008115978 +000000276 000932107 000973537 D|053095733 045526582 +000000276 000942990 000982274 D|046272558 095195788 +000000276 000970969 000989675 D|072693715 039824889 +000000277 000052186 000006746 D|085436773 019276914 +000000277 000062831 000007478 D|096901805 077198272 +000000277 000072638 000008583 D|005835690 022060769 +000000277 000100870 000013413 D|053701691 089792671 +000000277 000113450 000018791 D|033623696 082156277 +000000277 000144158 000035771 D|068068321 083306271 +000000277 000180552 000063584 D|052445716 056616506 +000000277 000187178 000084778 D|073099877 019358179 +000000277 000187782 000105973 D|058028397 088205911 +000000277 000188283 000142250 D|077199399 025438638 +000000277 000212582 000160021 D|051530996 094150633 +000000277 000222665 000167350 D|090435798 073422954 +000000277 000232123 000231885 D|046696450 079899240 +000000277 000250343 000248022 D|014954736 044336134 +000000277 000258697 000282679 D|033974997 053673554 +000000277 000259294 000293642 D|097576528 011445740 +000000277 000271913 000310343 D|088000600 079010468 +000000277 000286599 000401202 D|023008036 007791985 +000000277 000330328 000437722 D|073869345 040319630 +000000277 000345154 000448714 D|045464358 022795729 +000000277 000366427 000452640 D|019322849 037096769 +000000277 000369158 000458940 D|048271880 004330551 +000000277 000418574 000459860 D|045944558 021941629 +000000277 000438416 000464550 D|078098971 018742318 +000000277 000447892 000466958 D|009866067 024516172 +000000277 000452044 000474401 D|024625698 040879090 +000000277 000501929 000485197 D|021717401 074953851 +000000277 000503652 000499112 D|039095452 099638028 +000000277 000505557 000511232 D|042127799 066466353 +000000277 000592217 000540006 D|062622988 049428971 +000000277 000612971 000580456 D|092823257 012333217 +000000277 000651174 000588242 D|005801673 089542395 +000000277 000664747 000612404 D|030603133 081617143 +000000277 000712326 000615882 D|060315617 036413122 +000000277 000729319 000638514 D|049645316 071448326 +000000277 000730002 000657891 D|067346399 033388321 +000000277 000781519 000700254 D|072416891 099587645 +000000277 000790826 000707533 D|000454932 088507059 +000000277 000793172 000716820 D|007516941 074968200 +000000277 000821167 000717464 D|058122376 057612709 +000000277 000842454 000719490 D|009762649 021676815 +000000277 000855276 000721846 D|029921023 079119646 +000000277 000895931 000743173 D|079559026 071696894 +000000277 000898622 000834744 D|029251250 091095062 +000000277 000900619 000838328 D|054654384 035630242 +000000277 000913384 000851466 D|085321078 059714142 +000000277 000913544 000852478 D|052939642 080013884 +000000277 000920434 000852873 D|053813090 066279783 +000000277 000928010 000933568 D|090292274 060679262 +000000277 000992778 000953298 D|007786566 094645062 +000000278 000027248 000005076 D|047378686 032810707 +000000278 000060506 000033570 D|035459838 075204218 +000000278 000071850 000091926 D|048074511 080419801 +000000278 000088071 000097425 D|038149438 007177702 +000000278 000089026 000126591 D|001038648 008700083 +000000278 000129528 000129305 D|041116893 050215410 +000000278 000138695 000184833 D|060633497 004891527 +000000278 000142702 000218685 D|095603988 031619648 +000000278 000186357 000232341 D|035721722 068439738 +000000278 000220357 000249797 D|098728321 063642155 +000000278 000226516 000269886 D|083393836 033807452 +000000278 000238934 000270707 D|035652530 075985598 +000000278 000242080 000328384 D|070356131 051676705 +000000278 000255560 000329811 D|082319982 092979001 +000000278 000282464 000342122 D|055759411 010102177 +000000278 000331094 000355471 D|013012331 054843021 +000000278 000341656 000359268 D|068316356 070401525 +000000278 000383852 000373051 D|081961768 011911110 +000000278 000410046 000400458 D|045877928 054397141 +000000278 000416440 000409556 D|098189764 091205120 +000000278 000427025 000414981 D|049392225 076884556 +000000278 000429789 000462782 D|070853029 075446688 +000000278 000430495 000477484 D|044242241 061420971 +000000278 000488909 000499603 D|065493294 066884681 +000000278 000548343 000509439 D|027196691 051273509 +000000278 000571754 000511634 D|031593342 051156215 +000000278 000603904 000527511 D|078615295 073481125 +000000278 000605089 000543589 D|026317506 019507949 +000000278 000608364 000625722 D|009198860 036029982 +000000278 000648018 000641606 D|038463428 080106344 +000000278 000658046 000644234 D|020402343 045232386 +000000278 000669652 000663265 D|098791934 068021327 +000000278 000683620 000702552 D|076877342 006844607 +000000278 000689230 000711297 D|014190176 040723493 +000000278 000706425 000724735 D|092437725 058024387 +000000278 000728523 000725788 D|092320593 037456121 +000000278 000733923 000775270 D|059500335 019353679 +000000278 000734902 000787011 D|066608680 022912220 +000000278 000738277 000791035 D|008211937 099389548 +000000278 000752807 000797924 D|088538877 000426529 +000000278 000755059 000814206 D|023257357 056166696 +000000278 000783137 000840729 D|039146971 037846449 +000000278 000809836 000846770 D|020964559 057499572 +000000278 000812082 000847218 D|070959839 093702138 +000000278 000842780 000849273 D|009513233 041676905 +000000278 000847352 000873423 D|010223521 004997380 +000000278 000962851 000901132 D|068853381 092848561 +000000278 000987526 000942353 D|086680875 039564961 +000000278 000990590 000948451 D|011636670 038362531 +000000278 000997470 000984302 D|056102245 097513648 +000000279 000022982 000019932 D|058575745 006439888 +000000279 000034463 000037896 D|036933217 059195508 +000000279 000040809 000058918 D|001839265 073579514 +000000279 000082448 000082893 D|022438731 001701588 +000000279 000102365 000084115 D|084856780 025421585 +000000279 000102733 000101595 D|087666413 027968792 +000000279 000120109 000110416 D|035148038 027509206 +000000279 000177476 000170554 D|099897378 058498126 +000000279 000196903 000239524 D|033209635 045544379 +000000279 000198796 000245283 D|023573829 082609132 +000000279 000199385 000250337 D|057445773 053417329 +000000279 000200639 000299641 D|043145728 097388619 +000000279 000200751 000305827 D|037989782 088732991 +000000279 000207744 000343779 D|012546695 091530961 +000000279 000219055 000358813 D|015444228 076293360 +000000279 000237486 000360728 D|019411903 040141472 +000000279 000238503 000398671 D|054547150 045512406 +000000279 000238972 000403030 D|025781395 068956160 +000000279 000242702 000403899 D|086194740 060785116 +000000279 000253236 000408453 D|052509460 019098873 +000000279 000266513 000413854 D|017216001 080102518 +000000279 000270205 000440577 D|041034485 018386806 +000000279 000271872 000457975 D|065317242 016814814 +000000279 000317475 000465021 D|058334298 038190184 +000000279 000329064 000473413 D|015364883 082609812 +000000279 000347401 000497097 D|088564493 053018945 +000000279 000352226 000497968 D|060113012 032364138 +000000279 000398440 000524344 D|059004027 082787455 +000000279 000401115 000543315 D|026560321 008115754 +000000279 000450450 000549325 D|007182945 047350291 +000000279 000451095 000582139 D|094368573 029557270 +000000279 000488599 000637537 D|038300482 042037142 +000000279 000491578 000642021 D|076918068 097531930 +000000279 000507526 000666094 D|098498229 083577347 +000000279 000522646 000671614 D|095109464 067526411 +000000279 000554646 000672437 D|014382864 078332034 +000000279 000577411 000706323 D|035487549 039164845 +000000279 000595092 000744161 D|019302442 017536986 +000000279 000648004 000766029 D|003144442 027968462 +000000279 000751836 000807537 D|051080812 059558746 +000000279 000783203 000810856 D|059337026 039960844 +000000279 000815554 000811313 D|040667790 027426972 +000000279 000873818 000820867 D|032712050 037405276 +000000279 000894655 000865631 D|032949844 015029870 +000000279 000903001 000870485 D|071588275 050018011 +000000279 000934881 000881285 D|068392877 039487107 +000000279 000968803 000906746 D|098281471 007163772 +000000279 000971743 000972617 D|007477912 096902444 +000000279 000985501 000976566 D|009441019 005508816 +000000279 000999256 000982998 D|099138694 014566227 +000000280 000000345 000014320 D|012909785 004946891 +000000280 000018506 000022215 D|091057810 047960071 +000000280 000024103 000033561 D|048250061 077025958 +000000280 000104675 000082166 D|071931764 024060864 +000000280 000106943 000115305 D|087129881 024899071 +000000280 000126222 000124895 D|033569119 048875213 +000000280 000151223 000135379 D|035900558 028998003 +000000280 000166780 000179770 D|046117085 017755460 +000000280 000170150 000181136 D|098702931 089586887 +000000280 000197641 000202595 D|005412740 020886251 +000000280 000234595 000214314 D|061921187 059904442 +000000280 000263517 000241406 D|099189803 042628504 +000000280 000278963 000357594 D|038112832 058028729 +000000280 000314289 000404493 D|091418019 042976264 +000000280 000341019 000424919 D|038950409 088354391 +000000280 000367034 000430750 D|021092987 010087592 +000000280 000421247 000458249 D|067710906 041146570 +000000280 000436386 000476880 D|014175607 028634832 +000000280 000446054 000478681 D|048069720 082849335 +000000280 000473663 000492758 D|094875020 005083222 +000000280 000491097 000492760 D|053339815 069127821 +000000280 000521373 000520329 D|047033132 000823826 +000000280 000527848 000553807 D|000165850 004812384 +000000280 000528888 000572737 D|083835181 013977069 +000000280 000532431 000573960 D|056476531 044135719 +000000280 000551790 000601528 D|040178890 006354163 +000000280 000566167 000624569 D|098219838 064676731 +000000280 000570817 000634239 D|062077162 005969913 +000000280 000594854 000661633 D|046552925 018755049 +000000280 000600821 000662298 D|005025891 055031929 +000000280 000614782 000683409 D|068700582 035507460 +000000280 000631950 000687116 D|027465637 087573006 +000000280 000649111 000720006 D|006329527 075747100 +000000280 000649797 000727676 D|076379547 009708239 +000000280 000660968 000735562 D|056461552 016224542 +000000280 000672387 000739112 D|003998475 079879423 +000000280 000672703 000742113 D|013198145 059442794 +000000280 000674954 000753756 D|075792063 050482501 +000000280 000688463 000808860 D|010200724 035789232 +000000280 000731494 000822489 D|074823115 029965575 +000000280 000749771 000872967 D|064116366 045911089 +000000280 000780019 000895713 D|068621572 042819350 +000000280 000798881 000910071 D|011187361 024164956 +000000280 000879444 000941507 D|089125546 021582890 +000000280 000930434 000953498 D|037160633 081892274 +000000280 000962269 000964719 D|085895630 015687154 +000000280 000962429 000968298 D|012798938 094636657 +000000280 000970805 000974677 D|082002346 020477289 +000000280 000979400 000976353 D|098106135 017997721 +000000280 000979670 000996890 D|026261699 088120065 +000000281 000007240 000104587 D|037800807 089439736 +000000281 000007811 000119036 D|011277089 043383987 +000000281 000016975 000122689 D|035201242 028981626 +000000281 000074561 000127022 D|023755497 093866841 +000000281 000074917 000139749 D|080231655 013257268 +000000281 000082118 000140638 D|023328409 085695856 +000000281 000099946 000178634 D|006082451 031253751 +000000281 000135850 000186058 D|043433154 027397094 +000000281 000160072 000238051 D|015358636 043780903 +000000281 000205340 000261548 D|088755561 046094992 +000000281 000212593 000285515 D|060330912 041622923 +000000281 000237687 000294196 D|040810503 083370037 +000000281 000243588 000296916 D|041424291 039262328 +000000281 000309029 000301375 D|082312655 066874217 +000000281 000324897 000349788 D|095055609 078460414 +000000281 000341371 000391583 D|034258480 007480137 +000000281 000355125 000395367 D|050506695 095319857 +000000281 000372016 000413970 D|028321073 081981954 +000000281 000381737 000431407 D|021216206 091247901 +000000281 000382418 000442221 D|028420757 098152710 +000000281 000403558 000524107 D|013208996 094174875 +000000281 000407923 000575290 D|032320972 035914132 +000000281 000431794 000587816 D|072718447 075977674 +000000281 000455726 000595413 D|070739619 092115194 +000000281 000482990 000596743 D|050969571 061675110 +000000281 000497568 000614534 D|003415758 099801625 +000000281 000510774 000619924 D|032426738 095595503 +000000281 000539392 000647439 D|047718956 012759699 +000000281 000546256 000667553 D|034514949 027800147 +000000281 000584585 000670524 D|060918616 024767375 +000000281 000590247 000683550 D|013520338 010511628 +000000281 000597398 000685025 D|032086400 020113086 +000000281 000603318 000685832 D|046889911 063031442 +000000281 000606784 000693995 D|090987415 036767176 +000000281 000618956 000703751 D|023970029 093173987 +000000281 000628808 000744782 D|052786058 054757069 +000000281 000673185 000767469 D|061201968 067744609 +000000281 000696441 000767683 D|082278434 024923948 +000000281 000715407 000781525 D|007843365 022545927 +000000281 000731855 000795906 D|059137930 083744459 +000000281 000809545 000802698 D|062647037 087926071 +000000281 000816525 000837727 D|015046827 025334621 +000000281 000876740 000868751 D|055025418 037447976 +000000281 000880407 000886981 D|041160719 002374620 +000000281 000900702 000924580 D|073945383 097345576 +000000281 000901222 000925086 D|039520914 064925295 +000000281 000916210 000935282 D|072372003 008170106 +000000281 000982007 000964398 D|063300877 091077443 +000000281 000988336 000970309 D|088035989 090916104 +000000281 000992337 000973539 D|011954350 087515686 +000000282 000005077 000020884 D|084025794 000706192 +000000282 000034604 000023754 D|050799280 070591232 +000000282 000059998 000076823 D|068740528 033406851 +000000282 000062778 000087316 D|004396893 009765521 +000000282 000092170 000092819 D|023719496 031838921 +000000282 000173936 000144368 D|043228531 012025339 +000000282 000181458 000177938 D|039983053 013853549 +000000282 000222488 000189857 D|046722734 091041826 +000000282 000226477 000199766 D|087069333 043963390 +000000282 000229890 000262665 D|026138745 086734936 +000000282 000275513 000266970 D|054768601 046500789 +000000282 000277729 000270686 D|018961213 020173223 +000000282 000281005 000297071 D|017815246 059600628 +000000282 000281035 000304345 D|067494638 097267499 +000000282 000295969 000307313 D|078190567 045705208 +000000282 000397227 000319889 D|064868170 083754153 +000000282 000403750 000338367 D|085274281 054658327 +000000282 000423899 000362540 D|060074724 089682417 +000000282 000429370 000376128 D|089037324 043564203 +000000282 000459512 000377377 D|085785056 033116487 +000000282 000474228 000394337 D|089276187 040804581 +000000282 000498319 000437652 D|055112368 068335797 +000000282 000499049 000451852 D|077295098 034538145 +000000282 000511210 000462778 D|088915686 022261660 +000000282 000548465 000505502 D|014100338 007804501 +000000282 000572223 000579455 D|073228813 097515970 +000000282 000584488 000588316 D|028993365 090012164 +000000282 000585104 000599229 D|081086493 060387951 +000000282 000644694 000607430 D|079416921 034097409 +000000282 000677164 000611243 D|019629599 086918594 +000000282 000758118 000632233 D|051714480 038788835 +000000282 000775714 000632403 D|054997909 020724081 +000000282 000786162 000664251 D|032782288 002312303 +000000282 000818685 000717793 D|090180973 066192576 +000000282 000833382 000789821 D|038667663 003373325 +000000282 000841674 000804967 D|064561129 052646392 +000000282 000852869 000849214 D|037861522 097853507 +000000282 000856442 000849729 D|041894350 040040213 +000000282 000863377 000861389 D|051646568 007913487 +000000282 000876350 000869366 D|050169372 066534900 +000000282 000876553 000883524 D|079858339 009605794 +000000282 000885975 000891465 D|002486656 093780511 +000000282 000898098 000892228 D|057153443 054130199 +000000282 000908292 000909286 D|025410073 061033364 +000000282 000920964 000925457 D|097482001 076325771 +000000282 000948936 000929624 D|017900342 048356933 +000000282 000970451 000930783 D|049251742 002158158 +000000282 000977832 000962260 D|037781738 032997737 +000000282 000992013 000981173 D|039141039 073973451 +000000282 000999018 000988038 D|017055328 023920118 +000000283 000016927 000008169 D|023464309 087271471 +000000283 000023995 000037082 D|052903000 094394920 +000000283 000027964 000117881 D|028216843 089888593 +000000283 000051110 000124339 D|081260685 043571666 +000000283 000067559 000143895 D|001870332 012613232 +000000283 000097927 000159855 D|076213303 068901337 +000000283 000179717 000174463 D|058173395 009436487 +000000283 000183505 000175812 D|081346973 041683904 +000000283 000230436 000185949 D|022055584 017386192 +000000283 000235167 000206466 D|054183145 018560602 +000000283 000256390 000211748 D|020797887 062320606 +000000283 000268569 000223162 D|076510837 076875071 +000000283 000270230 000228731 D|054191151 089874884 +000000283 000301101 000241296 D|089314945 066845588 +000000283 000307434 000251881 D|017963930 049784914 +000000283 000330915 000256183 D|041774862 051896402 +000000283 000346048 000274294 D|057250434 016341313 +000000283 000365672 000279667 D|070493666 056731388 +000000283 000368741 000285360 D|092939391 068518786 +000000283 000369392 000294549 D|094884430 066709889 +000000283 000372656 000331887 D|032618838 075049800 +000000283 000372878 000348571 D|070324126 069982113 +000000283 000387271 000381081 D|053811123 023421029 +000000283 000417940 000382141 D|002668067 016538190 +000000283 000422840 000396273 D|045487656 021593094 +000000283 000461090 000472705 D|038354527 013365841 +000000283 000496235 000474369 D|055857363 012893779 +000000283 000528730 000525854 D|056312620 065558903 +000000283 000536258 000559007 D|071949947 077413568 +000000283 000537358 000583262 D|057745910 043603086 +000000283 000600569 000606988 D|028063128 032807526 +000000283 000609917 000641338 D|004310547 062939545 +000000283 000624521 000703027 D|001765402 074141641 +000000283 000628695 000705634 D|092779919 092218476 +000000283 000655510 000730189 D|065943221 066379038 +000000283 000670838 000755164 D|009105263 088017421 +000000283 000717661 000755485 D|094164807 037528768 +000000283 000744242 000756367 D|038243820 011994630 +000000283 000781044 000762905 D|086877458 041455901 +000000283 000787606 000780644 D|062358482 018748328 +000000283 000792113 000788488 D|001428064 020451121 +000000283 000822948 000829833 D|023200931 051121528 +000000283 000829366 000833915 D|030754399 033380673 +000000283 000838053 000895403 D|095127056 077840204 +000000283 000853718 000907017 D|055206925 033890516 +000000283 000896033 000909233 D|032708982 039320951 +000000283 000898373 000921957 D|069898257 046528336 +000000283 000914881 000939599 D|059806699 081238239 +000000283 000943506 000948874 D|097137252 017879500 +000000283 000974068 000991878 D|070544168 054136386 +000000284 000025906 000004897 D|017364487 015293910 +000000284 000040969 000011868 D|043546627 000039361 +000000284 000047883 000014994 D|029141505 059479363 +000000284 000058716 000061905 D|057315047 047740230 +000000284 000088042 000063569 D|068359467 063281921 +000000284 000094725 000095049 D|048993599 034320099 +000000284 000120919 000103659 D|020693558 010097019 +000000284 000282862 000111668 D|049546345 048486284 +000000284 000330544 000129323 D|011788015 010579675 +000000284 000334199 000147629 D|004614115 062688940 +000000284 000351016 000171377 D|038251686 005750844 +000000284 000351221 000190466 D|099897490 068467539 +000000284 000362419 000258701 D|086810658 041082902 +000000284 000374992 000263513 D|005875854 015938418 +000000284 000393262 000288665 D|098089132 085823153 +000000284 000394747 000294721 D|067630414 085205230 +000000284 000415289 000303053 D|067908817 064313724 +000000284 000426496 000318494 D|030189154 095852386 +000000284 000448674 000319936 D|002557371 009296704 +000000284 000456414 000334030 D|060684926 051521234 +000000284 000457166 000337760 D|011377982 025960013 +000000284 000486444 000365313 D|028054634 041049410 +000000284 000573374 000369175 D|086277422 042862038 +000000284 000629677 000369619 D|077293665 046827373 +000000284 000683248 000386254 D|050467855 096964960 +000000284 000707791 000390297 D|010910929 054203284 +000000284 000713661 000412214 D|071449628 009129579 +000000284 000752462 000427506 D|014257910 088638480 +000000284 000755880 000458095 D|091378962 029545221 +000000284 000780404 000495022 D|011499958 020913892 +000000284 000782964 000501535 D|014180732 046172821 +000000284 000784649 000514328 D|066994289 022022458 +000000284 000791170 000543108 D|045215168 053065739 +000000284 000802970 000550950 D|015847624 059525988 +000000284 000811315 000559588 D|048236708 053605878 +000000284 000813455 000562133 D|074379883 060532705 +000000284 000821745 000618893 D|034618438 095320082 +000000284 000837569 000628689 D|005915308 082305533 +000000284 000863068 000636782 D|097348577 088495148 +000000284 000870715 000637482 D|025384424 021879702 +000000284 000883705 000720582 D|062269244 026027520 +000000284 000912181 000797106 D|029982736 007592494 +000000284 000914624 000896528 D|080061205 079674558 +000000284 000915770 000903678 D|014850185 092850813 +000000284 000949942 000942013 D|094904735 020120056 +000000284 000951998 000956784 D|090318783 061979919 +000000284 000957553 000966125 D|020553311 021447303 +000000284 000964353 000968906 D|069479079 091708529 +000000284 000989403 000987350 D|016981544 047477327 +000000284 000995912 000987405 D|094413186 003829906 +000000285 000000032 000011363 D|037006912 027817059 +000000285 000028908 000021350 D|079330405 021073539 +000000285 000029465 000032701 D|040274815 068588619 +000000285 000032101 000039852 D|030278816 092179377 +000000285 000046243 000069317 D|022400956 041380343 +000000285 000049490 000086124 D|084414290 048049086 +000000285 000083088 000109908 D|031559705 009025955 +000000285 000103310 000134411 D|059020376 050891493 +000000285 000128495 000143117 D|026991456 060310998 +000000285 000148119 000147513 D|096654630 076130641 +000000285 000170011 000162767 D|075729660 038688146 +000000285 000194212 000170450 D|018355366 038003440 +000000285 000266866 000197107 D|034953084 038683902 +000000285 000267078 000242135 D|079509315 025647170 +000000285 000271135 000243636 D|018123395 087898895 +000000285 000274628 000295314 D|072214174 086052412 +000000285 000276266 000296991 D|005262152 087791241 +000000285 000279939 000302634 D|003615860 088230896 +000000285 000293325 000325534 D|055675840 055437243 +000000285 000341461 000345256 D|015200138 030176725 +000000285 000344555 000378854 D|057698685 041082373 +000000285 000345360 000383725 D|033929276 062458351 +000000285 000362757 000392752 D|058899243 087536405 +000000285 000366505 000423307 D|095782804 085007128 +000000285 000423267 000446205 D|072624443 094194954 +000000285 000475313 000468891 D|060133947 007425218 +000000285 000506104 000481538 D|050023671 006924975 +000000285 000516983 000483740 D|088161222 039089049 +000000285 000528663 000488010 D|040875030 016960439 +000000285 000574511 000508066 D|068795315 099192427 +000000285 000575559 000526533 D|052975556 094017061 +000000285 000640272 000576724 D|005274336 043582048 +000000285 000649405 000589154 D|086150234 096819619 +000000285 000674398 000589418 D|039914028 036794238 +000000285 000683054 000592545 D|025799596 098920145 +000000285 000699288 000604866 D|045675355 087350863 +000000285 000741784 000629486 D|080947972 096650742 +000000285 000742420 000630753 D|081693661 019781060 +000000285 000766219 000678329 D|040972027 077143477 +000000285 000796867 000713447 D|041987300 012834478 +000000285 000816430 000717005 D|021148891 046431161 +000000285 000818300 000720926 D|010604870 024125744 +000000285 000825776 000749233 D|040665076 089754085 +000000285 000863675 000773867 D|086370001 046626529 +000000285 000878481 000833257 D|073152653 089929626 +000000285 000890996 000838768 D|060611239 088488356 +000000285 000891265 000838873 D|080209466 075961140 +000000285 000896143 000856684 D|061247130 023006107 +000000285 000909501 000864374 D|091630552 038566419 +000000285 000913316 000931436 D|098048183 064274224 +000000286 000049242 000076035 D|061033052 074530995 +000000286 000060027 000080462 D|092774407 037848898 +000000286 000065007 000134184 D|032861652 009959795 +000000286 000072399 000136842 D|011989605 096354431 +000000286 000093831 000152587 D|005749387 003792900 +000000286 000131910 000242747 D|026643643 032300647 +000000286 000134908 000271306 D|071055771 063158849 +000000286 000144561 000284325 D|060671511 048226364 +000000286 000150739 000298729 D|063589990 028853632 +000000286 000159484 000303765 D|085513691 074582631 +000000286 000168247 000304455 D|028425192 028370200 +000000286 000266212 000308887 D|080783601 011323417 +000000286 000279232 000322250 D|087766485 001332024 +000000286 000295087 000323864 D|073530116 088584835 +000000286 000296701 000354779 D|033556604 064815918 +000000286 000324693 000362175 D|008577287 028479830 +000000286 000355364 000381709 D|055788969 059206192 +000000286 000357257 000392964 D|038437412 048798071 +000000286 000362240 000402690 D|044977506 097632607 +000000286 000472238 000402994 D|064448651 094121761 +000000286 000475883 000412591 D|060115602 043403230 +000000286 000493633 000416122 D|003570506 086813010 +000000286 000539905 000421168 D|042249051 026342528 +000000286 000542900 000444632 D|015243748 018431355 +000000286 000550952 000471979 D|072827224 054033559 +000000286 000555995 000482461 D|001715034 025548555 +000000286 000561310 000505678 D|070032068 088832454 +000000286 000567845 000525984 D|041615973 067759878 +000000286 000578453 000543519 D|063162922 061642752 +000000286 000600356 000547131 D|086362507 093850839 +000000286 000610722 000571846 D|052812067 098820954 +000000286 000613050 000588602 D|074533424 003702555 +000000286 000641176 000613211 D|089387971 028222593 +000000286 000679149 000625823 D|084241529 013733573 +000000286 000722095 000639665 D|038059438 093693665 +000000286 000723953 000643511 D|052232165 002486811 +000000286 000748858 000664112 D|010670549 028236410 +000000286 000758113 000680868 D|005056494 062634472 +000000286 000769701 000681105 D|053433827 019963322 +000000286 000773785 000715613 D|095370770 004913428 +000000286 000780340 000736129 D|046197024 034382230 +000000286 000783097 000757593 D|030344684 030741572 +000000286 000795128 000771654 D|009890852 058767465 +000000286 000799418 000809897 D|091689983 045587454 +000000286 000812182 000818591 D|032683837 075253711 +000000286 000832524 000832420 D|036430951 067254375 +000000286 000872829 000863501 D|040024621 053589289 +000000286 000893405 000939158 D|076232584 003527117 +000000286 000924737 000975983 D|090326008 038129573 +000000286 000981579 000996788 D|039749386 018216022 +000000287 000018639 000008370 D|005305780 070283412 +000000287 000043286 000062663 D|002159044 043572843 +000000287 000045415 000105525 D|035486631 049296441 +000000287 000067170 000106697 D|022852453 021538610 +000000287 000067325 000120136 D|025428727 098480024 +000000287 000084611 000160982 D|072185852 025420641 +000000287 000124414 000177634 D|062279627 016637865 +000000287 000124900 000193969 D|061510290 076071097 +000000287 000135229 000202397 D|006732077 004212208 +000000287 000151820 000210051 D|078761596 070722480 +000000287 000175815 000233855 D|043501322 001510639 +000000287 000210774 000269408 D|049706662 008587208 +000000287 000234295 000305146 D|089426895 039307441 +000000287 000265285 000316350 D|076796372 079748060 +000000287 000271741 000340344 D|019761010 082279834 +000000287 000297558 000362786 D|095724530 087487023 +000000287 000318586 000371055 D|011174681 095122439 +000000287 000369420 000386072 D|092147389 070519482 +000000287 000370905 000423715 D|094545018 024719861 +000000287 000382193 000428872 D|079435992 013737859 +000000287 000388123 000442106 D|087431036 030235189 +000000287 000400219 000456114 D|009258200 065454881 +000000287 000469986 000479528 D|066595854 094926299 +000000287 000489656 000505777 D|022004796 036905798 +000000287 000491037 000517951 D|001391192 077451110 +000000287 000518375 000518565 D|053615942 073922906 +000000287 000561006 000525601 D|057608213 043320960 +000000287 000565391 000543043 D|075249248 089205048 +000000287 000584584 000547239 D|082855938 030724088 +000000287 000586092 000561511 D|055961331 038509799 +000000287 000595865 000576638 D|011408751 039795462 +000000287 000606180 000579341 D|034163476 048630917 +000000287 000624883 000582646 D|066201582 067384501 +000000287 000655781 000595781 D|012529436 073158559 +000000287 000687716 000606602 D|050263233 095660438 +000000287 000688753 000662687 D|046877857 000274116 +000000287 000709014 000681385 D|044981953 094019502 +000000287 000728984 000682177 D|058602263 016489821 +000000287 000739597 000685126 D|074950972 092895756 +000000287 000753842 000686604 D|061072175 092666146 +000000287 000771354 000693384 D|014319669 090552606 +000000287 000776601 000711786 D|092802657 032208016 +000000287 000784279 000739281 D|064288975 056473772 +000000287 000796667 000814493 D|029313708 094739985 +000000287 000826262 000815443 D|018417042 022613556 +000000287 000903339 000852184 D|044309515 081812827 +000000287 000931638 000906417 D|078216089 088290167 +000000287 000971191 000969540 D|082867226 094699495 +000000287 000985959 000982716 D|055973273 093616299 +000000287 000994713 000998258 D|057118995 029452159 +000000288 000014692 000022931 D|057975809 056110166 +000000288 000027261 000027789 D|062271049 049330764 +000000288 000038259 000059454 D|002016376 067709341 +000000288 000047357 000063996 D|048806771 071054267 +000000288 000054034 000115814 D|050517916 031574206 +000000288 000065343 000130078 D|019361476 098529001 +000000288 000079700 000143265 D|015563583 063678204 +000000288 000089325 000157669 D|062729096 056048095 +000000288 000092297 000186433 D|095606351 089550373 +000000288 000093851 000206225 D|055837571 036255239 +000000288 000098095 000209994 D|046797126 026178215 +000000288 000115589 000229153 D|078131839 077963918 +000000288 000158283 000236799 D|081728887 072428671 +000000288 000163048 000257352 D|081105101 053864107 +000000288 000181575 000269012 D|052710362 034083227 +000000288 000213982 000274249 D|075261228 009034465 +000000288 000218169 000282937 D|038703371 079402844 +000000288 000238602 000291376 D|004978216 079809082 +000000288 000254039 000301600 D|089143133 040956460 +000000288 000287911 000308475 D|015895632 000459644 +000000288 000300823 000333745 D|011578454 043442508 +000000288 000366296 000347385 D|065472420 036767311 +000000288 000391976 000352243 D|020155084 018455509 +000000288 000419776 000355734 D|099436914 002987053 +000000288 000420319 000362660 D|048706065 084064545 +000000288 000449149 000395902 D|044696469 042488227 +000000288 000459190 000483930 D|061141446 086162562 +000000288 000501539 000495662 D|072095477 023420761 +000000288 000509436 000528532 D|045724416 060023291 +000000288 000513088 000561924 D|001938150 002584298 +000000288 000587948 000572871 D|080063377 055137500 +000000288 000622331 000605086 D|097308830 064812175 +000000288 000642497 000605974 D|061968429 016034309 +000000288 000671434 000618842 D|077711551 095467940 +000000288 000679445 000661526 D|001910842 014693642 +000000288 000723271 000672962 D|000658449 001292408 +000000288 000732073 000695320 D|059704897 056332184 +000000288 000757120 000750086 D|030377967 074217300 +000000288 000779793 000752836 D|055562122 058962701 +000000288 000790620 000756182 D|068174398 098310094 +000000288 000793076 000768650 D|075598425 012451689 +000000288 000795602 000798470 D|078647820 021336440 +000000288 000798694 000824327 D|001088103 029168400 +000000288 000812173 000935022 D|076017780 068286267 +000000288 000829775 000949486 D|083077584 023248936 +000000288 000850733 000964239 D|097863562 093118647 +000000288 000916806 000972141 D|010995505 097570899 +000000288 000917517 000976355 D|007952941 083903062 +000000288 000937699 000980321 D|048089898 078831295 +000000288 000951502 000994137 D|079385392 059717087 +000000289 000071208 000005260 D|014727008 025552914 +000000289 000107681 000015058 D|055979988 012839990 +000000289 000126720 000015838 D|010275152 057639033 +000000289 000187900 000021450 D|085303627 048665211 +000000289 000235580 000031782 D|064100821 088801477 +000000289 000242500 000032564 D|016961428 098631683 +000000289 000272758 000061178 D|034064932 048346067 +000000289 000286971 000071220 D|084247741 089585026 +000000289 000290697 000072066 D|026403046 085468560 +000000289 000306761 000072863 D|032380583 037804905 +000000289 000323323 000091734 D|039492240 066873330 +000000289 000330677 000107042 D|084792631 053587632 +000000289 000355918 000124104 D|077693935 029568057 +000000289 000413410 000157551 D|020512409 004795222 +000000289 000416634 000158184 D|096438166 002203460 +000000289 000419432 000182671 D|050469219 047733176 +000000289 000439345 000189410 D|003425925 080271224 +000000289 000469339 000215110 D|024595869 045560350 +000000289 000477191 000217036 D|038455614 013630985 +000000289 000485636 000229942 D|036661801 088390972 +000000289 000509551 000241920 D|013361357 050334139 +000000289 000546456 000259020 D|011495926 093980845 +000000289 000591823 000297680 D|048945517 021250005 +000000289 000592781 000335664 D|066674026 036129280 +000000289 000616055 000355867 D|043376034 066028530 +000000289 000628366 000397933 D|086278088 016145177 +000000289 000667381 000436555 D|098187409 041089284 +000000289 000668301 000482808 D|000956460 024276690 +000000289 000684048 000495399 D|028663087 046791707 +000000289 000689908 000513056 D|008436106 076470903 +000000289 000705493 000560294 D|018016542 087647982 +000000289 000724730 000582312 D|098185565 052600985 +000000289 000759026 000589127 D|096572516 029401854 +000000289 000780275 000606184 D|066919300 027608521 +000000289 000788312 000616004 D|035313160 037770180 +000000289 000789452 000616487 D|064046969 072995588 +000000289 000795108 000628363 D|094312030 043139054 +000000289 000815757 000638345 D|004295304 067727315 +000000289 000861377 000664888 D|038967682 065226526 +000000289 000879906 000671237 D|019018353 034932626 +000000289 000890154 000703285 D|073174816 073385201 +000000289 000895372 000721118 D|086326932 088396531 +000000289 000905858 000822290 D|047151556 042818248 +000000289 000913759 000843422 D|038807334 092381819 +000000289 000932930 000883512 D|026376385 055341655 +000000289 000952941 000934066 D|018967443 040515238 +000000289 000975482 000936374 D|024312514 041294983 +000000289 000975650 000950854 D|020562824 021150176 +000000289 000995358 000979598 D|070716551 039911431 +000000289 000997762 000995053 D|034292835 015938883 +000000290 000036754 000011606 D|062175359 086186598 +000000290 000049804 000026056 D|053361481 081318541 +000000290 000060661 000048350 D|001849803 070519506 +000000290 000075462 000065368 D|032299302 049780193 +000000290 000106747 000084913 D|055520929 038386307 +000000290 000122884 000099565 D|026389325 007021962 +000000290 000144776 000104229 D|009338913 056805181 +000000290 000158319 000104487 D|058809438 001650726 +000000290 000180184 000131618 D|062998276 029801664 +000000290 000197698 000144372 D|041451945 021241839 +000000290 000199313 000195054 D|028413558 048443412 +000000290 000202520 000202856 D|074593407 023819079 +000000290 000223823 000250492 D|020618472 072126052 +000000290 000229581 000271867 D|023535409 053923732 +000000290 000229615 000285243 D|055907268 030809464 +000000290 000238935 000302460 D|046453317 018133619 +000000290 000263047 000307085 D|052217110 078189516 +000000290 000270647 000316519 D|075506005 096340784 +000000290 000286156 000318408 D|090150384 029704211 +000000290 000298176 000321221 D|007867418 012550119 +000000290 000321464 000321722 D|022550415 084486459 +000000290 000401465 000330214 D|030397320 080139518 +000000290 000468513 000342774 D|056064127 024909813 +000000290 000477832 000384151 D|077977037 045040187 +000000290 000501868 000390956 D|053463287 090975241 +000000290 000522163 000396282 D|099855746 091409647 +000000290 000534726 000407055 D|053607400 001870904 +000000290 000563768 000476042 D|084331125 053875833 +000000290 000565813 000484462 D|070843037 020716003 +000000290 000589105 000499491 D|026671448 011115952 +000000290 000604605 000514994 D|029450411 003723410 +000000290 000605268 000517184 D|078856275 056820216 +000000290 000608694 000546722 D|047234798 035346245 +000000290 000634280 000567641 D|007344104 004975038 +000000290 000649379 000612147 D|011954618 059982669 +000000290 000667755 000620847 D|050201979 062975230 +000000290 000677980 000676757 D|037368874 059873786 +000000290 000715511 000678454 D|053191691 019926628 +000000290 000733686 000715434 D|030789764 021084213 +000000290 000825656 000742191 D|056905664 035976767 +000000290 000853349 000803005 D|002008914 039309972 +000000290 000854824 000836932 D|069597451 075218363 +000000290 000865230 000854262 D|009592160 000882251 +000000290 000887764 000857601 D|040845212 099096643 +000000290 000908941 000885216 D|045870984 067890887 +000000290 000921846 000949658 D|007469597 029721846 +000000290 000925501 000958424 D|091137445 070456101 +000000290 000957792 000968182 D|057471952 097425613 +000000290 000958043 000980275 D|055293228 096239418 +000000290 000992803 000987142 D|025846459 074794060 +000000291 000066805 000000559 D|065829283 079870638 +000000291 000109224 000009234 D|001893348 032608312 +000000291 000112247 000010356 D|005856893 055796450 +000000291 000126522 000043643 D|052237798 025003822 +000000291 000130619 000057547 D|046633440 060245687 +000000291 000218020 000063885 D|063795754 050490936 +000000291 000222320 000065720 D|017993694 061033729 +000000291 000242361 000066508 D|035897363 040169867 +000000291 000249581 000075080 D|061045771 037157627 +000000291 000251631 000082427 D|050213947 036999273 +000000291 000255643 000091337 D|044611169 001711929 +000000291 000269814 000104150 D|026875942 024745013 +000000291 000271858 000123154 D|059702308 047916691 +000000291 000328444 000193621 D|018885691 005623691 +000000291 000343849 000195256 D|074967523 007204891 +000000291 000351056 000214160 D|045806278 007379199 +000000291 000393303 000254746 D|022542752 080914649 +000000291 000440434 000276084 D|049137666 045668479 +000000291 000452308 000289750 D|057384950 075004527 +000000291 000484830 000295301 D|056882788 032769836 +000000291 000490428 000300429 D|077592402 031161833 +000000291 000522668 000345903 D|095424170 026431713 +000000291 000527551 000408965 D|086732049 083523894 +000000291 000540479 000415641 D|098837442 092315649 +000000291 000544048 000421038 D|094708107 034626080 +000000291 000565978 000426443 D|085797411 072778268 +000000291 000569999 000431822 D|071617251 078404044 +000000291 000574579 000448317 D|075920731 092098416 +000000291 000580685 000463049 D|050249421 045195478 +000000291 000627923 000547043 D|000717666 005602193 +000000291 000639592 000549959 D|053605952 011606793 +000000291 000662060 000556696 D|003539046 063174705 +000000291 000676416 000607441 D|012946593 071761753 +000000291 000697099 000646692 D|087208919 090683626 +000000291 000751459 000659455 D|004444340 009114018 +000000291 000764128 000687683 D|028503999 046941553 +000000291 000771545 000722718 D|068825987 051712501 +000000291 000775192 000763676 D|074867320 088100259 +000000291 000778027 000791016 D|040078167 075795919 +000000291 000811815 000796458 D|016883009 097127794 +000000291 000812173 000799588 D|042637258 059959302 +000000291 000838580 000807810 D|008259606 056896253 +000000291 000845437 000827948 D|017874623 053904359 +000000291 000863992 000828582 D|020667267 023412911 +000000291 000920517 000881571 D|053173921 012018607 +000000291 000932383 000897573 D|074412784 010614561 +000000291 000950800 000911577 D|014871171 075984140 +000000291 000951580 000956142 D|024514618 025561492 +000000291 000987167 000969379 D|078435089 003397416 +000000291 000996111 000998813 D|027681375 096946633 +000000292 000048075 000014973 D|051679958 081359669 +000000292 000086240 000044608 D|053205060 084167544 +000000292 000100343 000079507 D|095324351 072240766 +000000292 000117210 000114272 D|040796508 040691580 +000000292 000147926 000125437 D|081916030 063035985 +000000292 000148405 000166725 D|033334249 036054244 +000000292 000185182 000167116 D|077025386 070542945 +000000292 000210635 000170957 D|022485106 044067875 +000000292 000225898 000181388 D|070029685 034270086 +000000292 000228923 000184968 D|091429095 004180116 +000000292 000239760 000189313 D|041302418 043444428 +000000292 000257274 000213001 D|083668505 025969873 +000000292 000276369 000224909 D|000536818 092944055 +000000292 000277345 000261172 D|093149093 055396788 +000000292 000281227 000267359 D|030119561 087964968 +000000292 000283897 000281684 D|002023666 067937875 +000000292 000299257 000285147 D|064398555 025380942 +000000292 000365273 000285307 D|059543300 014745108 +000000292 000380591 000312004 D|005676613 051810956 +000000292 000382968 000323200 D|071258992 086735180 +000000292 000386638 000329211 D|007432230 046506948 +000000292 000411713 000350686 D|039411315 006277361 +000000292 000422279 000359052 D|064034596 051368973 +000000292 000459022 000473621 D|004923505 058375768 +000000292 000487236 000489495 D|058755209 007782851 +000000292 000502746 000510778 D|013292880 036357146 +000000292 000528578 000531689 D|056443911 004042559 +000000292 000574985 000557513 D|094103449 017232392 +000000292 000580555 000584338 D|016784679 092150620 +000000292 000582655 000603636 D|097326421 047606378 +000000292 000596530 000618370 D|048967172 049100213 +000000292 000632450 000624126 D|005210091 050319226 +000000292 000655109 000651190 D|035649418 052108594 +000000292 000667270 000667299 D|009049539 093417570 +000000292 000681612 000669623 D|033693153 054541781 +000000292 000688166 000677191 D|050402882 066929750 +000000292 000718959 000680543 D|092874642 041885514 +000000292 000744912 000690292 D|058405537 064637845 +000000292 000751702 000746054 D|040604522 063626552 +000000292 000757060 000776273 D|019310314 073896924 +000000292 000801730 000776346 D|017897569 054796234 +000000292 000821824 000789207 D|043535447 010693089 +000000292 000827225 000809902 D|009549670 041232281 +000000292 000905945 000851777 D|093392329 081530304 +000000292 000914391 000905076 D|068092020 061504592 +000000292 000932399 000924449 D|098205473 004620441 +000000292 000933396 000971462 D|087029392 039257158 +000000292 000933932 000987403 D|092010689 078385786 +000000292 000984284 000994931 D|052810455 048554674 +000000292 000988525 000997553 D|044629914 088691833 +000000293 000023045 000008795 D|035172107 071153935 +000000293 000036266 000009757 D|000059346 053850837 +000000293 000043994 000046503 D|048272731 022465673 +000000293 000048385 000080364 D|063436564 047794275 +000000293 000079876 000082177 D|059774079 071100849 +000000293 000087322 000093178 D|078858344 018374402 +000000293 000106619 000114963 D|092644823 038570798 +000000293 000123391 000128889 D|064900677 082736346 +000000293 000131068 000154083 D|063402594 076775561 +000000293 000136881 000156381 D|089796124 093580834 +000000293 000142339 000173243 D|063589490 029726006 +000000293 000156899 000182092 D|048669634 056867325 +000000293 000168192 000226549 D|048321519 035209939 +000000293 000258943 000227961 D|028853490 029921573 +000000293 000259365 000256539 D|007552904 011894566 +000000293 000297891 000310111 D|021837238 059117964 +000000293 000314564 000310960 D|042412853 096871179 +000000293 000315813 000349071 D|046781951 084824645 +000000293 000360796 000378969 D|057293904 076911295 +000000293 000374922 000378985 D|024836145 070280325 +000000293 000384411 000386077 D|080261522 089712468 +000000293 000411924 000391483 D|021741510 045347635 +000000293 000458594 000400588 D|087292853 054434007 +000000293 000459698 000405666 D|000233860 065614847 +000000293 000473414 000407667 D|055529101 090006588 +000000293 000481219 000455563 D|053970438 092494874 +000000293 000485982 000469392 D|074232238 025871448 +000000293 000494800 000484109 D|018078574 032143536 +000000293 000516290 000506714 D|058223539 082141434 +000000293 000517662 000528860 D|046238638 060688368 +000000293 000536742 000564227 D|014524539 054050659 +000000293 000548591 000576606 D|050516658 087162954 +000000293 000580280 000580159 D|082706739 032679759 +000000293 000587287 000645139 D|020804238 046433222 +000000293 000642536 000668750 D|082575200 053106702 +000000293 000703848 000676965 D|061014389 025934250 +000000293 000728877 000692453 D|063991709 020695928 +000000293 000731369 000713105 D|044616860 083599128 +000000293 000732968 000781726 D|002839770 026212711 +000000293 000779773 000806038 D|051628442 093829469 +000000293 000782272 000809575 D|080228019 042280984 +000000293 000825530 000842575 D|057069150 072303862 +000000293 000868210 000843010 D|093973426 069749102 +000000293 000885929 000846173 D|013016404 007209840 +000000293 000888518 000876965 D|041137865 020677680 +000000293 000910660 000950915 D|043361259 013621875 +000000293 000920670 000964286 D|068972598 017918078 +000000293 000922586 000973265 D|005823246 010303985 +000000293 000951385 000984602 D|023865049 044690939 +000000293 000984557 000989229 D|023225405 048261238 +000000294 000031055 000059068 D|005651935 068786270 +000000294 000070131 000067640 D|001246285 039272993 +000000294 000123015 000118086 D|099809115 001668070 +000000294 000136774 000122559 D|093211000 032751562 +000000294 000141335 000157159 D|044631147 047386845 +000000294 000142185 000159169 D|074418893 070846468 +000000294 000152920 000168265 D|091397115 070503164 +000000294 000161584 000218436 D|003078616 058473409 +000000294 000180873 000234552 D|086250863 097214220 +000000294 000187743 000261045 D|058041640 017866363 +000000294 000220203 000283717 D|000216367 028419252 +000000294 000228359 000294496 D|063773210 086069190 +000000294 000254980 000386347 D|049144250 018805563 +000000294 000256088 000401606 D|013176723 087966601 +000000294 000266744 000401958 D|015828880 076633033 +000000294 000310685 000404153 D|046654091 058800259 +000000294 000323305 000427057 D|053182851 080230766 +000000294 000332590 000434552 D|017395278 055445485 +000000294 000334436 000438279 D|071427990 014221994 +000000294 000368208 000450397 D|031833087 072172880 +000000294 000373190 000481347 D|038062748 022518547 +000000294 000382746 000489123 D|042604640 098964806 +000000294 000390466 000505661 D|038782244 060173543 +000000294 000390728 000512708 D|084506781 044281467 +000000294 000448722 000527880 D|024887817 014703983 +000000294 000462608 000544405 D|076254625 082831701 +000000294 000463365 000568640 D|075876773 035578870 +000000294 000475570 000574124 D|064832671 014827044 +000000294 000536370 000584033 D|016390913 072354923 +000000294 000563043 000593302 D|074860595 025923563 +000000294 000567320 000646031 D|015199958 044599060 +000000294 000570598 000662680 D|098627151 083735752 +000000294 000574516 000696468 D|095671652 075837874 +000000294 000580991 000709247 D|004203207 046882537 +000000294 000606620 000710171 D|028426483 051398264 +000000294 000680714 000718203 D|015569248 094500696 +000000294 000690376 000732278 D|040546136 030094059 +000000294 000698078 000743692 D|040324774 032327062 +000000294 000711006 000757360 D|056511016 074835509 +000000294 000712282 000759015 D|043703848 099140762 +000000294 000754037 000778110 D|002325289 074167039 +000000294 000832398 000816004 D|046449441 031859275 +000000294 000850178 000816665 D|094411699 021994249 +000000294 000873700 000828159 D|013405373 040500532 +000000294 000893543 000897892 D|097991250 002642060 +000000294 000909324 000905433 D|041678449 054360150 +000000294 000965859 000918401 D|046538952 009157544 +000000294 000977850 000937325 D|075477127 073007852 +000000294 000984274 000960869 D|074427184 004429927 +000000294 000990884 000992545 D|058317211 024595952 +000000295 000022415 000010178 D|025215280 082594836 +000000295 000049202 000011769 D|044166356 074222020 +000000295 000051063 000018587 D|001364360 032434989 +000000295 000073376 000059610 D|054283728 008505238 +000000295 000074844 000084756 D|038662052 088064815 +000000295 000081173 000101302 D|032963781 042952715 +000000295 000126271 000113070 D|030199892 070076081 +000000295 000195269 000144232 D|039990573 040804363 +000000295 000223054 000198868 D|044503345 061911171 +000000295 000247726 000201328 D|015991043 018000500 +000000295 000283699 000204084 D|053545999 090097996 +000000295 000298886 000205465 D|013964127 024639214 +000000295 000299476 000206801 D|041490311 007018372 +000000295 000305908 000240527 D|090972547 031076462 +000000295 000329073 000266721 D|091388575 059395281 +000000295 000332041 000286510 D|067509941 092359810 +000000295 000364982 000308665 D|007836939 029373467 +000000295 000368276 000342875 D|096859837 015481088 +000000295 000385342 000355115 D|097197895 084037080 +000000295 000388447 000386000 D|096897483 031189991 +000000295 000390426 000390218 D|068253062 086205797 +000000295 000390454 000397821 D|014125623 018657112 +000000295 000431090 000400202 D|027315410 065259215 +000000295 000452277 000400971 D|029297538 088814464 +000000295 000468286 000410580 D|078844221 039541077 +000000295 000503974 000450470 D|021857906 039037143 +000000295 000531173 000465693 D|024735214 011683418 +000000295 000582008 000482168 D|044837846 031947150 +000000295 000644699 000500567 D|003760045 050171127 +000000295 000653600 000513796 D|014410576 062860887 +000000295 000662012 000552779 D|092148951 061510336 +000000295 000682963 000576160 D|014536852 075620533 +000000295 000706287 000582435 D|005711746 037587382 +000000295 000730839 000585293 D|052364249 085297214 +000000295 000742890 000587216 D|045112994 035873872 +000000295 000759224 000630204 D|087451618 037678229 +000000295 000771371 000639973 D|045263013 064182128 +000000295 000774642 000736310 D|088034189 039128020 +000000295 000776349 000758310 D|046340517 096695104 +000000295 000806977 000762846 D|002132078 082872583 +000000295 000823363 000771545 D|039785568 098981292 +000000295 000857821 000781376 D|001468080 069757775 +000000295 000865117 000782650 D|092270908 099845253 +000000295 000868156 000828386 D|066664302 072636519 +000000295 000872177 000924950 D|060038358 046403248 +000000295 000877519 000926363 D|006106689 011393312 +000000295 000893193 000928126 D|053292277 021391845 +000000295 000902655 000940843 D|035629711 053936858 +000000295 000983452 000985968 D|040909944 033744886 +000000295 000996249 000992574 D|000235121 069681232 +000000296 000038865 000027455 D|018028367 012093283 +000000296 000075859 000029875 D|069504755 095591704 +000000296 000098109 000033105 D|041473861 089767321 +000000296 000121493 000043998 D|003867065 080627645 +000000296 000128262 000044477 D|043582838 045207559 +000000296 000136052 000064669 D|076650278 011011177 +000000296 000143856 000070621 D|003236047 029473446 +000000296 000163883 000162152 D|042767540 077610403 +000000296 000166203 000174632 D|027340745 043350673 +000000296 000168394 000183015 D|006927979 005646311 +000000296 000169526 000236878 D|011962446 098671085 +000000296 000177543 000261844 D|034011533 057984928 +000000296 000182494 000267201 D|065761085 067682536 +000000296 000195687 000271450 D|058437546 006891405 +000000296 000221373 000274010 D|034066166 049823901 +000000296 000237838 000296813 D|008580289 004785660 +000000296 000239089 000305247 D|085461650 082537991 +000000296 000248942 000313089 D|002331788 042839923 +000000296 000271772 000342123 D|011778803 022069491 +000000296 000283095 000352312 D|032617304 074115242 +000000296 000315796 000375738 D|045727430 008539604 +000000296 000353561 000434353 D|075929756 066213097 +000000296 000354228 000477879 D|000572016 051507009 +000000296 000363106 000482214 D|003566345 024885732 +000000296 000368687 000488004 D|046506867 082225193 +000000296 000433367 000493451 D|077404563 006733336 +000000296 000451581 000495138 D|036230802 036592225 +000000296 000455537 000499285 D|088796138 062327417 +000000296 000520280 000597450 D|040292551 051626485 +000000296 000557425 000605189 D|061707344 048957292 +000000296 000564820 000612117 D|076456157 058195421 +000000296 000584065 000620534 D|087365202 094400163 +000000296 000609528 000625937 D|003919313 090494591 +000000296 000654098 000638222 D|018751215 024222234 +000000296 000684347 000673615 D|050490673 095712733 +000000296 000693652 000741886 D|015676395 083664291 +000000296 000709784 000749762 D|072783535 049136186 +000000296 000755046 000840225 D|000244592 074132341 +000000296 000784558 000877668 D|032064698 050317770 +000000296 000792338 000887630 D|071505045 010111452 +000000296 000857370 000893905 D|094118685 004625348 +000000296 000863695 000899083 D|041513585 098113927 +000000296 000882545 000906179 D|000992087 077119407 +000000296 000891656 000930763 D|069553771 069882859 +000000296 000911444 000934901 D|067015636 031489929 +000000296 000919201 000946918 D|000383781 042467433 +000000296 000921313 000972626 D|046108441 070396265 +000000296 000962561 000984762 D|061289804 078776203 +000000296 000962924 000986638 D|024413770 077228900 +000000296 000987846 000994155 D|083027994 030680852 +000000297 000001164 000004824 D|079631986 074689640 +000000297 000012676 000005453 D|094684977 089352031 +000000297 000015681 000006829 D|014746377 050997271 +000000297 000022444 000025408 D|013391297 029549057 +000000297 000064477 000039015 D|042124094 006028801 +000000297 000082652 000039586 D|091329267 089576145 +000000297 000090138 000054303 D|057929566 038064317 +000000297 000092150 000056352 D|077796191 040723334 +000000297 000106271 000064291 D|003799396 077274366 +000000297 000171792 000089232 D|050235467 001367872 +000000297 000177601 000126054 D|014906643 057389420 +000000297 000177716 000127626 D|019654000 092550006 +000000297 000185356 000128917 D|037118830 094491236 +000000297 000203988 000155032 D|094199426 097819249 +000000297 000254819 000214409 D|054001759 095660086 +000000297 000296414 000312478 D|019343125 071614431 +000000297 000300426 000321632 D|036505878 030532660 +000000297 000357931 000359842 D|047357218 077579189 +000000297 000364915 000387317 D|087680592 092949948 +000000297 000375837 000401141 D|081394022 001560373 +000000297 000394482 000525401 D|036648065 066582159 +000000297 000418097 000539946 D|067314418 086255489 +000000297 000421863 000556935 D|008498631 088278144 +000000297 000468289 000559972 D|019514234 012381033 +000000297 000472142 000580203 D|096961184 006468491 +000000297 000517385 000606822 D|042272571 025968247 +000000297 000518743 000608358 D|026612656 076832211 +000000297 000545262 000657748 D|072577557 088603234 +000000297 000573370 000702060 D|013966797 096872804 +000000297 000604283 000730812 D|064599813 046852754 +000000297 000644396 000760508 D|011192581 072784045 +000000297 000644527 000769651 D|014634056 026174921 +000000297 000651657 000771373 D|021743275 068012235 +000000297 000654639 000773218 D|046256091 000463587 +000000297 000693195 000794662 D|006265292 045518324 +000000297 000703160 000796323 D|054650009 032213609 +000000297 000740993 000827499 D|065374124 053867903 +000000297 000781030 000846912 D|021387893 088869244 +000000297 000806080 000847362 D|049897129 084003692 +000000297 000827422 000862537 D|056952560 001054616 +000000297 000830921 000894303 D|082652094 006854566 +000000297 000833253 000913634 D|034184267 055520322 +000000297 000841632 000922275 D|070505469 084796288 +000000297 000844326 000928202 D|072870998 034771889 +000000297 000880129 000956052 D|020183831 025120261 +000000297 000881275 000968698 D|015266063 045366048 +000000297 000921539 000977232 D|059925730 051770629 +000000297 000952256 000984784 D|077808186 037744342 +000000297 000959973 000996856 D|007614485 000999058 +000000297 000963718 000998921 D|077456586 033886296 +000000298 000002594 000006728 D|029672357 015633042 +000000298 000006373 000053304 D|087764722 085835692 +000000298 000017985 000070450 D|038990005 066581019 +000000298 000048909 000109014 D|019108192 031663964 +000000298 000063180 000115780 D|010029782 001682278 +000000298 000087940 000139480 D|086240518 066355170 +000000298 000099088 000175998 D|085366016 034229363 +000000298 000118357 000177257 D|004999110 017497766 +000000298 000136717 000188089 D|017329348 034036734 +000000298 000143217 000194816 D|034702334 058517566 +000000298 000166698 000197029 D|031021945 087258645 +000000298 000168034 000202951 D|076371007 008558550 +000000298 000173582 000248200 D|057147412 087262613 +000000298 000183363 000284777 D|085450299 030964723 +000000298 000191325 000285687 D|098853394 091071652 +000000298 000207502 000294436 D|050868153 092889307 +000000298 000224808 000316376 D|027048487 067442246 +000000298 000263494 000320927 D|023377940 059440442 +000000298 000263503 000325493 D|047427892 083893274 +000000298 000270557 000327811 D|004081839 074313322 +000000298 000291838 000369194 D|094855374 066408716 +000000298 000296001 000398472 D|094403109 076050578 +000000298 000338225 000419903 D|030435294 088305436 +000000298 000343536 000421428 D|099506865 047429151 +000000298 000362526 000440500 D|019291993 049384270 +000000298 000478380 000493145 D|087517183 033509596 +000000298 000481209 000506027 D|078844871 046791987 +000000298 000514515 000508463 D|016176960 035221802 +000000298 000525751 000510363 D|028326509 012756418 +000000298 000549316 000573769 D|065870222 060624060 +000000298 000566261 000588129 D|073665413 084324158 +000000298 000591103 000617409 D|056262024 038915947 +000000298 000646788 000635319 D|062171820 081539020 +000000298 000678237 000637468 D|090627124 011630955 +000000298 000699998 000696858 D|036783298 065262182 +000000298 000716957 000721242 D|018159999 004707371 +000000298 000721987 000725585 D|095422252 069899927 +000000298 000734516 000788774 D|095555126 038197075 +000000298 000808549 000788887 D|097815944 066770051 +000000298 000818961 000797985 D|014799526 027250221 +000000298 000832163 000832853 D|091016656 094967301 +000000298 000832698 000845007 D|042615664 043771491 +000000298 000852704 000866781 D|041166792 089559311 +000000298 000863295 000872960 D|083134961 057284574 +000000298 000878428 000895660 D|017333292 042785597 +000000298 000923776 000923578 D|000978427 029519082 +000000298 000954165 000940457 D|016758669 051750637 +000000298 000959199 000955165 D|082630816 093431336 +000000298 000967036 000978992 D|056958901 073054677 +000000298 000992886 000985409 D|084550947 062615462 +000000299 000045994 000003232 D|073783652 032415200 +000000299 000085324 000006700 D|061833096 059938822 +000000299 000122065 000009792 D|066339165 026013870 +000000299 000126650 000054073 D|015095171 068038140 +000000299 000201459 000058137 D|071146417 086714777 +000000299 000204685 000071182 D|089782358 017582611 +000000299 000212117 000089089 D|043975640 021137659 +000000299 000226883 000095569 D|010675241 039931307 +000000299 000227481 000117027 D|081321477 074081329 +000000299 000269158 000132924 D|090810810 087537064 +000000299 000288334 000141222 D|068891931 079996117 +000000299 000297501 000171334 D|043266928 010953892 +000000299 000301869 000215234 D|090380407 081018036 +000000299 000306302 000216992 D|089475960 019644299 +000000299 000311049 000279708 D|067343487 007011615 +000000299 000374635 000307955 D|001077709 063529350 +000000299 000468596 000317761 D|099363589 058321921 +000000299 000476987 000365631 D|024379122 083528528 +000000299 000482557 000380492 D|073828303 084372503 +000000299 000496012 000414692 D|083495673 004095699 +000000299 000530596 000430337 D|063963309 012525430 +000000299 000533919 000433099 D|026536844 011168912 +000000299 000540110 000445353 D|075859149 001160452 +000000299 000595869 000449270 D|062084593 099078824 +000000299 000601085 000455578 D|050255049 056197000 +000000299 000631317 000466218 D|033941430 047971113 +000000299 000636378 000510460 D|014970461 031975063 +000000299 000655021 000542353 D|026125056 059074311 +000000299 000672995 000549473 D|046241141 041650012 +000000299 000678374 000596149 D|087805318 087078833 +000000299 000695608 000622574 D|035067106 028585054 +000000299 000707667 000631712 D|082307326 014566174 +000000299 000712567 000654436 D|082998307 015479244 +000000299 000755774 000682662 D|010844606 006829313 +000000299 000760288 000691929 D|025789096 069881621 +000000299 000761623 000700883 D|071850515 091754919 +000000299 000771630 000722357 D|068933514 076348757 +000000299 000782442 000748017 D|054233919 064131421 +000000299 000803206 000754160 D|091121231 037148544 +000000299 000823743 000764913 D|068473722 085681610 +000000299 000853394 000783778 D|074293058 038175493 +000000299 000864556 000793761 D|068054991 003306058 +000000299 000881939 000833019 D|001129212 058246605 +000000299 000894463 000890364 D|046307483 063979323 +000000299 000940965 000905093 D|071511221 048643169 +000000299 000947061 000905961 D|036630507 011610734 +000000299 000950630 000912141 D|093062035 060599914 +000000299 000972252 000928770 D|025169848 020908006 +000000299 000982957 000942000 D|048184438 059949010 +000000299 000995821 000973420 D|026058869 088398019 +000000300 000012277 000017566 D|009295797 097887215 +000000300 000013690 000026050 D|016203171 062286032 +000000300 000034222 000029934 D|061565522 064778777 +000000300 000051852 000051441 D|000237200 061097204 +000000300 000065181 000055057 D|011637501 015823684 +000000300 000124240 000120316 D|083358702 072531553 +000000300 000133106 000121726 D|013105502 030356233 +000000300 000139235 000121768 D|076977024 090345975 +000000300 000158730 000122399 D|004539798 083412506 +000000300 000174169 000133653 D|001464295 082710454 +000000300 000182323 000153648 D|007484772 008086964 +000000300 000198421 000165258 D|055400419 014688209 +000000300 000199284 000177861 D|019912949 069765825 +000000300 000218382 000178849 D|032078244 024221522 +000000300 000228087 000188409 D|047248229 007522373 +000000300 000280210 000225049 D|095676810 042164994 +000000300 000301849 000235098 D|062037720 085601105 +000000300 000332900 000265690 D|036160887 038738898 +000000300 000375179 000300875 D|047011078 085654070 +000000300 000444135 000303994 D|003938566 035491067 +000000300 000458839 000413147 D|048223793 013194582 +000000300 000475968 000425921 D|064063147 000934098 +000000300 000491263 000430569 D|089723008 081358583 +000000300 000520153 000471976 D|085703467 056443381 +000000300 000550184 000521444 D|078635730 092964498 +000000300 000556918 000556319 D|032933862 019189450 +000000300 000559925 000573422 D|015066245 046854265 +000000300 000572814 000600763 D|064822594 002443455 +000000300 000578426 000601872 D|009728730 040586182 +000000300 000592616 000616325 D|087248565 096058982 +000000300 000620056 000640802 D|002342620 016159308 +000000300 000652288 000651416 D|044254163 035986944 +000000300 000671725 000654865 D|050534354 020558156 +000000300 000702423 000676718 D|081628218 000448660 +000000300 000709386 000691609 D|088892474 098541980 +000000300 000719867 000715888 D|002965394 098488569 +000000300 000734821 000738075 D|047607878 067948164 +000000300 000735572 000749413 D|023556188 094395548 +000000300 000763493 000757412 D|098864802 051242114 +000000300 000772531 000788541 D|075969325 098755762 +000000300 000774838 000792118 D|030028063 086546532 +000000300 000792835 000838390 D|048241888 029626293 +000000300 000826874 000850264 D|026295386 049824868 +000000300 000847457 000892489 D|085158128 002265946 +000000300 000875457 000899548 D|072008256 010499908 +000000300 000897179 000932976 D|014673883 046336123 +000000300 000924314 000943152 D|066641064 053909320 +000000300 000928167 000945454 D|039833734 035050607 +000000300 000965953 000977722 D|062892514 092153645 +000000300 000970699 000983415 D|000443588 042783678 +000000301 000006464 000003612 D|043345388 099568561 +000000301 000014103 000043947 D|001530878 029037616 +000000301 000016856 000050484 D|009767380 071367462 +000000301 000077293 000079688 D|029778143 006449684 +000000301 000098510 000095362 D|015760978 028939977 +000000301 000102501 000108457 D|087639975 061513715 +000000301 000115587 000132048 D|024435618 091362460 +000000301 000123552 000132294 D|086565578 090782116 +000000301 000164607 000164987 D|023550799 030421430 +000000301 000177701 000171627 D|020473941 033189824 +000000301 000181039 000207913 D|000928662 079951926 +000000301 000190383 000221956 D|004276944 081832960 +000000301 000194553 000225239 D|030998174 005211427 +000000301 000207208 000274940 D|040572039 025654705 +000000301 000230650 000286111 D|020959075 036882999 +000000301 000232147 000310356 D|011009894 073464858 +000000301 000263702 000318515 D|015271196 098987782 +000000301 000269026 000335530 D|010491742 077553769 +000000301 000309293 000371195 D|017231153 060540377 +000000301 000318411 000405480 D|072600855 055764611 +000000301 000332532 000419644 D|067297560 024732944 +000000301 000363786 000492496 D|070493601 087139931 +000000301 000376129 000518913 D|022569907 001078016 +000000301 000415167 000534780 D|097539346 052955921 +000000301 000442466 000540043 D|088695044 007324075 +000000301 000501192 000548607 D|015061741 030693687 +000000301 000519290 000557462 D|037960605 057603891 +000000301 000524006 000562717 D|015375683 086489502 +000000301 000535716 000563965 D|021752397 041396451 +000000301 000705307 000572685 D|075223877 073966130 +000000301 000708033 000578661 D|061672217 081887863 +000000301 000719319 000591802 D|041460648 015485803 +000000301 000720209 000594326 D|014773672 030203917 +000000301 000744342 000598625 D|060392184 037522010 +000000301 000759901 000627707 D|089999423 000271767 +000000301 000782802 000668167 D|093041423 047489750 +000000301 000789001 000674538 D|083901989 026206599 +000000301 000803273 000694289 D|080364881 014341315 +000000301 000836116 000697261 D|033054434 073287129 +000000301 000863885 000697459 D|088200974 012339172 +000000301 000864276 000707022 D|070285329 029500526 +000000301 000874907 000842115 D|047649369 051965398 +000000301 000932656 000863093 D|057017823 090051579 +000000301 000936295 000884400 D|031142458 062763032 +000000301 000945884 000894489 D|004328919 084291967 +000000301 000959529 000913116 D|009576396 023642938 +000000301 000960687 000933968 D|033423886 037294133 +000000301 000966034 000966564 D|004359844 053570902 +000000301 000974593 000972331 D|050170479 001513469 +000000301 000988053 000976343 D|001437635 014794461 +000000302 000017213 000042245 D|093198406 063631869 +000000302 000034609 000047528 D|063436180 055210997 +000000302 000036496 000077816 D|052116308 093003434 +000000302 000036889 000108692 D|034784744 082578337 +000000302 000039511 000173635 D|037789183 032790461 +000000302 000096390 000176671 D|064013686 058507866 +000000302 000103946 000188088 D|030206309 062256130 +000000302 000137262 000200558 D|015462478 054003193 +000000302 000163999 000205362 D|084645979 025042401 +000000302 000164770 000234774 D|063102019 088437266 +000000302 000171885 000256008 D|078926363 006872573 +000000302 000215290 000257803 D|090350539 056586091 +000000302 000218156 000261237 D|051072045 097794356 +000000302 000219715 000266066 D|089311228 062024313 +000000302 000236704 000281809 D|072557488 074991858 +000000302 000237886 000284432 D|035474605 002170866 +000000302 000254732 000301055 D|057566209 007060711 +000000302 000311252 000311224 D|053394834 062269910 +000000302 000320485 000352458 D|069707101 017015598 +000000302 000365065 000363526 D|067910076 050234188 +000000302 000382917 000369272 D|016238561 091871993 +000000302 000436890 000379174 D|098345291 031000879 +000000302 000568258 000387372 D|099555602 011255834 +000000302 000572166 000410595 D|042149095 027209845 +000000302 000574425 000427261 D|057395141 059585095 +000000302 000592441 000438299 D|009158862 088103668 +000000302 000632609 000475865 D|083667448 048197121 +000000302 000633610 000503814 D|096033383 015219653 +000000302 000725358 000531293 D|023789001 035565198 +000000302 000727415 000582704 D|001270636 056431096 +000000302 000770916 000620956 D|058835060 068862454 +000000302 000793348 000674198 D|038241952 069146388 +000000302 000796494 000685915 D|034780734 040360404 +000000302 000816980 000690888 D|058218927 042527891 +000000302 000822609 000711427 D|055003267 088154018 +000000302 000843185 000716721 D|018529213 079417865 +000000302 000852933 000719490 D|084810627 090406535 +000000302 000855989 000745818 D|065115081 073014437 +000000302 000858618 000747745 D|064645250 025675251 +000000302 000869864 000751103 D|064668683 060400974 +000000302 000882256 000753352 D|096926245 000884139 +000000302 000884069 000770533 D|081692844 011349111 +000000302 000898621 000819878 D|009016685 057031495 +000000302 000935832 000823782 D|023607977 057821864 +000000302 000939901 000883182 D|097830023 028069431 +000000302 000940662 000896170 D|052899785 037301216 +000000302 000950448 000907864 D|079567804 034371558 +000000302 000958274 000910740 D|080071891 035861801 +000000302 000984889 000961754 D|055557439 021200530 +000000302 000989388 000990252 D|006206626 086757176 +000000303 000003175 000018432 D|002854247 070555617 +000000303 000008529 000024978 D|074319429 064665232 +000000303 000043049 000053499 D|038380642 029421582 +000000303 000066302 000054490 D|042607673 070503760 +000000303 000092824 000077801 D|052929955 061227991 +000000303 000113783 000099484 D|024958912 095083418 +000000303 000174702 000150156 D|001982740 039310044 +000000303 000185434 000206841 D|026832474 044671055 +000000303 000186461 000217408 D|068834838 001908131 +000000303 000195330 000273110 D|069175270 016550473 +000000303 000201100 000315985 D|072125807 056775393 +000000303 000216144 000330862 D|059220902 083981839 +000000303 000220699 000345106 D|066275495 042982892 +000000303 000243003 000383473 D|055078175 098033329 +000000303 000249404 000416747 D|064603039 046890504 +000000303 000254214 000463164 D|041269367 092070630 +000000303 000258538 000475091 D|061847776 078206055 +000000303 000275410 000477429 D|027954638 099860757 +000000303 000278858 000498858 D|053019483 034391205 +000000303 000293306 000498924 D|023931750 046471866 +000000303 000308456 000500052 D|001788650 085749628 +000000303 000340135 000506405 D|083274012 069023487 +000000303 000347452 000512815 D|098089995 013102317 +000000303 000372042 000515548 D|089652510 027864054 +000000303 000373382 000525231 D|087435191 026357883 +000000303 000392511 000526602 D|062673016 010020504 +000000303 000398443 000527870 D|011264262 001549631 +000000303 000415478 000549904 D|033916939 031968016 +000000303 000451168 000551963 D|084622277 065148802 +000000303 000543395 000582815 D|077525599 001915502 +000000303 000549570 000597383 D|074914653 022776695 +000000303 000551140 000612496 D|058987410 074948636 +000000303 000642886 000623154 D|071298328 036755631 +000000303 000662599 000629375 D|046895154 073870550 +000000303 000673219 000641615 D|004899756 013706538 +000000303 000681389 000644742 D|091583129 002467913 +000000303 000717530 000691503 D|093767960 091354811 +000000303 000736405 000714520 D|008942272 038968317 +000000303 000746004 000740521 D|025250359 096207597 +000000303 000756982 000762810 D|079055911 085028366 +000000303 000781167 000767910 D|078848754 050973837 +000000303 000811477 000780175 D|076587610 059435239 +000000303 000815228 000784311 D|039824420 096145062 +000000303 000850784 000787162 D|038219442 035845469 +000000303 000884084 000792893 D|029925595 039321488 +000000303 000886795 000831652 D|052471586 008480533 +000000303 000901066 000836974 D|053994989 006198749 +000000303 000934185 000851857 D|095054567 053298931 +000000303 000958561 000945283 D|045186316 020378826 +000000303 000986438 000968087 D|082432951 047771040 +000000304 000071646 000012283 D|040182027 088835717 +000000304 000081686 000027577 D|026013606 090939839 +000000304 000093937 000034013 D|055163929 017734834 +000000304 000102744 000059172 D|011274466 073412096 +000000304 000128243 000091658 D|022364226 007122923 +000000304 000144648 000117720 D|069813042 090199568 +000000304 000223698 000133406 D|013451042 021215338 +000000304 000229918 000144769 D|006095611 025247579 +000000304 000248886 000166600 D|048999517 034638284 +000000304 000269000 000195454 D|084830722 094592048 +000000304 000272790 000218733 D|025911540 074131286 +000000304 000318021 000257692 D|078285636 047334547 +000000304 000337550 000263852 D|096898011 013334720 +000000304 000347695 000315567 D|016283927 035944871 +000000304 000363648 000319601 D|007384127 080401279 +000000304 000382476 000357046 D|097935580 012141555 +000000304 000382492 000361281 D|058115934 071946454 +000000304 000386628 000370774 D|058677531 026455419 +000000304 000402338 000372589 D|092626809 019077866 +000000304 000419044 000459659 D|087185908 023192576 +000000304 000419713 000521742 D|095024974 024391970 +000000304 000456037 000543524 D|025523602 058158697 +000000304 000466793 000546622 D|057251679 006592631 +000000304 000512700 000578482 D|079038285 064463243 +000000304 000547046 000583252 D|060379469 078692728 +000000304 000582735 000614004 D|057370325 036511409 +000000304 000590654 000614917 D|098907894 023968721 +000000304 000626174 000626553 D|004401551 049836802 +000000304 000677615 000628794 D|056627952 012694740 +000000304 000683911 000639678 D|001855695 062827425 +000000304 000685701 000640360 D|028534578 001982253 +000000304 000701238 000646318 D|088513238 051559058 +000000304 000760929 000714592 D|085274961 062570644 +000000304 000768968 000737017 D|065506296 013670090 +000000304 000789008 000748691 D|066671104 056460715 +000000304 000799207 000763501 D|079168055 069081703 +000000304 000804148 000772898 D|097034674 082567289 +000000304 000832747 000776574 D|098018017 036128264 +000000304 000856011 000789078 D|034072936 002868710 +000000304 000865509 000842414 D|030397426 030789966 +000000304 000871142 000913234 D|028230608 064557723 +000000304 000889638 000922403 D|010841680 075057607 +000000304 000893419 000934509 D|044215955 021912419 +000000304 000893689 000934575 D|022560073 096100840 +000000304 000894812 000937860 D|009576494 067278639 +000000304 000904975 000944749 D|085684609 061254042 +000000304 000949112 000954326 D|091689894 000783118 +000000304 000950840 000973847 D|084640306 018362025 +000000304 000963654 000982867 D|027247311 005813617 +000000304 000963887 000995935 D|030053521 097617469 +000000305 000010933 000003154 D|034702736 026782340 +000000305 000012113 000006546 D|059938180 040501632 +000000305 000040502 000008347 D|069347251 056394145 +000000305 000058763 000027313 D|024935121 051822926 +000000305 000062277 000053826 D|090865636 046567413 +000000305 000083105 000080213 D|093957185 037701495 +000000305 000092157 000135300 D|064549788 095947139 +000000305 000113953 000175432 D|087599970 082723516 +000000305 000150571 000181251 D|036969972 050478069 +000000305 000169211 000181621 D|097491117 044936947 +000000305 000175649 000184340 D|039403632 016475148 +000000305 000201899 000219067 D|015864807 099929290 +000000305 000218380 000223024 D|083618742 026208954 +000000305 000256300 000248380 D|067529699 028926944 +000000305 000267637 000281895 D|027126414 017423101 +000000305 000281502 000295702 D|066018441 058628177 +000000305 000282840 000296664 D|055750199 065122475 +000000305 000328827 000332497 D|041073938 087513130 +000000305 000365565 000335526 D|001755887 045164298 +000000305 000376361 000380795 D|020408821 065547324 +000000305 000395667 000409052 D|066336543 029195797 +000000305 000404288 000432710 D|070715773 081004875 +000000305 000429548 000444162 D|050063162 064951898 +000000305 000448701 000450703 D|007802753 013823105 +000000305 000450689 000459491 D|050673290 082815154 +000000305 000474092 000477327 D|089952347 039882860 +000000305 000508258 000502623 D|083979399 078108519 +000000305 000541119 000533581 D|069969244 016570830 +000000305 000556318 000552199 D|075984281 033839912 +000000305 000602862 000559755 D|072231420 063049750 +000000305 000610232 000568498 D|062318517 021556736 +000000305 000614061 000595951 D|021492713 095086004 +000000305 000627045 000600788 D|045318868 011148930 +000000305 000649547 000624098 D|070762749 019950690 +000000305 000649976 000634402 D|008416237 092862214 +000000305 000652466 000644776 D|052855606 043836964 +000000305 000658538 000698187 D|051225675 076183441 +000000305 000667546 000722467 D|035831824 075018094 +000000305 000676850 000746406 D|021755242 084075065 +000000305 000691723 000748600 D|062038811 096884661 +000000305 000718250 000763465 D|071257925 056978739 +000000305 000725536 000794768 D|004940457 070034890 +000000305 000739039 000808296 D|032341740 076245505 +000000305 000770845 000808903 D|077686277 020041949 +000000305 000776677 000889722 D|014122571 054971506 +000000305 000873645 000895601 D|029464347 091000283 +000000305 000886932 000908555 D|000865663 028333261 +000000305 000899287 000911997 D|082188672 058144385 +000000305 000936152 000918334 D|070104389 007079600 +000000305 000984604 000997765 D|097455434 051282961 +000000306 000004777 000052574 D|002129396 068954799 +000000306 000029667 000068863 D|095389408 025807749 +000000306 000092365 000082430 D|059859311 036614233 +000000306 000112889 000092418 D|068627097 060102640 +000000306 000125085 000124338 D|082521526 047037482 +000000306 000129239 000147412 D|055579903 061457494 +000000306 000145801 000214659 D|015603416 013907367 +000000306 000163646 000227834 D|020774872 059669515 +000000306 000189252 000263303 D|080972292 006932028 +000000306 000205863 000269088 D|017557616 092943082 +000000306 000212442 000289978 D|046490747 023388258 +000000306 000246525 000295880 D|096204204 097511135 +000000306 000265082 000328145 D|030657130 052985155 +000000306 000272777 000329908 D|082198861 062272569 +000000306 000275090 000348510 D|068287711 042104392 +000000306 000283677 000349977 D|005588914 023092019 +000000306 000298755 000353012 D|033569637 038913945 +000000306 000302715 000384683 D|096806792 013507956 +000000306 000320743 000385841 D|004599391 050082867 +000000306 000321675 000408229 D|045101368 089156941 +000000306 000344641 000415731 D|074324223 080411955 +000000306 000378843 000419840 D|034827134 061115630 +000000306 000414287 000435603 D|028206566 048013035 +000000306 000440868 000455966 D|094486844 066242467 +000000306 000468847 000494594 D|087780056 088943387 +000000306 000470987 000507112 D|061724450 009246215 +000000306 000471054 000507545 D|002862231 092156589 +000000306 000480414 000510011 D|099913520 037428972 +000000306 000490609 000525093 D|039459680 000229989 +000000306 000511421 000534524 D|087236008 014039447 +000000306 000530309 000560669 D|022043186 012216484 +000000306 000540678 000571142 D|081506328 045218712 +000000306 000564530 000577138 D|024879843 001829602 +000000306 000589885 000590340 D|097578221 071232776 +000000306 000640751 000632560 D|029026168 029265476 +000000306 000640990 000666366 D|006471121 029133067 +000000306 000660613 000682701 D|098294594 036568015 +000000306 000665030 000714315 D|085856878 051306504 +000000306 000688571 000735285 D|075482810 071366886 +000000306 000728891 000741603 D|025006646 038265118 +000000306 000744497 000838533 D|020506838 037432748 +000000306 000788656 000847823 D|016639720 070295688 +000000306 000789078 000854519 D|063514461 098202585 +000000306 000808247 000902542 D|010398525 027353196 +000000306 000835409 000917431 D|096174937 020509976 +000000306 000838599 000925309 D|056511298 032204469 +000000306 000858353 000950369 D|080472260 019352939 +000000306 000874696 000960251 D|066381738 034745645 +000000306 000877544 000967411 D|077903484 030108365 +000000306 000877954 000998863 D|045952401 029067091 +000000307 000005592 000004938 D|026783876 033373385 +000000307 000032450 000008523 D|050012072 045217815 +000000307 000077320 000009673 D|084055329 098007144 +000000307 000093213 000013393 D|086262461 018746405 +000000307 000108639 000025666 D|014151667 056682928 +000000307 000150614 000100875 D|044467737 032026220 +000000307 000180280 000110696 D|074151247 088753957 +000000307 000190567 000114550 D|049917412 047421666 +000000307 000192545 000150073 D|063756212 070403593 +000000307 000199416 000154584 D|095097060 058418378 +000000307 000208102 000194227 D|056129599 088874904 +000000307 000214465 000202755 D|084996260 036444222 +000000307 000262951 000206536 D|096788076 010035278 +000000307 000318320 000207266 D|068783275 027710622 +000000307 000356699 000213545 D|076537706 048596751 +000000307 000362372 000219880 D|084708383 034576947 +000000307 000384692 000240404 D|023501539 006419806 +000000307 000413165 000273866 D|050327042 041301677 +000000307 000414416 000285882 D|012349094 099323501 +000000307 000430087 000293757 D|032917871 043577362 +000000307 000434832 000296296 D|010753393 080593623 +000000307 000439624 000303628 D|011737490 007262726 +000000307 000444487 000312692 D|068838719 019433434 +000000307 000453596 000327932 D|040757616 062068433 +000000307 000481028 000376707 D|074273570 021244110 +000000307 000505946 000403847 D|010316173 052975843 +000000307 000544101 000424724 D|070414172 041636414 +000000307 000608979 000456181 D|070264146 026555467 +000000307 000615971 000475920 D|079369282 086791194 +000000307 000617478 000484409 D|099627817 044447074 +000000307 000634014 000488379 D|032045878 056449108 +000000307 000636743 000490226 D|041288936 040308657 +000000307 000644570 000533325 D|013870888 099058054 +000000307 000646387 000540767 D|045471433 007545316 +000000307 000659188 000590921 D|065346100 096375099 +000000307 000693186 000615859 D|023222806 066980597 +000000307 000735193 000627922 D|035054434 058222440 +000000307 000743703 000629885 D|044179159 045711383 +000000307 000756453 000676905 D|001987575 044585725 +000000307 000763004 000679286 D|028883643 083493031 +000000307 000771578 000688287 D|054332202 094142134 +000000307 000848765 000722181 D|085499810 027129736 +000000307 000861883 000736073 D|017448831 061762512 +000000307 000864969 000741914 D|038338117 031656464 +000000307 000892689 000813495 D|015791533 083043607 +000000307 000915780 000856854 D|075888312 052130785 +000000307 000917298 000902902 D|049428427 084699061 +000000307 000951427 000926584 D|063235270 024286338 +000000307 000963742 000971506 D|020586445 091757139 +000000307 000970802 000995662 D|048076511 075207775 +000000308 000001420 000006502 D|084616975 022793204 +000000308 000082750 000016550 D|092795461 025421639 +000000308 000087939 000045943 D|062608074 021041312 +000000308 000089315 000079853 D|068291346 045739903 +000000308 000119980 000109098 D|082329638 075139395 +000000308 000142791 000116703 D|060218481 041198535 +000000308 000186062 000140432 D|037115966 099783354 +000000308 000195984 000143049 D|027179829 016917163 +000000308 000198741 000152295 D|028308850 064391575 +000000308 000241053 000162823 D|024436540 081490223 +000000308 000260777 000171920 D|066318498 046892005 +000000308 000262544 000185457 D|018952644 076870587 +000000308 000280882 000192226 D|035727355 002100314 +000000308 000314978 000213591 D|090618615 064871060 +000000308 000327794 000250336 D|089334924 094377636 +000000308 000376738 000260074 D|036960651 008261270 +000000308 000385454 000279099 D|097147604 055640409 +000000308 000396734 000319114 D|026752126 038272385 +000000308 000406761 000332865 D|079952244 047801986 +000000308 000430412 000347148 D|024181064 085699171 +000000308 000443700 000359245 D|059341000 036252228 +000000308 000451410 000390327 D|019457559 065215554 +000000308 000460507 000414236 D|076301101 035494651 +000000308 000468543 000436038 D|098483043 046848993 +000000308 000470413 000452150 D|066155996 001060258 +000000308 000524587 000454060 D|079786573 076363367 +000000308 000567999 000529448 D|089338455 019266961 +000000308 000575463 000537972 D|026986032 037561207 +000000308 000575774 000543374 D|006452459 067400687 +000000308 000670716 000548201 D|018248857 010615035 +000000308 000670902 000553987 D|025411234 082927778 +000000308 000677795 000562121 D|004014256 061173198 +000000308 000746198 000564894 D|006977382 042822888 +000000308 000769807 000578364 D|072130252 074092708 +000000308 000789728 000586236 D|095942396 046340481 +000000308 000807312 000592982 D|013760954 047539005 +000000308 000848478 000643342 D|096138278 070745185 +000000308 000858542 000684708 D|059039842 008337858 +000000308 000866767 000709390 D|088508622 024279075 +000000308 000869209 000713083 D|008841224 016769607 +000000308 000872856 000720582 D|033336498 063095808 +000000308 000879944 000729562 D|087247985 027456358 +000000308 000885919 000781835 D|018506464 053656277 +000000308 000909524 000794878 D|088256832 074781181 +000000308 000917496 000796893 D|064022966 087233425 +000000308 000954967 000821969 D|020784266 000139489 +000000308 000962198 000849852 D|066832034 025904222 +000000308 000974450 000916574 D|039596764 003555998 +000000308 000976723 000933132 D|082684255 055827628 +000000308 000988951 000989713 D|087183875 013609864 +000000309 000008313 000006197 D|026153798 075665169 +000000309 000029679 000032102 D|074267326 084880425 +000000309 000035436 000061747 D|030072893 082772347 +000000309 000062289 000077881 D|047536630 009683964 +000000309 000076373 000109732 D|083462742 078475412 +000000309 000084468 000118797 D|079563146 082278366 +000000309 000088166 000127495 D|022299943 036999996 +000000309 000109084 000143235 D|049829426 075568494 +000000309 000145143 000149055 D|031594918 081578752 +000000309 000155653 000184341 D|060839732 073795445 +000000309 000156661 000205191 D|047722790 066340991 +000000309 000184501 000209770 D|058391495 045998400 +000000309 000193329 000227516 D|066093157 066189054 +000000309 000196728 000234912 D|027486268 069547948 +000000309 000203271 000271742 D|022603308 073787627 +000000309 000227178 000274530 D|019426422 071804758 +000000309 000267298 000293735 D|017495732 030160130 +000000309 000270416 000297876 D|020249366 006661643 +000000309 000278263 000300953 D|036627419 046900203 +000000309 000300123 000305686 D|046894540 037609708 +000000309 000300123 000345160 D|049500657 010041294 +000000309 000308996 000415871 D|021392363 013716937 +000000309 000310680 000420869 D|024293306 049800523 +000000309 000389907 000446170 D|058066504 098444631 +000000309 000440975 000476568 D|041054911 056176735 +000000309 000484377 000496736 D|063569596 051829390 +000000309 000547508 000509635 D|033052109 021631387 +000000309 000571839 000518571 D|058164421 081398266 +000000309 000592399 000545617 D|084911089 012103944 +000000309 000615049 000547644 D|043441189 042163783 +000000309 000619592 000583489 D|089770070 007402124 +000000309 000624375 000622765 D|051503027 015595822 +000000309 000640055 000626050 D|021297578 002860145 +000000309 000650470 000631756 D|058616262 020377923 +000000309 000723470 000651228 D|061570302 056957927 +000000309 000725699 000670759 D|033804752 054333012 +000000309 000730824 000721268 D|016470727 063017503 +000000309 000762101 000850039 D|083654916 051231470 +000000309 000774907 000859265 D|041280944 086266528 +000000309 000785517 000859273 D|035962594 041980108 +000000309 000801163 000867235 D|086287781 055182528 +000000309 000830091 000870147 D|012175623 080488542 +000000309 000860012 000888176 D|068674248 037095509 +000000309 000865209 000890958 D|046958977 046331817 +000000309 000889906 000893581 D|000719732 076337954 +000000309 000918896 000895179 D|093342867 061985916 +000000309 000947483 000903985 D|035556638 022657389 +000000309 000953252 000924710 D|048507443 026176667 +000000309 000957859 000935136 D|036301087 009442686 +000000309 000987173 000969794 D|035794084 093472508 +000000310 000008988 000006877 D|048358722 093514615 +000000310 000023614 000047036 D|097863310 066255371 +000000310 000059038 000052369 D|094275863 082349845 +000000310 000096635 000065387 D|050039146 069087838 +000000310 000100291 000078676 D|035697189 004749064 +000000310 000131558 000118691 D|083815697 048262514 +000000310 000131684 000138389 D|063762390 024744785 +000000310 000183799 000152170 D|078767906 061086987 +000000310 000214551 000157659 D|081595937 070907317 +000000310 000228032 000177389 D|096301002 008504798 +000000310 000235773 000196082 D|078398992 000627250 +000000310 000242567 000239046 D|090596174 041223528 +000000310 000256982 000313709 D|048006488 079931155 +000000310 000272043 000321419 D|004148237 068117432 +000000310 000273661 000356050 D|044682528 070143196 +000000310 000299662 000377721 D|051067941 046083741 +000000310 000357993 000399124 D|063783253 057982586 +000000310 000375110 000422542 D|021453591 002178658 +000000310 000377181 000455734 D|060066890 012194553 +000000310 000391817 000470379 D|084872193 082164264 +000000310 000392664 000505652 D|087956877 082109306 +000000310 000407837 000513925 D|005535514 093191750 +000000310 000447027 000519771 D|048852169 065004825 +000000310 000453650 000521684 D|032037683 082123775 +000000310 000465102 000525673 D|015600179 087915633 +000000310 000484310 000542764 D|052439806 045945620 +000000310 000504680 000578466 D|069150273 062834750 +000000310 000513970 000590998 D|076823075 059756724 +000000310 000533254 000591053 D|079273042 056580886 +000000310 000570531 000593040 D|079410517 056734115 +000000310 000578125 000610728 D|067563337 097372491 +000000310 000586381 000631189 D|009158037 064181001 +000000310 000619570 000672533 D|039839790 062008038 +000000310 000648966 000699221 D|012005499 061601209 +000000310 000674915 000713817 D|008260774 067222891 +000000310 000703338 000730196 D|038953493 040357894 +000000310 000749114 000739563 D|067708902 052602940 +000000310 000763532 000740550 D|098659230 079260124 +000000310 000772969 000765558 D|014468963 060474780 +000000310 000808398 000801840 D|060978895 015942109 +000000310 000835310 000839437 D|037637444 058381707 +000000310 000843376 000860267 D|086896563 045838200 +000000310 000860443 000867346 D|098250852 005404453 +000000310 000861327 000875342 D|027669356 013738034 +000000310 000907619 000889610 D|052072205 021737841 +000000310 000911224 000891314 D|035616161 030774605 +000000310 000917430 000905354 D|081034554 022015684 +000000310 000934403 000922957 D|065598537 072126191 +000000310 000934468 000946049 D|012213097 071307173 +000000310 000958284 000953337 D|029740831 003595257 +000000311 000008264 000001605 D|020217531 099024852 +000000311 000014601 000040256 D|029214604 053618738 +000000311 000015432 000045787 D|056859678 037542031 +000000311 000016124 000046982 D|072876958 039954067 +000000311 000049367 000086070 D|082785402 085003729 +000000311 000051335 000087245 D|008491513 079779666 +000000311 000103851 000153235 D|053885784 027679344 +000000311 000142843 000227056 D|057770694 020078033 +000000311 000147240 000230981 D|007138022 057483801 +000000311 000192130 000246632 D|029983062 031807867 +000000311 000194688 000247353 D|046422728 075378950 +000000311 000197297 000263119 D|042586101 028238916 +000000311 000262706 000268707 D|067146367 024562940 +000000311 000299363 000378671 D|030518089 003235257 +000000311 000299636 000402545 D|071784897 035068821 +000000311 000303938 000422790 D|040671183 068136254 +000000311 000304497 000440259 D|091397032 090428616 +000000311 000308520 000458001 D|080284306 003116643 +000000311 000317185 000469701 D|089524705 060148793 +000000311 000342618 000493193 D|044663269 035133567 +000000311 000348041 000513099 D|056967043 032936812 +000000311 000370101 000516857 D|099339460 063038459 +000000311 000374092 000531377 D|092250650 066745133 +000000311 000390355 000535721 D|098971840 031888279 +000000311 000402187 000537281 D|092388443 075853803 +000000311 000422355 000548410 D|029024624 018056169 +000000311 000444504 000557807 D|003051272 080915030 +000000311 000448394 000563268 D|071827993 046141335 +000000311 000473486 000572408 D|041187353 034254272 +000000311 000525480 000603882 D|051492593 032348482 +000000311 000530624 000675083 D|002791851 086380339 +000000311 000532612 000696774 D|088195771 086988677 +000000311 000537677 000720637 D|010919078 084498781 +000000311 000545619 000726911 D|088200440 041636308 +000000311 000573466 000757206 D|065119147 082198946 +000000311 000594751 000775515 D|070293735 012410661 +000000311 000598839 000781384 D|078340279 050566498 +000000311 000611862 000795413 D|012013711 052318773 +000000311 000652719 000797679 D|092689973 090184839 +000000311 000768369 000821640 D|057533785 025247390 +000000311 000798888 000826994 D|028430021 027567728 +000000311 000857419 000881187 D|057029503 074229706 +000000311 000866352 000888814 D|041075800 004829463 +000000311 000898028 000897201 D|065110216 071736353 +000000311 000898139 000903882 D|006717960 054942026 +000000311 000950422 000916951 D|080577132 065053981 +000000311 000963956 000938903 D|005443055 021448230 +000000311 000976679 000954875 D|077229058 075808414 +000000311 000979785 000961908 D|090536946 018378334 +000000311 000987487 000968618 D|095461122 064371134 +000000312 000009897 000005077 D|052958105 070520816 +000000312 000021429 000032911 D|037733128 091663127 +000000312 000022265 000045153 D|068902203 046214917 +000000312 000024454 000082598 D|030320120 063018951 +000000312 000026190 000108672 D|006695864 002850640 +000000312 000065814 000133281 D|034965248 080585363 +000000312 000092920 000135342 D|090966682 025661348 +000000312 000149721 000137457 D|015046000 069082738 +000000312 000153871 000142732 D|048657854 065614844 +000000312 000155918 000175672 D|038491599 039529861 +000000312 000171089 000181968 D|005491263 068819696 +000000312 000187553 000200801 D|002641119 010580393 +000000312 000204756 000232435 D|035352626 024590153 +000000312 000220546 000232844 D|026851229 052520059 +000000312 000252186 000271116 D|053928465 013672131 +000000312 000277049 000271173 D|011570359 070518777 +000000312 000309973 000283131 D|000571768 026580082 +000000312 000321106 000289773 D|002995522 010078901 +000000312 000335784 000298229 D|097410836 034191903 +000000312 000362402 000301884 D|040625020 060547384 +000000312 000377042 000323283 D|059073236 013871177 +000000312 000434003 000331648 D|033646453 060351934 +000000312 000450743 000350107 D|002284638 023704322 +000000312 000467677 000363179 D|059510462 012274434 +000000312 000473681 000427016 D|063861571 084570474 +000000312 000482508 000436240 D|017673798 041870110 +000000312 000501701 000438740 D|029199883 008806097 +000000312 000504081 000464221 D|091586763 052020665 +000000312 000508226 000471488 D|068626494 022684889 +000000312 000509374 000488024 D|032260586 075621258 +000000312 000519045 000490701 D|072272743 076940649 +000000312 000547569 000494209 D|072097983 093406483 +000000312 000569597 000545253 D|055231613 024225786 +000000312 000586987 000552628 D|008700629 086864811 +000000312 000595275 000572245 D|022820067 025843898 +000000312 000607277 000606413 D|040535211 075286634 +000000312 000618101 000649618 D|076773511 038624126 +000000312 000738241 000672010 D|077224885 017224375 +000000312 000747666 000689565 D|090525545 026008564 +000000312 000779371 000696749 D|073304127 061762173 +000000312 000780550 000723685 D|068598739 015582374 +000000312 000787288 000737874 D|054269646 050632727 +000000312 000805128 000743205 D|034553385 000707322 +000000312 000821822 000767536 D|045215426 073894271 +000000312 000822074 000806347 D|025543569 017022623 +000000312 000823898 000825840 D|057123938 092492754 +000000312 000862623 000888815 D|043526863 030466200 +000000312 000872892 000889029 D|023795039 051796120 +000000312 000887231 000908516 D|026567168 007573535 +000000312 000977800 000975857 D|099790121 061472840 +000000313 000021864 000000657 D|084031609 051764461 +000000313 000034756 000008780 D|058420185 057667952 +000000313 000036377 000072900 D|042345144 082603525 +000000313 000080944 000075491 D|074249798 028607733 +000000313 000083991 000080113 D|034523174 076015475 +000000313 000103478 000099808 D|089731497 039358079 +000000313 000110092 000104049 D|078205517 043668818 +000000313 000119096 000108764 D|070805556 084743033 +000000313 000134494 000113045 D|074772341 044734874 +000000313 000135767 000118622 D|098557244 034339359 +000000313 000151856 000120876 D|013332454 003980214 +000000313 000184445 000158233 D|031743586 043536225 +000000313 000184757 000167549 D|044015486 040398569 +000000313 000222961 000176511 D|085925819 055458037 +000000313 000291289 000195782 D|080459415 042619653 +000000313 000333941 000213672 D|089211663 082550319 +000000313 000389252 000219620 D|053214188 083600796 +000000313 000401781 000266639 D|031889800 069112256 +000000313 000421036 000290839 D|060100024 084834932 +000000313 000425690 000331355 D|067949644 051788976 +000000313 000459321 000335311 D|089341874 034952797 +000000313 000465624 000398335 D|095798979 021857641 +000000313 000484700 000423648 D|036499413 076851042 +000000313 000484847 000460529 D|031462728 007437964 +000000313 000485196 000465303 D|087579408 010925281 +000000313 000503745 000471666 D|088494944 048335957 +000000313 000523739 000472365 D|094451508 023320091 +000000313 000533724 000474877 D|026812314 057745908 +000000313 000561537 000482558 D|061773824 003923017 +000000313 000576459 000529258 D|004554956 080097400 +000000313 000621817 000583804 D|075385236 022036892 +000000313 000625868 000584844 D|059250120 052368360 +000000313 000627747 000590358 D|063238377 045065633 +000000313 000715116 000623695 D|078726454 011976274 +000000313 000722354 000650977 D|075612056 025684718 +000000313 000733621 000654757 D|089861226 038012979 +000000313 000746746 000673771 D|003151708 089066981 +000000313 000776447 000681522 D|031698186 049081039 +000000313 000806309 000722681 D|084824196 084078590 +000000313 000812669 000748289 D|052280123 007951041 +000000313 000814818 000762356 D|090285890 045336419 +000000313 000858932 000773227 D|094007194 056647195 +000000313 000878799 000814204 D|017891139 055567906 +000000313 000883848 000838553 D|045567652 026358645 +000000313 000899898 000874496 D|047459439 082348322 +000000313 000902083 000938224 D|007355740 035755772 +000000313 000917279 000941767 D|009560839 027798693 +000000313 000923392 000944991 D|071925079 026383655 +000000313 000953172 000985493 D|090319249 049348701 +000000313 000998491 000995685 D|097737166 044798589 +000000314 000011848 000015218 D|013026907 053944480 +000000314 000014783 000020025 D|082542539 014280577 +000000314 000016922 000068673 D|093139666 073596598 +000000314 000063596 000081318 D|044416105 005021613 +000000314 000098126 000089353 D|096724967 010988863 +000000314 000100376 000093100 D|021217727 038734669 +000000314 000104901 000129516 D|035060561 014685039 +000000314 000110777 000157653 D|066698847 087817732 +000000314 000122098 000161536 D|052113400 051044276 +000000314 000128755 000183807 D|042033712 087335254 +000000314 000131632 000188705 D|012120679 061569239 +000000314 000159038 000192706 D|006641075 088114351 +000000314 000190787 000223994 D|022693268 079884020 +000000314 000212975 000246025 D|041067819 004375915 +000000314 000213655 000274568 D|071252356 003979868 +000000314 000226443 000280019 D|040683160 065084400 +000000314 000235414 000281762 D|016869368 088443029 +000000314 000252184 000293761 D|017313823 054992245 +000000314 000375190 000384496 D|045496991 025772298 +000000314 000378877 000405705 D|029184877 086313730 +000000314 000394465 000433154 D|097097876 017340659 +000000314 000415168 000450933 D|018225310 069512803 +000000314 000480568 000483192 D|061347632 085464336 +000000314 000497814 000517793 D|015049876 068552315 +000000314 000505537 000531479 D|088540550 034929238 +000000314 000508936 000531512 D|078056325 047629820 +000000314 000552718 000537647 D|008954206 064218172 +000000314 000554976 000540780 D|040640938 058741149 +000000314 000576741 000555174 D|013720048 028649757 +000000314 000612389 000596439 D|000764474 094773305 +000000314 000623135 000621415 D|064372484 027137918 +000000314 000681693 000661892 D|022580586 089575421 +000000314 000694830 000688568 D|048080021 071116537 +000000314 000712537 000703079 D|010426777 042827653 +000000314 000730049 000712469 D|055652773 020597971 +000000314 000732063 000724719 D|050526772 088653371 +000000314 000754844 000724932 D|020473946 056473366 +000000314 000755182 000734939 D|034220899 060962347 +000000314 000821288 000754908 D|082486004 084508657 +000000314 000833367 000756068 D|046548366 035553131 +000000314 000848203 000761922 D|078728149 020216154 +000000314 000866932 000856528 D|038750360 080446890 +000000314 000874861 000878785 D|028815120 065060274 +000000314 000875316 000886106 D|071741324 068198589 +000000314 000908745 000928009 D|074170596 039198519 +000000314 000934426 000938893 D|074832154 016027608 +000000314 000970963 000945164 D|093823921 086682050 +000000314 000978793 000964421 D|057922658 025441441 +000000314 000986623 000964671 D|069245834 065974921 +000000314 000995908 000978678 D|021732035 075754505 +000000315 000000711 000047513 D|057380678 008008245 +000000315 000009277 000082141 D|018753571 044406539 +000000315 000028835 000103825 D|000022498 017835551 +000000315 000033552 000120559 D|045682080 009940710 +000000315 000039507 000153379 D|003244983 009346312 +000000315 000068886 000195600 D|094116171 070715443 +000000315 000081415 000218215 D|025741574 022650540 +000000315 000084210 000230114 D|029929182 089614115 +000000315 000152913 000234545 D|094710340 019670567 +000000315 000169007 000247062 D|047665960 033644237 +000000315 000177345 000256215 D|050344287 098393888 +000000315 000178182 000285376 D|034032340 043382161 +000000315 000184774 000304494 D|001475361 070481724 +000000315 000213885 000306976 D|064704690 081938658 +000000315 000309682 000307858 D|006304761 089058063 +000000315 000375023 000327343 D|024214279 064976117 +000000315 000375205 000338585 D|098444497 034103817 +000000315 000381918 000368609 D|072550743 070680571 +000000315 000418930 000400029 D|052534631 029079769 +000000315 000435467 000409035 D|097726627 050166157 +000000315 000439974 000410264 D|017672294 051210621 +000000315 000453454 000412038 D|009487101 022505851 +000000315 000462571 000415342 D|021801274 010846651 +000000315 000477903 000435659 D|045735187 042255495 +000000315 000515986 000454927 D|019366774 047171412 +000000315 000553615 000497195 D|011829880 074260121 +000000315 000564717 000537367 D|070997054 016548262 +000000315 000565701 000547118 D|015003090 000586422 +000000315 000573409 000578923 D|021582078 096368856 +000000315 000576179 000593269 D|013342086 046462280 +000000315 000586156 000614383 D|077876206 078956838 +000000315 000593596 000621160 D|082131495 047920832 +000000315 000595133 000624742 D|017803734 068831488 +000000315 000601217 000663999 D|008470671 052182127 +000000315 000609272 000676786 D|029457260 047342550 +000000315 000647797 000690045 D|039286696 017455711 +000000315 000651284 000708676 D|020131042 024445274 +000000315 000819515 000714996 D|068034027 077723178 +000000315 000836795 000734693 D|084648632 097727139 +000000315 000839603 000745708 D|095109987 085345530 +000000315 000843446 000753640 D|086345302 053474010 +000000315 000855026 000788807 D|072817423 080722835 +000000315 000863427 000813489 D|000752451 021862206 +000000315 000889516 000823188 D|024861817 098224153 +000000315 000911935 000923514 D|036915994 045385229 +000000315 000916649 000930499 D|086888743 042594337 +000000315 000921853 000933257 D|029835452 082010159 +000000315 000965950 000936235 D|038882660 086428974 +000000315 000969429 000938244 D|003802597 016365134 +000000315 000969926 000976041 D|086897511 051480856 +000000316 000009684 000016968 D|099455822 080396872 +000000316 000024788 000017165 D|091449497 026015775 +000000316 000038088 000021389 D|019268356 088616835 +000000316 000042056 000060738 D|043943902 061070891 +000000316 000048045 000068355 D|048479592 039713357 +000000316 000078177 000076522 D|093585967 078101982 +000000316 000082455 000088679 D|040366830 069843734 +000000316 000137345 000092839 D|019116558 074607185 +000000316 000156636 000097368 D|063105464 067346844 +000000316 000171760 000107589 D|099228089 009591283 +000000316 000194869 000110314 D|075293713 075759205 +000000316 000195811 000110380 D|093243559 009853199 +000000316 000228645 000150126 D|040703643 031241591 +000000316 000264924 000163821 D|062500102 025185233 +000000316 000270262 000173373 D|057326992 054903392 +000000316 000294029 000211113 D|017671424 015765588 +000000316 000320227 000239715 D|095697434 002591537 +000000316 000324353 000244531 D|071324644 075102533 +000000316 000369727 000320532 D|036410082 074547911 +000000316 000395171 000321760 D|027922530 024162274 +000000316 000409639 000337315 D|022377061 082881477 +000000316 000442244 000337986 D|007712811 045692628 +000000316 000474127 000368515 D|030157614 083806474 +000000316 000487164 000397051 D|027240980 016605586 +000000316 000494341 000401690 D|018445250 082197710 +000000316 000531655 000414275 D|015229151 015432963 +000000316 000600791 000427769 D|081275232 041577762 +000000316 000601255 000456533 D|087842219 090463863 +000000316 000652664 000469938 D|097848041 047668340 +000000316 000653987 000498891 D|062722408 070654723 +000000316 000665462 000502101 D|081267818 006987156 +000000316 000665860 000553745 D|072723174 008666991 +000000316 000686893 000570731 D|033272674 085687820 +000000316 000705393 000587554 D|026523129 083763677 +000000316 000760131 000617894 D|064275622 076815191 +000000316 000763538 000631665 D|006568996 024554992 +000000316 000767591 000651963 D|099321003 041774799 +000000316 000832052 000659159 D|064869354 048928130 +000000316 000867462 000667919 D|028212763 086245053 +000000316 000868105 000684592 D|097568635 049684245 +000000316 000873563 000725261 D|092663884 042081618 +000000316 000875453 000730154 D|080498511 082785340 +000000316 000891243 000798821 D|045935706 072526506 +000000316 000897121 000799930 D|082572537 076037364 +000000316 000904949 000827500 D|048444332 097122612 +000000316 000907459 000831028 D|075239043 002932734 +000000316 000911979 000849528 D|033243908 082882152 +000000316 000937362 000933161 D|009278734 013486512 +000000316 000994309 000942298 D|022378110 018046958 +000000316 000995194 000946866 D|029338582 029849962 +000000317 000012920 000013892 D|037076195 082926724 +000000317 000013906 000022841 D|097776763 022328873 +000000317 000039863 000030528 D|069012086 019183675 +000000317 000040063 000035582 D|033454521 055755817 +000000317 000087233 000047366 D|056823291 025430067 +000000317 000106081 000064357 D|089920766 044862461 +000000317 000130469 000069084 D|004441098 039887305 +000000317 000156196 000111427 D|046832967 020025858 +000000317 000197913 000126623 D|096769770 030668898 +000000317 000209605 000171387 D|065886402 057523301 +000000317 000211354 000190208 D|065894600 098371256 +000000317 000230101 000202442 D|078092413 035696900 +000000317 000245308 000249622 D|049345528 022146033 +000000317 000269742 000282284 D|090228249 011849882 +000000317 000292419 000286789 D|070664885 093076043 +000000317 000340007 000288987 D|030765803 069570651 +000000317 000375966 000360404 D|060567771 048252011 +000000317 000424733 000371182 D|010123107 006000246 +000000317 000439926 000379604 D|072976696 099173129 +000000317 000445131 000386646 D|094389443 048053154 +000000317 000449160 000387646 D|017337548 016714926 +000000317 000452889 000414798 D|013204323 018180385 +000000317 000477931 000420087 D|029005708 012573691 +000000317 000498206 000424141 D|033083532 074441770 +000000317 000512604 000431824 D|016066506 050541121 +000000317 000517055 000432654 D|000785712 086617594 +000000317 000522125 000448078 D|063657143 095804956 +000000317 000530740 000491058 D|063228525 009410532 +000000317 000539809 000493122 D|025188555 038502271 +000000317 000540874 000562984 D|045774375 017924286 +000000317 000543202 000576099 D|029850825 025313297 +000000317 000543775 000588981 D|047893048 041141129 +000000317 000562902 000592931 D|011767959 089053232 +000000317 000609521 000603200 D|045325665 016235562 +000000317 000616450 000608691 D|097938515 091409658 +000000317 000618184 000643575 D|051005591 054441807 +000000317 000626147 000680635 D|041773259 053542810 +000000317 000631400 000690950 D|081948661 038070819 +000000317 000681704 000709580 D|012432912 021685905 +000000317 000684379 000733733 D|064998246 024635801 +000000317 000774136 000747348 D|001606350 035583127 +000000317 000786261 000748086 D|003958739 017508102 +000000317 000840667 000755423 D|073423078 066452072 +000000317 000855305 000759653 D|007409598 052242042 +000000317 000885797 000825733 D|006034087 095052896 +000000317 000887500 000838274 D|096004658 010612302 +000000317 000895063 000906646 D|012454002 045796966 +000000317 000908684 000910663 D|013983139 026104916 +000000317 000957755 000928369 D|032632731 007178441 +000000317 000970250 000971876 D|086187693 051234513 +000000318 000044754 000002214 D|013329454 010176166 +000000318 000063121 000016897 D|001993592 050931936 +000000318 000106404 000030821 D|037589039 064999983 +000000318 000122750 000081453 D|092445385 084397294 +000000318 000265225 000120366 D|092096084 053191271 +000000318 000275995 000141804 D|054749036 023718261 +000000318 000318865 000151399 D|080551495 036904167 +000000318 000339660 000199542 D|057690166 099062212 +000000318 000341691 000238463 D|058080638 018571684 +000000318 000385850 000248068 D|009879414 041377184 +000000318 000387587 000277014 D|087095757 091101518 +000000318 000397564 000292836 D|076746290 044097746 +000000318 000407520 000308848 D|031001357 041955914 +000000318 000409872 000310326 D|024404815 032864160 +000000318 000442904 000329488 D|020562370 080196035 +000000318 000462513 000347175 D|051725848 081190508 +000000318 000462536 000347210 D|088384476 027417902 +000000318 000472821 000367789 D|099715004 083714177 +000000318 000491306 000373373 D|067248872 075799364 +000000318 000514607 000385226 D|086358482 097865791 +000000318 000533936 000460466 D|022766654 002426892 +000000318 000559903 000467268 D|067082593 094705113 +000000318 000568692 000483167 D|084313471 092760800 +000000318 000570172 000521162 D|074072336 012205778 +000000318 000574316 000531252 D|088116699 093418829 +000000318 000587116 000531885 D|040580429 025813641 +000000318 000604981 000541767 D|072756339 081206739 +000000318 000629111 000586041 D|090090150 007071875 +000000318 000641132 000599985 D|042152822 053912892 +000000318 000646688 000622739 D|084294607 006851815 +000000318 000654017 000635718 D|028552383 010497831 +000000318 000670796 000640506 D|063933622 018562598 +000000318 000680092 000640636 D|002721046 000877461 +000000318 000704566 000657460 D|010488684 059100797 +000000318 000722589 000658903 D|025370991 099541010 +000000318 000732056 000667687 D|040401766 013880784 +000000318 000734246 000687640 D|066653023 071745609 +000000318 000741793 000721370 D|054616949 005379073 +000000318 000747806 000781695 D|050451112 030718681 +000000318 000810514 000801932 D|005450784 032713132 +000000318 000817568 000805010 D|027582217 038302985 +000000318 000821997 000821778 D|046401156 009109015 +000000318 000834322 000902451 D|072631963 071836995 +000000318 000850219 000918224 D|027252052 043831219 +000000318 000859034 000931585 D|003710314 042815306 +000000318 000915379 000940172 D|088760786 052816756 +000000318 000924812 000964207 D|070541230 009514714 +000000318 000951424 000966711 D|084028336 012712264 +000000318 000957087 000986625 D|067701377 083691175 +000000318 000976197 000998754 D|022779587 083034572 +000000319 000009107 000097662 D|056576716 055780082 +000000319 000018312 000108315 D|093094243 092756773 +000000319 000026931 000129305 D|083854448 056228217 +000000319 000053767 000148137 D|097973741 088627864 +000000319 000057450 000148954 D|084858983 068114245 +000000319 000060661 000155205 D|003222971 011707207 +000000319 000068035 000171857 D|012633051 055606013 +000000319 000118173 000198259 D|017501035 016725300 +000000319 000126690 000200596 D|083798480 057912216 +000000319 000182883 000201899 D|034358368 026291722 +000000319 000247513 000213651 D|053091963 005298395 +000000319 000254427 000217466 D|024910834 047498595 +000000319 000265651 000222251 D|056940658 033659044 +000000319 000314555 000234850 D|054212307 078012056 +000000319 000352508 000297649 D|000948179 097377380 +000000319 000354712 000345201 D|011957471 014680549 +000000319 000355758 000353301 D|071295856 036486153 +000000319 000401760 000376810 D|061225160 076802507 +000000319 000425112 000397411 D|050504383 078988658 +000000319 000467678 000398474 D|019173871 084019076 +000000319 000475656 000411708 D|007800884 003988796 +000000319 000478085 000420954 D|037747826 037594777 +000000319 000484436 000431060 D|019540043 035114532 +000000319 000486591 000443750 D|080623532 041713412 +000000319 000494066 000483902 D|099079338 030684641 +000000319 000507474 000494065 D|044883449 035466483 +000000319 000538303 000522876 D|059492233 038794763 +000000319 000543508 000534452 D|015126630 073553135 +000000319 000604303 000542573 D|087092920 044156434 +000000319 000605480 000572922 D|034484242 044957199 +000000319 000613250 000619060 D|024944142 085134905 +000000319 000626934 000645009 D|054742338 004687070 +000000319 000641096 000655507 D|090697265 055515722 +000000319 000653244 000656338 D|069914620 079915754 +000000319 000661570 000675543 D|007482065 073207929 +000000319 000722387 000687966 D|022393729 014897742 +000000319 000750391 000755103 D|069499116 061271208 +000000319 000771277 000776048 D|051839281 002431314 +000000319 000788210 000831572 D|062147704 057094030 +000000319 000801001 000854129 D|013940410 044263080 +000000319 000801619 000856984 D|054689212 023412968 +000000319 000803412 000878961 D|045375444 057409811 +000000319 000828303 000894562 D|063860084 034628548 +000000319 000851057 000931901 D|012909477 098608528 +000000319 000865992 000944246 D|047396602 054684299 +000000319 000891932 000959353 D|026131304 014683087 +000000319 000920956 000959501 D|070637994 036054559 +000000319 000942395 000970879 D|061646108 015925838 +000000319 000956292 000983739 D|045003708 064246775 +000000319 000985542 000992729 D|043716324 055938237 +000000320 000001937 000030037 D|007429427 082954921 +000000320 000033649 000032751 D|097787699 082445192 +000000320 000054296 000046627 D|068576887 020445792 +000000320 000057541 000108777 D|085630661 016856282 +000000320 000195499 000117343 D|041348950 036664598 +000000320 000211386 000142376 D|052509021 035767354 +000000320 000214395 000154143 D|007266899 034551778 +000000320 000246784 000169963 D|061633372 019604290 +000000320 000247482 000170734 D|083391062 031022967 +000000320 000255652 000192519 D|084362427 026322276 +000000320 000284676 000205204 D|009743666 064621940 +000000320 000334499 000212396 D|005614511 070395952 +000000320 000338050 000257527 D|057838117 068777812 +000000320 000364799 000262057 D|027645751 037344336 +000000320 000365081 000292915 D|079365606 018049885 +000000320 000378411 000363893 D|063368823 081540223 +000000320 000385293 000365152 D|027898116 080800279 +000000320 000389744 000367888 D|050460350 045816514 +000000320 000410516 000369528 D|010112817 045665106 +000000320 000430206 000376326 D|088239063 060470262 +000000320 000443332 000405883 D|029245419 047796415 +000000320 000473965 000407665 D|025775473 031352795 +000000320 000485543 000442677 D|000352191 013436639 +000000320 000498163 000478841 D|073281905 052406905 +000000320 000525973 000493140 D|092057249 097080703 +000000320 000567651 000502650 D|043834117 036966319 +000000320 000570992 000507831 D|058467181 001922034 +000000320 000578581 000519857 D|080437663 005787284 +000000320 000579522 000551180 D|008591986 070129508 +000000320 000594549 000567488 D|076876537 008597177 +000000320 000604353 000570678 D|075006577 023095033 +000000320 000646638 000615342 D|087455662 014150889 +000000320 000717854 000634959 D|073411264 017398618 +000000320 000746617 000636110 D|030145520 068687511 +000000320 000796338 000650361 D|092050551 067243158 +000000320 000799795 000666482 D|090903922 025189857 +000000320 000822411 000669930 D|041142619 047615124 +000000320 000825004 000702415 D|083569507 010212312 +000000320 000827019 000708937 D|004840113 028917822 +000000320 000849699 000709036 D|046524708 038534351 +000000320 000879716 000813608 D|046372874 077546038 +000000320 000881002 000823528 D|075491983 042756494 +000000320 000890158 000837781 D|034381263 050963138 +000000320 000893842 000874720 D|001490460 093205333 +000000320 000908436 000888451 D|066837609 099319023 +000000320 000912438 000893627 D|025849353 061963056 +000000320 000926104 000894512 D|084166125 016340753 +000000320 000926722 000895666 D|019666325 052525117 +000000320 000953994 000964249 D|086377297 061385776 +000000320 000956364 000976178 D|034433929 047725326 +000000321 000038997 000006655 D|055329737 055455717 +000000321 000054943 000023815 D|009752128 033002410 +000000321 000100907 000042856 D|034738127 097201464 +000000321 000119222 000052028 D|022906879 019994510 +000000321 000153820 000071432 D|078061782 065764839 +000000321 000170916 000101624 D|066086270 088023654 +000000321 000180454 000117444 D|047783457 080066883 +000000321 000213164 000139146 D|049906023 085639849 +000000321 000234085 000147683 D|095373587 089527381 +000000321 000242328 000152896 D|021249768 083848674 +000000321 000267541 000202084 D|067361640 026256618 +000000321 000272910 000219941 D|081450045 014035268 +000000321 000300479 000223835 D|023361707 020825126 +000000321 000303621 000239192 D|064558229 003016405 +000000321 000309621 000242920 D|060035731 059069025 +000000321 000317638 000253770 D|044635751 051360478 +000000321 000369490 000261192 D|012286471 071521430 +000000321 000392018 000294000 D|039562843 052221120 +000000321 000393389 000325675 D|019793471 096057047 +000000321 000412604 000402745 D|051281078 048571870 +000000321 000450867 000402767 D|007410226 031422921 +000000321 000486417 000406379 D|042544655 021879439 +000000321 000492173 000413595 D|081681794 004338330 +000000321 000513107 000434148 D|060376784 026204831 +000000321 000513457 000446618 D|085915927 062227157 +000000321 000518477 000467949 D|053182750 024625367 +000000321 000565341 000508037 D|061971508 072222222 +000000321 000589593 000516447 D|017662964 041658470 +000000321 000592094 000530022 D|008417525 045928638 +000000321 000617864 000541298 D|085039832 005000043 +000000321 000623367 000587563 D|019176469 022182420 +000000321 000629552 000596606 D|043991004 097012514 +000000321 000629885 000618173 D|002995266 055563990 +000000321 000640323 000624687 D|051030937 096432593 +000000321 000640697 000626580 D|049884515 050245920 +000000321 000653765 000630270 D|047806540 036826755 +000000321 000679905 000692059 D|082624705 002833415 +000000321 000687782 000700064 D|015830237 026462279 +000000321 000693154 000748163 D|078523004 047674212 +000000321 000710156 000818700 D|074293427 067047718 +000000321 000712889 000828071 D|013044600 062831180 +000000321 000774262 000831099 D|017258344 097305345 +000000321 000833319 000838551 D|078931007 017796383 +000000321 000877661 000883743 D|032135505 051179436 +000000321 000897846 000900487 D|034693951 099046610 +000000321 000951882 000926290 D|019823193 022532840 +000000321 000958903 000959197 D|077949284 069816234 +000000321 000960061 000980566 D|040798496 031595903 +000000321 000997017 000987039 D|015270770 002028340 +000000321 000997515 000989475 D|092353482 033932041 +000000322 000011793 000069264 D|001234286 042113059 +000000322 000031710 000083906 D|003811120 019423400 +000000322 000098462 000106969 D|078398277 011444501 +000000322 000123617 000120946 D|068498412 099025272 +000000322 000143220 000145112 D|067054268 069879709 +000000322 000149104 000180828 D|012850343 085784550 +000000322 000220181 000184475 D|095402569 051793548 +000000322 000221196 000207269 D|041057450 051622008 +000000322 000250702 000215146 D|013797772 055349548 +000000322 000271502 000284225 D|090727063 004577136 +000000322 000283335 000288105 D|044060411 088598923 +000000322 000319644 000289672 D|054066563 088212333 +000000322 000326271 000332258 D|077691991 079127653 +000000322 000333858 000351126 D|046162818 013800968 +000000322 000344494 000360933 D|087067675 002279655 +000000322 000388705 000366074 D|043559582 075115634 +000000322 000436802 000379980 D|017898746 027738167 +000000322 000442029 000402854 D|037904874 057306555 +000000322 000444360 000417106 D|073615885 094932790 +000000322 000464985 000426131 D|099645111 060568643 +000000322 000471857 000486841 D|048611189 063434168 +000000322 000497647 000506975 D|004193740 047250177 +000000322 000504327 000534450 D|061509062 066711844 +000000322 000507045 000547135 D|069706358 099267003 +000000322 000534216 000567660 D|002041729 066337819 +000000322 000549824 000575191 D|036763450 093029083 +000000322 000556395 000605966 D|054329720 098027952 +000000322 000598623 000640263 D|039297869 050195992 +000000322 000611641 000646582 D|035884637 005016158 +000000322 000616305 000660018 D|094876415 016178290 +000000322 000651807 000664124 D|069294797 055959226 +000000322 000661212 000675918 D|012318868 071138284 +000000322 000667667 000679012 D|053185025 096577036 +000000322 000682654 000689426 D|008315097 046305917 +000000322 000702547 000691281 D|037040444 046110935 +000000322 000777806 000706359 D|081276534 002445064 +000000322 000781956 000713322 D|024915233 072075222 +000000322 000789498 000713846 D|026825966 030344540 +000000322 000804510 000729023 D|040022685 043192998 +000000322 000804667 000736252 D|047742967 006158354 +000000322 000850764 000755423 D|025787958 005545461 +000000322 000885095 000766800 D|001099178 005724585 +000000322 000914235 000810066 D|021329896 030156774 +000000322 000923794 000885413 D|081501131 008449650 +000000322 000926150 000891062 D|050918001 056577895 +000000322 000943506 000897575 D|029488529 050350388 +000000322 000953775 000932990 D|067252787 011273695 +000000322 000986140 000939563 D|052170920 042253761 +000000322 000991170 000968174 D|022693627 000929469 +000000322 000997077 000989520 D|032527903 091902779 +000000323 000019225 000005128 D|093799370 028429290 +000000323 000081853 000021040 D|015634999 032241957 +000000323 000090844 000029139 D|008872283 061109531 +000000323 000092881 000042473 D|055799348 076145744 +000000323 000105058 000069602 D|008480190 060518075 +000000323 000129944 000101149 D|007779021 018870375 +000000323 000196940 000123787 D|091748268 077614430 +000000323 000199294 000137568 D|020459341 032937447 +000000323 000200293 000159076 D|055210565 010539354 +000000323 000218547 000169214 D|027188374 082245479 +000000323 000228363 000180252 D|036392863 094069082 +000000323 000294832 000194923 D|009170015 063864452 +000000323 000315493 000195965 D|063409401 080849802 +000000323 000339063 000197832 D|057490747 060128177 +000000323 000339636 000199457 D|015359027 054437377 +000000323 000345956 000245480 D|076864199 014633546 +000000323 000461453 000288219 D|047072700 028061113 +000000323 000498464 000293781 D|033581876 052460699 +000000323 000504494 000304328 D|020739513 091464457 +000000323 000505814 000318266 D|068129863 094880734 +000000323 000535783 000334764 D|021081138 072097252 +000000323 000546966 000344548 D|056095950 086074784 +000000323 000551111 000406473 D|024010267 014333183 +000000323 000563667 000459408 D|047297556 089419287 +000000323 000565823 000465251 D|082389550 010488043 +000000323 000569748 000502988 D|044980136 052480570 +000000323 000604775 000506912 D|062289715 080697921 +000000323 000611903 000518561 D|099019020 063195406 +000000323 000638790 000523351 D|040036946 048180948 +000000323 000649133 000528454 D|017711597 073447495 +000000323 000668993 000584488 D|095488166 079620299 +000000323 000699353 000621861 D|066863831 024839889 +000000323 000700848 000638088 D|091132989 008460040 +000000323 000702456 000654365 D|010711227 051758538 +000000323 000749351 000655969 D|017304700 065427050 +000000323 000761330 000705317 D|054347537 001611946 +000000323 000783111 000721500 D|019790075 019894427 +000000323 000790558 000776842 D|008779212 049196272 +000000323 000810919 000782222 D|041318079 008504352 +000000323 000838552 000810163 D|072157619 065570563 +000000323 000865453 000847851 D|074178064 055722606 +000000323 000892333 000874353 D|094070889 008775175 +000000323 000892440 000882733 D|001987740 075015203 +000000323 000915048 000894592 D|032946676 029841591 +000000323 000928628 000896147 D|059322616 086753550 +000000323 000943742 000918968 D|055624791 065662244 +000000323 000954173 000922082 D|057061116 017449803 +000000323 000983002 000936641 D|084494115 070121463 +000000323 000989932 000978234 D|040524228 061673191 +000000323 000994130 000985337 D|030146231 028234765 +000000324 000009819 000003510 D|079952341 063569465 +000000324 000029553 000010559 D|058541685 070160134 +000000324 000046403 000016322 D|030070076 016137804 +000000324 000047609 000029103 D|081966528 091940653 +000000324 000078609 000066933 D|080310602 012668405 +000000324 000101777 000088067 D|083734428 081656101 +000000324 000155151 000088212 D|009326910 069057738 +000000324 000186975 000131467 D|042846054 091482317 +000000324 000198007 000138057 D|047939134 087110578 +000000324 000215911 000150671 D|037011033 096699850 +000000324 000226658 000171187 D|063146193 020609221 +000000324 000249638 000184731 D|010816474 027264523 +000000324 000252947 000185750 D|023876789 028832662 +000000324 000307078 000192162 D|030542290 038145848 +000000324 000314674 000212289 D|078371255 079417212 +000000324 000336733 000236313 D|076595960 000415272 +000000324 000366580 000239853 D|003303930 082436489 +000000324 000371980 000248471 D|077089470 099854675 +000000324 000402580 000254462 D|078395186 067027837 +000000324 000407387 000261329 D|019128153 091010393 +000000324 000445722 000265073 D|058811193 063820113 +000000324 000451389 000270313 D|076351611 060779226 +000000324 000460397 000318957 D|044804429 003309741 +000000324 000503082 000395930 D|013488235 058058298 +000000324 000507293 000413553 D|073457116 039078979 +000000324 000509518 000463698 D|040523662 018023282 +000000324 000526366 000475514 D|053063498 062627955 +000000324 000532610 000484134 D|049804473 005609030 +000000324 000568094 000487071 D|016333269 097928500 +000000324 000575220 000580478 D|014594745 010436117 +000000324 000602358 000595007 D|096279005 088201820 +000000324 000612007 000624145 D|032009228 017847124 +000000324 000639758 000633508 D|004829726 083070607 +000000324 000653244 000677343 D|044278059 064933950 +000000324 000660082 000719496 D|099585625 092898405 +000000324 000671381 000764224 D|069344480 083976850 +000000324 000671433 000765509 D|068749270 014106277 +000000324 000707591 000772493 D|081821932 028402755 +000000324 000715287 000835212 D|015018901 078815131 +000000324 000747791 000838487 D|090278127 082176705 +000000324 000759377 000871398 D|035351890 002400019 +000000324 000788808 000872387 D|033153902 045236990 +000000324 000803535 000885155 D|075820671 002466562 +000000324 000816658 000903958 D|017418039 005632011 +000000324 000819978 000933399 D|036839260 079888566 +000000324 000841222 000953406 D|060502203 063242256 +000000324 000857455 000955444 D|099922391 086742178 +000000324 000907522 000965542 D|017939014 075444460 +000000324 000926748 000978052 D|071527929 015365152 +000000324 000943299 000998614 D|038029183 014639615 +000000325 000002110 000133379 D|041669700 044123812 +000000325 000008659 000151353 D|043354756 038498780 +000000325 000029301 000159827 D|093533582 064434049 +000000325 000029921 000288227 D|071980013 043309063 +000000325 000079387 000290500 D|060052186 049935228 +000000325 000081398 000301804 D|091727795 049596931 +000000325 000109009 000306661 D|096812481 047368706 +000000325 000113093 000338382 D|023900540 075565269 +000000325 000199276 000359125 D|038141949 031673207 +000000325 000229033 000366576 D|056901614 093724881 +000000325 000245544 000380599 D|051060855 040146416 +000000325 000246431 000383570 D|092421042 082025102 +000000325 000250847 000388815 D|067365719 043745218 +000000325 000267039 000399456 D|057121943 049872193 +000000325 000293576 000401705 D|025321979 096450148 +000000325 000306756 000416013 D|032770353 090885026 +000000325 000330695 000425594 D|004218841 062537214 +000000325 000342868 000437056 D|023412610 038483063 +000000325 000358972 000442854 D|005602640 010781373 +000000325 000383986 000459369 D|055668735 052136415 +000000325 000417429 000464607 D|050195331 079327219 +000000325 000428274 000479924 D|090438579 044392503 +000000325 000455951 000483074 D|090052411 079324192 +000000325 000483273 000500255 D|047433095 029074180 +000000325 000491092 000538846 D|020512173 048384918 +000000325 000511744 000543230 D|061642189 076254726 +000000325 000516663 000543520 D|088577471 023086071 +000000325 000598849 000547754 D|055625493 090111968 +000000325 000606984 000556273 D|050085242 091468369 +000000325 000612448 000559607 D|077171788 003706175 +000000325 000736262 000568676 D|040788194 039415980 +000000325 000738916 000573056 D|033789720 012231312 +000000325 000760733 000573289 D|085261827 075765003 +000000325 000785454 000601246 D|095193002 038574285 +000000325 000798438 000603867 D|072405468 041295392 +000000325 000806550 000614989 D|015073447 021267274 +000000325 000819955 000624404 D|016799956 013778040 +000000325 000820086 000652823 D|086020119 090690990 +000000325 000827958 000660387 D|078209559 007207907 +000000325 000829478 000690340 D|025172383 016388922 +000000325 000831083 000729005 D|029159186 099764375 +000000325 000839780 000787466 D|007898718 029636910 +000000325 000864495 000825239 D|042611803 025089978 +000000325 000871307 000859004 D|023702571 066535486 +000000325 000892140 000906300 D|078308775 088236041 +000000325 000894136 000927717 D|054405697 018857115 +000000325 000919203 000935732 D|080422023 083154216 +000000325 000939252 000943579 D|095699811 002619909 +000000325 000943536 000963112 D|028959170 080748285 +000000325 000961735 000999811 D|075442576 012644248 +000000326 000049043 000025744 D|088465697 078698858 +000000326 000069397 000037137 D|039649526 085852257 +000000326 000092941 000050070 D|071900437 039079504 +000000326 000098542 000058328 D|073120104 046385431 +000000326 000127096 000105692 D|030579433 075498950 +000000326 000150179 000126416 D|048945930 051056090 +000000326 000163514 000152027 D|052915664 006450324 +000000326 000164922 000152865 D|077964443 001812387 +000000326 000223645 000253926 D|002852712 079438007 +000000326 000276549 000256991 D|072107477 018587842 +000000326 000278124 000261039 D|049774612 028529547 +000000326 000282693 000279345 D|078765568 052511786 +000000326 000298349 000300845 D|065255123 007110356 +000000326 000306860 000307818 D|094643922 089797603 +000000326 000307976 000319403 D|063392166 021383815 +000000326 000308588 000329668 D|028205972 003844357 +000000326 000330437 000350350 D|020856257 088532692 +000000326 000337026 000353287 D|077174397 046028770 +000000326 000349838 000372692 D|019590672 078479223 +000000326 000351926 000373061 D|086317840 030358400 +000000326 000353758 000456133 D|075378430 078500825 +000000326 000379412 000459757 D|093829154 049806423 +000000326 000398863 000481847 D|028085678 027078426 +000000326 000409055 000493209 D|016090620 029944654 +000000326 000463318 000531526 D|093381302 025804280 +000000326 000481208 000568198 D|049588622 085552893 +000000326 000519594 000589192 D|077925623 039716730 +000000326 000552258 000618885 D|085950943 052294977 +000000326 000568275 000624103 D|068354482 015821650 +000000326 000576899 000634466 D|060645336 001588009 +000000326 000583926 000652639 D|014829941 075126010 +000000326 000630081 000656105 D|072228955 060619661 +000000326 000640580 000662065 D|055766371 066620313 +000000326 000645788 000706335 D|032512994 068408414 +000000326 000703780 000738008 D|093622421 047634493 +000000326 000718074 000801153 D|098951032 065593514 +000000326 000746721 000815375 D|069159477 076849091 +000000326 000766766 000820105 D|006225677 005555113 +000000326 000809710 000824177 D|011877414 043842766 +000000326 000813914 000824972 D|093073844 094432146 +000000326 000818163 000854242 D|053266053 097150834 +000000326 000832158 000856030 D|070438783 093058294 +000000326 000874122 000897969 D|066090141 064564152 +000000326 000880898 000913842 D|019024910 050967552 +000000326 000888420 000920946 D|027136168 043940074 +000000326 000896162 000933179 D|004856829 091369238 +000000326 000934766 000939344 D|004746936 088937132 +000000326 000963232 000980708 D|062044331 021094262 +000000326 000975921 000987376 D|005757665 064058731 +000000326 000997708 000994606 D|048688992 038234147 +000000327 000015568 000005316 D|085230575 087727246 +000000327 000033719 000035316 D|093806698 043687966 +000000327 000049662 000036483 D|025483845 009679055 +000000327 000051939 000038510 D|074933527 029993857 +000000327 000061534 000069361 D|040993805 038726108 +000000327 000069011 000088851 D|022890449 027858480 +000000327 000077853 000105136 D|059620718 042163964 +000000327 000078077 000140226 D|009520798 091961470 +000000327 000084975 000144299 D|014810148 063780041 +000000327 000092266 000184340 D|055674447 030005565 +000000327 000114632 000240135 D|046203181 022659349 +000000327 000124721 000308074 D|000447654 091898276 +000000327 000154123 000315573 D|054224994 086782208 +000000327 000203529 000318596 D|050479108 099542090 +000000327 000226966 000322757 D|064146169 049845783 +000000327 000258889 000362240 D|026016457 002359700 +000000327 000291418 000381127 D|051777909 004223534 +000000327 000292761 000388495 D|086266342 072318296 +000000327 000325531 000501826 D|025402616 027165314 +000000327 000342678 000511106 D|027397093 084000870 +000000327 000343272 000518277 D|087469123 090488869 +000000327 000349331 000521195 D|010875541 078807237 +000000327 000367442 000521674 D|082410170 033550291 +000000327 000384789 000537641 D|073312422 092808493 +000000327 000413799 000538156 D|046546223 075809506 +000000327 000425886 000563383 D|025432164 060854696 +000000327 000433881 000571862 D|023527583 046838121 +000000327 000503063 000587450 D|008045544 079268868 +000000327 000508046 000596317 D|067235744 095705124 +000000327 000514180 000626241 D|059049640 015374855 +000000327 000555728 000640150 D|033330311 095786478 +000000327 000562581 000643234 D|051932937 094542257 +000000327 000587152 000649498 D|058290572 079226885 +000000327 000600185 000657157 D|019701316 040005254 +000000327 000610977 000660868 D|004458838 068306058 +000000327 000624414 000673377 D|009517651 093076932 +000000327 000643391 000680470 D|003528685 010037858 +000000327 000726972 000685946 D|002109359 091917997 +000000327 000737513 000686719 D|074999720 027822168 +000000327 000783026 000785682 D|043723674 070188273 +000000327 000783382 000796887 D|056060749 026581500 +000000327 000814985 000845659 D|033103859 046846684 +000000327 000839167 000868865 D|043967587 008287854 +000000327 000847215 000869971 D|086815880 060280490 +000000327 000866050 000905923 D|045848826 018116207 +000000327 000903731 000929552 D|027478327 090719184 +000000327 000907283 000935797 D|078577601 090832995 +000000327 000912266 000936729 D|097055685 051823564 +000000327 000955341 000961353 D|083601036 013796409 +000000327 000972976 000976755 D|079622679 077571139 +000000328 000005417 000003044 D|021440343 084736859 +000000328 000012821 000041215 D|046131715 096753300 +000000328 000024003 000056213 D|035459338 009991786 +000000328 000083487 000061094 D|068430810 067021522 +000000328 000090773 000061622 D|089549681 019705691 +000000328 000103065 000083266 D|089786428 021610848 +000000328 000115032 000096227 D|088568835 015754169 +000000328 000139063 000132426 D|083428162 051012952 +000000328 000160159 000134297 D|062278780 043226648 +000000328 000171884 000150856 D|015656002 094942272 +000000328 000172770 000171416 D|044118950 042709666 +000000328 000231143 000180972 D|015880742 043029208 +000000328 000246827 000198126 D|075859638 068569962 +000000328 000250681 000218781 D|006500925 058849803 +000000328 000282408 000295631 D|058079902 069086150 +000000328 000348784 000328670 D|024333118 013433311 +000000328 000368822 000333224 D|064405293 003620073 +000000328 000369699 000338110 D|002633069 046141773 +000000328 000393552 000339028 D|016249420 011723267 +000000328 000418268 000349235 D|032056446 052834151 +000000328 000429297 000388875 D|097623217 039737020 +000000328 000441410 000394464 D|035888347 096119367 +000000328 000444211 000415068 D|092190678 024235155 +000000328 000452296 000418351 D|074273055 006159055 +000000328 000471972 000437683 D|098068233 018289603 +000000328 000486063 000479660 D|086346819 034190126 +000000328 000510290 000487625 D|015754871 063379081 +000000328 000535384 000513567 D|023298472 088348332 +000000328 000556983 000514916 D|001156505 066509157 +000000328 000561389 000525887 D|094967972 085096189 +000000328 000564001 000538515 D|042655234 085185503 +000000328 000589941 000542431 D|040402367 015292307 +000000328 000590421 000551583 D|089862537 046049379 +000000328 000608016 000555894 D|071847324 030021894 +000000328 000608051 000606208 D|001877093 044703700 +000000328 000617847 000610434 D|062590653 042954889 +000000328 000629471 000667205 D|029352765 060758077 +000000328 000633405 000679575 D|032118915 032647820 +000000328 000660740 000730386 D|003248933 085360837 +000000328 000677721 000746213 D|094898459 067215651 +000000328 000702210 000753752 D|039750804 000140906 +000000328 000707903 000767925 D|095904484 045459523 +000000328 000713380 000801651 D|051467997 078233899 +000000328 000727636 000810133 D|046652980 035029254 +000000328 000775719 000829216 D|053104740 026335011 +000000328 000857361 000870524 D|038248731 014029084 +000000328 000867915 000902432 D|099440961 042923851 +000000328 000886475 000908947 D|061177521 075779774 +000000328 000901241 000938288 D|075800707 096907590 +000000328 000981454 000946800 D|038788837 062181985 +000000329 000007911 000014442 D|052350739 063932678 +000000329 000051746 000025555 D|088613425 022617333 +000000329 000059125 000048361 D|093853122 013365040 +000000329 000067550 000060291 D|094804509 017174182 +000000329 000097287 000089469 D|058406447 092950189 +000000329 000097791 000090006 D|063623142 035929733 +000000329 000132461 000098007 D|075345706 008731578 +000000329 000138220 000101344 D|041077164 042390195 +000000329 000158077 000145671 D|003737926 040701412 +000000329 000170642 000200512 D|015903937 032833617 +000000329 000176360 000217670 D|067312886 065919770 +000000329 000207225 000235641 D|072098804 052946186 +000000329 000213459 000247028 D|020916544 008685592 +000000329 000223624 000250831 D|072183159 065318453 +000000329 000248109 000279224 D|047514298 042681005 +000000329 000248469 000291603 D|013797342 028710902 +000000329 000274286 000302902 D|011292883 076100381 +000000329 000280803 000312530 D|039505699 028637203 +000000329 000299276 000332335 D|029268742 048169610 +000000329 000299871 000370185 D|071987654 098082265 +000000329 000341278 000396037 D|032508233 075367172 +000000329 000347397 000399462 D|082051396 091300169 +000000329 000354110 000418000 D|060922995 035286695 +000000329 000415495 000430575 D|048351735 027758470 +000000329 000430071 000439763 D|096965133 050942016 +000000329 000440504 000494779 D|082589812 006031012 +000000329 000476368 000518636 D|013636038 023059484 +000000329 000482016 000519939 D|059879529 057961924 +000000329 000501559 000521527 D|044608049 098915706 +000000329 000523786 000555772 D|012067119 034566367 +000000329 000564163 000643867 D|096604884 093092423 +000000329 000575879 000675178 D|017498569 099149648 +000000329 000587538 000676529 D|087467228 012734143 +000000329 000597775 000682284 D|073570892 031852971 +000000329 000599124 000694122 D|081304189 091485495 +000000329 000610148 000700558 D|070541033 063713664 +000000329 000626692 000718534 D|003351027 004281426 +000000329 000638017 000719991 D|018591784 028713052 +000000329 000658526 000786863 D|048672676 050219217 +000000329 000660202 000848847 D|021232780 061558508 +000000329 000667198 000863539 D|087175957 022426527 +000000329 000699176 000863740 D|051329689 080968054 +000000329 000725307 000882052 D|045206279 012010279 +000000329 000744040 000892622 D|000651920 050618788 +000000329 000767465 000925943 D|069346475 013022718 +000000329 000823137 000930215 D|014824660 031383897 +000000329 000866355 000930902 D|082260938 008731951 +000000329 000868152 000951136 D|017592526 043825137 +000000329 000876408 000975577 D|047804512 071079408 +000000329 000898244 000991544 D|032802238 099171871 +000000330 000021174 000012616 D|030710939 086474124 +000000330 000050719 000020095 D|065951366 077320560 +000000330 000054487 000078951 D|050147194 037891404 +000000330 000079769 000087806 D|097155278 056885395 +000000330 000081209 000111788 D|090464981 095119997 +000000330 000104962 000180253 D|043264136 009982097 +000000330 000116950 000193468 D|097527201 083746197 +000000330 000137091 000196837 D|002653679 038218154 +000000330 000140918 000202890 D|055098901 059059356 +000000330 000187042 000256796 D|086684915 087181630 +000000330 000204102 000267747 D|056468689 017562899 +000000330 000209143 000292875 D|011994328 039241818 +000000330 000246433 000337809 D|010397401 065256189 +000000330 000276527 000359282 D|022909902 093963821 +000000330 000300780 000369888 D|006964120 045856025 +000000330 000310551 000392503 D|067730683 053452884 +000000330 000352935 000405097 D|019919920 097766911 +000000330 000371447 000445131 D|046683288 068903574 +000000330 000385147 000460099 D|086502598 047397555 +000000330 000385311 000476869 D|052578763 068099729 +000000330 000410912 000482089 D|056148661 052891329 +000000330 000425908 000521914 D|014822623 013567548 +000000330 000455094 000521990 D|045511040 013077858 +000000330 000470941 000527743 D|015600928 052915002 +000000330 000491369 000532436 D|091523682 051470493 +000000330 000539870 000536772 D|095490668 061351881 +000000330 000654489 000550204 D|043049939 039887796 +000000330 000656613 000591074 D|094668133 008341014 +000000330 000673121 000592546 D|066686367 008025000 +000000330 000685800 000594271 D|045263588 072533021 +000000330 000687078 000631386 D|027425739 031955979 +000000330 000688057 000663168 D|077811793 099598858 +000000330 000694280 000720646 D|060927074 077143506 +000000330 000708383 000731697 D|023352661 070712768 +000000330 000727374 000770941 D|012876076 084235840 +000000330 000727380 000786503 D|007020353 090261181 +000000330 000729969 000809338 D|014283089 058003217 +000000330 000749467 000817895 D|034236659 038238525 +000000330 000760429 000818513 D|020505784 081282757 +000000330 000784907 000861695 D|046868554 017422011 +000000330 000791099 000884762 D|084502897 079734300 +000000330 000807404 000890090 D|072191523 092038373 +000000330 000823177 000891570 D|069300828 091118622 +000000330 000830165 000904807 D|002948540 033839991 +000000330 000830696 000912995 D|016183375 010612484 +000000330 000845275 000918697 D|049285927 040134737 +000000330 000898504 000959429 D|082251464 076751068 +000000330 000902963 000959552 D|046567189 013131567 +000000330 000957061 000967093 D|045731725 083670827 +000000330 000992212 000973333 D|008546974 005002287 +000000331 000063938 000026100 D|029718719 029314697 +000000331 000066541 000054272 D|041964611 028549377 +000000331 000130314 000062977 D|030850976 038208126 +000000331 000152997 000064022 D|041445742 062767566 +000000331 000208079 000084867 D|090443098 045501354 +000000331 000222885 000131999 D|002842141 075927266 +000000331 000225759 000138498 D|088325092 030160548 +000000331 000226992 000229787 D|007487395 019766707 +000000331 000236934 000234282 D|056141360 001128750 +000000331 000248068 000243699 D|040844067 043274977 +000000331 000277680 000245997 D|034051264 061580883 +000000331 000296616 000281319 D|072098544 036065837 +000000331 000297422 000321324 D|041465679 075593881 +000000331 000322462 000332482 D|021965960 027922509 +000000331 000330287 000358528 D|069035508 075609189 +000000331 000345933 000362703 D|063408258 070573086 +000000331 000347985 000389616 D|095001520 057668190 +000000331 000371821 000424678 D|041125325 014380340 +000000331 000374176 000429685 D|024549252 070809082 +000000331 000377412 000429727 D|083228494 030902246 +000000331 000381602 000450379 D|087075536 019659022 +000000331 000388644 000455927 D|036721180 040352451 +000000331 000461197 000467550 D|025136339 016892522 +000000331 000470652 000499347 D|071310480 068370031 +000000331 000471128 000507698 D|081218392 004305324 +000000331 000477290 000514088 D|032570530 072165518 +000000331 000488141 000539767 D|091954436 072547207 +000000331 000496991 000544969 D|011825978 004094843 +000000331 000499146 000566115 D|078267576 060678635 +000000331 000506583 000585046 D|065028295 012222159 +000000331 000597373 000608992 D|085244614 045916780 +000000331 000647995 000624470 D|022318864 094951080 +000000331 000721490 000627836 D|081276382 022460451 +000000331 000751221 000630478 D|062554125 001994085 +000000331 000802019 000677670 D|070097923 049916665 +000000331 000804755 000683416 D|096687966 064820152 +000000331 000808977 000696776 D|034907018 076369685 +000000331 000848155 000743518 D|031341341 005956183 +000000331 000858839 000756455 D|044810790 038148678 +000000331 000869097 000764788 D|048840823 082023685 +000000331 000893519 000795043 D|035347251 070495001 +000000331 000913226 000815979 D|002150891 099585445 +000000331 000936255 000825409 D|049387421 021754073 +000000331 000936543 000849981 D|062939125 036088341 +000000331 000961466 000858908 D|054045746 039755634 +000000331 000967737 000870748 D|085152373 050165112 +000000331 000977395 000929703 D|037423008 086212367 +000000331 000987745 000973523 D|020916835 057987134 +000000331 000990079 000984004 D|061558149 037974691 +000000331 000994970 000993513 D|068293563 066216618 +000000332 000021788 000028741 D|003037452 073960973 +000000332 000044069 000030649 D|070109004 001473393 +000000332 000068172 000034913 D|039232817 028550679 +000000332 000114443 000056351 D|032098380 074484744 +000000332 000115161 000123000 D|006540127 010649074 +000000332 000161578 000129055 D|010075629 091739083 +000000332 000166434 000130533 D|037472383 046949720 +000000332 000221676 000143026 D|054627636 068654948 +000000332 000230433 000159614 D|042598880 013890197 +000000332 000250905 000220031 D|033592851 098740156 +000000332 000266777 000220257 D|092001831 007331813 +000000332 000298533 000279778 D|053819430 077723805 +000000332 000323872 000313438 D|096798744 010086615 +000000332 000327157 000370764 D|072225928 026138762 +000000332 000351791 000388530 D|066168281 058354516 +000000332 000357839 000425254 D|094837951 085421633 +000000332 000394465 000507530 D|048463223 051522436 +000000332 000427765 000509706 D|025561754 023020106 +000000332 000434249 000520044 D|037011333 015034660 +000000332 000438535 000523110 D|093416807 053804016 +000000332 000467389 000537874 D|008538099 086433858 +000000332 000470992 000542045 D|030620391 076129270 +000000332 000483746 000561603 D|041698085 067199112 +000000332 000494795 000564504 D|098075704 027250026 +000000332 000504876 000568025 D|075356110 047768808 +000000332 000541734 000588618 D|084930353 030090525 +000000332 000556105 000602805 D|014390414 023108104 +000000332 000557782 000604274 D|074534418 060226455 +000000332 000588402 000617752 D|093361071 068125895 +000000332 000600042 000621400 D|037325198 084249990 +000000332 000600150 000621685 D|080470458 044571608 +000000332 000633705 000678490 D|001986637 032903954 +000000332 000662351 000704300 D|074599623 058195362 +000000332 000702936 000752608 D|069240996 095242987 +000000332 000721699 000775056 D|074485753 099948084 +000000332 000742580 000812401 D|080650305 040586950 +000000332 000752528 000819076 D|092334075 046998557 +000000332 000765005 000821851 D|087495391 002035447 +000000332 000814250 000830985 D|074319358 084971435 +000000332 000822582 000846060 D|056111731 043203700 +000000332 000828908 000865964 D|064425545 079614647 +000000332 000841573 000866482 D|034266972 048776716 +000000332 000848480 000866509 D|040451649 006555666 +000000332 000856328 000893178 D|079268379 099331463 +000000332 000886958 000909365 D|063413566 094291960 +000000332 000921369 000909478 D|066126985 053048890 +000000332 000937600 000922131 D|041424425 018529090 +000000332 000971931 000953313 D|054396362 090662804 +000000332 000972897 000966072 D|078292387 033280209 +000000332 000990459 000987603 D|059636495 030236471 +000000333 000004460 000054475 D|072785582 019391293 +000000333 000027461 000112664 D|078032486 072574972 +000000333 000048523 000151718 D|019026176 032344255 +000000333 000086316 000153237 D|032959401 048566079 +000000333 000093172 000181193 D|078755635 031481675 +000000333 000099763 000187586 D|085109326 039572533 +000000333 000113312 000225009 D|032905548 013822263 +000000333 000152035 000262988 D|076412665 092208254 +000000333 000172035 000269720 D|035229183 041464779 +000000333 000181154 000277895 D|028886214 081376354 +000000333 000206990 000287397 D|077946324 018844815 +000000333 000219386 000302305 D|033580737 038790164 +000000333 000239227 000312590 D|095385444 036515006 +000000333 000243601 000353377 D|078915732 081490414 +000000333 000362000 000354594 D|053976722 028031298 +000000333 000372290 000367422 D|017819647 042348368 +000000333 000384770 000387709 D|051981938 049182365 +000000333 000399118 000395097 D|075230123 007643579 +000000333 000409527 000427548 D|046628234 079639621 +000000333 000413547 000477349 D|059815658 047480260 +000000333 000421980 000497294 D|055416358 033911663 +000000333 000431772 000518633 D|052952620 065382378 +000000333 000458473 000549843 D|016884785 063170428 +000000333 000461832 000552534 D|025274398 032860340 +000000333 000471043 000582897 D|006066590 078965046 +000000333 000481647 000588032 D|094207241 025980377 +000000333 000500932 000629487 D|042170406 091718808 +000000333 000502973 000655448 D|007389923 001426002 +000000333 000503310 000663167 D|010217602 022497807 +000000333 000526930 000668771 D|072227537 018185877 +000000333 000548827 000697606 D|053183997 033970132 +000000333 000568233 000726813 D|024039911 047434841 +000000333 000578715 000754415 D|057394887 094584235 +000000333 000617782 000754572 D|085990346 061960478 +000000333 000655391 000775338 D|031575376 038878463 +000000333 000699415 000776323 D|010697051 096260013 +000000333 000701676 000776444 D|063012636 045652448 +000000333 000728736 000802130 D|027827282 093266263 +000000333 000750796 000802281 D|041585238 090618899 +000000333 000789965 000807886 D|004274815 000761728 +000000333 000820126 000809123 D|090937525 095397758 +000000333 000846853 000820218 D|096333736 055336397 +000000333 000855309 000846917 D|033692648 061533079 +000000333 000860463 000851220 D|088306139 093675301 +000000333 000866826 000856408 D|020553028 099383630 +000000333 000887151 000900360 D|066413110 079473221 +000000333 000971747 000908521 D|043701039 053662200 +000000333 000979916 000921596 D|091942268 095451724 +000000333 000990201 000962932 D|092602143 060233583 +000000333 000990960 000983444 D|069971925 027463120 +000000334 000031798 000008009 D|059242183 025508991 +000000334 000032900 000034415 D|090092514 049833360 +000000334 000042152 000080077 D|061654449 075269642 +000000334 000047700 000096998 D|035883531 004471087 +000000334 000058549 000101331 D|035948021 093902236 +000000334 000062306 000102319 D|038235830 025724835 +000000334 000073348 000111377 D|003095094 061776448 +000000334 000074686 000114251 D|048515071 039249138 +000000334 000095847 000131549 D|056714708 049302211 +000000334 000098908 000133330 D|081207573 066403420 +000000334 000132141 000148768 D|088239607 021514442 +000000334 000156679 000164190 D|079528398 057194329 +000000334 000165364 000262338 D|058008315 069007942 +000000334 000193319 000273532 D|073804196 042678567 +000000334 000198512 000274440 D|057011297 068359701 +000000334 000264514 000280603 D|006245709 045812078 +000000334 000273531 000326243 D|013298551 028890161 +000000334 000303722 000332186 D|043818090 056487030 +000000334 000319885 000348062 D|084994836 037796792 +000000334 000325174 000358923 D|066235559 078376762 +000000334 000400913 000381666 D|029333986 018203490 +000000334 000417894 000426243 D|054360039 060574301 +000000334 000429208 000454267 D|020574932 099722669 +000000334 000481863 000474057 D|021385785 058261956 +000000334 000521365 000476359 D|037582436 043402544 +000000334 000529122 000476665 D|069666853 060896769 +000000334 000532912 000494367 D|007791317 008720885 +000000334 000537002 000509619 D|005859389 095621271 +000000334 000556509 000513525 D|097086114 037705129 +000000334 000564985 000542645 D|096693419 000419666 +000000334 000573438 000545756 D|007957636 012322023 +000000334 000580305 000553115 D|054839984 050486215 +000000334 000603485 000646761 D|079577322 082998953 +000000334 000615568 000683617 D|053538564 012612251 +000000334 000630707 000702312 D|045937748 031836087 +000000334 000636565 000728713 D|005497288 097842672 +000000334 000681064 000741188 D|049114283 013914585 +000000334 000682344 000765871 D|077562441 020379186 +000000334 000714669 000772421 D|079410996 004394920 +000000334 000758319 000821563 D|017864627 030039968 +000000334 000763813 000860626 D|021544749 054276915 +000000334 000819243 000876750 D|052476570 033655922 +000000334 000852806 000888334 D|033145160 019187703 +000000334 000888593 000940861 D|092273052 013351673 +000000334 000904902 000961264 D|068960292 055444874 +000000334 000908959 000966162 D|031402666 025584111 +000000334 000936420 000975793 D|094724062 007337210 +000000334 000974036 000978873 D|096576378 011789355 +000000334 000981256 000994114 D|024547173 007144673 +000000334 000988915 000998499 D|075633322 063023844 +000000335 000003062 000008009 D|086410589 080427705 +000000335 000041228 000070592 D|044408620 097874160 +000000335 000052807 000086064 D|012249302 073103385 +000000335 000082907 000113097 D|033738465 023503406 +000000335 000091155 000181429 D|079695796 010007649 +000000335 000101108 000188378 D|051212485 065057795 +000000335 000140711 000232718 D|082874150 089364879 +000000335 000145821 000246063 D|046205366 063620074 +000000335 000169783 000269921 D|011109274 005183508 +000000335 000192476 000319697 D|006220258 013346285 +000000335 000221888 000324675 D|089053620 065387125 +000000335 000286192 000336368 D|045498983 099719035 +000000335 000294784 000355516 D|052285193 091499692 +000000335 000296908 000364525 D|043530932 089893321 +000000335 000299237 000430449 D|012453166 047670301 +000000335 000300558 000457581 D|044710545 039590654 +000000335 000317316 000486409 D|019988929 033169263 +000000335 000319825 000513582 D|026219480 013744473 +000000335 000365220 000535318 D|049683170 015697865 +000000335 000376761 000539551 D|043163663 071086498 +000000335 000401704 000544115 D|020992354 055960982 +000000335 000470929 000550240 D|001906870 006459273 +000000335 000472610 000559190 D|003338699 073892433 +000000335 000477867 000576786 D|067634501 042121685 +000000335 000510895 000579396 D|091967004 053842277 +000000335 000516673 000589626 D|017422919 051903981 +000000335 000516914 000600857 D|098585753 015579571 +000000335 000554254 000607191 D|061457018 002513174 +000000335 000561019 000615662 D|049937973 058708141 +000000335 000574389 000615784 D|063160889 003024016 +000000335 000596293 000633720 D|037412591 079364506 +000000335 000601465 000643100 D|083058551 061183200 +000000335 000603001 000665025 D|002557447 096343578 +000000335 000679014 000677577 D|011053514 005255369 +000000335 000702924 000692847 D|032675147 008838273 +000000335 000707684 000740358 D|098183414 055239597 +000000335 000718635 000775247 D|029682367 031270774 +000000335 000738947 000804005 D|086375431 065680700 +000000335 000746889 000816070 D|045909657 041387524 +000000335 000764018 000822899 D|099685851 068674763 +000000335 000792592 000825206 D|039490739 022047833 +000000335 000792891 000832674 D|094890774 065570944 +000000335 000799299 000844815 D|061546588 013360945 +000000335 000815160 000871774 D|052206799 004142638 +000000335 000855957 000880576 D|058565171 009930169 +000000335 000889134 000890393 D|031129727 037922540 +000000335 000894813 000925859 D|054076632 067982912 +000000335 000935027 000930940 D|002573287 081748929 +000000335 000972654 000933930 D|086140110 046506365 +000000335 000991688 000940588 D|056669471 051396111 +000000336 000009219 000001105 D|040498782 085890158 +000000336 000014241 000016677 D|077342670 029555132 +000000336 000051877 000056655 D|002381087 076017456 +000000336 000054738 000061154 D|018933448 073685183 +000000336 000057297 000095820 D|035855044 053966877 +000000336 000059835 000123108 D|052562353 086422502 +000000336 000073941 000148715 D|073052458 051329684 +000000336 000112483 000175644 D|069425259 022938757 +000000336 000160811 000189534 D|053635754 057748641 +000000336 000171784 000192242 D|029394155 055701081 +000000336 000193007 000196473 D|065318031 012681348 +000000336 000219564 000198449 D|010369017 078814140 +000000336 000231927 000201653 D|027699501 048899623 +000000336 000243789 000213270 D|016619158 066238508 +000000336 000246208 000311050 D|061803513 061268904 +000000336 000251875 000313512 D|050594834 061996925 +000000336 000264064 000320837 D|008336956 030186001 +000000336 000293979 000332672 D|017152768 043510967 +000000336 000311650 000358284 D|064724689 066531249 +000000336 000323029 000388461 D|022902506 008932454 +000000336 000343770 000390735 D|091066970 094194904 +000000336 000358763 000411570 D|052632920 085194725 +000000336 000358945 000449459 D|043159863 057370795 +000000336 000398395 000534067 D|077456593 099394163 +000000336 000409277 000548615 D|014572176 027887987 +000000336 000414314 000620930 D|090311821 017672271 +000000336 000464955 000627291 D|090053665 031098646 +000000336 000486630 000645353 D|094566318 082650298 +000000336 000489828 000662220 D|096677186 051115029 +000000336 000535392 000673677 D|029121190 012594195 +000000336 000596875 000684478 D|093905020 012021907 +000000336 000621696 000688265 D|026039613 061131344 +000000336 000628409 000715933 D|081369295 044708103 +000000336 000641925 000740042 D|059034508 026493192 +000000336 000648593 000764473 D|082120809 053040190 +000000336 000666684 000800083 D|043156023 044367283 +000000336 000678366 000806535 D|099650961 017887989 +000000336 000697147 000807183 D|055651338 009889682 +000000336 000742473 000841156 D|035465258 077171487 +000000336 000746238 000855878 D|068582413 056257763 +000000336 000759389 000857066 D|030387568 009436565 +000000336 000818651 000886953 D|095562919 037350029 +000000336 000820712 000891401 D|085486953 081202322 +000000336 000855892 000899363 D|050687093 035671365 +000000336 000898065 000926913 D|070035004 095978204 +000000336 000904997 000932889 D|059952466 002450863 +000000336 000926164 000939459 D|037808739 039446788 +000000336 000927664 000954646 D|085758345 010377495 +000000336 000935303 000976153 D|016110582 049000567 +000000336 000967456 000993435 D|052096606 007435678 +000000337 000027454 000013125 D|058572555 048604580 +000000337 000040941 000028904 D|084375517 062782730 +000000337 000048272 000062237 D|044453225 051692097 +000000337 000049811 000123740 D|048251539 037762850 +000000337 000076412 000127325 D|008159905 020167669 +000000337 000080483 000158766 D|044366333 012144223 +000000337 000086616 000172527 D|037030389 010365138 +000000337 000090364 000192884 D|046252931 055736142 +000000337 000095417 000197427 D|030141751 078009006 +000000337 000102586 000230501 D|086712175 015420966 +000000337 000145426 000242043 D|001995215 078523960 +000000337 000149741 000251210 D|013565484 071899518 +000000337 000181813 000257148 D|072748718 019115791 +000000337 000248208 000294087 D|043836422 034466878 +000000337 000298631 000310860 D|068167476 045637688 +000000337 000310563 000341096 D|071137028 086534693 +000000337 000318649 000341810 D|018843028 056685787 +000000337 000367307 000357508 D|072213244 080722719 +000000337 000386944 000358302 D|072303155 035667023 +000000337 000389018 000374187 D|019378408 021363815 +000000337 000430014 000377453 D|076669988 038270410 +000000337 000468413 000399729 D|006746101 059497505 +000000337 000475362 000420520 D|055473067 028810370 +000000337 000479916 000421658 D|039256316 040913449 +000000337 000495459 000426000 D|021561355 064534822 +000000337 000569240 000459972 D|093696092 071052023 +000000337 000593206 000463846 D|023297777 046947421 +000000337 000612085 000464724 D|061547766 003768323 +000000337 000633390 000464776 D|085452662 042913154 +000000337 000649233 000468599 D|065343071 088705512 +000000337 000651729 000498621 D|007537164 034788619 +000000337 000670772 000516020 D|032406848 074724379 +000000337 000699325 000519220 D|026653014 069032726 +000000337 000700416 000519646 D|021333473 088347667 +000000337 000706951 000574218 D|088567806 090708908 +000000337 000735188 000606322 D|007275629 018907654 +000000337 000742873 000611636 D|097529176 021227333 +000000337 000758992 000621085 D|025990128 099637215 +000000337 000763351 000632881 D|079842681 044145911 +000000337 000770331 000667379 D|054078173 028308623 +000000337 000771178 000680657 D|063291568 028329864 +000000337 000783781 000686951 D|052412373 040322788 +000000337 000800687 000691059 D|025775336 070053769 +000000337 000801553 000701658 D|032704694 090343504 +000000337 000809618 000802686 D|099780280 019545679 +000000337 000873208 000865716 D|059941933 003312557 +000000337 000927733 000935738 D|009775308 040221253 +000000337 000947514 000938930 D|023671422 066812344 +000000337 000953078 000943109 D|045105799 075605403 +000000337 000997696 000952286 D|070584565 047127671 +000000338 000021601 000006766 D|085591351 026463422 +000000338 000029077 000022275 D|097021409 047990878 +000000338 000053110 000056531 D|083771637 014042689 +000000338 000117011 000066440 D|042175959 035213265 +000000338 000135522 000091695 D|034295078 069885261 +000000338 000150133 000111804 D|067294855 019541840 +000000338 000154253 000182635 D|054639257 079494550 +000000338 000156018 000186542 D|083780440 095139887 +000000338 000157765 000192466 D|085120266 074719136 +000000338 000201906 000201927 D|037931506 070076790 +000000338 000217720 000210023 D|009769874 011730780 +000000338 000246760 000210173 D|080865576 037395548 +000000338 000247379 000238511 D|087467828 085712981 +000000338 000260179 000250747 D|024635178 079133308 +000000338 000262750 000266773 D|082823616 015671485 +000000338 000288784 000278706 D|057867780 090601560 +000000338 000304076 000296482 D|044711112 071617794 +000000338 000339752 000329069 D|049174517 055697475 +000000338 000353149 000329564 D|031127775 001897024 +000000338 000408481 000339243 D|069519200 044920242 +000000338 000425405 000351391 D|084079707 080387941 +000000338 000440464 000394252 D|030730522 008710052 +000000338 000485620 000396843 D|006874870 073090577 +000000338 000512709 000424617 D|049471525 014979145 +000000338 000512791 000427999 D|005669086 006121848 +000000338 000514669 000431361 D|008874953 054891950 +000000338 000556361 000471479 D|016968581 006042062 +000000338 000569995 000516567 D|076817950 089067942 +000000338 000604907 000542472 D|069694634 020956804 +000000338 000608091 000551663 D|093935864 035733052 +000000338 000621917 000553046 D|098593098 007687879 +000000338 000622918 000567912 D|099397186 084337765 +000000338 000642771 000568351 D|036487966 000084004 +000000338 000649358 000581118 D|019416571 044268778 +000000338 000671871 000595208 D|064393665 031898558 +000000338 000731210 000595856 D|096446637 057294963 +000000338 000775064 000609226 D|056898560 091627186 +000000338 000778470 000623044 D|092970029 070757942 +000000338 000786237 000633326 D|053922255 038275124 +000000338 000797549 000640633 D|009548634 048799568 +000000338 000806070 000683968 D|033450652 034208129 +000000338 000813413 000724583 D|033552788 045605782 +000000338 000834421 000748590 D|095135489 083008094 +000000338 000845636 000811506 D|019865607 070681614 +000000338 000854728 000834315 D|001608895 060306592 +000000338 000862494 000920513 D|089622224 053353742 +000000338 000869084 000922902 D|085703857 054445708 +000000338 000904812 000969254 D|049192186 086348690 +000000338 000944419 000969334 D|080657462 098075396 +000000338 000973985 000995515 D|001213327 081282408 +000000339 000008438 000057924 D|061733469 054499322 +000000339 000018524 000089938 D|050262527 028150452 +000000339 000032420 000091546 D|009980239 076869880 +000000339 000055121 000131228 D|059872730 044167470 +000000339 000078140 000131318 D|016068947 087713356 +000000339 000092395 000161449 D|040530859 066864029 +000000339 000109053 000177477 D|007988378 060788001 +000000339 000153934 000187569 D|088186343 009191935 +000000339 000164610 000198831 D|063457438 011765030 +000000339 000180773 000203434 D|086981125 026725604 +000000339 000188620 000213140 D|005693423 015305810 +000000339 000193970 000224304 D|045247223 053998431 +000000339 000195220 000248739 D|063798146 070166394 +000000339 000229716 000289710 D|085455418 086160692 +000000339 000290059 000342934 D|060680931 090779024 +000000339 000311984 000345479 D|028307847 089976549 +000000339 000330625 000368443 D|066712902 044994226 +000000339 000341059 000376456 D|080485469 011092919 +000000339 000351080 000447136 D|062091663 041859716 +000000339 000405109 000456761 D|003896497 010347700 +000000339 000423146 000474541 D|067161698 049990905 +000000339 000427173 000494043 D|036762134 052694213 +000000339 000435191 000518557 D|035554044 008321967 +000000339 000488463 000541176 D|069725864 075146864 +000000339 000545814 000576703 D|046166089 019156951 +000000339 000579269 000579861 D|004116256 004527494 +000000339 000579703 000605654 D|075389482 076809597 +000000339 000587376 000629909 D|087837064 037453059 +000000339 000592293 000630600 D|068090699 092710850 +000000339 000615404 000633154 D|040926433 013356661 +000000339 000632845 000697897 D|070595383 047699646 +000000339 000638708 000723435 D|049128061 084143922 +000000339 000656270 000763023 D|090263850 056258476 +000000339 000658810 000770729 D|064308318 063903051 +000000339 000665577 000808310 D|096478498 091456040 +000000339 000707586 000810183 D|078833503 074704251 +000000339 000716708 000826562 D|006712352 095091549 +000000339 000722109 000890621 D|064970994 081920058 +000000339 000771901 000891851 D|010790562 038828777 +000000339 000861699 000891985 D|023685153 027820154 +000000339 000873645 000899041 D|018881270 045490887 +000000339 000893990 000899679 D|019732999 058647366 +000000339 000901433 000912391 D|043791877 051903210 +000000339 000911485 000926349 D|085471158 002065370 +000000339 000946414 000930862 D|056719171 020548798 +000000339 000961476 000931464 D|018617183 030273209 +000000339 000975807 000935065 D|023067566 093252348 +000000339 000977655 000936333 D|009140306 038618717 +000000339 000985518 000951346 D|006427322 020130972 +000000339 000989203 000954389 D|071656100 076377018 +000000340 000000429 000019654 D|045983198 064911231 +000000340 000035992 000037517 D|067613431 011968189 +000000340 000049076 000042503 D|027209827 086640671 +000000340 000049944 000045939 D|000877090 066115312 +000000340 000055101 000116669 D|048637186 012653105 +000000340 000114599 000126986 D|029164538 033953216 +000000340 000144848 000130428 D|086767108 069117785 +000000340 000203479 000146571 D|022538993 077337941 +000000340 000209559 000167459 D|068176623 008971866 +000000340 000223193 000205129 D|087794994 058790687 +000000340 000228553 000224588 D|056634461 019907981 +000000340 000237772 000246252 D|079940612 088672630 +000000340 000261915 000252996 D|085618607 066538813 +000000340 000295446 000262986 D|073375737 013975199 +000000340 000314439 000311696 D|013146982 038004411 +000000340 000317703 000346877 D|072585207 046899358 +000000340 000341824 000357985 D|035498531 029850248 +000000340 000357974 000361242 D|068247302 059867194 +000000340 000360452 000394918 D|019125144 058937740 +000000340 000367519 000415138 D|018851349 076420034 +000000340 000387308 000439489 D|097636589 069393300 +000000340 000401158 000452972 D|088526537 037971852 +000000340 000450228 000463807 D|002948761 034723108 +000000340 000476223 000500432 D|073346362 065859771 +000000340 000561835 000541824 D|032912811 015811429 +000000340 000564834 000553637 D|001394388 026854309 +000000340 000570481 000592830 D|050123799 068404655 +000000340 000580418 000629819 D|088065452 089581770 +000000340 000628843 000650252 D|060306232 083116024 +000000340 000684290 000650745 D|070471190 031194543 +000000340 000693693 000653885 D|058297236 095918067 +000000340 000700115 000683245 D|021235020 072039708 +000000340 000725237 000730568 D|052801882 009507588 +000000340 000734759 000734554 D|012789819 041703064 +000000340 000739187 000744771 D|068597654 036915723 +000000340 000749268 000745265 D|002852110 082430939 +000000340 000750268 000773721 D|074092442 000863841 +000000340 000770859 000783466 D|062654243 039587864 +000000340 000786590 000791949 D|069824505 034835236 +000000340 000821426 000808736 D|096617431 065798235 +000000340 000849141 000823321 D|008288129 080289749 +000000340 000864051 000830714 D|039280228 078571252 +000000340 000866447 000869241 D|006609001 003190353 +000000340 000873740 000907430 D|000140509 056603426 +000000340 000889227 000913461 D|026578617 090729210 +000000340 000906655 000920103 D|094645827 069778018 +000000340 000906930 000942406 D|086795646 049068288 +000000340 000947522 000974841 D|015876382 054744749 +000000340 000955971 000976882 D|022775375 062347848 +000000340 000956511 000998359 D|056891161 016769720 +000000341 000001311 000011537 D|070216312 039171310 +000000341 000006730 000035118 D|019021995 093836265 +000000341 000047893 000102437 D|093245357 071332614 +000000341 000071441 000168101 D|011974012 019114409 +000000341 000083453 000209300 D|029172419 041134328 +000000341 000113619 000213520 D|062330244 071146431 +000000341 000118273 000281342 D|054539607 032790324 +000000341 000121638 000282144 D|045197133 089612353 +000000341 000126596 000364107 D|027985409 023374494 +000000341 000162222 000401931 D|026620295 081814594 +000000341 000225565 000402876 D|039137890 053725832 +000000341 000230317 000426343 D|045651788 037912486 +000000341 000265728 000436223 D|031976765 084871601 +000000341 000292850 000452475 D|009872116 079917793 +000000341 000328772 000460039 D|099733885 002056754 +000000341 000412243 000465172 D|089705972 016236762 +000000341 000461774 000470173 D|031202288 012040136 +000000341 000471748 000481726 D|034180931 064339058 +000000341 000499333 000503380 D|053534145 005770862 +000000341 000513591 000505948 D|078490096 067959461 +000000341 000522374 000506606 D|036998811 070223396 +000000341 000529023 000518110 D|063676702 043689367 +000000341 000551432 000545385 D|029413355 081781855 +000000341 000560521 000559473 D|020001231 023136537 +000000341 000587494 000568006 D|001654484 040200937 +000000341 000601886 000589837 D|010087938 098532347 +000000341 000614205 000594097 D|031409655 088338221 +000000341 000629929 000595047 D|014271375 065701890 +000000341 000639940 000608152 D|059533928 073515979 +000000341 000652576 000618779 D|022219828 040688002 +000000341 000653733 000635794 D|008131665 023846325 +000000341 000658729 000637653 D|040687038 077794336 +000000341 000660161 000651156 D|007710619 004244475 +000000341 000667086 000672674 D|015086022 024820034 +000000341 000688311 000689721 D|095404053 097606678 +000000341 000694606 000698039 D|047286379 033165152 +000000341 000696674 000710741 D|079565650 017836982 +000000341 000708594 000746516 D|087072075 019795959 +000000341 000722731 000772966 D|003693786 010814279 +000000341 000759298 000780967 D|039612322 029561503 +000000341 000771878 000875242 D|096340408 086118834 +000000341 000822375 000882676 D|001395154 029803871 +000000341 000822704 000887521 D|043549710 096198830 +000000341 000872993 000904423 D|007754884 018996694 +000000341 000886926 000910496 D|080894713 099554574 +000000341 000940353 000921518 D|038931537 039911981 +000000341 000952500 000949461 D|018577570 022481708 +000000341 000965321 000969184 D|004590262 029659230 +000000341 000972851 000969239 D|092584236 008138831 +000000341 000992047 000971749 D|025944203 067881745 +000000342 000035561 000013987 D|027212606 055629664 +000000342 000047161 000113562 D|066381048 019620753 +000000342 000067856 000120441 D|065796344 060632218 +000000342 000081652 000139201 D|075965214 032409163 +000000342 000087980 000145350 D|015274301 006491935 +000000342 000128325 000188221 D|004317420 046083895 +000000342 000137644 000195300 D|080888014 095671497 +000000342 000171402 000231293 D|024475036 066878095 +000000342 000246839 000257267 D|016284570 033980044 +000000342 000252847 000263129 D|092098368 095911456 +000000342 000256872 000277294 D|065701877 009953571 +000000342 000265942 000282232 D|028572010 092128110 +000000342 000308760 000318707 D|097780036 029664310 +000000342 000309642 000344652 D|061971567 029640764 +000000342 000313245 000351975 D|093213796 096208750 +000000342 000341820 000358320 D|035374368 028042579 +000000342 000349729 000364867 D|087345175 056088358 +000000342 000354251 000424426 D|018370797 078954424 +000000342 000360552 000426452 D|079048192 098582599 +000000342 000368473 000453353 D|013552200 059353947 +000000342 000389082 000453801 D|036896668 087822441 +000000342 000400828 000470921 D|011223945 075659099 +000000342 000434172 000484776 D|096952202 044721056 +000000342 000449818 000495424 D|000604958 036238952 +000000342 000458139 000523375 D|045547190 096196604 +000000342 000462200 000524831 D|076885480 084774450 +000000342 000466524 000533703 D|057088963 063743655 +000000342 000467277 000559840 D|062435344 007679556 +000000342 000482795 000564802 D|073595211 000348589 +000000342 000486748 000613100 D|078424039 002836060 +000000342 000492071 000618447 D|032545681 095278829 +000000342 000526588 000636355 D|044185191 089104544 +000000342 000528035 000687856 D|054588508 084196215 +000000342 000574570 000724543 D|098352851 062534949 +000000342 000608088 000739445 D|094408709 083927091 +000000342 000628581 000756176 D|052912824 032934170 +000000342 000645654 000760858 D|035888859 069358064 +000000342 000703094 000802342 D|022537738 087394919 +000000342 000711073 000812297 D|051675238 073853754 +000000342 000760462 000837544 D|061773070 069441320 +000000342 000761439 000843365 D|083442113 074597080 +000000342 000787732 000854310 D|083377991 079011894 +000000342 000788862 000870277 D|086624705 097657288 +000000342 000797098 000875269 D|002357855 096272592 +000000342 000800282 000898809 D|080011480 004365242 +000000342 000835598 000925790 D|097160653 041377666 +000000342 000867074 000972114 D|099306355 021852268 +000000342 000869554 000972236 D|035574208 000083931 +000000342 000907211 000976003 D|051074724 099440966 +000000342 000918556 000985278 D|039584066 051910069 +000000343 000034989 000009146 D|064698891 078337277 +000000343 000050455 000013121 D|001923980 056482701 +000000343 000056579 000032063 D|034335219 024226503 +000000343 000059188 000050760 D|086702824 003176392 +000000343 000099199 000051669 D|010982440 002580302 +000000343 000143301 000068908 D|065965574 081047650 +000000343 000223259 000073524 D|058497917 017920575 +000000343 000266315 000100261 D|032491494 092308265 +000000343 000272101 000101108 D|074165045 028341731 +000000343 000278572 000111666 D|049479128 038495707 +000000343 000278924 000147585 D|001960797 068052554 +000000343 000307998 000168265 D|039459077 097282892 +000000343 000309778 000188230 D|043710321 048591804 +000000343 000320621 000189130 D|066040121 038507840 +000000343 000327008 000202970 D|013342806 071159913 +000000343 000330278 000222633 D|077439861 081344982 +000000343 000345505 000231372 D|040202563 038912666 +000000343 000345771 000250984 D|037297166 002883765 +000000343 000375973 000256966 D|046582317 074953620 +000000343 000386774 000289154 D|057329379 081022234 +000000343 000442126 000316370 D|088029185 029908495 +000000343 000442240 000322337 D|064805017 005400414 +000000343 000472083 000405047 D|081926865 032403454 +000000343 000478834 000429990 D|006249015 064488508 +000000343 000491605 000469148 D|068047750 000209436 +000000343 000499241 000492692 D|004578676 023067831 +000000343 000509233 000572072 D|035924634 065756505 +000000343 000509364 000572689 D|063161614 016422246 +000000343 000522515 000582864 D|015915386 066404077 +000000343 000536247 000591792 D|053874011 094664913 +000000343 000549193 000606314 D|039115324 021261623 +000000343 000552053 000622965 D|012644974 030581176 +000000343 000552745 000690701 D|036144386 043464437 +000000343 000600312 000730724 D|073021140 075123483 +000000343 000606845 000736985 D|058393495 093906756 +000000343 000608067 000738528 D|041832696 010533959 +000000343 000657572 000750847 D|091479667 049868332 +000000343 000687792 000751356 D|071949634 067213416 +000000343 000688577 000774016 D|060776477 068706584 +000000343 000688978 000776946 D|072833379 096021996 +000000343 000762421 000795970 D|054921260 030415321 +000000343 000770286 000801466 D|095492029 095185742 +000000343 000783240 000868370 D|081348575 038198935 +000000343 000824150 000908698 D|028290106 059902837 +000000343 000845759 000919250 D|039834682 085361842 +000000343 000907843 000936994 D|079773249 087307635 +000000343 000910506 000947729 D|083610035 082805125 +000000343 000910862 000963726 D|010297891 016976191 +000000343 000918948 000964980 D|046054231 082750345 +000000343 000973574 000997437 D|022511497 084621143 +000000344 000073958 000039350 D|048281625 067126392 +000000344 000130437 000059779 D|001855067 099176166 +000000344 000150624 000092295 D|088672612 026326390 +000000344 000156311 000133668 D|078969492 097465936 +000000344 000160709 000220193 D|088039691 071868522 +000000344 000183932 000237709 D|093221082 087904023 +000000344 000198151 000244527 D|025156763 067617491 +000000344 000212800 000272858 D|099295689 083242532 +000000344 000219362 000278256 D|073913209 073698507 +000000344 000223761 000284591 D|065916409 047973978 +000000344 000238144 000314081 D|058169068 019195367 +000000344 000238185 000322234 D|074881766 098567530 +000000344 000263278 000351840 D|039543851 083695107 +000000344 000296078 000353590 D|043882736 062836338 +000000344 000298963 000368398 D|053221690 026958933 +000000344 000307852 000374164 D|037985775 033743331 +000000344 000308969 000375508 D|090423583 019482683 +000000344 000323499 000383493 D|039709891 021897247 +000000344 000351705 000397768 D|001560812 013476910 +000000344 000392653 000400518 D|067781909 042012553 +000000344 000396210 000405330 D|006019318 025029795 +000000344 000443301 000435433 D|011141934 014000258 +000000344 000484030 000441993 D|029308174 054316430 +000000344 000492053 000505188 D|017550293 036128327 +000000344 000535091 000545942 D|088081937 057241765 +000000344 000573445 000553142 D|051858090 053981035 +000000344 000584707 000579501 D|071001436 048416887 +000000344 000620405 000581017 D|071745780 084859616 +000000344 000637671 000614627 D|044049324 067135709 +000000344 000656724 000615279 D|043955891 006943424 +000000344 000667360 000634751 D|017999922 011502210 +000000344 000672431 000654402 D|020737908 084546439 +000000344 000692774 000708567 D|093790207 085289695 +000000344 000708501 000718815 D|084682116 083969984 +000000344 000709991 000730391 D|064070021 042541343 +000000344 000764469 000742969 D|087742745 083478709 +000000344 000774798 000758518 D|023107650 066574889 +000000344 000783700 000772074 D|080194007 095650640 +000000344 000806382 000773005 D|079444824 008183409 +000000344 000817890 000775630 D|096676617 031943801 +000000344 000828965 000787921 D|008135942 088438097 +000000344 000830653 000794405 D|013606749 040045961 +000000344 000902184 000824696 D|037354426 056233246 +000000344 000903230 000942773 D|097513159 091830441 +000000344 000915698 000954850 D|098515745 025259630 +000000344 000945771 000973981 D|002116147 095008391 +000000344 000955615 000975293 D|024843765 060360680 +000000344 000978442 000979418 D|009495683 029475860 +000000344 000986751 000997907 D|092118545 050560449 +000000344 000999458 000999029 D|056483709 013008114 +000000345 000009952 000003326 D|042455298 067247444 +000000345 000019373 000031882 D|020888429 024440778 +000000345 000029434 000041127 D|049284229 067543802 +000000345 000030092 000097574 D|047057894 025244669 +000000345 000070254 000102044 D|012326781 060912997 +000000345 000073808 000115055 D|061482021 047154138 +000000345 000105516 000119320 D|068903901 018231470 +000000345 000147319 000128289 D|017290581 093564824 +000000345 000164929 000134995 D|015870141 069743373 +000000345 000165183 000149519 D|029965017 098523049 +000000345 000167884 000158226 D|012753600 014901825 +000000345 000178315 000195345 D|086298628 047193696 +000000345 000211628 000202893 D|007125455 048152582 +000000345 000220209 000206223 D|080151901 080912973 +000000345 000231830 000215338 D|006933853 096823731 +000000345 000239508 000259452 D|066611887 040375947 +000000345 000280192 000308791 D|058158898 052518749 +000000345 000282741 000309671 D|009629536 030750997 +000000345 000293900 000324460 D|022237935 048109405 +000000345 000297213 000324769 D|079421200 009682119 +000000345 000381589 000341500 D|053378567 007005467 +000000345 000381888 000363761 D|084437919 008939521 +000000345 000401245 000368103 D|077919824 064633600 +000000345 000418798 000368531 D|005571546 081199502 +000000345 000487976 000389625 D|067178217 079863952 +000000345 000501756 000399874 D|057712734 036080308 +000000345 000517701 000408301 D|031702701 024337567 +000000345 000526437 000418306 D|047112700 004120111 +000000345 000532998 000489141 D|018383914 056403210 +000000345 000537044 000492853 D|091103669 079856573 +000000345 000544739 000527254 D|017007923 034455335 +000000345 000549692 000528273 D|038288803 088806180 +000000345 000558787 000570488 D|096287156 069389752 +000000345 000572827 000594661 D|024698600 076966705 +000000345 000582297 000597654 D|017949369 031346396 +000000345 000601447 000610753 D|040344299 020459782 +000000345 000612838 000641931 D|003955505 033609265 +000000345 000634504 000654452 D|095574225 061429316 +000000345 000638906 000754220 D|066426491 019089689 +000000345 000668233 000763805 D|021683994 056646928 +000000345 000719816 000792612 D|014135226 096697592 +000000345 000770853 000794591 D|000063174 020465722 +000000345 000772687 000824692 D|089574662 071558534 +000000345 000846582 000849127 D|013320433 093909453 +000000345 000860492 000859246 D|045478635 052234327 +000000345 000867816 000869500 D|036413593 082027862 +000000345 000893347 000941136 D|063035415 012585417 +000000345 000966724 000969307 D|031747996 040690630 +000000345 000973706 000996504 D|077626705 050659775 +000000345 000992467 000997196 D|032685466 013463260 +000000346 000010058 000031819 D|065200640 004838355 +000000346 000024867 000075254 D|024705956 084784457 +000000346 000039078 000100094 D|061096577 022420635 +000000346 000042964 000108798 D|012913029 031760288 +000000346 000059068 000110104 D|011529913 038016217 +000000346 000061961 000169061 D|035245531 023651938 +000000346 000077201 000194193 D|065213604 044501303 +000000346 000087185 000216547 D|018369063 068928607 +000000346 000132104 000217712 D|022460391 071771195 +000000346 000165768 000244435 D|095953606 019919643 +000000346 000170349 000256028 D|085764727 056259880 +000000346 000203590 000258850 D|005211561 009514488 +000000346 000204216 000274261 D|015361853 067549630 +000000346 000221151 000306183 D|010970745 047606286 +000000346 000224052 000311893 D|033645702 011959025 +000000346 000235937 000334113 D|084963285 055989418 +000000346 000262709 000344953 D|092687110 057573542 +000000346 000269932 000366320 D|022280759 068791127 +000000346 000277265 000380693 D|058987609 075413522 +000000346 000298230 000381933 D|076366698 063341146 +000000346 000325400 000426244 D|068219111 048508407 +000000346 000380268 000433218 D|080905210 036512169 +000000346 000441392 000444236 D|042499260 062612575 +000000346 000441918 000510017 D|051029494 069154848 +000000346 000443351 000528793 D|031880252 029832159 +000000346 000453177 000559896 D|068169410 054118267 +000000346 000458617 000563384 D|034159217 030083312 +000000346 000459117 000581628 D|087352808 074341743 +000000346 000479773 000604266 D|004274586 010795588 +000000346 000480273 000613888 D|047464951 081766591 +000000346 000548721 000616938 D|089749856 094598160 +000000346 000560009 000625862 D|069495851 084986928 +000000346 000570311 000627715 D|002539841 030296128 +000000346 000626205 000636523 D|060250673 074806797 +000000346 000655920 000653000 D|019245100 055335482 +000000346 000732183 000666060 D|006214306 004227768 +000000346 000755166 000669704 D|069903708 083142644 +000000346 000769618 000711805 D|066067765 010432193 +000000346 000820741 000718731 D|045279816 003040502 +000000346 000834418 000727478 D|087490012 069939595 +000000346 000836232 000735960 D|008925595 097263203 +000000346 000838593 000827066 D|078788236 002088210 +000000346 000894078 000829346 D|085294330 061289474 +000000346 000901143 000846614 D|008553412 093700864 +000000346 000907979 000904011 D|034560394 073122870 +000000346 000919574 000909045 D|015486417 057237784 +000000346 000919824 000913900 D|075614294 019695035 +000000346 000925964 000963762 D|067218685 093429404 +000000346 000938107 000974037 D|005134163 003555803 +000000346 000963230 000980488 D|003450332 050413338 +000000347 000022875 000004665 D|099604826 063638348 +000000347 000051482 000022941 D|031055584 070564712 +000000347 000055948 000037501 D|053364128 039560941 +000000347 000089319 000055633 D|064456672 085711844 +000000347 000089689 000074853 D|000036251 073795933 +000000347 000091164 000077748 D|038377438 085050781 +000000347 000118147 000110098 D|016173435 059494328 +000000347 000140773 000144569 D|093896452 056133347 +000000347 000155574 000207243 D|021225817 095290290 +000000347 000164038 000215842 D|012390937 077380033 +000000347 000170029 000223110 D|036409041 056104540 +000000347 000212386 000239125 D|018837627 081601340 +000000347 000235963 000257686 D|094227053 008698100 +000000347 000239269 000280709 D|019896165 002793541 +000000347 000266193 000315670 D|036429813 033212918 +000000347 000266636 000325888 D|087854597 044020609 +000000347 000274658 000332569 D|068450866 082423185 +000000347 000303546 000342198 D|056819719 007282049 +000000347 000308397 000352144 D|045176590 007655648 +000000347 000322544 000358136 D|084244520 081803601 +000000347 000339606 000369088 D|029959058 086766737 +000000347 000339886 000455101 D|091463861 060117281 +000000347 000352919 000505237 D|001388108 099254467 +000000347 000457706 000512619 D|043356315 029096027 +000000347 000460678 000512667 D|061969320 042786858 +000000347 000462615 000523429 D|074457301 047510663 +000000347 000472363 000543562 D|052540288 023499916 +000000347 000485985 000554941 D|034299269 014038100 +000000347 000500205 000575281 D|002013399 053168907 +000000347 000513182 000586602 D|003290729 071148441 +000000347 000552990 000590273 D|093857693 038502182 +000000347 000597652 000627198 D|082793746 068381930 +000000347 000599731 000672857 D|044094104 097842005 +000000347 000609948 000688654 D|053629843 033997405 +000000347 000615321 000690247 D|027893702 035898054 +000000347 000645438 000700895 D|049296149 089193286 +000000347 000646055 000712129 D|080003959 054525873 +000000347 000668770 000725008 D|083753215 066380466 +000000347 000717691 000743034 D|041965912 082124469 +000000347 000719343 000756998 D|079876798 089965694 +000000347 000757256 000762446 D|065500904 033046611 +000000347 000762489 000813528 D|090283605 089872472 +000000347 000780892 000835536 D|059660404 059645956 +000000347 000789789 000866540 D|004434489 021039621 +000000347 000860576 000879794 D|062555280 096614529 +000000347 000906069 000883342 D|052456229 099678144 +000000347 000926450 000885468 D|056470178 062338718 +000000347 000955280 000908183 D|034722547 091601226 +000000347 000956771 000940748 D|080483986 018446642 +000000347 000988042 000944622 D|004788664 062277430 +000000348 000007519 000011304 D|005037522 029953015 +000000348 000015665 000018486 D|072526843 056086223 +000000348 000022699 000031308 D|042887781 067432255 +000000348 000023460 000058142 D|071711016 036922770 +000000348 000043484 000063723 D|070497009 049906827 +000000348 000049809 000081430 D|085975650 077389210 +000000348 000065548 000109962 D|066658780 019076270 +000000348 000095709 000125690 D|088952935 087318219 +000000348 000109895 000141631 D|057106722 016090261 +000000348 000145154 000162212 D|025595955 034171909 +000000348 000167349 000165259 D|084026437 088786502 +000000348 000170685 000185493 D|038445495 012676200 +000000348 000227295 000189630 D|060322622 042555449 +000000348 000228148 000197776 D|006743766 092951502 +000000348 000230849 000241186 D|013487513 002937598 +000000348 000237352 000244229 D|061118702 017000154 +000000348 000242462 000247003 D|060790166 008570526 +000000348 000273423 000289502 D|097118172 011367645 +000000348 000338035 000307616 D|037879661 002485371 +000000348 000386914 000314172 D|048639825 025283932 +000000348 000444443 000335582 D|084399454 075148420 +000000348 000474749 000355559 D|091062348 035477864 +000000348 000490840 000390137 D|002688386 043434313 +000000348 000498437 000400145 D|050032205 069394692 +000000348 000509892 000406785 D|067866415 041202936 +000000348 000535873 000428594 D|055713529 073616031 +000000348 000549872 000429926 D|037244493 081362760 +000000348 000550237 000434953 D|068469149 074878803 +000000348 000550842 000471050 D|076937984 045212964 +000000348 000600205 000474091 D|089528808 044057460 +000000348 000634879 000546649 D|036854601 031426367 +000000348 000698108 000548264 D|017694193 066271342 +000000348 000699796 000576996 D|029889067 082338164 +000000348 000733808 000590664 D|045735270 043381664 +000000348 000751666 000591755 D|010112398 091903194 +000000348 000764569 000593362 D|096271330 059766179 +000000348 000785950 000606091 D|054663451 034948438 +000000348 000796043 000635931 D|011906423 063230366 +000000348 000799857 000643634 D|065690010 054815466 +000000348 000812388 000648558 D|046035831 070342956 +000000348 000813389 000653137 D|086333374 053592738 +000000348 000848438 000667143 D|015290420 054298583 +000000348 000879030 000777532 D|059896171 053548568 +000000348 000908695 000790349 D|031694328 014504919 +000000348 000924396 000886995 D|093743960 083691114 +000000348 000967165 000896774 D|002037469 049259460 +000000348 000986718 000899604 D|055680623 029028041 +000000348 000988182 000945463 D|022854789 041978637 +000000348 000988952 000952307 D|022645369 096852325 +000000348 000989570 000997204 D|020151266 034369775 +000000349 000005361 000016701 D|041532411 057202475 +000000349 000022656 000018844 D|004158811 019196863 +000000349 000034100 000028261 D|073472008 015724506 +000000349 000043990 000036091 D|052271474 082025217 +000000349 000047510 000051437 D|051609055 014839323 +000000349 000124444 000058450 D|020350372 072224467 +000000349 000137841 000065052 D|055237033 058168192 +000000349 000149848 000086853 D|041572694 064609917 +000000349 000153787 000122290 D|041169764 004106557 +000000349 000156572 000131909 D|058657673 036508672 +000000349 000167367 000175357 D|057048817 043886909 +000000349 000180294 000192793 D|051543538 096036946 +000000349 000194861 000205534 D|099446515 084874529 +000000349 000225142 000223407 D|059202785 082680327 +000000349 000238656 000299791 D|041678903 040961719 +000000349 000241989 000381034 D|069956444 054867145 +000000349 000296519 000410599 D|049037382 006516973 +000000349 000356156 000424544 D|050944790 014972977 +000000349 000369160 000431134 D|007619726 071988241 +000000349 000407991 000465951 D|008829032 013947376 +000000349 000460642 000482497 D|083791350 027549018 +000000349 000465277 000491714 D|015425394 046584470 +000000349 000522005 000493475 D|052052982 021566389 +000000349 000526379 000502327 D|096953697 055328071 +000000349 000536032 000545293 D|078112809 007277670 +000000349 000543935 000546676 D|097078895 099377540 +000000349 000558312 000560270 D|018754910 077647603 +000000349 000581962 000573655 D|038120577 096793888 +000000349 000585614 000575535 D|066797063 053278504 +000000349 000616229 000618616 D|015402128 071045080 +000000349 000643252 000637606 D|047354383 020888892 +000000349 000645032 000638097 D|076894163 004118284 +000000349 000660800 000655116 D|055658774 048098969 +000000349 000672939 000681374 D|083108389 027410495 +000000349 000692314 000684780 D|011954300 039836636 +000000349 000695316 000695838 D|013458996 054337249 +000000349 000715465 000714683 D|068961353 048321366 +000000349 000716829 000724476 D|079683405 040918726 +000000349 000737066 000729618 D|038443902 035113853 +000000349 000771025 000738032 D|062592468 012885543 +000000349 000779040 000775435 D|065626594 019689237 +000000349 000832433 000842407 D|034855038 061875707 +000000349 000858280 000867058 D|020599961 093730153 +000000349 000865898 000881449 D|051585711 068477447 +000000349 000884533 000887575 D|084890958 061672898 +000000349 000884922 000916098 D|044323595 001011222 +000000349 000907589 000933816 D|014825403 004741092 +000000349 000937423 000942126 D|094255450 060712553 +000000349 000979024 000952778 D|086694445 043400166 +000000349 000995887 000979994 D|024243302 049590708 +000000350 000017514 000018608 D|049707498 091631770 +000000350 000034516 000045343 D|076208222 066324023 +000000350 000047785 000049883 D|045221211 002382972 +000000350 000069440 000106155 D|034258928 055951810 +000000350 000080464 000122411 D|023569201 032752595 +000000350 000099562 000135679 D|017938211 011076128 +000000350 000105997 000136135 D|098196475 034946200 +000000350 000121124 000137395 D|034213397 074245342 +000000350 000148428 000192707 D|043719295 051401532 +000000350 000163949 000237472 D|071855784 057370035 +000000350 000251514 000271204 D|040530761 092978357 +000000350 000275153 000309601 D|035330648 091695812 +000000350 000311999 000323969 D|005312660 057131912 +000000350 000346423 000329782 D|058543236 038539056 +000000350 000367538 000337318 D|043845323 058469459 +000000350 000391269 000342749 D|090114619 005812322 +000000350 000395918 000346571 D|018941993 038530013 +000000350 000412610 000347567 D|089280777 071809038 +000000350 000422971 000356848 D|065668826 095178967 +000000350 000429897 000417720 D|041928188 031444408 +000000350 000490183 000418512 D|033459791 021638398 +000000350 000511677 000423203 D|077164861 060269722 +000000350 000515541 000423959 D|011095579 031179363 +000000350 000540472 000436622 D|032885108 099571415 +000000350 000550456 000463760 D|043242814 028430504 +000000350 000562298 000487563 D|025963966 000213169 +000000350 000593656 000517105 D|002346560 056689049 +000000350 000599579 000533523 D|086203953 089823672 +000000350 000619627 000552815 D|004703954 071421270 +000000350 000625448 000560700 D|031088832 072953094 +000000350 000631314 000580014 D|014914812 000410686 +000000350 000642727 000586697 D|065878099 097302801 +000000350 000654639 000593131 D|013993894 073929097 +000000350 000715655 000599488 D|063974089 076612108 +000000350 000732400 000615361 D|018369812 085648220 +000000350 000748744 000649813 D|095339833 023788117 +000000350 000755890 000656252 D|082184669 075720544 +000000350 000779463 000670113 D|027694800 096832949 +000000350 000834456 000737578 D|051956084 010035425 +000000350 000842202 000774242 D|048990035 036213322 +000000350 000851296 000833222 D|054842477 022067727 +000000350 000852610 000863251 D|029363312 022964080 +000000350 000879426 000865072 D|022855387 083581999 +000000350 000917222 000874712 D|081186093 048868732 +000000350 000938995 000882795 D|022831709 072560085 +000000350 000945293 000887249 D|074233087 025842315 +000000350 000969098 000895885 D|065037082 030639769 +000000350 000978007 000911143 D|060282119 074167351 +000000350 000983855 000929447 D|082968837 064474423 +000000350 000990002 000944647 D|095138115 003821022 +000000351 000014786 000015574 D|051760778 078137790 +000000351 000029137 000019080 D|056639637 004587541 +000000351 000044477 000061288 D|092755939 049674138 +000000351 000046477 000083405 D|084248953 046226140 +000000351 000065367 000086246 D|002345361 056497421 +000000351 000100151 000091886 D|076588818 077496909 +000000351 000129328 000104614 D|049063237 084245264 +000000351 000191532 000109375 D|080249877 067416755 +000000351 000253112 000145502 D|012034275 023909482 +000000351 000261466 000152477 D|031769994 052957088 +000000351 000308277 000153896 D|027293406 052205903 +000000351 000327366 000167208 D|047498328 097452039 +000000351 000343624 000174161 D|015000791 029093810 +000000351 000351005 000187791 D|055372971 074052964 +000000351 000384394 000250813 D|036528438 089831492 +000000351 000410152 000270463 D|046024500 067343129 +000000351 000417882 000314776 D|092244567 024676069 +000000351 000439071 000349559 D|032179122 033817463 +000000351 000447896 000352047 D|070564281 035973359 +000000351 000452787 000382199 D|052614106 030853784 +000000351 000478349 000402997 D|097494779 081267399 +000000351 000478537 000444514 D|024732883 067157340 +000000351 000487586 000461758 D|020596151 053909366 +000000351 000502108 000474840 D|051213339 017457701 +000000351 000506897 000476725 D|056511006 028427651 +000000351 000512240 000513508 D|050426442 022581342 +000000351 000512728 000535861 D|059586960 005013729 +000000351 000515009 000544730 D|000978678 068331462 +000000351 000518743 000556891 D|071638948 019013265 +000000351 000521111 000587905 D|095741706 054200618 +000000351 000538184 000591678 D|019419574 075476466 +000000351 000545626 000628745 D|002477198 091147176 +000000351 000594439 000644045 D|001443971 062532375 +000000351 000596543 000646509 D|061653121 014779147 +000000351 000602429 000652933 D|068113623 026694719 +000000351 000656893 000696848 D|047043897 060155204 +000000351 000682896 000703292 D|007775944 041053215 +000000351 000692511 000704630 D|088655451 034528451 +000000351 000703210 000712283 D|034265153 079059018 +000000351 000713555 000727473 D|021354198 014069046 +000000351 000831615 000732282 D|046852992 079000159 +000000351 000837294 000746841 D|053652622 066103954 +000000351 000840027 000753924 D|051502251 019465049 +000000351 000845210 000776101 D|082023928 092861506 +000000351 000938095 000792410 D|073414952 029642734 +000000351 000949603 000822351 D|076948230 014338025 +000000351 000968910 000852406 D|073910033 082507919 +000000351 000991446 000900865 D|085826689 074998076 +000000351 000996422 000970019 D|068820955 070506723 +000000351 000996635 000995798 D|040141965 092747807 +000000352 000009027 000006790 D|018111281 036867809 +000000352 000018054 000025326 D|044245886 090813222 +000000352 000035692 000076088 D|029285411 000438247 +000000352 000060875 000087581 D|022676927 085241301 +000000352 000123230 000211819 D|023231294 010703536 +000000352 000128524 000224188 D|035970244 059077748 +000000352 000138907 000224524 D|059920549 089143851 +000000352 000139966 000242921 D|098024906 013385352 +000000352 000140977 000251301 D|071643290 054772489 +000000352 000148764 000254154 D|082449200 033843655 +000000352 000161432 000300503 D|054224458 043819031 +000000352 000168116 000320126 D|050446946 068321787 +000000352 000184785 000335427 D|056263620 010652261 +000000352 000198193 000348804 D|049200319 006524435 +000000352 000216850 000359356 D|017590711 085841823 +000000352 000233370 000377116 D|095111995 008834035 +000000352 000265299 000396859 D|055807140 036203343 +000000352 000270186 000440050 D|021935945 005728371 +000000352 000324067 000449090 D|057577119 060848857 +000000352 000342825 000451728 D|061867184 014416102 +000000352 000352678 000457204 D|051992224 041107127 +000000352 000358564 000459202 D|031201068 032576606 +000000352 000359317 000479844 D|028019514 064419051 +000000352 000370666 000480678 D|012785850 086545103 +000000352 000375472 000499543 D|059223082 077454232 +000000352 000418378 000525424 D|095329382 097144803 +000000352 000439284 000557864 D|038914417 099078317 +000000352 000453483 000584621 D|081406916 002176414 +000000352 000525358 000596648 D|094134759 021534187 +000000352 000557661 000622655 D|021558849 079866320 +000000352 000642089 000632001 D|098003855 088804150 +000000352 000656478 000681016 D|049022247 041163766 +000000352 000669556 000702328 D|034482882 071011328 +000000352 000669575 000726633 D|058086703 065718857 +000000352 000672091 000775251 D|060911413 054104621 +000000352 000673731 000791825 D|058639659 036925228 +000000352 000711157 000812593 D|047333220 077905067 +000000352 000726409 000814890 D|007503321 005142292 +000000352 000746694 000831035 D|054383331 019072892 +000000352 000749901 000837872 D|061594099 040681330 +000000352 000773484 000842082 D|053847776 022048735 +000000352 000801456 000847788 D|041217700 028718706 +000000352 000881014 000848040 D|039528718 022155877 +000000352 000902312 000865119 D|058423285 064280231 +000000352 000910066 000911059 D|090724429 033275461 +000000352 000911219 000918740 D|045144889 018852164 +000000352 000934884 000974195 D|038338257 042823716 +000000352 000944840 000986406 D|033601514 001653264 +000000352 000964776 000989972 D|038316924 052177228 +000000352 000975118 000996757 D|016666011 053622556 +000000353 000006293 000002753 D|002599360 022081463 +000000353 000060699 000003915 D|016362755 029695718 +000000353 000099311 000042917 D|025245141 019111430 +000000353 000099862 000044907 D|086163383 005422629 +000000353 000179216 000145296 D|011126414 027986983 +000000353 000220297 000233934 D|071561398 029367719 +000000353 000257977 000245574 D|098594804 067250567 +000000353 000262756 000248160 D|070310201 009610542 +000000353 000266776 000255478 D|020658286 084818822 +000000353 000277324 000259297 D|053191659 048092428 +000000353 000280097 000269399 D|089603297 080207761 +000000353 000282247 000277596 D|030317936 055281922 +000000353 000299232 000326162 D|084271022 045878199 +000000353 000313303 000326685 D|060100649 071714109 +000000353 000316297 000343629 D|046515001 032901887 +000000353 000359797 000348382 D|061937173 039925461 +000000353 000371185 000375492 D|075651955 010543174 +000000353 000373995 000378413 D|002266760 045321173 +000000353 000390026 000381665 D|005607149 006855977 +000000353 000417057 000409426 D|061489272 060191372 +000000353 000429268 000410147 D|097502453 014882273 +000000353 000429324 000434942 D|047304502 016430719 +000000353 000476600 000440421 D|003042772 043103073 +000000353 000484741 000453791 D|020269481 086824846 +000000353 000535597 000498876 D|003187181 015650616 +000000353 000544552 000523806 D|023212759 011631146 +000000353 000580913 000536130 D|097613980 035167671 +000000353 000596099 000589871 D|030704263 031337491 +000000353 000623370 000594156 D|059848500 079046851 +000000353 000668275 000609833 D|027266338 045439005 +000000353 000669686 000611557 D|038663534 086755166 +000000353 000704378 000615287 D|016036394 089061091 +000000353 000738870 000626581 D|016333140 091147961 +000000353 000791968 000630387 D|066664819 095894619 +000000353 000804402 000651122 D|070097434 071794128 +000000353 000804955 000680431 D|033048410 042650011 +000000353 000821658 000748067 D|022079342 071741603 +000000353 000843943 000784047 D|013863889 001289390 +000000353 000855268 000792521 D|026882249 051742987 +000000353 000878913 000814216 D|075685537 053368902 +000000353 000889924 000824809 D|062549929 085693116 +000000353 000895426 000835718 D|065513148 073768020 +000000353 000908952 000843048 D|064077951 073649590 +000000353 000912179 000846639 D|090099986 071122285 +000000353 000936810 000873133 D|054646838 095191856 +000000353 000947927 000874256 D|028323531 093231046 +000000353 000967487 000879413 D|034987852 002127573 +000000353 000974433 000913087 D|061734113 077747738 +000000353 000984502 000940958 D|044995701 067381594 +000000353 000999709 000957943 D|003746551 018777925 +000000354 000009752 000001216 D|008921718 013781861 +000000354 000076543 000013112 D|057276647 070720483 +000000354 000083849 000019734 D|080737524 027306502 +000000354 000119591 000053263 D|042480954 008936776 +000000354 000134718 000075781 D|075521431 070042267 +000000354 000170995 000079139 D|065096753 097490183 +000000354 000172032 000114730 D|061734931 018272128 +000000354 000180125 000125153 D|026013606 002592563 +000000354 000209120 000134488 D|095163078 022393546 +000000354 000219312 000151390 D|039442515 004042382 +000000354 000225495 000185706 D|033437146 087148857 +000000354 000244017 000207869 D|062461596 006850982 +000000354 000327890 000249900 D|086421620 085435458 +000000354 000362045 000255509 D|001246115 044180695 +000000354 000398036 000285589 D|072428608 036965013 +000000354 000418828 000343935 D|094815702 048176784 +000000354 000422680 000355254 D|013017838 018365644 +000000354 000445874 000388069 D|017916451 056774618 +000000354 000446060 000413301 D|044722247 096087105 +000000354 000464207 000416780 D|068651478 054024311 +000000354 000488274 000442963 D|093441986 086460522 +000000354 000510721 000447534 D|034404370 033643234 +000000354 000511636 000457364 D|005209388 019303522 +000000354 000516611 000457476 D|000918528 042326048 +000000354 000521014 000484719 D|081309148 041559360 +000000354 000531562 000496941 D|070501893 072681923 +000000354 000538831 000503613 D|004093272 078514537 +000000354 000556897 000510124 D|041103131 036786169 +000000354 000556989 000528926 D|076224379 044181142 +000000354 000560460 000561607 D|052435207 094601372 +000000354 000566376 000605217 D|049549658 044941838 +000000354 000590518 000626532 D|064849262 062355332 +000000354 000610081 000627321 D|024832244 054563747 +000000354 000629192 000631951 D|010838138 096435320 +000000354 000641712 000656021 D|072976742 035368008 +000000354 000645493 000684191 D|006427868 011741193 +000000354 000656147 000705141 D|031926991 067389826 +000000354 000676309 000730566 D|021617394 051310921 +000000354 000713168 000733541 D|074039977 005133943 +000000354 000739331 000776842 D|068940065 038150696 +000000354 000780082 000789971 D|074153640 075542145 +000000354 000788861 000832560 D|036191478 057824257 +000000354 000793602 000839930 D|052379448 028228036 +000000354 000795637 000860521 D|042196690 028697158 +000000354 000803395 000867619 D|043177091 095825554 +000000354 000811990 000891142 D|032405209 042570004 +000000354 000916942 000904512 D|065965031 094657389 +000000354 000922105 000933399 D|035309426 022113640 +000000354 000959465 000954404 D|048404809 013664512 +000000354 000982637 000984220 D|044825427 021749152 +000000355 000142323 000024162 D|076620431 044717108 +000000355 000145554 000033189 D|007376756 042649636 +000000355 000154240 000046352 D|058549821 023672090 +000000355 000165486 000052597 D|076945206 002348278 +000000355 000165612 000075049 D|038739818 074121072 +000000355 000179541 000081942 D|018170060 044444928 +000000355 000204399 000144301 D|063820830 010941002 +000000355 000225558 000183289 D|010915627 008224633 +000000355 000277059 000209597 D|029112160 047741574 +000000355 000296627 000209943 D|025865178 043776200 +000000355 000324348 000213615 D|053212310 020567961 +000000355 000336972 000220125 D|063230422 029409868 +000000355 000337377 000263293 D|091787826 075500331 +000000355 000343452 000266253 D|023008147 026192903 +000000355 000385151 000285622 D|071507371 018629118 +000000355 000385839 000317413 D|073559135 090211046 +000000355 000399029 000331324 D|028560766 047764505 +000000355 000408445 000356353 D|039780875 092727822 +000000355 000418375 000382070 D|010868791 051636784 +000000355 000481314 000392826 D|094616303 013035752 +000000355 000484818 000410249 D|059408090 069777796 +000000355 000495158 000454755 D|078357879 050452028 +000000355 000517150 000463652 D|068162911 061046404 +000000355 000523933 000478232 D|090111064 053842973 +000000355 000529366 000484876 D|017390245 003742742 +000000355 000532687 000496941 D|013276828 018833886 +000000355 000539628 000513739 D|044869920 083554103 +000000355 000550529 000514413 D|064748110 065398146 +000000355 000573562 000541399 D|065664765 046151149 +000000355 000584859 000547113 D|043133833 095972027 +000000355 000626942 000550491 D|081633506 083915338 +000000355 000631384 000581285 D|094738371 096886600 +000000355 000662088 000596887 D|017478092 098383596 +000000355 000666539 000628299 D|090251999 024263218 +000000355 000718900 000643731 D|054670729 030141846 +000000355 000721497 000656063 D|006573456 003421276 +000000355 000827386 000658909 D|052715231 022067628 +000000355 000830948 000661212 D|072611487 010418452 +000000355 000845954 000672835 D|094022032 020365628 +000000355 000875301 000686310 D|034907175 030563321 +000000355 000901630 000719076 D|064118178 071454513 +000000355 000911957 000792509 D|056940464 099543160 +000000355 000935033 000803283 D|057282720 066727376 +000000355 000936647 000816553 D|079708237 038222006 +000000355 000938364 000822208 D|074626253 034789281 +000000355 000947209 000835068 D|027343457 071661120 +000000355 000954172 000876493 D|091148967 022658315 +000000355 000995707 000878392 D|095179205 075191126 +000000355 000996626 000964471 D|018513537 036501334 +000000355 000999427 000982130 D|005998375 046133925 +000000356 000007265 000003058 D|069048277 005795053 +000000356 000007514 000014601 D|060556730 089943607 +000000356 000009378 000020031 D|077162397 048674562 +000000356 000076936 000024907 D|049572903 021396111 +000000356 000090581 000026764 D|065598351 059950729 +000000356 000105833 000030674 D|080745167 049556404 +000000356 000109862 000050954 D|081476295 056698271 +000000356 000126487 000052484 D|098898998 026601455 +000000356 000166499 000074409 D|025824870 039455131 +000000356 000201772 000216395 D|014288693 015908179 +000000356 000212758 000225534 D|016139121 078623431 +000000356 000218164 000235644 D|006368981 043519776 +000000356 000221563 000239446 D|020513191 073923886 +000000356 000228315 000266473 D|015577677 076219604 +000000356 000270705 000308755 D|008340417 086789560 +000000356 000356377 000324555 D|057534055 037979905 +000000356 000358177 000326287 D|059682669 005644778 +000000356 000380057 000345577 D|097546457 019739287 +000000356 000392835 000387662 D|090532367 047764952 +000000356 000420281 000390733 D|066727958 002024166 +000000356 000439467 000399413 D|065049663 077903268 +000000356 000453099 000407410 D|003188721 007230642 +000000356 000460436 000455078 D|090166033 064441187 +000000356 000467494 000460391 D|010895680 073082907 +000000356 000468709 000463048 D|004104837 081431316 +000000356 000501029 000469523 D|060374606 028268596 +000000356 000523729 000502081 D|071163737 080601409 +000000356 000588180 000504093 D|080536176 089248523 +000000356 000607486 000512014 D|077875833 042272067 +000000356 000614246 000544835 D|055709740 015037045 +000000356 000640678 000580793 D|085799984 029083832 +000000356 000673107 000601239 D|085195347 060574527 +000000356 000681205 000606348 D|085855705 088381513 +000000356 000685233 000630087 D|097558005 038616793 +000000356 000694825 000646499 D|011526452 064718762 +000000356 000706493 000657912 D|046338420 094010253 +000000356 000708525 000658302 D|046338423 052606415 +000000356 000736653 000667799 D|041844576 054236833 +000000356 000774441 000687660 D|065095835 021938502 +000000356 000799498 000744178 D|085907558 071519635 +000000356 000810650 000765950 D|044162256 093333490 +000000356 000813092 000796388 D|096164758 022507949 +000000356 000820781 000818342 D|096257951 071556381 +000000356 000836041 000877704 D|013928648 016990897 +000000356 000859288 000885646 D|032958947 074876911 +000000356 000899574 000900504 D|003189123 087939247 +000000356 000910252 000926447 D|013578588 082417753 +000000356 000947187 000927341 D|000427150 030089076 +000000356 000970164 000994591 D|061336503 057169047 +000000356 000981833 000995331 D|065202508 034871721 +000000357 000009011 000004465 D|070331088 078017097 +000000357 000036882 000012359 D|059840760 051599510 +000000357 000043735 000016487 D|031447133 069958946 +000000357 000107280 000057799 D|045642471 086550070 +000000357 000115083 000061395 D|015435682 053052447 +000000357 000139732 000082906 D|011270786 046659536 +000000357 000162055 000088497 D|098189116 035543654 +000000357 000173056 000127899 D|058703538 067115115 +000000357 000205884 000135439 D|006689859 079661176 +000000357 000225373 000153750 D|090209727 084735707 +000000357 000232363 000189764 D|078619173 064590207 +000000357 000235430 000191092 D|004966367 014092288 +000000357 000270485 000202306 D|015441338 078315462 +000000357 000272455 000204304 D|040466828 053831868 +000000357 000276784 000210622 D|006562245 007869461 +000000357 000350727 000217041 D|062130863 030070567 +000000357 000361730 000226104 D|038325748 055078560 +000000357 000375422 000234206 D|098110849 029924195 +000000357 000423174 000241034 D|077281940 092424780 +000000357 000474155 000299262 D|090379010 010296238 +000000357 000527628 000302850 D|032515793 005286495 +000000357 000527784 000333131 D|016895637 075462032 +000000357 000548319 000337898 D|056185541 047577592 +000000357 000560784 000341838 D|081561569 081695201 +000000357 000578775 000363772 D|016992525 024875205 +000000357 000625494 000390690 D|063365730 066652355 +000000357 000631970 000417099 D|022989028 078226646 +000000357 000632924 000457154 D|028780226 098630727 +000000357 000650708 000489155 D|033581441 093136919 +000000357 000659565 000494020 D|063033215 074712824 +000000357 000692139 000500825 D|028517053 045653391 +000000357 000698266 000575211 D|050016218 041534802 +000000357 000705455 000582483 D|011862747 035896002 +000000357 000713888 000589821 D|045468451 064447193 +000000357 000741118 000621042 D|039674935 000713888 +000000357 000745828 000628759 D|079661644 094041508 +000000357 000760417 000638601 D|045991974 071272778 +000000357 000763155 000689878 D|028699074 046145480 +000000357 000793370 000700913 D|069162919 045680444 +000000357 000872707 000713084 D|019488096 056780027 +000000357 000877234 000748514 D|075632691 014045281 +000000357 000881041 000760682 D|043794969 008720810 +000000357 000888196 000766478 D|090061813 064076013 +000000357 000966511 000783374 D|089512987 062375631 +000000357 000967539 000817018 D|014334008 025913828 +000000357 000976309 000832509 D|015033294 012873677 +000000357 000977797 000837382 D|073319659 037948409 +000000357 000985902 000859689 D|009751721 076028446 +000000357 000987106 000980435 D|051574396 097194444 +000000357 000989719 000990528 D|044513534 024276350 +000000358 000015145 000015543 D|095408387 001449044 +000000358 000022910 000033883 D|017406297 033233205 +000000358 000049191 000047505 D|061699838 094146915 +000000358 000064659 000056532 D|006235870 040401262 +000000358 000095704 000061692 D|062810668 091586188 +000000358 000113343 000100725 D|083841905 053156041 +000000358 000114502 000147042 D|086682682 051241669 +000000358 000116591 000151109 D|035415704 014511224 +000000358 000123981 000164728 D|043922871 096298875 +000000358 000151633 000169720 D|078788988 030707281 +000000358 000207711 000175576 D|047477760 038773036 +000000358 000242922 000178896 D|029166589 008342383 +000000358 000243730 000184182 D|025966327 024765545 +000000358 000264177 000196425 D|014807459 038154556 +000000358 000293147 000233398 D|043671232 045825101 +000000358 000374053 000251147 D|040530044 023965989 +000000358 000385285 000263787 D|043846820 038931874 +000000358 000387786 000270690 D|040616972 056368850 +000000358 000392235 000279508 D|067613892 047622816 +000000358 000421970 000286843 D|094320612 003534823 +000000358 000448801 000288389 D|065703663 056803440 +000000358 000452188 000300966 D|070905734 001738049 +000000358 000457351 000326151 D|004472975 081393346 +000000358 000485004 000336530 D|087934602 031563256 +000000358 000491892 000364162 D|098077660 062218925 +000000358 000501494 000428848 D|037563496 076823541 +000000358 000549439 000463920 D|007469178 088856430 +000000358 000565812 000487381 D|006338133 038655384 +000000358 000577731 000489518 D|090071378 087510083 +000000358 000604918 000566630 D|034159398 023784094 +000000358 000634772 000603056 D|015791118 090311534 +000000358 000776129 000606984 D|018311638 038875167 +000000358 000801555 000613412 D|003042343 015849711 +000000358 000802193 000648887 D|010878975 064093979 +000000358 000850525 000670618 D|004276048 094439410 +000000358 000851588 000687212 D|091274835 072749366 +000000358 000852553 000719979 D|076688628 067189254 +000000358 000877693 000732841 D|034176448 046161028 +000000358 000882670 000819225 D|012505841 064049744 +000000358 000893151 000830613 D|007634574 063377418 +000000358 000921271 000834191 D|081361590 023178300 +000000358 000921503 000835997 D|041437890 053056112 +000000358 000937658 000865226 D|071548177 092786896 +000000358 000948509 000875759 D|033714376 079037622 +000000358 000950115 000898162 D|024649745 057058016 +000000358 000968569 000932911 D|042878503 052498501 +000000358 000970345 000936690 D|021594163 076005290 +000000358 000973277 000983358 D|097241358 005377008 +000000358 000975078 000983962 D|041411812 064102877 +000000358 000989931 000990077 D|017857941 073708802 +000000359 000006338 000022568 D|028922404 091671236 +000000359 000037374 000039359 D|005260945 038404143 +000000359 000138325 000070365 D|022225308 048271528 +000000359 000165614 000083144 D|089986543 073540050 +000000359 000168999 000124735 D|040176760 086536206 +000000359 000169054 000128758 D|068978851 018498915 +000000359 000185861 000149425 D|049633095 062002728 +000000359 000212102 000158039 D|091802486 030868806 +000000359 000222583 000165600 D|014982138 099424769 +000000359 000238205 000169578 D|092815110 007007118 +000000359 000270775 000188206 D|089941411 062578074 +000000359 000271817 000242289 D|047794873 042526128 +000000359 000274567 000243565 D|007291973 067554293 +000000359 000276689 000247252 D|034563477 074647644 +000000359 000291639 000251042 D|076152582 031343712 +000000359 000297744 000252712 D|062582089 007144194 +000000359 000316774 000333514 D|082236162 071717955 +000000359 000318563 000367806 D|033062678 097090693 +000000359 000372885 000372792 D|051731510 090815123 +000000359 000394227 000373382 D|029131503 076579052 +000000359 000408840 000378540 D|058386236 067468117 +000000359 000412144 000389216 D|048442014 094654395 +000000359 000422880 000395991 D|053405259 042279423 +000000359 000429926 000402207 D|065063834 074937080 +000000359 000438422 000403088 D|076725064 070087141 +000000359 000462850 000404980 D|011652193 013372625 +000000359 000510594 000411064 D|088730405 064370054 +000000359 000525895 000453383 D|076425892 059335950 +000000359 000622915 000499509 D|099205096 078924262 +000000359 000688388 000533538 D|047884873 079000354 +000000359 000756749 000541411 D|081451621 006020311 +000000359 000759054 000577242 D|039402131 051819466 +000000359 000773185 000589191 D|091201514 009474551 +000000359 000781441 000595264 D|093626436 027759008 +000000359 000786973 000633556 D|015055457 044419424 +000000359 000821025 000646841 D|050190087 032016373 +000000359 000821196 000651292 D|005020988 097856346 +000000359 000826638 000667711 D|020998960 006830948 +000000359 000830415 000698907 D|061653938 099812706 +000000359 000843355 000713929 D|064616874 045646571 +000000359 000847100 000734225 D|091157205 031994748 +000000359 000868423 000754730 D|025110120 065646647 +000000359 000879125 000773304 D|015339800 092660021 +000000359 000902427 000797721 D|025235954 051367382 +000000359 000905939 000804396 D|088870257 087241400 +000000359 000939012 000836289 D|025248902 072108352 +000000359 000939657 000837043 D|012719594 061921026 +000000359 000961327 000853684 D|008828831 081964570 +000000359 000973925 000905463 D|081627787 028329914 +000000359 000995711 000929538 D|019758443 083619699 +000000360 000001155 000086875 D|062162273 069043481 +000000360 000027759 000101903 D|052749185 097930260 +000000360 000044195 000120915 D|015161390 030997387 +000000360 000045140 000121507 D|049791095 034692861 +000000360 000049140 000165755 D|011326856 028501020 +000000360 000051209 000194515 D|063285807 033656299 +000000360 000051213 000241092 D|086326855 001265936 +000000360 000074970 000241733 D|040387651 098261260 +000000360 000078497 000271504 D|038347920 034511651 +000000360 000081095 000287447 D|066983740 091059843 +000000360 000127136 000299638 D|099029441 066592625 +000000360 000129392 000304168 D|005378561 084118761 +000000360 000137865 000305670 D|067676894 071597988 +000000360 000197076 000319078 D|021386251 008444858 +000000360 000231335 000339121 D|016023983 020095509 +000000360 000232999 000341734 D|084299761 046967371 +000000360 000235777 000352169 D|005008907 047642170 +000000360 000268592 000362183 D|039669852 007179394 +000000360 000313687 000368940 D|054810332 015370545 +000000360 000330052 000410697 D|060770892 094230935 +000000360 000340513 000412092 D|057312075 029767474 +000000360 000349340 000491351 D|075855800 041221843 +000000360 000359610 000528934 D|018936355 051286426 +000000360 000360104 000540957 D|020671879 013425921 +000000360 000360670 000612298 D|092779991 095179833 +000000360 000383393 000632404 D|016384809 049040299 +000000360 000410906 000633514 D|033749238 058848354 +000000360 000450006 000660462 D|099384876 098426714 +000000360 000510903 000660716 D|014187660 084873807 +000000360 000512664 000671643 D|006592505 045169235 +000000360 000545460 000682244 D|042152249 020328964 +000000360 000555249 000698788 D|042599092 079888698 +000000360 000575788 000732841 D|015139470 078127344 +000000360 000585586 000746815 D|012271769 030464839 +000000360 000647671 000783120 D|083082173 050647816 +000000360 000665034 000793358 D|059179407 020207894 +000000360 000681122 000798623 D|084011906 024657751 +000000360 000727655 000817995 D|052716274 032639628 +000000360 000733488 000833136 D|029935237 061432872 +000000360 000744073 000833272 D|011696995 096714070 +000000360 000761682 000849640 D|096213582 037039123 +000000360 000802351 000867191 D|068646914 088145605 +000000360 000813538 000908560 D|099601686 057151806 +000000360 000911611 000913961 D|097961838 080371031 +000000360 000927284 000917141 D|054571090 096627290 +000000360 000941522 000918655 D|023321281 097864526 +000000360 000959121 000940374 D|091134619 093769732 +000000360 000962833 000954889 D|075093425 059309145 +000000360 000980040 000956574 D|037248684 008787182 +000000360 000985891 000990627 D|001913000 085802341 +000000361 000013765 000023782 D|053514760 043395335 +000000361 000044265 000031555 D|082715959 063763100 +000000361 000049396 000035678 D|076231865 066651988 +000000361 000064482 000036247 D|041505961 098673485 +000000361 000065912 000071036 D|093459316 083045640 +000000361 000088243 000120134 D|008528462 054680044 +000000361 000095960 000124368 D|070427496 040445132 +000000361 000134163 000140342 D|081424292 007434252 +000000361 000144844 000166050 D|091483657 029928432 +000000361 000165452 000186226 D|032876520 053103530 +000000361 000174794 000191644 D|090499957 045538607 +000000361 000177430 000217834 D|042914353 010877392 +000000361 000187964 000228442 D|014756722 081703400 +000000361 000188711 000273908 D|029046315 038379451 +000000361 000190336 000281568 D|090115700 001399867 +000000361 000209391 000327216 D|056175258 018115226 +000000361 000247982 000333626 D|044599813 012360435 +000000361 000259742 000337240 D|056495732 099232186 +000000361 000313748 000365036 D|095126748 028439987 +000000361 000320855 000384124 D|078505689 024200548 +000000361 000366058 000445336 D|019403101 012007063 +000000361 000371657 000477737 D|077935759 090704323 +000000361 000387686 000535643 D|018767693 030832308 +000000361 000441588 000540566 D|060134762 092251804 +000000361 000482087 000545948 D|006888750 093708726 +000000361 000502764 000576528 D|084452893 040074825 +000000361 000516678 000585450 D|018599342 055322541 +000000361 000529520 000587214 D|035082343 069045569 +000000361 000530652 000604971 D|027334883 093993528 +000000361 000533155 000638791 D|010980873 099551301 +000000361 000539431 000649246 D|045999017 069950005 +000000361 000556493 000656887 D|067059331 028836982 +000000361 000585400 000664356 D|032034742 095566497 +000000361 000591891 000698373 D|075986141 035338364 +000000361 000641964 000700416 D|045451702 016934417 +000000361 000687040 000701183 D|040212811 031214409 +000000361 000717021 000712088 D|090768866 013262180 +000000361 000743165 000719924 D|009382728 038732713 +000000361 000794031 000753723 D|035239811 090366203 +000000361 000806892 000762586 D|090528074 067422936 +000000361 000820153 000795998 D|054036017 067501597 +000000361 000820398 000834737 D|034811111 080849527 +000000361 000839590 000857821 D|095280867 062256212 +000000361 000855424 000924356 D|098229917 062158460 +000000361 000923679 000937437 D|052518500 024012266 +000000361 000927161 000938134 D|085200572 084394835 +000000361 000928505 000945084 D|057105569 001143140 +000000361 000970054 000945856 D|045310737 082169974 +000000361 000971101 000948493 D|015650606 056866924 +000000361 000979245 000977043 D|013337055 013496447 +000000362 000006637 000004090 D|094603625 097144390 +000000362 000041729 000041643 D|051626780 038960176 +000000362 000053999 000080571 D|090127112 046939036 +000000362 000054335 000082563 D|058270063 098044406 +000000362 000063388 000125897 D|015523748 003758098 +000000362 000070165 000134104 D|073731171 075862743 +000000362 000074612 000141662 D|012087240 018804625 +000000362 000110801 000151908 D|071636467 064183878 +000000362 000111378 000156834 D|057883502 090875343 +000000362 000156789 000167199 D|026824547 071023162 +000000362 000176641 000209849 D|010043224 067661866 +000000362 000181275 000223209 D|063172770 007044053 +000000362 000193568 000261167 D|022182820 066062474 +000000362 000202056 000263610 D|041654631 002389654 +000000362 000211163 000273001 D|037097070 059943488 +000000362 000219819 000291758 D|007530105 013865030 +000000362 000229151 000294030 D|067375163 066951809 +000000362 000235128 000294718 D|055278885 086057270 +000000362 000280295 000343714 D|004482417 077545276 +000000362 000307741 000349463 D|053246660 063574818 +000000362 000311223 000452716 D|076608735 023906415 +000000362 000351144 000454725 D|083889639 073659266 +000000362 000353668 000486239 D|064193981 006346382 +000000362 000417408 000487628 D|004473676 076916062 +000000362 000426241 000505236 D|055673501 030024140 +000000362 000428217 000505943 D|007534017 099940464 +000000362 000433435 000522781 D|058676668 062610584 +000000362 000435256 000563768 D|055762133 048354673 +000000362 000438357 000584589 D|070325705 075701261 +000000362 000461800 000610750 D|050153809 068457627 +000000362 000515803 000622592 D|038933814 089898006 +000000362 000569447 000652913 D|063644835 037949010 +000000362 000590284 000662560 D|095720490 004464237 +000000362 000594227 000671926 D|008142963 093850195 +000000362 000605506 000678445 D|075620796 076428926 +000000362 000630251 000679014 D|032735711 065206797 +000000362 000670881 000685434 D|079614525 002707260 +000000362 000727852 000717956 D|048604143 041019592 +000000362 000753496 000726068 D|032763018 014944999 +000000362 000807565 000728812 D|095767759 096082249 +000000362 000814048 000732209 D|086991040 042591219 +000000362 000851374 000747945 D|085271077 060360656 +000000362 000880414 000767159 D|096831192 051502638 +000000362 000913696 000773155 D|045255840 095489447 +000000362 000949028 000795158 D|065351949 087925528 +000000362 000966970 000850446 D|088395171 080980885 +000000362 000970263 000882210 D|002665085 079985451 +000000362 000983534 000889655 D|084616836 061512128 +000000362 000993884 000914315 D|035543638 003956278 +000000362 000996527 000957908 D|040515262 087478535 +000000363 000011522 000030162 D|039924315 017548380 +000000363 000015358 000040934 D|090180261 079200068 +000000363 000023146 000040974 D|068326013 067003568 +000000363 000039206 000051189 D|010901019 089781833 +000000363 000048084 000063047 D|057591494 090775426 +000000363 000049173 000074451 D|050467669 025911710 +000000363 000068803 000092877 D|038007923 062749163 +000000363 000071672 000129306 D|092808745 009137270 +000000363 000075892 000133070 D|024877103 076850840 +000000363 000078790 000133130 D|066399097 096117306 +000000363 000104439 000174334 D|014682112 033361046 +000000363 000122231 000193332 D|047292123 003267801 +000000363 000126244 000230607 D|021397057 065785913 +000000363 000131676 000273312 D|085372352 039928013 +000000363 000208523 000276538 D|046749134 027671630 +000000363 000230245 000279905 D|011598364 083430985 +000000363 000267147 000290710 D|095223186 099815745 +000000363 000307593 000320210 D|000117363 043188577 +000000363 000348018 000325345 D|064170036 094149489 +000000363 000357982 000342535 D|046163468 097682799 +000000363 000388256 000350325 D|040187991 074853090 +000000363 000409797 000364803 D|017444545 080204628 +000000363 000431810 000365768 D|098830553 089712043 +000000363 000454560 000373535 D|059742572 001121319 +000000363 000455922 000377778 D|042150246 032306270 +000000363 000457824 000448736 D|011031127 099494730 +000000363 000492826 000454239 D|008302253 032299842 +000000363 000514776 000455951 D|002391949 023151513 +000000363 000516175 000494398 D|096608872 010861388 +000000363 000519691 000518729 D|091858175 042557337 +000000363 000523580 000562253 D|029820101 087980100 +000000363 000560060 000565197 D|083123352 040193479 +000000363 000579552 000584839 D|009304202 043544052 +000000363 000593891 000622326 D|009495830 002941553 +000000363 000601150 000640363 D|029154599 036163199 +000000363 000635175 000661688 D|072587972 014509379 +000000363 000638910 000662002 D|088391202 086085041 +000000363 000697890 000683610 D|002711770 025032488 +000000363 000755386 000688293 D|051093586 002962541 +000000363 000765660 000728484 D|063296261 008645415 +000000363 000773019 000733533 D|053774457 055536011 +000000363 000796662 000766564 D|002320993 032010363 +000000363 000869402 000802116 D|060521039 066968605 +000000363 000871779 000814954 D|091050249 037002597 +000000363 000873888 000922114 D|044377108 089452836 +000000363 000889137 000924365 D|061520618 083186016 +000000363 000904203 000931297 D|032007788 045302350 +000000363 000925368 000951048 D|043462134 071131359 +000000363 000926918 000951403 D|067580559 069044347 +000000363 000956946 000986006 D|061798352 057212615 +000000364 000008384 000013603 D|094822632 066894673 +000000364 000011344 000027470 D|076330721 085841356 +000000364 000026569 000108138 D|008278595 023449608 +000000364 000056157 000123923 D|087234014 008191782 +000000364 000057889 000146649 D|052507113 088498224 +000000364 000080788 000195346 D|014944653 089946947 +000000364 000108362 000210348 D|004563328 004805492 +000000364 000119302 000235655 D|089167286 090080397 +000000364 000151788 000239884 D|074857440 048243598 +000000364 000182193 000289974 D|059558021 086614538 +000000364 000199780 000295174 D|048557874 073078490 +000000364 000253175 000321311 D|089596491 090111853 +000000364 000279519 000343040 D|011552552 025107680 +000000364 000323996 000386602 D|015130141 070521403 +000000364 000358104 000399452 D|007682919 037867702 +000000364 000394496 000400958 D|069878779 026021266 +000000364 000401421 000431649 D|049960035 015936111 +000000364 000402961 000451285 D|040939658 071847080 +000000364 000408004 000457236 D|077245747 046938529 +000000364 000421290 000499782 D|010420468 036748431 +000000364 000421894 000500142 D|071865793 055552844 +000000364 000427810 000509904 D|028293480 019355920 +000000364 000429553 000529372 D|005984178 046035602 +000000364 000433515 000537981 D|011375288 055992716 +000000364 000434375 000561886 D|084607690 021944638 +000000364 000453350 000579061 D|056441892 027019939 +000000364 000470131 000579958 D|089812497 006873680 +000000364 000472358 000591687 D|096983089 068536779 +000000364 000474830 000665189 D|023890772 031141321 +000000364 000536956 000680894 D|067753724 022281011 +000000364 000664679 000688590 D|087878922 049214369 +000000364 000686848 000696208 D|057263235 038257338 +000000364 000698097 000718621 D|053988929 039149218 +000000364 000708051 000724644 D|076028078 031611303 +000000364 000732064 000730040 D|026875685 014919435 +000000364 000753468 000751663 D|012228717 069270815 +000000364 000772573 000785385 D|048565494 003992750 +000000364 000774765 000840643 D|095382569 067444232 +000000364 000782228 000845104 D|018515348 016822239 +000000364 000806722 000852313 D|062646691 094565042 +000000364 000848824 000855926 D|046767731 039574701 +000000364 000852381 000872804 D|058715014 060476419 +000000364 000866176 000890160 D|041613209 085702183 +000000364 000878597 000895562 D|087856774 074496515 +000000364 000924310 000913765 D|033435345 014547905 +000000364 000926987 000928158 D|079329970 050670514 +000000364 000928572 000928644 D|001450796 019680982 +000000364 000960732 000953484 D|049308179 048844071 +000000364 000967822 000986678 D|087417077 098339660 +000000364 000998570 000996029 D|045385697 046950624 +000000365 000063352 000010701 D|019720757 066675627 +000000365 000088493 000046169 D|016023344 069284466 +000000365 000088873 000048956 D|011933433 056995903 +000000365 000088909 000084794 D|006121681 008500545 +000000365 000104583 000136593 D|090183830 082929646 +000000365 000114406 000178401 D|090037042 084452400 +000000365 000138348 000179383 D|037938738 083096131 +000000365 000177273 000187433 D|053585228 051489889 +000000365 000178559 000187615 D|072588787 050662147 +000000365 000199132 000198927 D|045383318 008392390 +000000365 000215355 000248667 D|032933794 050725234 +000000365 000254287 000270767 D|013737389 063659469 +000000365 000258952 000279008 D|058931124 086161900 +000000365 000298203 000284235 D|051413931 031544718 +000000365 000351911 000287056 D|009178969 014668941 +000000365 000356463 000302758 D|083283773 000663908 +000000365 000375838 000320020 D|067929294 071454695 +000000365 000378090 000331606 D|007490729 067574991 +000000365 000388672 000336583 D|014594210 062814368 +000000365 000424650 000345998 D|021571804 037783732 +000000365 000435221 000351973 D|035308766 077338623 +000000365 000435891 000361513 D|081863237 050736628 +000000365 000454055 000378406 D|076141376 022970322 +000000365 000460616 000419464 D|047627696 094366230 +000000365 000506360 000433408 D|094260455 093825093 +000000365 000514668 000456066 D|094225487 030872498 +000000365 000519911 000473553 D|005883197 056818850 +000000365 000556838 000480911 D|034227898 020947160 +000000365 000574554 000498616 D|078847283 021199748 +000000365 000575101 000510944 D|077580617 000749079 +000000365 000597775 000515634 D|065978031 072012035 +000000365 000613359 000529412 D|055587884 090254404 +000000365 000640188 000530138 D|031819484 064141508 +000000365 000674210 000539014 D|083364805 083847483 +000000365 000685601 000606399 D|024978694 074651630 +000000365 000709333 000645140 D|074889333 005390368 +000000365 000758016 000647676 D|029825632 075909697 +000000365 000776809 000670465 D|018194898 033901875 +000000365 000795241 000675265 D|091273494 021050848 +000000365 000812295 000753599 D|056129859 095614336 +000000365 000836127 000797679 D|082441371 033350801 +000000365 000870791 000799185 D|044983887 051241969 +000000365 000881398 000815033 D|050405358 055327614 +000000365 000889856 000844334 D|033844961 036094983 +000000365 000898186 000868481 D|056799375 077739121 +000000365 000902890 000891428 D|011561265 002209400 +000000365 000913842 000929712 D|098529639 058124001 +000000365 000917280 000941914 D|020981317 095058990 +000000365 000917775 000975164 D|050549146 044418008 +000000365 000996024 000998571 D|048901525 007333534 +000000366 000002325 000014342 D|021282554 099661374 +000000366 000009317 000016726 D|069011224 093897859 +000000366 000030318 000017181 D|075713013 020716341 +000000366 000044121 000023372 D|074937846 067650075 +000000366 000056800 000034190 D|082340200 049117188 +000000366 000073925 000059192 D|017651129 073317262 +000000366 000079520 000081830 D|025721910 029076150 +000000366 000083191 000090118 D|048073942 019989498 +000000366 000096849 000097249 D|094801772 029627361 +000000366 000097859 000123365 D|013617674 063858159 +000000366 000101166 000148693 D|066092217 087273890 +000000366 000189403 000158829 D|094589175 002679427 +000000366 000231328 000163558 D|052233527 033857214 +000000366 000254242 000165411 D|090829598 035680158 +000000366 000296093 000178369 D|093378226 064269288 +000000366 000301459 000189921 D|095420784 056375506 +000000366 000322461 000192000 D|048555904 073486821 +000000366 000329669 000252327 D|070996810 018426491 +000000366 000332998 000258565 D|023926761 010452713 +000000366 000347558 000260213 D|063328201 043367019 +000000366 000361923 000267160 D|021219073 058895122 +000000366 000390394 000324588 D|019240870 071425112 +000000366 000394228 000336701 D|004310704 029978115 +000000366 000397982 000355192 D|085428481 041420184 +000000366 000407133 000375753 D|060681349 057707840 +000000366 000422859 000414585 D|009581558 060005095 +000000366 000433902 000425709 D|028922557 085584003 +000000366 000465281 000426334 D|068254543 073917138 +000000366 000491210 000459765 D|001886242 077010515 +000000366 000558280 000490212 D|087863753 029578843 +000000366 000574388 000526065 D|001940521 087246342 +000000366 000607212 000544532 D|044136688 009953160 +000000366 000669730 000545889 D|028021646 080523133 +000000366 000679977 000558823 D|098645416 024414261 +000000366 000681607 000562577 D|061552870 022848729 +000000366 000757278 000576359 D|004132507 037076762 +000000366 000768273 000619271 D|075001606 083912428 +000000366 000796010 000620680 D|013609611 035896007 +000000366 000803007 000622919 D|091796014 084535039 +000000366 000872010 000704473 D|067495872 065425115 +000000366 000889383 000729807 D|056932638 083698437 +000000366 000905860 000739155 D|077842253 073696354 +000000366 000911420 000739825 D|041204808 069185993 +000000366 000922050 000834961 D|032717694 024802835 +000000366 000923656 000843809 D|056230188 097743975 +000000366 000924357 000855094 D|071211199 051244114 +000000366 000970553 000909151 D|083226345 049449258 +000000366 000987643 000942689 D|095273110 039323752 +000000366 000997577 000955519 D|070487929 018193335 +000000366 000999578 000995160 D|071579092 089580706 +000000367 000005656 000006925 D|087809112 015325266 +000000367 000029322 000032595 D|040181352 097932242 +000000367 000032730 000055769 D|028791783 038159145 +000000367 000114688 000068319 D|008040930 080830612 +000000367 000177399 000077983 D|000679960 049597829 +000000367 000182175 000081363 D|025998783 006446865 +000000367 000183096 000119512 D|028861220 041070131 +000000367 000192163 000148566 D|035664966 098004313 +000000367 000208851 000150209 D|073750239 099747449 +000000367 000211948 000158368 D|069953924 013312992 +000000367 000213532 000158430 D|009303832 021153152 +000000367 000253019 000164442 D|088215383 026250978 +000000367 000273822 000185415 D|002191512 069620254 +000000367 000279448 000200676 D|067914151 055854600 +000000367 000287693 000274152 D|028731518 055375564 +000000367 000293366 000275469 D|037115432 030329547 +000000367 000295901 000281573 D|068678517 051765340 +000000367 000373822 000354228 D|024078122 078143451 +000000367 000380791 000358327 D|018330945 061990662 +000000367 000396665 000384075 D|033915925 059140698 +000000367 000432097 000421847 D|020062440 071318120 +000000367 000447041 000423323 D|008641910 048388465 +000000367 000494564 000425510 D|021571319 070105480 +000000367 000501616 000439866 D|019776346 041381846 +000000367 000547965 000480209 D|043967388 067088469 +000000367 000591005 000491859 D|010596397 038409015 +000000367 000595070 000499816 D|057831292 057477876 +000000367 000595308 000507891 D|048847542 071572974 +000000367 000601559 000544371 D|079785979 030688546 +000000367 000609609 000568911 D|015247189 054660087 +000000367 000609982 000578368 D|028007899 008750639 +000000367 000619320 000607162 D|069794468 023922599 +000000367 000669594 000624283 D|081251556 079043269 +000000367 000672876 000640770 D|001464888 065962485 +000000367 000686863 000707415 D|021915543 041667432 +000000367 000694889 000715193 D|080710744 069011044 +000000367 000708713 000725837 D|064638644 059870444 +000000367 000726277 000730959 D|003001482 084212123 +000000367 000731384 000731618 D|044835708 096510503 +000000367 000789728 000748982 D|093881903 084365258 +000000367 000830119 000777809 D|008914784 075860267 +000000367 000838012 000793393 D|068784375 031600784 +000000367 000852739 000847315 D|029756341 086378245 +000000367 000867994 000847563 D|068224293 076608862 +000000367 000876188 000892425 D|023299270 060692245 +000000367 000903739 000895521 D|033518937 075953902 +000000367 000904418 000908361 D|002979574 085246979 +000000367 000950930 000919054 D|012177652 055337983 +000000367 000970657 000986167 D|099299675 070206960 +000000367 000983417 000988731 D|028976664 054453166 +000000368 000012944 000028777 D|099012916 085829895 +000000368 000018315 000084881 D|098391862 013392341 +000000368 000030485 000106963 D|075064620 030011301 +000000368 000043580 000107941 D|006766859 073459327 +000000368 000064997 000114851 D|010018603 016107941 +000000368 000085108 000118202 D|063656597 096683677 +000000368 000116773 000127355 D|055729014 027059746 +000000368 000118648 000158682 D|063416011 084769188 +000000368 000123500 000168186 D|003340059 025034713 +000000368 000132353 000186107 D|079046653 006953968 +000000368 000170764 000197256 D|092438095 023566867 +000000368 000242119 000228329 D|085598925 069923149 +000000368 000249285 000276260 D|043697094 006170923 +000000368 000260994 000287596 D|012022712 019037788 +000000368 000263053 000294255 D|091954733 048770683 +000000368 000292275 000310296 D|015628989 085675654 +000000368 000311788 000313936 D|087582204 048636852 +000000368 000335729 000324506 D|007438946 057291034 +000000368 000342648 000326544 D|053993808 025340887 +000000368 000344340 000333231 D|032549788 007946122 +000000368 000365125 000459118 D|035822356 074940165 +000000368 000395627 000484052 D|056923353 010547694 +000000368 000427026 000511618 D|044342601 047150296 +000000368 000462848 000513100 D|060550969 099447958 +000000368 000490359 000553411 D|029314333 031191392 +000000368 000511141 000633306 D|068383716 015340053 +000000368 000527848 000648648 D|047007435 053808871 +000000368 000599657 000655679 D|038532963 050322755 +000000368 000646084 000664997 D|005302167 009973279 +000000368 000650169 000667076 D|052250988 062139613 +000000368 000670408 000670904 D|004906391 004697503 +000000368 000682312 000683667 D|082871414 094131388 +000000368 000705379 000689346 D|079694115 090605134 +000000368 000717923 000738125 D|082998558 023232037 +000000368 000718909 000743460 D|042583247 002676647 +000000368 000719614 000768197 D|093368746 044372466 +000000368 000736790 000768750 D|086839732 024134826 +000000368 000744375 000805603 D|067579493 089785385 +000000368 000778212 000813517 D|021288816 009889176 +000000368 000782460 000823119 D|096681315 009741629 +000000368 000782898 000837452 D|026763359 000728279 +000000368 000818983 000860693 D|009360642 043424635 +000000368 000827869 000864138 D|051406746 035331849 +000000368 000863011 000911170 D|008408010 006615733 +000000368 000894014 000926777 D|037567045 053531690 +000000368 000935042 000938572 D|034057348 048906429 +000000368 000976188 000944828 D|096082375 093977435 +000000368 000987583 000952168 D|091624991 041441808 +000000368 000990237 000990444 D|066433954 061540882 +000000368 000995649 000999214 D|043017730 002081268 +000000369 000032602 000007959 D|030092702 012078896 +000000369 000040430 000046938 D|051107041 008585396 +000000369 000059752 000054816 D|038035477 085062551 +000000369 000128260 000089183 D|079347972 014289045 +000000369 000129253 000093546 D|074770933 078224876 +000000369 000151280 000103347 D|046230501 007122286 +000000369 000170719 000125496 D|068057598 011566718 +000000369 000189182 000126169 D|019849538 085467306 +000000369 000214573 000154687 D|000040392 066084330 +000000369 000223707 000192367 D|049678958 033641347 +000000369 000236879 000244036 D|094814212 051740401 +000000369 000295320 000245482 D|005780187 006741577 +000000369 000307257 000250374 D|044987955 016266820 +000000369 000309407 000250682 D|038945598 099646369 +000000369 000311108 000271176 D|032929014 001530376 +000000369 000319589 000272272 D|026030843 079821497 +000000369 000325145 000278254 D|002230173 075091289 +000000369 000332087 000284182 D|009227336 015966752 +000000369 000344938 000296905 D|040624704 068222695 +000000369 000354876 000303537 D|091688872 022091005 +000000369 000367822 000335553 D|057526537 056689546 +000000369 000387139 000350825 D|041444565 041648853 +000000369 000393418 000379731 D|081408770 033693513 +000000369 000419386 000400794 D|035163678 024257959 +000000369 000504543 000416519 D|044905893 033571384 +000000369 000510643 000425188 D|041302455 021174201 +000000369 000534715 000456024 D|032426071 070874002 +000000369 000561535 000468390 D|045705324 067045616 +000000369 000573589 000473414 D|026955868 025668656 +000000369 000580147 000477136 D|060036464 058373567 +000000369 000603999 000542382 D|004179443 007659991 +000000369 000611627 000546595 D|080227717 081374372 +000000369 000624289 000563165 D|091070105 051440834 +000000369 000634208 000572295 D|031224905 099186244 +000000369 000664809 000591794 D|065473725 052255420 +000000369 000679599 000605603 D|024672640 033588094 +000000369 000702805 000647912 D|061863564 045478314 +000000369 000721567 000678727 D|081730111 027307763 +000000369 000733473 000683953 D|076173708 042024569 +000000369 000740686 000743970 D|077703600 084186252 +000000369 000744488 000746170 D|049741880 019773888 +000000369 000760550 000778925 D|097485785 059178498 +000000369 000762485 000786749 D|068575825 045681781 +000000369 000778562 000791590 D|072215369 011265841 +000000369 000807241 000824004 D|054861020 015234936 +000000369 000825366 000921710 D|071204821 043504725 +000000369 000915843 000925773 D|037727536 097097540 +000000369 000918891 000966966 D|085929737 009516611 +000000369 000953389 000978506 D|076757061 030505203 +000000369 000972074 000984490 D|093684430 029692052 +000000370 000015843 000004112 D|056164019 006366472 +000000370 000039166 000014598 D|040057769 024909632 +000000370 000040782 000022395 D|014415340 079435297 +000000370 000054369 000042144 D|057913266 003442639 +000000370 000058406 000049003 D|061537953 071794827 +000000370 000071856 000055174 D|017196997 080827185 +000000370 000096891 000083809 D|071605767 050363191 +000000370 000113286 000102988 D|059071954 092651585 +000000370 000128163 000110045 D|021699179 070534336 +000000370 000151169 000163757 D|031408076 032565063 +000000370 000171259 000168279 D|017137816 082601222 +000000370 000201991 000170808 D|015519291 027227675 +000000370 000220204 000179584 D|002808132 007218658 +000000370 000240024 000256323 D|015657443 027596005 +000000370 000251180 000286994 D|029240444 032189130 +000000370 000270291 000289931 D|047731879 006350297 +000000370 000277500 000306006 D|049442263 050478286 +000000370 000370682 000344476 D|083044541 095471638 +000000370 000388624 000384565 D|075858321 025585745 +000000370 000449754 000407497 D|022604268 056201439 +000000370 000517522 000433564 D|099467851 009070500 +000000370 000566774 000444860 D|094955292 032813973 +000000370 000567616 000457663 D|067293180 035257795 +000000370 000572824 000515536 D|082880542 047891960 +000000370 000594272 000528059 D|059069171 038924640 +000000370 000607723 000556284 D|058659068 067598218 +000000370 000622432 000563131 D|010059834 044620221 +000000370 000624157 000588741 D|007111459 097829026 +000000370 000629885 000595568 D|050419842 026851895 +000000370 000648371 000617422 D|060519698 044265828 +000000370 000686974 000659750 D|009157517 095808371 +000000370 000698013 000707003 D|033759636 027723327 +000000370 000704161 000725286 D|082316162 066733934 +000000370 000705427 000743661 D|031672701 053110397 +000000370 000736197 000754766 D|070042934 053311806 +000000370 000753515 000756644 D|001530533 046369306 +000000370 000754596 000757363 D|048355215 099985419 +000000370 000761430 000759557 D|018375532 075927467 +000000370 000771644 000766493 D|093769339 054401402 +000000370 000793782 000773930 D|060360778 046177324 +000000370 000845815 000794725 D|020720154 081591810 +000000370 000872995 000802272 D|050320140 067351744 +000000370 000879714 000823748 D|063874637 004296503 +000000370 000922400 000861898 D|063351660 009890462 +000000370 000936878 000912631 D|072323469 036422301 +000000370 000952956 000920665 D|047096467 079892314 +000000370 000971291 000934452 D|045905854 079827630 +000000370 000979172 000950495 D|086011849 067990922 +000000370 000985176 000970668 D|006542841 098573345 +000000370 000999618 000996313 D|013993416 085820418 +000000371 000033845 000031458 D|049257163 036193446 +000000371 000033891 000048968 D|052780373 060871158 +000000371 000041953 000064393 D|079504446 030349808 +000000371 000087781 000137916 D|000720971 077819595 +000000371 000093801 000141087 D|012830870 053730383 +000000371 000143546 000156877 D|036968776 056535082 +000000371 000145235 000159392 D|049410916 059397166 +000000371 000204177 000164917 D|036893384 020571286 +000000371 000205560 000172540 D|075639011 088869301 +000000371 000247210 000205971 D|029151625 039368145 +000000371 000256739 000206871 D|042140910 089272619 +000000371 000276307 000208657 D|007499001 062995798 +000000371 000294685 000214316 D|005073133 036145822 +000000371 000307312 000227639 D|016706625 058884516 +000000371 000323470 000244290 D|082094651 024133218 +000000371 000331584 000251651 D|026448369 024539679 +000000371 000352657 000261995 D|007259778 052476446 +000000371 000366560 000314686 D|025382723 019338212 +000000371 000370616 000337720 D|051747829 015594351 +000000371 000381206 000346770 D|047174943 060500243 +000000371 000383891 000365765 D|056394999 040828401 +000000371 000402378 000381533 D|095186841 025383205 +000000371 000475709 000422915 D|031703570 035667315 +000000371 000523314 000427588 D|088075990 070569324 +000000371 000523518 000427847 D|006881771 047954178 +000000371 000532618 000430343 D|018107426 011739446 +000000371 000554594 000451122 D|051307578 086697633 +000000371 000567509 000473256 D|084574699 068219393 +000000371 000584611 000481465 D|095755340 086717899 +000000371 000599972 000498000 D|048239678 099241959 +000000371 000634695 000523022 D|070965911 063931715 +000000371 000648033 000551083 D|047248703 007674855 +000000371 000666839 000555446 D|073319020 087682645 +000000371 000678289 000598819 D|079174330 007096297 +000000371 000689985 000600805 D|052223843 063228020 +000000371 000697742 000658738 D|049772645 000918320 +000000371 000707821 000676771 D|060308679 024707853 +000000371 000727018 000686092 D|008773214 062221016 +000000371 000746744 000693422 D|016597787 071214826 +000000371 000807961 000708207 D|036937548 077383977 +000000371 000814999 000762617 D|065175976 005656449 +000000371 000833366 000805846 D|011204935 006172476 +000000371 000834935 000830650 D|057679382 020563926 +000000371 000839342 000860680 D|022915393 087567326 +000000371 000846451 000905821 D|063415006 016285290 +000000371 000874212 000909426 D|095024680 056166345 +000000371 000886234 000945130 D|029670007 025033361 +000000371 000894265 000968500 D|097325450 046789976 +000000371 000952358 000986259 D|066140511 061239142 +000000371 000986478 000988946 D|018499108 026627523 +000000372 000043262 000013758 D|086609865 041475613 +000000372 000064633 000019428 D|053840587 034208569 +000000372 000067048 000023387 D|090546151 097031744 +000000372 000135249 000053531 D|094503070 024872676 +000000372 000143043 000091364 D|027506815 064381629 +000000372 000145581 000109172 D|085946041 000787292 +000000372 000211300 000110502 D|048877737 064640025 +000000372 000226060 000120018 D|003450063 013438986 +000000372 000329848 000156658 D|038501624 063387863 +000000372 000337428 000164941 D|049112905 065165037 +000000372 000363917 000217625 D|010107427 014854840 +000000372 000396474 000237733 D|041364063 079719324 +000000372 000400744 000243137 D|091285435 045762780 +000000372 000414703 000277936 D|077983052 028825183 +000000372 000433221 000279937 D|032135266 093440382 +000000372 000433738 000348393 D|070590883 055534957 +000000372 000446821 000370447 D|026393276 013543767 +000000372 000574654 000392238 D|052713383 067308194 +000000372 000574934 000428904 D|000585469 013482770 +000000372 000591819 000496029 D|085117433 061486572 +000000372 000594713 000497800 D|055475944 012071033 +000000372 000597391 000537868 D|035165360 027460203 +000000372 000623623 000541066 D|049005211 036133674 +000000372 000627776 000562782 D|044822024 064685294 +000000372 000641856 000569785 D|096652433 066772507 +000000372 000658499 000574314 D|090331498 037609993 +000000372 000688321 000595964 D|057485895 088907378 +000000372 000698025 000600170 D|075953651 049403250 +000000372 000708085 000607872 D|074670939 077250209 +000000372 000720305 000632672 D|024396603 086810796 +000000372 000739179 000645164 D|083844428 028401767 +000000372 000741035 000653538 D|097455762 083405838 +000000372 000758592 000660135 D|025008406 010866342 +000000372 000787122 000678694 D|074466536 013492758 +000000372 000791421 000699337 D|020646689 095062967 +000000372 000794971 000702453 D|020252995 066435909 +000000372 000802147 000711403 D|086446568 074151451 +000000372 000807267 000735921 D|020289815 028983739 +000000372 000857250 000763076 D|058111829 004700107 +000000372 000863510 000763675 D|022485529 002206143 +000000372 000877769 000807314 D|090978091 050900370 +000000372 000891174 000808262 D|024181662 070178187 +000000372 000924094 000827073 D|078499255 015601183 +000000372 000937641 000847333 D|056500076 080238435 +000000372 000957850 000859686 D|059350950 078521952 +000000372 000969401 000868363 D|099968711 022349497 +000000372 000970607 000869009 D|001842781 033265692 +000000372 000971593 000873055 D|011085713 048806412 +000000372 000994409 000982122 D|084455156 018242896 +000000372 000997544 000987614 D|078209476 061492319 +000000373 000013251 000001176 D|023317099 095540358 +000000373 000021850 000134499 D|051773849 056417908 +000000373 000046029 000164115 D|021548481 077374681 +000000373 000055492 000202386 D|084864256 084563520 +000000373 000062952 000217264 D|091558921 037886728 +000000373 000064710 000223637 D|041430410 024676874 +000000373 000075719 000251849 D|033768217 094197886 +000000373 000112048 000265275 D|096691275 021859546 +000000373 000119707 000273988 D|003670693 014646639 +000000373 000153135 000311181 D|039442712 052556995 +000000373 000205609 000331572 D|054315857 032684014 +000000373 000226295 000351067 D|026105017 083633009 +000000373 000249360 000357224 D|081507923 058398643 +000000373 000251645 000369729 D|025902195 046513479 +000000373 000270359 000385476 D|018804837 014882895 +000000373 000284697 000397840 D|074545897 077391425 +000000373 000288794 000412515 D|090791766 011829257 +000000373 000355250 000431426 D|056046629 036696498 +000000373 000359324 000451269 D|060705386 009008898 +000000373 000418993 000454120 D|056623239 054705208 +000000373 000442407 000456438 D|068402955 077987268 +000000373 000469233 000458507 D|039510099 004742501 +000000373 000487909 000486304 D|065659674 043106134 +000000373 000516309 000502914 D|094335606 028379936 +000000373 000542658 000525769 D|059152886 028138310 +000000373 000579385 000541753 D|053166064 041005040 +000000373 000610731 000585772 D|011411238 006837399 +000000373 000630020 000627236 D|010433404 096835759 +000000373 000637787 000644118 D|040553018 015667324 +000000373 000664478 000656658 D|040557057 038347572 +000000373 000680140 000675737 D|045653649 077770249 +000000373 000681916 000720265 D|098914178 000738024 +000000373 000705146 000723321 D|040993969 068081725 +000000373 000724189 000723473 D|076085626 027062207 +000000373 000780382 000740216 D|019180487 059915438 +000000373 000792914 000741423 D|074205961 067501235 +000000373 000844537 000758252 D|041613588 053696044 +000000373 000849077 000787797 D|003931779 096701721 +000000373 000877440 000812692 D|049214777 051292272 +000000373 000882311 000819562 D|085843532 002740609 +000000373 000884321 000848476 D|087996220 092621227 +000000373 000888200 000883765 D|017356812 054693880 +000000373 000895378 000896381 D|003048941 067186647 +000000373 000912942 000925579 D|060938639 044873166 +000000373 000918139 000932347 D|056713807 074343108 +000000373 000918787 000961056 D|035298863 053737170 +000000373 000958580 000961394 D|058041055 003624128 +000000373 000960470 000966700 D|045150987 059723792 +000000373 000976332 000980173 D|081085242 086859063 +000000373 000995398 000990022 D|007153986 024967843 +000000374 000008459 000017651 D|025600522 048640427 +000000374 000091797 000049433 D|060320941 064996558 +000000374 000097362 000080814 D|086503211 082678648 +000000374 000110233 000096042 D|066741487 046774319 +000000374 000110722 000099034 D|097169264 051935823 +000000374 000114166 000137986 D|038869786 096039483 +000000374 000144969 000146778 D|080381461 099707134 +000000374 000165112 000148264 D|016743026 030843455 +000000374 000212669 000160694 D|083753943 099164367 +000000374 000234428 000207362 D|014840790 062341905 +000000374 000246040 000247900 D|083691950 067311515 +000000374 000253549 000252010 D|064263709 083192750 +000000374 000280631 000266794 D|055178757 030663130 +000000374 000301332 000301418 D|031430763 013076203 +000000374 000304775 000315855 D|014935681 051044044 +000000374 000360196 000320677 D|056554646 084771633 +000000374 000375062 000335384 D|003246400 049354084 +000000374 000379044 000336056 D|029460588 028625841 +000000374 000411049 000353052 D|020434509 039632442 +000000374 000450022 000360006 D|001578786 087580477 +000000374 000467918 000392139 D|035208307 026520058 +000000374 000474815 000393716 D|078505576 073761081 +000000374 000492578 000416279 D|084305864 024070680 +000000374 000506201 000429291 D|006670355 033635840 +000000374 000506912 000436046 D|034345402 073954357 +000000374 000514516 000460541 D|078076160 032324456 +000000374 000527492 000473763 D|097196659 021727327 +000000374 000544030 000474755 D|060257564 059689972 +000000374 000553593 000475991 D|070381899 082001439 +000000374 000561516 000477228 D|036752095 020740657 +000000374 000562020 000492296 D|084096516 084078234 +000000374 000576429 000500458 D|031082752 063418581 +000000374 000579480 000501751 D|021445569 043999774 +000000374 000584559 000506463 D|087393089 053882135 +000000374 000592037 000575204 D|031215264 067675944 +000000374 000638706 000600456 D|053650586 065798940 +000000374 000641784 000645243 D|084284794 091693159 +000000374 000661274 000669172 D|083860320 092508801 +000000374 000779147 000671566 D|073042443 021722595 +000000374 000799319 000681035 D|021230073 015699258 +000000374 000828505 000688872 D|073255261 094591810 +000000374 000834209 000732615 D|054312022 022745910 +000000374 000850312 000734907 D|003605033 050299737 +000000374 000851559 000741715 D|063524818 039156910 +000000374 000925147 000761782 D|005473345 042646930 +000000374 000939963 000765797 D|076772913 009713683 +000000374 000948782 000796705 D|098168954 076582052 +000000374 000988140 000880728 D|057262708 012659640 +000000374 000988354 000893557 D|004911597 026741115 +000000374 000996347 000986969 D|080080127 032515392 +000000375 000022269 000004400 D|077471075 051478595 +000000375 000030966 000014507 D|051605015 068569846 +000000375 000035056 000014836 D|016923213 000113031 +000000375 000050286 000104359 D|093961847 040333448 +000000375 000062262 000116756 D|039220472 076380444 +000000375 000063366 000121684 D|075427587 003425010 +000000375 000063711 000142316 D|031430712 091280707 +000000375 000067507 000162050 D|071274232 077416735 +000000375 000085303 000164387 D|008964514 021355849 +000000375 000168563 000181293 D|094298979 045261696 +000000375 000169243 000222081 D|034536156 072064658 +000000375 000173803 000231041 D|078285211 073779942 +000000375 000175369 000247013 D|042645604 091023954 +000000375 000197947 000259400 D|075690890 029154444 +000000375 000211867 000296304 D|041824437 074516303 +000000375 000231977 000312255 D|065471777 088063892 +000000375 000242525 000324907 D|043783413 045243235 +000000375 000264083 000357872 D|075419625 093168316 +000000375 000282600 000373706 D|015287675 066563713 +000000375 000361956 000407730 D|018097106 042541701 +000000375 000364265 000449110 D|011905837 057318292 +000000375 000377807 000454730 D|096819567 089280715 +000000375 000389669 000456573 D|009521519 033607224 +000000375 000390452 000477380 D|056807929 044179557 +000000375 000455260 000479157 D|002061335 000627401 +000000375 000463536 000494548 D|025836700 015943204 +000000375 000483833 000511123 D|094626864 000888171 +000000375 000493280 000540612 D|086188596 020550905 +000000375 000501708 000555836 D|002660066 093226544 +000000375 000531816 000560781 D|060424266 089019904 +000000375 000558157 000579940 D|003971035 032581916 +000000375 000566049 000608688 D|050135269 098203664 +000000375 000568352 000639016 D|012107348 028341894 +000000375 000581258 000648812 D|064649276 035980006 +000000375 000585345 000769153 D|085588585 088203046 +000000375 000606849 000774510 D|023218574 093367916 +000000375 000629506 000787425 D|038977452 069011600 +000000375 000647997 000798357 D|017644148 031621372 +000000375 000652407 000816223 D|089926450 056237322 +000000375 000657641 000836107 D|086947324 002175997 +000000375 000661139 000864765 D|070784334 007156106 +000000375 000728129 000924450 D|088138420 022013814 +000000375 000759617 000953766 D|064021534 063693678 +000000375 000817660 000956554 D|037862863 083872060 +000000375 000879232 000967995 D|023050657 020091303 +000000375 000880689 000969880 D|033038733 099339041 +000000375 000893980 000969903 D|041128738 061652243 +000000375 000919370 000970790 D|000424246 093338622 +000000375 000947896 000977416 D|067776524 096610202 +000000375 000951087 000978518 D|057863135 066735593 +000000376 000009999 000066221 D|097514008 031385796 +000000376 000025784 000069320 D|024015210 019108768 +000000376 000030535 000079739 D|027647894 075831352 +000000376 000037806 000093083 D|049732695 052854302 +000000376 000057603 000099674 D|012177821 033241482 +000000376 000062354 000110832 D|094330837 006513224 +000000376 000073435 000127885 D|063931115 051378332 +000000376 000091410 000173462 D|086374836 046766551 +000000376 000166423 000255034 D|009406030 052160830 +000000376 000169080 000277613 D|009950413 094408949 +000000376 000174656 000289383 D|050905291 069964319 +000000376 000215211 000319092 D|043959929 092300954 +000000376 000221096 000338517 D|037043057 018979789 +000000376 000269121 000347946 D|068869333 005493974 +000000376 000278895 000376834 D|086699155 005178092 +000000376 000295828 000384318 D|019757239 028366682 +000000376 000306453 000385782 D|065394649 030396947 +000000376 000316854 000410717 D|011237359 056078318 +000000376 000358218 000524185 D|028103692 029895068 +000000376 000358294 000565117 D|037041123 094911753 +000000376 000414800 000566713 D|085741223 050865081 +000000376 000429452 000581839 D|025045236 015411065 +000000376 000431556 000602147 D|047862139 059647779 +000000376 000465992 000609969 D|036291964 030926287 +000000376 000493876 000627178 D|057004527 070390531 +000000376 000513035 000652100 D|010709485 001146889 +000000376 000564955 000657304 D|049294503 087634393 +000000376 000578922 000661529 D|062945717 014151483 +000000376 000599713 000664571 D|054143924 075208744 +000000376 000603137 000691199 D|011079256 022753012 +000000376 000630491 000699327 D|026092183 043969487 +000000376 000671813 000732934 D|073339611 086757858 +000000376 000689388 000734730 D|013259097 003791949 +000000376 000692235 000752907 D|077495272 082108743 +000000376 000750586 000767900 D|045415649 051145465 +000000376 000757145 000775493 D|003111053 093935652 +000000376 000764346 000817684 D|069897898 028793257 +000000376 000783530 000835714 D|077855301 067376497 +000000376 000811501 000870185 D|005812077 077693643 +000000376 000836558 000871851 D|016771081 015154593 +000000376 000845572 000903862 D|099767117 021768838 +000000376 000855876 000907309 D|007951540 029203830 +000000376 000882512 000910943 D|003332902 039038679 +000000376 000907934 000911670 D|093512355 040669977 +000000376 000912884 000912759 D|056993694 067754319 +000000376 000923997 000949829 D|057458492 033667024 +000000376 000935182 000955111 D|013279759 017400970 +000000376 000969945 000958175 D|064410724 041792214 +000000376 000974752 000982733 D|029302646 054277010 +000000376 000981070 000996193 D|040889292 007279023 +000000377 000008017 000004704 D|069431876 091003564 +000000377 000014603 000053144 D|024229686 093420544 +000000377 000015042 000086060 D|058915853 096313589 +000000377 000021937 000129272 D|083804129 001336599 +000000377 000026638 000134550 D|067065291 002676109 +000000377 000030461 000200590 D|082906018 003864118 +000000377 000077130 000271674 D|072191901 041005269 +000000377 000081267 000295284 D|061402639 001253622 +000000377 000089525 000317228 D|034646245 002067887 +000000377 000130487 000323319 D|065443495 012110861 +000000377 000191647 000336344 D|063893857 086429601 +000000377 000210940 000369520 D|082504353 067867378 +000000377 000216801 000384366 D|007975288 020884185 +000000377 000225211 000402702 D|080855846 092733080 +000000377 000290588 000422220 D|026574882 018389922 +000000377 000293072 000422774 D|004981590 055865338 +000000377 000367552 000437560 D|069076221 071360005 +000000377 000383581 000452716 D|026666996 005792759 +000000377 000389432 000454528 D|093840842 054191761 +000000377 000395272 000461016 D|053799715 007392977 +000000377 000445000 000475410 D|056115165 059307008 +000000377 000447515 000476096 D|083370109 024737009 +000000377 000454963 000483792 D|076791647 013717521 +000000377 000457259 000495332 D|057695214 070560076 +000000377 000499021 000498776 D|083273395 062303593 +000000377 000510932 000515232 D|071291134 025961651 +000000377 000522655 000552652 D|040651577 038822358 +000000377 000536271 000559054 D|039701758 056051660 +000000377 000549981 000595618 D|094555055 044381500 +000000377 000558396 000626659 D|079157359 089744649 +000000377 000574955 000646145 D|077470606 052378225 +000000377 000582878 000654755 D|082684399 020425675 +000000377 000609705 000669721 D|001623114 012143262 +000000377 000647359 000678322 D|048623101 012843678 +000000377 000671253 000699648 D|054683928 054756724 +000000377 000694786 000728000 D|065369539 017410748 +000000377 000700770 000759548 D|064676616 001424397 +000000377 000724121 000774632 D|012293823 025751617 +000000377 000778631 000780129 D|096121417 095157903 +000000377 000781770 000832404 D|022642015 096930286 +000000377 000793519 000847382 D|051070923 058011343 +000000377 000800988 000873736 D|048013801 031801028 +000000377 000881440 000889769 D|059051994 062076329 +000000377 000906000 000905747 D|003248911 004845531 +000000377 000930077 000906929 D|043218042 039593218 +000000377 000941960 000913406 D|048329239 075446678 +000000377 000959789 000930467 D|094736717 065399568 +000000377 000970392 000939700 D|068095591 056678869 +000000377 000993820 000954846 D|050324348 039576567 +000000377 000996077 000972589 D|094492067 008665719 +000000378 000010825 000005063 D|051935627 051541977 +000000378 000049389 000037776 D|050640171 073378868 +000000378 000091266 000104279 D|060043485 037297837 +000000378 000112676 000113707 D|027994998 033237365 +000000378 000112756 000131637 D|040239876 074796367 +000000378 000164465 000143303 D|020173219 068618354 +000000378 000185832 000151314 D|043522947 089401345 +000000378 000205371 000166239 D|038137323 039437496 +000000378 000218753 000189012 D|079368398 073339425 +000000378 000253130 000203080 D|021931702 031792903 +000000378 000256829 000213029 D|042099213 083819413 +000000378 000287262 000239422 D|070054667 017588868 +000000378 000320896 000294998 D|046078505 091964119 +000000378 000343421 000312010 D|089711503 062151316 +000000378 000363854 000335478 D|032464520 041104659 +000000378 000381204 000385829 D|093112326 019808503 +000000378 000437873 000394698 D|086697955 060034900 +000000378 000471122 000410518 D|069862208 036979637 +000000378 000477023 000421195 D|049574415 081036074 +000000378 000484636 000427953 D|075660042 091156653 +000000378 000529283 000470351 D|083704574 027223736 +000000378 000542741 000477631 D|088793661 038855571 +000000378 000550348 000479416 D|026913094 098238596 +000000378 000569954 000489609 D|029796089 021755580 +000000378 000583122 000491156 D|033360898 063227666 +000000378 000585987 000499718 D|046250293 001761932 +000000378 000594571 000531711 D|037318446 043957804 +000000378 000601263 000533330 D|085630361 086074131 +000000378 000634860 000549454 D|044859277 026274170 +000000378 000660212 000554258 D|032887478 017003203 +000000378 000660324 000560371 D|026706551 029706163 +000000378 000696844 000561058 D|066114507 062718359 +000000378 000711806 000611690 D|096128779 038222606 +000000378 000722434 000633635 D|031846325 015242526 +000000378 000722782 000646245 D|020056836 029958632 +000000378 000758334 000684847 D|064847749 027155395 +000000378 000768041 000709475 D|039322445 006872135 +000000378 000784097 000711453 D|092725486 027680530 +000000378 000787594 000719431 D|097305911 037912929 +000000378 000788850 000732021 D|087936201 018174483 +000000378 000806606 000735756 D|028225585 051190633 +000000378 000852583 000750561 D|025900700 091218750 +000000378 000857358 000755400 D|019771670 012353399 +000000378 000865485 000780755 D|036473187 016052347 +000000378 000876994 000894916 D|019001436 095590598 +000000378 000940248 000896116 D|034207144 037353833 +000000378 000958789 000916514 D|096543960 020340545 +000000378 000965586 000927784 D|040863949 059511293 +000000378 000968059 000952760 D|027518993 008410298 +000000378 000990893 000988995 D|006604310 040020154 +000000379 000028065 000000035 D|016290051 091560040 +000000379 000054134 000012214 D|008817876 046617356 +000000379 000075304 000019469 D|069892291 015260316 +000000379 000093813 000029023 D|083090959 047632768 +000000379 000097147 000037900 D|084087916 040121165 +000000379 000117863 000037939 D|073038023 037829501 +000000379 000129962 000050177 D|080477585 019921676 +000000379 000132531 000057424 D|085700813 026468761 +000000379 000172127 000072711 D|001250514 049111557 +000000379 000209622 000090069 D|094221609 015571282 +000000379 000262269 000093746 D|030271982 023963542 +000000379 000283482 000097601 D|006286176 099822311 +000000379 000284471 000132830 D|091746250 051312108 +000000379 000292379 000140068 D|022932363 046135128 +000000379 000347287 000142121 D|067484122 048855591 +000000379 000352919 000146716 D|068984899 014928013 +000000379 000475248 000180736 D|080242610 007810422 +000000379 000489200 000209992 D|094878768 046830936 +000000379 000498876 000246533 D|069989398 031421738 +000000379 000512050 000247757 D|081157638 047195606 +000000379 000512266 000262520 D|086464682 015534911 +000000379 000529676 000277153 D|072865095 023331413 +000000379 000532981 000289430 D|025445175 023691862 +000000379 000539791 000334212 D|065332932 023127541 +000000379 000569848 000380505 D|035644957 046323046 +000000379 000598689 000383677 D|046817078 075124944 +000000379 000605905 000398815 D|018791462 054353081 +000000379 000606944 000425575 D|098073480 088206116 +000000379 000617019 000441419 D|074384703 094138591 +000000379 000633989 000443589 D|042235729 070482109 +000000379 000667654 000479648 D|090001670 086286313 +000000379 000694966 000485276 D|074259980 080461381 +000000379 000703621 000551103 D|056798114 042930905 +000000379 000704187 000555384 D|047538275 049894483 +000000379 000709572 000577894 D|038286882 038793003 +000000379 000718130 000579387 D|059118756 029943610 +000000379 000801561 000633339 D|057500540 061285006 +000000379 000815055 000636766 D|003534322 069971714 +000000379 000831830 000682678 D|022004078 081194020 +000000379 000858451 000767365 D|045878481 013618882 +000000379 000867095 000806619 D|036666806 072092510 +000000379 000896139 000810088 D|036003568 049466868 +000000379 000907806 000818869 D|094424420 021568569 +000000379 000913632 000870405 D|058793029 060093920 +000000379 000948554 000874595 D|074961918 089980423 +000000379 000959847 000891521 D|035120802 047094466 +000000379 000982903 000916659 D|008999901 027885406 +000000379 000985260 000953206 D|025228866 049317373 +000000379 000992057 000988256 D|096816067 018691334 +000000379 000993280 000992245 D|041099208 075167408 +000000380 000006105 000010662 D|010616247 081505399 +000000380 000045735 000012932 D|086459892 074984085 +000000380 000081060 000015303 D|014352560 086272455 +000000380 000102164 000026136 D|018109795 084225617 +000000380 000115017 000040806 D|010737476 002450062 +000000380 000132567 000050467 D|019861140 024998631 +000000380 000143427 000065560 D|070951389 077977574 +000000380 000203609 000106761 D|003663210 019759463 +000000380 000226120 000108053 D|064633810 091231635 +000000380 000227180 000131832 D|031335749 064851715 +000000380 000264198 000145730 D|091773450 064258371 +000000380 000286228 000162463 D|072947884 046780602 +000000380 000310321 000185275 D|076837033 067694213 +000000380 000319043 000195133 D|024027138 085164557 +000000380 000408246 000195761 D|025819465 075043534 +000000380 000445455 000214333 D|082445574 024020774 +000000380 000489155 000241035 D|072482858 052653888 +000000380 000495244 000250136 D|081108027 027980225 +000000380 000504085 000267348 D|018352146 032354119 +000000380 000509407 000325394 D|025534146 066302355 +000000380 000525818 000359819 D|029940799 093642841 +000000380 000527682 000392670 D|037941293 071131604 +000000380 000528999 000417269 D|048869106 011901065 +000000380 000543074 000423296 D|076333962 029057914 +000000380 000567708 000483934 D|030646659 044088282 +000000380 000580002 000490674 D|050436532 090155156 +000000380 000595717 000523320 D|012934670 056865056 +000000380 000603296 000536235 D|035547305 085198812 +000000380 000612041 000540981 D|048316770 084023043 +000000380 000616997 000571977 D|003761537 021545619 +000000380 000632323 000574378 D|007560930 067264317 +000000380 000642435 000586713 D|085476820 067020636 +000000380 000645145 000635799 D|041219996 088638980 +000000380 000654966 000655774 D|034428701 050219541 +000000380 000690698 000678173 D|005858454 001348687 +000000380 000718579 000688833 D|014348164 066123465 +000000380 000751893 000709440 D|023486172 090060420 +000000380 000761040 000742754 D|055152102 029422909 +000000380 000781561 000746929 D|074870715 020460700 +000000380 000785356 000760700 D|083013264 053490246 +000000380 000823547 000809855 D|072204490 081097297 +000000380 000875024 000815013 D|067553972 012840015 +000000380 000876523 000824723 D|084506062 082488643 +000000380 000881653 000828906 D|048395899 026066592 +000000380 000886308 000873064 D|012886332 015762490 +000000380 000894293 000942568 D|095758623 035502118 +000000380 000896064 000946557 D|047609732 028226230 +000000380 000923042 000970783 D|095900702 025913451 +000000380 000978869 000991111 D|006669888 061926983 +000000380 000995857 000993244 D|000418335 045547212 +000000381 000013415 000032729 D|058467570 062224629 +000000381 000030534 000043407 D|042705962 065660884 +000000381 000052932 000060275 D|003364314 061565089 +000000381 000112335 000093205 D|018625792 020780802 +000000381 000134763 000102732 D|017685412 081423760 +000000381 000152646 000103067 D|055995921 082539242 +000000381 000169870 000124077 D|070875624 055250191 +000000381 000197657 000150061 D|001145433 033815895 +000000381 000207134 000189692 D|089051894 098719833 +000000381 000211760 000239167 D|093641380 072135717 +000000381 000213214 000257643 D|024184502 092289975 +000000381 000252646 000283601 D|037232704 010802637 +000000381 000255926 000289575 D|076550568 017166822 +000000381 000270107 000351257 D|093833814 090182665 +000000381 000289133 000359609 D|040952093 083932818 +000000381 000295383 000419202 D|012440947 038971429 +000000381 000325821 000446520 D|091394098 061209650 +000000381 000381218 000446762 D|047078042 053419821 +000000381 000400325 000453850 D|087014571 021425697 +000000381 000415317 000460434 D|049942107 073808219 +000000381 000449564 000484134 D|094779260 023306023 +000000381 000451784 000506384 D|059853685 006048310 +000000381 000480355 000517141 D|058613263 012293834 +000000381 000496256 000526431 D|014944112 015254644 +000000381 000531997 000534432 D|033414984 022401865 +000000381 000535496 000544249 D|063538087 041937906 +000000381 000551048 000604792 D|040145793 001802033 +000000381 000554178 000655295 D|056375599 025104104 +000000381 000571235 000660107 D|055782545 054035136 +000000381 000579125 000660301 D|015334370 032483706 +000000381 000586321 000672914 D|009397939 040715808 +000000381 000600393 000675436 D|012578769 009387026 +000000381 000607267 000750479 D|039922844 049233568 +000000381 000628130 000765551 D|003625012 002125434 +000000381 000635698 000775223 D|055226825 088491496 +000000381 000645093 000841523 D|086131898 053454695 +000000381 000671154 000846879 D|038664688 077286196 +000000381 000694307 000857717 D|087460682 088880779 +000000381 000707045 000858119 D|048548497 099333015 +000000381 000716955 000888961 D|026446993 017097882 +000000381 000721107 000899615 D|093794964 037009715 +000000381 000752292 000921117 D|028963490 052567540 +000000381 000799682 000923823 D|086243923 034343670 +000000381 000807850 000944863 D|013679484 040037317 +000000381 000816903 000947520 D|052237009 023501225 +000000381 000820867 000949657 D|092480135 070561064 +000000381 000858685 000950348 D|025407485 093767076 +000000381 000921894 000983541 D|060185322 004919941 +000000381 000947171 000990496 D|034371711 021384748 +000000381 000968078 000994619 D|057940313 010183873 +000000382 000027715 000014770 D|097575269 095612163 +000000382 000048050 000054170 D|061604440 058196205 +000000382 000117456 000058728 D|073320653 028106167 +000000382 000133382 000088053 D|085111187 040949853 +000000382 000218905 000105463 D|035014784 030560538 +000000382 000225910 000128080 D|022083000 072082960 +000000382 000273610 000174270 D|007161314 001818513 +000000382 000299760 000203816 D|093420107 031244673 +000000382 000321579 000239051 D|097211805 012118121 +000000382 000337489 000243089 D|009011958 015240236 +000000382 000344165 000270648 D|056939506 080731597 +000000382 000347143 000279071 D|029230715 086308616 +000000382 000351623 000292150 D|043449111 069450470 +000000382 000356798 000294863 D|044882774 055241603 +000000382 000362208 000297765 D|036110459 053785182 +000000382 000369723 000315872 D|012706571 054046697 +000000382 000369927 000336069 D|096083228 052025621 +000000382 000376088 000356481 D|065552978 074915857 +000000382 000418827 000357896 D|013764461 098885471 +000000382 000425461 000367118 D|014280447 062570380 +000000382 000439944 000371458 D|026956783 089162760 +000000382 000444010 000383910 D|023511620 099562168 +000000382 000452874 000390315 D|017852877 077746265 +000000382 000456926 000401556 D|028083974 034325523 +000000382 000514253 000425713 D|019802617 090254559 +000000382 000516517 000496390 D|016134434 029746498 +000000382 000540340 000500748 D|029383493 090708853 +000000382 000556226 000505782 D|038986734 020599153 +000000382 000588765 000553069 D|087625445 012244333 +000000382 000592246 000553477 D|064367893 021318183 +000000382 000600950 000564207 D|058204757 012697660 +000000382 000635236 000585071 D|081013581 094465902 +000000382 000691859 000612914 D|063066026 032791389 +000000382 000707557 000634833 D|090918352 093471184 +000000382 000707777 000639198 D|093395258 097889650 +000000382 000753751 000672073 D|061591234 076514570 +000000382 000771675 000683129 D|053930473 097426420 +000000382 000776689 000690877 D|031338479 047460339 +000000382 000778988 000701095 D|095205929 041359825 +000000382 000796474 000750425 D|025302035 056140522 +000000382 000837966 000768799 D|007275208 099309822 +000000382 000862683 000779767 D|010908685 056763025 +000000382 000868665 000837483 D|037752098 060643571 +000000382 000889578 000846474 D|036977494 045148573 +000000382 000890929 000878814 D|010072459 057088593 +000000382 000898769 000888787 D|087709843 071782591 +000000382 000910413 000927790 D|097116819 024338068 +000000382 000976827 000940548 D|030672559 029900892 +000000382 000978234 000956298 D|030033197 090343237 +000000382 000997651 000981079 D|003534300 056774836 +000000383 000004575 000065799 D|000006855 062884266 +000000383 000017374 000068299 D|004709190 096675463 +000000383 000025716 000083035 D|045451756 090335627 +000000383 000062985 000120007 D|061686625 047453961 +000000383 000121647 000145761 D|050934409 008982370 +000000383 000132395 000147357 D|020052375 054874508 +000000383 000153294 000215542 D|087572289 020245633 +000000383 000164785 000216920 D|053585614 084586950 +000000383 000188003 000217621 D|006016760 066702078 +000000383 000196248 000257296 D|042172924 044823112 +000000383 000204483 000263527 D|032764911 013412696 +000000383 000205373 000274354 D|091591099 009512332 +000000383 000210398 000319961 D|062700460 047212583 +000000383 000265707 000330141 D|016872258 035765974 +000000383 000277838 000372733 D|023836881 025055641 +000000383 000280102 000377688 D|058499419 019155639 +000000383 000313994 000378712 D|063363282 058612580 +000000383 000314904 000424379 D|072760510 060367643 +000000383 000328418 000429071 D|037853195 086808590 +000000383 000328553 000441382 D|014150396 021321947 +000000383 000370031 000452660 D|000430500 063488971 +000000383 000372530 000519719 D|032627982 070613937 +000000383 000380879 000540662 D|051637341 001547522 +000000383 000390480 000562112 D|056835268 096510984 +000000383 000425646 000566717 D|032971279 035532720 +000000383 000432789 000575593 D|032116291 069088489 +000000383 000467727 000587600 D|002747139 037431428 +000000383 000490697 000593700 D|019574813 041515606 +000000383 000517135 000619430 D|033595053 029122457 +000000383 000541522 000636126 D|060944082 025299584 +000000383 000560633 000641920 D|032653399 015771017 +000000383 000563754 000669359 D|024967183 040792591 +000000383 000605792 000717724 D|058786900 059993418 +000000383 000625118 000736997 D|045346194 005939627 +000000383 000685105 000751916 D|087941188 099580023 +000000383 000697018 000770081 D|050175520 085995339 +000000383 000704430 000785839 D|019675192 020275224 +000000383 000722604 000799428 D|093991199 009562265 +000000383 000735599 000812814 D|055024103 005163738 +000000383 000741859 000823804 D|066917258 054072108 +000000383 000827653 000831802 D|099772207 048998101 +000000383 000829624 000833372 D|034359068 087786539 +000000383 000878720 000850663 D|078866298 041241715 +000000383 000898724 000902093 D|088031151 033131655 +000000383 000918284 000911429 D|012095838 051225778 +000000383 000922884 000914768 D|017510541 023211534 +000000383 000946764 000917405 D|029455576 066506140 +000000383 000950495 000926413 D|058656655 079625408 +000000383 000965951 000956971 D|087071263 025727725 +000000383 000981041 000975934 D|088294678 039148062 +000000384 000007503 000015027 D|075595630 070773269 +000000384 000008565 000034734 D|090589119 048872455 +000000384 000020097 000048556 D|003728008 020791250 +000000384 000034104 000063367 D|057611835 052570165 +000000384 000035210 000070680 D|032130073 013650594 +000000384 000054861 000075441 D|034802948 040372207 +000000384 000079967 000082613 D|090357991 030046413 +000000384 000080322 000125473 D|024759593 097670317 +000000384 000084440 000137917 D|010533574 009207987 +000000384 000097437 000146656 D|018926178 065900462 +000000384 000104644 000190335 D|079856524 080207788 +000000384 000155577 000212096 D|000281879 014412640 +000000384 000198631 000217938 D|081969330 003800358 +000000384 000213762 000221337 D|047696879 084707468 +000000384 000234873 000222998 D|038238894 063493360 +000000384 000236000 000227587 D|088641253 022302039 +000000384 000256265 000256452 D|016353895 034526862 +000000384 000270952 000270928 D|035762860 067962397 +000000384 000283164 000276756 D|099511008 059045328 +000000384 000301240 000280302 D|072702486 096824105 +000000384 000312733 000283509 D|003157346 035255346 +000000384 000340380 000352104 D|061588494 076262707 +000000384 000353339 000390970 D|005001304 085452871 +000000384 000371761 000392659 D|039628329 087052266 +000000384 000386721 000411633 D|021091376 036447576 +000000384 000389537 000415875 D|061593008 017345745 +000000384 000409227 000430682 D|095318694 085577812 +000000384 000438272 000438062 D|015596298 033876601 +000000384 000554730 000502631 D|012045731 046969119 +000000384 000586128 000502878 D|077549359 093822056 +000000384 000605647 000503642 D|035749746 007807644 +000000384 000607786 000508121 D|028558288 035112105 +000000384 000638528 000516210 D|099366188 014173195 +000000384 000650572 000520370 D|052720043 016548177 +000000384 000665120 000526738 D|090839154 026301028 +000000384 000691419 000551813 D|023522618 072774524 +000000384 000692821 000618981 D|051161377 098345284 +000000384 000743385 000622138 D|093622901 085006693 +000000384 000769833 000629497 D|031891967 018114645 +000000384 000832614 000645895 D|006057870 066846320 +000000384 000837204 000684490 D|029426917 003236106 +000000384 000844703 000770441 D|023351472 070184264 +000000384 000862942 000782770 D|088920368 093346073 +000000384 000906802 000792485 D|031465342 038707821 +000000384 000928748 000842973 D|054825162 002354989 +000000384 000939585 000890347 D|095870180 058791402 +000000384 000970841 000936742 D|024075091 009088216 +000000384 000986970 000946763 D|087026584 026931752 +000000384 000988593 000967667 D|055783526 004943039 +000000384 000993485 000970672 D|001625843 069206156 +000000385 000042623 000084487 D|013177788 014595678 +000000385 000056680 000086700 D|024664627 070740473 +000000385 000073033 000089243 D|052971826 014916073 +000000385 000091724 000098316 D|001681880 029945927 +000000385 000104464 000109388 D|032738098 058419098 +000000385 000132328 000119870 D|051174703 039775579 +000000385 000139070 000128828 D|059317585 007565416 +000000385 000174999 000141659 D|083122887 035106580 +000000385 000205552 000142297 D|030122394 079840375 +000000385 000229449 000144325 D|078591582 047775843 +000000385 000243432 000159414 D|056934892 016376665 +000000385 000263207 000172169 D|049743682 062688688 +000000385 000297907 000232492 D|089432173 031181326 +000000385 000304436 000315586 D|000646823 075410736 +000000385 000333049 000317135 D|028228676 093958235 +000000385 000339559 000354560 D|037594860 086259310 +000000385 000353559 000373106 D|050576201 049807454 +000000385 000355460 000379809 D|090000953 073733074 +000000385 000360106 000386326 D|011792665 060878588 +000000385 000362190 000402552 D|035136741 010494417 +000000385 000402823 000430920 D|095335580 058173557 +000000385 000460841 000434546 D|094595261 083384775 +000000385 000467365 000461405 D|083161987 077906242 +000000385 000476419 000466280 D|002219580 050730444 +000000385 000481027 000488957 D|099612111 086651399 +000000385 000534579 000492753 D|054510259 034031421 +000000385 000567339 000500924 D|060343231 023957668 +000000385 000595593 000524413 D|088677374 028922769 +000000385 000627671 000535072 D|093602037 084197470 +000000385 000634923 000556220 D|031257299 006437886 +000000385 000648921 000585536 D|082065580 039712009 +000000385 000653048 000586099 D|030863362 094399981 +000000385 000666716 000587088 D|053276468 056685595 +000000385 000687382 000598016 D|033724311 073644762 +000000385 000695034 000598575 D|048314980 070648653 +000000385 000709181 000683367 D|053865709 097775955 +000000385 000722194 000690385 D|015952866 031504450 +000000385 000754589 000693886 D|052537992 007611803 +000000385 000776819 000756026 D|076574144 044481289 +000000385 000783367 000766773 D|021052197 034509140 +000000385 000792303 000783728 D|016149523 019778220 +000000385 000795955 000875319 D|018590440 008096660 +000000385 000822372 000879157 D|032874131 014803929 +000000385 000832479 000896092 D|029762674 088114538 +000000385 000834018 000899502 D|060809557 046346438 +000000385 000862130 000903999 D|098738822 072884306 +000000385 000921015 000904676 D|097557585 043522841 +000000385 000950461 000938119 D|089436206 060202821 +000000385 000962133 000951009 D|003391857 037613421 +000000385 000965724 000958887 D|028980261 030748019 +000000386 000001954 000047870 D|024827877 043542776 +000000386 000029137 000065560 D|078285473 004935799 +000000386 000068955 000066234 D|018820192 035941712 +000000386 000081313 000089139 D|084057159 077717631 +000000386 000105864 000141067 D|067498811 054208528 +000000386 000106099 000149288 D|055929627 052928259 +000000386 000139212 000154133 D|041518257 012954473 +000000386 000165795 000168385 D|089065259 012322147 +000000386 000209313 000189622 D|039482484 096683546 +000000386 000247113 000229135 D|094323697 040556376 +000000386 000285642 000256307 D|091568690 060132259 +000000386 000314961 000263798 D|080295395 070163986 +000000386 000338134 000274442 D|058242281 038752570 +000000386 000355624 000289151 D|021596477 052283843 +000000386 000373074 000289915 D|066098592 033165438 +000000386 000376595 000296811 D|032027591 011872265 +000000386 000447343 000300327 D|044843454 002219025 +000000386 000490664 000310228 D|074255134 071329651 +000000386 000531308 000311287 D|044697189 030287320 +000000386 000531994 000326745 D|061426933 030799067 +000000386 000537144 000365483 D|099225683 003015194 +000000386 000550554 000370202 D|059784100 038852962 +000000386 000560133 000419617 D|040660982 050251232 +000000386 000560866 000437270 D|012002675 090905505 +000000386 000568282 000440789 D|030249964 001209620 +000000386 000586695 000478329 D|099252408 079368147 +000000386 000588122 000479082 D|081751704 000797149 +000000386 000653110 000484038 D|031725798 045708483 +000000386 000686113 000491874 D|089765260 013152395 +000000386 000706381 000503180 D|032489688 003211228 +000000386 000720311 000517830 D|055888366 001869352 +000000386 000727093 000522001 D|052213919 099806914 +000000386 000773746 000535521 D|061421204 046924889 +000000386 000777442 000547592 D|033959507 075374966 +000000386 000783282 000585129 D|027347339 080126075 +000000386 000802245 000588504 D|008373868 099109439 +000000386 000849330 000593969 D|078042864 012954191 +000000386 000859628 000608186 D|004293238 076130154 +000000386 000862554 000653866 D|037828024 060021393 +000000386 000863764 000662744 D|043891926 056691422 +000000386 000866136 000701125 D|094604804 040256891 +000000386 000867433 000714622 D|087186080 036737791 +000000386 000872524 000725183 D|039839262 034183973 +000000386 000907160 000744467 D|014379638 036282518 +000000386 000930605 000833009 D|086121315 034163039 +000000386 000937627 000845657 D|042763418 084356391 +000000386 000963545 000910325 D|093958077 001266388 +000000386 000984460 000912224 D|086358626 034463785 +000000386 000990200 000933646 D|004268946 024506027 +000000386 000994288 000995606 D|030432869 051453574 +000000387 000011208 000028845 D|013029224 089128860 +000000387 000028880 000067105 D|055193656 087516566 +000000387 000053174 000111824 D|088976032 004990084 +000000387 000058898 000142237 D|024047080 084716564 +000000387 000091885 000157452 D|001401387 067142815 +000000387 000093054 000192940 D|026920750 063185780 +000000387 000157904 000246448 D|050993398 080847000 +000000387 000166857 000269668 D|052566041 064995365 +000000387 000184691 000304359 D|021409124 097043421 +000000387 000196303 000306139 D|085146474 018144663 +000000387 000197673 000313989 D|051503229 068639380 +000000387 000232858 000351706 D|018739086 075662642 +000000387 000235018 000360578 D|033550040 018651411 +000000387 000285508 000381723 D|049883910 016542666 +000000387 000287593 000384265 D|015973281 068908791 +000000387 000301788 000398689 D|026553003 012102747 +000000387 000358515 000427034 D|007929235 001591059 +000000387 000370507 000439825 D|086569484 088356093 +000000387 000375400 000475244 D|053819019 052089946 +000000387 000427970 000491344 D|010251576 045475984 +000000387 000429994 000501512 D|081826188 093626500 +000000387 000436218 000525594 D|083599558 094480355 +000000387 000460613 000537707 D|084883095 018146874 +000000387 000464794 000537715 D|021102725 042234386 +000000387 000469048 000551823 D|021414036 094758589 +000000387 000476138 000583471 D|053808561 026116439 +000000387 000535341 000597861 D|060375859 045888848 +000000387 000546810 000640535 D|089775045 039145417 +000000387 000549072 000647920 D|060468162 049524751 +000000387 000549822 000659055 D|068773129 012532017 +000000387 000603090 000665999 D|092474918 099426866 +000000387 000611586 000675275 D|068481305 097066932 +000000387 000637898 000678252 D|010304652 015026758 +000000387 000650347 000766401 D|020069408 027385217 +000000387 000654269 000771394 D|046034760 055779984 +000000387 000654725 000780145 D|076931223 077693852 +000000387 000708438 000793158 D|056275153 006272521 +000000387 000731820 000814001 D|022336238 080449070 +000000387 000755897 000825656 D|020980097 076218484 +000000387 000796957 000836063 D|091645145 063104297 +000000387 000799730 000844701 D|003954089 045581785 +000000387 000842626 000876851 D|070564481 033000775 +000000387 000850642 000885152 D|039476587 080999018 +000000387 000867484 000924906 D|049309532 049628737 +000000387 000940078 000948162 D|081784489 050267184 +000000387 000945182 000956323 D|035235276 032259623 +000000387 000954783 000956743 D|087560257 056920495 +000000387 000958352 000960787 D|017921246 054081508 +000000387 000980674 000970291 D|029408000 021036641 +000000387 000994579 000973465 D|093362919 085763752 +000000388 000019186 000075492 D|047496444 039468781 +000000388 000092678 000095352 D|025682639 040823803 +000000388 000119317 000099703 D|003968609 006385862 +000000388 000129063 000104936 D|015996201 029476600 +000000388 000154789 000106065 D|041966288 078407572 +000000388 000166079 000106797 D|060176109 097911391 +000000388 000185906 000122061 D|025203217 043699474 +000000388 000202136 000155336 D|074206916 068114428 +000000388 000214042 000205498 D|066972324 018834271 +000000388 000221311 000206255 D|069004719 027267062 +000000388 000231434 000207834 D|030315376 069763336 +000000388 000247529 000265057 D|004211710 039349899 +000000388 000249651 000268865 D|081402255 095221294 +000000388 000280951 000275306 D|016469616 010290357 +000000388 000290430 000280881 D|005658319 094264429 +000000388 000294828 000290735 D|049090867 098857440 +000000388 000317864 000308985 D|050127648 032235753 +000000388 000324830 000317917 D|075586574 077512648 +000000388 000332291 000324051 D|094361959 004612739 +000000388 000349063 000375212 D|052131111 061402990 +000000388 000374841 000382324 D|004324442 015993145 +000000388 000402194 000383347 D|051022364 087616813 +000000388 000413200 000440470 D|010268322 023537004 +000000388 000441984 000467705 D|030446718 075826919 +000000388 000469986 000493490 D|098889061 029715045 +000000388 000533521 000528260 D|059569532 008924755 +000000388 000533909 000549865 D|040418049 066134828 +000000388 000539316 000578849 D|095324424 086913272 +000000388 000632641 000592193 D|065752518 095956590 +000000388 000637772 000594033 D|089563312 081330644 +000000388 000643942 000658990 D|071593474 032547479 +000000388 000644038 000675782 D|023034407 060421969 +000000388 000644200 000695921 D|025184988 023575067 +000000388 000644552 000708067 D|016989657 025114820 +000000388 000649724 000729387 D|007958899 055164671 +000000388 000666267 000742883 D|096082300 033691352 +000000388 000735796 000785533 D|050005891 021306246 +000000388 000759997 000791699 D|075705775 000751928 +000000388 000815730 000797334 D|031370449 011342030 +000000388 000869390 000841754 D|000202128 005377942 +000000388 000870559 000860170 D|094115285 087172194 +000000388 000881954 000873490 D|042703571 068316133 +000000388 000902662 000922884 D|091600372 054959653 +000000388 000904063 000940940 D|014741137 063461250 +000000388 000915291 000943846 D|037214428 040325897 +000000388 000917711 000948175 D|091248571 007572035 +000000388 000917720 000949959 D|049352922 024512587 +000000388 000984337 000950148 D|043106632 081629374 +000000388 000984805 000957751 D|080225974 070284149 +000000388 000996169 000987484 D|079767188 025167689 +000000389 000013186 000008543 D|019678045 028891234 +000000389 000024505 000012929 D|073951803 032618298 +000000389 000041101 000065200 D|003967771 025569159 +000000389 000084239 000116235 D|063867838 042746209 +000000389 000109355 000139586 D|066907053 075034831 +000000389 000120192 000148880 D|061964299 092992196 +000000389 000125437 000185899 D|080063838 055299178 +000000389 000148693 000187708 D|044630559 005743583 +000000389 000154707 000212020 D|028587349 032574542 +000000389 000202745 000242279 D|042451778 072726923 +000000389 000237713 000255000 D|018077428 076651736 +000000389 000251057 000276482 D|084251392 058181638 +000000389 000271732 000278887 D|041851375 082983159 +000000389 000290263 000281933 D|049977340 066459132 +000000389 000312438 000285041 D|084292931 082861283 +000000389 000322428 000317777 D|042661763 040830572 +000000389 000365708 000318154 D|057700066 099042326 +000000389 000384944 000341490 D|029239909 046971418 +000000389 000399104 000353580 D|082933807 015317647 +000000389 000403727 000444883 D|026099849 030766150 +000000389 000411249 000449291 D|063284427 071586603 +000000389 000413336 000459479 D|025790734 054334552 +000000389 000420090 000468003 D|048196495 045658207 +000000389 000461885 000486406 D|031124652 012803557 +000000389 000469946 000562106 D|063513772 095830672 +000000389 000472935 000580546 D|088013573 068279099 +000000389 000479282 000595139 D|078337187 036620573 +000000389 000486573 000625544 D|070406205 006551002 +000000389 000526212 000635313 D|072093988 001047180 +000000389 000527479 000638968 D|011482737 012256520 +000000389 000546224 000643956 D|060021151 053210238 +000000389 000546531 000667700 D|065387897 081804198 +000000389 000651741 000674139 D|010690867 044632221 +000000389 000685412 000687344 D|048835551 043071198 +000000389 000704795 000688158 D|089287006 026851386 +000000389 000716194 000689218 D|095304186 076765123 +000000389 000726370 000689664 D|001264658 020475660 +000000389 000742737 000699842 D|007182087 049944529 +000000389 000751137 000709154 D|099524233 090596136 +000000389 000757927 000715872 D|099113425 063959497 +000000389 000770069 000790624 D|041128027 012383714 +000000389 000801380 000793230 D|000502425 085599030 +000000389 000887998 000799898 D|050072381 061495935 +000000389 000893078 000822694 D|021061596 036011970 +000000389 000901598 000834006 D|001081115 038745507 +000000389 000905499 000857784 D|071709664 092485156 +000000389 000911595 000861287 D|064118788 030374822 +000000389 000931451 000864618 D|075660495 081494395 +000000389 000941569 000873356 D|015753197 032214332 +000000389 000955100 000976970 D|068940010 019967232 +000000390 000028749 000013246 D|022775474 049611008 +000000390 000041227 000061001 D|008288113 003697011 +000000390 000047116 000067384 D|026493702 017090733 +000000390 000061983 000067965 D|005400917 037299089 +000000390 000065020 000080594 D|098235994 003541436 +000000390 000068828 000094102 D|090647020 092354794 +000000390 000075484 000097326 D|075413775 058872378 +000000390 000090160 000150370 D|079345960 030740125 +000000390 000091433 000175417 D|094940652 001415905 +000000390 000129888 000194477 D|074200447 013002444 +000000390 000187741 000210325 D|014572473 024796464 +000000390 000188397 000228571 D|099364937 077876830 +000000390 000197855 000230156 D|094701756 034936152 +000000390 000212676 000232905 D|065413983 032100281 +000000390 000259751 000237742 D|005834356 090279925 +000000390 000288854 000295121 D|096468185 079945105 +000000390 000295963 000350617 D|044879410 040176679 +000000390 000327252 000353933 D|016905159 062152676 +000000390 000340319 000405132 D|098897695 047406490 +000000390 000347111 000454455 D|086849962 077215144 +000000390 000404235 000482268 D|008716669 029061804 +000000390 000445481 000483911 D|057466668 042652061 +000000390 000507853 000516273 D|029128761 078200543 +000000390 000513824 000527981 D|014636128 032755114 +000000390 000520199 000548744 D|048499658 053150937 +000000390 000526776 000548991 D|063504344 005514930 +000000390 000528038 000549723 D|052588381 034371502 +000000390 000616670 000549985 D|024889831 002054350 +000000390 000629981 000556178 D|062680179 096653601 +000000390 000641132 000568732 D|046106578 027992071 +000000390 000659772 000615230 D|071163286 036792299 +000000390 000697191 000625328 D|020806411 038895648 +000000390 000717776 000706925 D|006215036 079169373 +000000390 000749558 000715555 D|083864389 088044168 +000000390 000766238 000718987 D|038317089 061438602 +000000390 000778593 000751800 D|062868365 094394812 +000000390 000788524 000764018 D|045242773 092319389 +000000390 000789812 000776693 D|031449256 032475223 +000000390 000802851 000777661 D|014038543 086695217 +000000390 000828218 000799361 D|056650107 022852176 +000000390 000855746 000826267 D|091528024 035480927 +000000390 000884351 000875333 D|058824977 012420239 +000000390 000891897 000885171 D|039800190 016172341 +000000390 000912140 000901327 D|009602599 023072624 +000000390 000912432 000908040 D|033066710 057172478 +000000390 000926064 000926346 D|084164375 020179316 +000000390 000929575 000962083 D|025320180 032781321 +000000390 000936224 000985266 D|090495572 041676176 +000000390 000945649 000991503 D|081127114 095019399 +000000390 000982718 000998148 D|082677883 079899978 +000000391 000031357 000026023 D|010965884 018253653 +000000391 000036314 000029338 D|051521021 056664805 +000000391 000075932 000055823 D|062050838 099748847 +000000391 000095684 000099681 D|069485716 045051164 +000000391 000115132 000141093 D|052684279 089488134 +000000391 000148437 000163385 D|052644979 041615408 +000000391 000159733 000171170 D|088546883 069238731 +000000391 000173491 000172122 D|088784499 012779941 +000000391 000237408 000186670 D|008221253 008478271 +000000391 000242303 000217643 D|088203138 047391084 +000000391 000258212 000219242 D|092779686 011742899 +000000391 000269022 000225905 D|012314087 007666922 +000000391 000290677 000238973 D|012755033 078811139 +000000391 000298102 000260678 D|083455785 099531491 +000000391 000300663 000270447 D|083117856 074210831 +000000391 000314929 000277237 D|016106075 058915694 +000000391 000365872 000352566 D|071801434 053156035 +000000391 000382702 000359397 D|053239244 093727631 +000000391 000452355 000367510 D|073564656 065947582 +000000391 000455631 000372500 D|070729446 003523452 +000000391 000480415 000384609 D|019442701 044574063 +000000391 000483037 000392421 D|030544402 097161759 +000000391 000494134 000402996 D|061920147 093845767 +000000391 000519794 000412633 D|033550646 072985172 +000000391 000611222 000438327 D|020396919 089849893 +000000391 000613608 000455955 D|083606576 084773162 +000000391 000635440 000459038 D|048995625 085493805 +000000391 000636334 000463958 D|012529529 083716559 +000000391 000641059 000503153 D|058799379 008532332 +000000391 000657267 000535047 D|063876999 085495866 +000000391 000668524 000553795 D|039272574 029686522 +000000391 000670792 000554589 D|006472612 025222382 +000000391 000683185 000607051 D|033679481 076181660 +000000391 000751389 000636090 D|001379878 037061485 +000000391 000765961 000652224 D|036753280 067536265 +000000391 000771979 000668829 D|058588545 037191614 +000000391 000830347 000689833 D|008749961 082562716 +000000391 000850013 000694653 D|060947895 036784170 +000000391 000859037 000713494 D|017448568 003450601 +000000391 000864386 000763350 D|075352572 082442413 +000000391 000869734 000829656 D|028279252 074966762 +000000391 000876499 000831697 D|002874837 024070709 +000000391 000899321 000847283 D|004085651 043034609 +000000391 000917367 000871491 D|042237190 064204415 +000000391 000933677 000891704 D|063456607 074635495 +000000391 000965118 000902791 D|080519399 065602400 +000000391 000975944 000931585 D|006895948 048754650 +000000391 000986913 000965324 D|009344888 068106173 +000000391 000989002 000984085 D|002928184 081514056 +000000391 000997661 000999309 D|038537129 073102505 +000000392 000003245 000014007 D|027767203 097051558 +000000392 000005113 000036127 D|098768388 068895889 +000000392 000041426 000048956 D|045142051 093151509 +000000392 000044962 000050081 D|006008679 064374776 +000000392 000059491 000070103 D|031366842 031463179 +000000392 000080869 000072616 D|084723481 014639428 +000000392 000105156 000075518 D|041518538 022824386 +000000392 000119894 000076354 D|085819765 031830610 +000000392 000178747 000079904 D|080643489 074107477 +000000392 000187557 000089229 D|001287838 038902042 +000000392 000190756 000112225 D|072943047 044665171 +000000392 000194168 000122830 D|052692918 065123173 +000000392 000255636 000124086 D|098978573 013484042 +000000392 000267059 000130658 D|043209145 066804685 +000000392 000295145 000226218 D|024809890 074640326 +000000392 000296203 000255635 D|064482053 018667981 +000000392 000346426 000263061 D|061768083 095636057 +000000392 000351290 000268655 D|048556542 062269175 +000000392 000366655 000276749 D|028156785 011809233 +000000392 000370216 000277927 D|034769020 009882185 +000000392 000381223 000292162 D|086720194 067333711 +000000392 000416581 000305789 D|054513444 055378171 +000000392 000418105 000306853 D|028354282 060529213 +000000392 000432484 000359071 D|019332753 029382853 +000000392 000468691 000370796 D|008395970 076506151 +000000392 000471905 000378327 D|090005951 019145298 +000000392 000491378 000403223 D|027166763 073820361 +000000392 000517843 000408671 D|078096985 072308766 +000000392 000518722 000442872 D|071425985 096183695 +000000392 000602935 000445417 D|064845892 053378781 +000000392 000621339 000492241 D|027270826 094224491 +000000392 000625500 000500082 D|044117155 074107869 +000000392 000626276 000543908 D|079619409 075647630 +000000392 000644919 000549184 D|000951965 081102196 +000000392 000680093 000589108 D|041994024 005857300 +000000392 000708312 000601771 D|099303821 022452909 +000000392 000711138 000626163 D|033818002 091987463 +000000392 000726498 000658290 D|031991445 087677973 +000000392 000738638 000680530 D|034567115 092780062 +000000392 000752621 000686667 D|079353309 083018339 +000000392 000769075 000707168 D|071442741 085890476 +000000392 000820071 000733524 D|094778207 095692051 +000000392 000870224 000802260 D|054542459 006115358 +000000392 000874394 000807955 D|070831904 015093447 +000000392 000890965 000808548 D|009278905 012105075 +000000392 000902870 000842606 D|043969404 031505791 +000000392 000938121 000857167 D|047374763 051948777 +000000392 000958773 000966598 D|082729879 017792299 +000000392 000986626 000975064 D|086122720 041369304 +000000392 000990363 000979980 D|019700056 018785397 +000000393 000011048 000011598 D|056227774 025141117 +000000393 000035667 000016986 D|015344212 036903200 +000000393 000051628 000023057 D|090964559 097784169 +000000393 000128083 000042861 D|024924833 043404684 +000000393 000144217 000175309 D|060707922 093574097 +000000393 000159183 000182679 D|023091307 070614809 +000000393 000185392 000194949 D|030134592 030438534 +000000393 000211468 000197114 D|073983719 071513010 +000000393 000213657 000207297 D|057241385 082439700 +000000393 000225256 000263175 D|078677325 085451145 +000000393 000232646 000263940 D|024272973 092184518 +000000393 000256791 000302694 D|046899889 083094276 +000000393 000315449 000315604 D|069508197 093704583 +000000393 000333224 000405346 D|049099848 037578698 +000000393 000346787 000426784 D|049998882 006483412 +000000393 000352575 000428050 D|025228315 085509207 +000000393 000369376 000458560 D|024243708 049176991 +000000393 000380351 000467097 D|036878273 034679788 +000000393 000388724 000498203 D|004962867 031159242 +000000393 000390173 000504737 D|066624290 076132833 +000000393 000431190 000557958 D|031391341 009423707 +000000393 000434096 000559850 D|059818146 098463916 +000000393 000472243 000574210 D|046721008 009888212 +000000393 000506992 000585245 D|016162426 005313997 +000000393 000541953 000585788 D|018943672 087189110 +000000393 000547071 000633366 D|027595753 052107360 +000000393 000566548 000644349 D|002511619 014590515 +000000393 000570467 000652367 D|062936979 061191161 +000000393 000588323 000670434 D|001949306 047366234 +000000393 000616029 000673235 D|073774496 064046252 +000000393 000623275 000677471 D|039277709 045854377 +000000393 000634079 000687781 D|089870983 018817729 +000000393 000638425 000695228 D|053456475 080759957 +000000393 000694438 000709618 D|003440496 090460329 +000000393 000701874 000718998 D|079642797 069968781 +000000393 000740877 000720541 D|009867866 082377223 +000000393 000806256 000733303 D|001755010 088554396 +000000393 000827624 000733762 D|009114024 085727617 +000000393 000850483 000737063 D|036722312 029507149 +000000393 000876098 000741090 D|045798752 096502897 +000000393 000897818 000761736 D|058198395 024186208 +000000393 000898445 000772076 D|071285425 078358600 +000000393 000898460 000794711 D|004266390 083676980 +000000393 000903656 000810254 D|064076979 036830642 +000000393 000921867 000866457 D|059477054 075820723 +000000393 000928607 000888551 D|083733383 043629800 +000000393 000930907 000895457 D|088036702 000413450 +000000393 000953547 000943575 D|055826598 059663900 +000000393 000990744 000957663 D|091888710 074475598 +000000393 000992594 000997179 D|022303370 015690650 +000000394 000005294 000001045 D|020434158 099769226 +000000394 000015438 000011232 D|085554715 005398469 +000000394 000079236 000022395 D|028466602 035787831 +000000394 000091917 000047807 D|049562186 060103568 +000000394 000104730 000053970 D|034907278 072003279 +000000394 000140036 000067386 D|025159913 095224538 +000000394 000166548 000095293 D|036794328 005854102 +000000394 000171460 000105897 D|016713953 097000656 +000000394 000177231 000130344 D|073681783 090154518 +000000394 000187356 000144420 D|058488101 008179035 +000000394 000193807 000149714 D|063574019 007275203 +000000394 000211824 000169423 D|002017103 023453882 +000000394 000220776 000173927 D|069220973 048602358 +000000394 000232450 000201901 D|082623990 079435073 +000000394 000244976 000207058 D|087272830 015982801 +000000394 000259490 000263982 D|087839874 066659579 +000000394 000279145 000271579 D|040744215 017946805 +000000394 000316637 000320892 D|065689009 073591045 +000000394 000343459 000326405 D|084376155 033288648 +000000394 000344773 000333742 D|035055164 035900313 +000000394 000354897 000341082 D|077835469 064161630 +000000394 000379022 000346306 D|075729823 037875553 +000000394 000380522 000354631 D|083936041 010448850 +000000394 000381660 000396620 D|073196943 019740214 +000000394 000418397 000416433 D|092669825 026861597 +000000394 000426284 000416739 D|096221212 043329150 +000000394 000444890 000446542 D|024917844 095187465 +000000394 000449992 000499211 D|073138102 004802831 +000000394 000474637 000523839 D|096967977 031278959 +000000394 000492804 000551323 D|012659910 025528920 +000000394 000546459 000614678 D|088030891 023569797 +000000394 000558218 000630252 D|049448263 074951646 +000000394 000561061 000647388 D|039865898 046182745 +000000394 000581659 000686853 D|006842972 096170275 +000000394 000631642 000713209 D|099992754 016613292 +000000394 000636981 000716563 D|062860035 034327972 +000000394 000638237 000728734 D|074583379 064044790 +000000394 000647642 000746234 D|031909311 013672466 +000000394 000648951 000751365 D|082177021 072267919 +000000394 000673483 000798528 D|019768326 077197850 +000000394 000687483 000803060 D|060235239 023004800 +000000394 000737319 000828041 D|037970260 002974537 +000000394 000740914 000845875 D|095584046 020702011 +000000394 000761105 000862550 D|038777391 087322985 +000000394 000830034 000878237 D|083621619 037194336 +000000394 000864783 000886954 D|023560965 066913968 +000000394 000883656 000937454 D|092163830 074324436 +000000394 000896503 000954779 D|065331560 076940764 +000000394 000915675 000956711 D|029547902 089876059 +000000394 000971213 000976231 D|042252248 054044444 +000000395 000016607 000004009 D|012315839 010118800 +000000395 000034950 000005314 D|065496444 023648882 +000000395 000049372 000018495 D|043195639 047281527 +000000395 000083703 000047637 D|085125862 062418570 +000000395 000091553 000121374 D|035458412 062123229 +000000395 000099905 000147359 D|022188797 045403555 +000000395 000122118 000159890 D|005371558 037894824 +000000395 000122658 000171201 D|033060742 096566627 +000000395 000131323 000197670 D|042524615 007572604 +000000395 000237115 000222925 D|001119534 040150649 +000000395 000244066 000229513 D|024224992 049633658 +000000395 000256964 000233521 D|089768493 011619361 +000000395 000293141 000285193 D|075408892 048456894 +000000395 000298523 000318818 D|081360292 016008321 +000000395 000307117 000329280 D|085662229 050469522 +000000395 000310419 000395587 D|036108531 075822796 +000000395 000315516 000407034 D|037595908 090094757 +000000395 000319497 000407115 D|031882106 074425883 +000000395 000330549 000409939 D|030427199 085520431 +000000395 000361236 000417767 D|048652252 071641319 +000000395 000386616 000453203 D|013974870 013327581 +000000395 000392660 000484580 D|009150304 061893345 +000000395 000418575 000497848 D|015191091 080131523 +000000395 000434318 000581710 D|083205197 032038375 +000000395 000470995 000632147 D|098571768 076833496 +000000395 000473234 000651172 D|009689426 075329977 +000000395 000530966 000660879 D|074112716 009468728 +000000395 000541439 000666677 D|058641729 046163281 +000000395 000579828 000670677 D|035003069 041759843 +000000395 000596824 000727429 D|077585278 048840878 +000000395 000604336 000732310 D|064378457 000044907 +000000395 000636018 000743053 D|056721081 046617819 +000000395 000675674 000748285 D|068409260 013964284 +000000395 000684873 000756646 D|077764099 061343302 +000000395 000710663 000760275 D|071850791 027469821 +000000395 000716181 000776787 D|017087037 011580836 +000000395 000734167 000786890 D|073161109 007000004 +000000395 000761910 000794349 D|038822818 015798046 +000000395 000766672 000797463 D|062283816 012853470 +000000395 000795910 000798802 D|048752686 076224949 +000000395 000824983 000808796 D|090551318 078227947 +000000395 000839739 000819451 D|075000694 026269261 +000000395 000861490 000827292 D|081676760 039620160 +000000395 000863417 000834351 D|091399715 052185544 +000000395 000883524 000835337 D|059948812 035551307 +000000395 000924152 000871030 D|079257777 099911492 +000000395 000955035 000899569 D|019808278 063838994 +000000395 000969485 000918399 D|036569285 033442697 +000000395 000974063 000935750 D|097903317 081823189 +000000395 000998722 000999571 D|050623843 078656604 +000000396 000005663 000056953 D|050146015 038194945 +000000396 000016029 000142286 D|065428815 078216012 +000000396 000017289 000149987 D|086477933 062782655 +000000396 000039593 000170938 D|093057402 027052505 +000000396 000065179 000242183 D|081541407 076353829 +000000396 000076795 000246880 D|068503794 074834524 +000000396 000083007 000273110 D|084423987 075283131 +000000396 000148913 000278772 D|021128745 046912230 +000000396 000154244 000289969 D|003898341 021805522 +000000396 000213853 000309941 D|044783075 086677417 +000000396 000226087 000322507 D|013844455 001980236 +000000396 000248906 000349280 D|013667310 086754195 +000000396 000256220 000352678 D|051287967 091951509 +000000396 000267178 000400616 D|014247069 003994949 +000000396 000273724 000404535 D|073155208 068439461 +000000396 000275547 000416369 D|029765762 091983403 +000000396 000283047 000479914 D|039737895 096741692 +000000396 000299370 000480456 D|046861536 010387150 +000000396 000318441 000482101 D|091327175 036045833 +000000396 000321308 000486334 D|017748996 007602462 +000000396 000321759 000497178 D|079511330 041330950 +000000396 000349773 000504619 D|062744668 036874938 +000000396 000356079 000505151 D|022344873 084671747 +000000396 000366133 000506378 D|090773258 047564259 +000000396 000393506 000508216 D|053043235 076297660 +000000396 000404412 000520976 D|081383632 000898591 +000000396 000454099 000551690 D|027332969 002331172 +000000396 000456108 000607380 D|013802269 014028676 +000000396 000477870 000633940 D|008387338 037683448 +000000396 000486788 000642236 D|047014485 083039578 +000000396 000494079 000662474 D|037810432 016415587 +000000396 000513558 000681308 D|023715766 057482894 +000000396 000514074 000695658 D|076230157 043777224 +000000396 000541195 000707301 D|030595899 050478805 +000000396 000576148 000747800 D|053455936 067299858 +000000396 000576171 000751704 D|067259227 059032094 +000000396 000586488 000764951 D|004905555 097209289 +000000396 000611439 000814136 D|008974783 073010574 +000000396 000629640 000818049 D|043904714 094716950 +000000396 000654028 000850761 D|023954573 043792233 +000000396 000666402 000855627 D|037409196 069268980 +000000396 000682712 000861737 D|097510990 032413178 +000000396 000705724 000885186 D|032799281 079863895 +000000396 000720930 000905105 D|001616058 069613930 +000000396 000749557 000909930 D|077689088 093304954 +000000396 000791859 000914374 D|006576006 004026934 +000000396 000840491 000916532 D|036799078 011678186 +000000396 000864673 000938539 D|075263147 005534293 +000000396 000891270 000951436 D|048482977 074072246 +000000396 000976224 000970486 D|088670731 061222704 +000000397 000045242 000009700 D|057694345 004035554 +000000397 000117204 000011260 D|005924801 083518963 +000000397 000119678 000076521 D|019697131 055494101 +000000397 000124424 000076779 D|057025943 082463178 +000000397 000158837 000120608 D|001861315 077483607 +000000397 000184724 000129007 D|063928747 022503621 +000000397 000196169 000144127 D|037354892 095072798 +000000397 000198234 000146516 D|033032156 032946517 +000000397 000206190 000146733 D|053735150 056879081 +000000397 000216382 000162983 D|035329624 095379883 +000000397 000224121 000174987 D|045213799 016099689 +000000397 000231455 000234405 D|009633295 081324482 +000000397 000273595 000239460 D|061666773 045415469 +000000397 000276045 000266689 D|002882674 044487120 +000000397 000318727 000273875 D|029254427 062993415 +000000397 000318921 000294320 D|034017781 053751032 +000000397 000354590 000297726 D|057260630 019214478 +000000397 000400944 000306672 D|056592601 087734250 +000000397 000405691 000328470 D|048457051 077658603 +000000397 000413904 000377133 D|046997492 027306322 +000000397 000418486 000379079 D|099100366 003617677 +000000397 000435915 000393910 D|094226740 051477464 +000000397 000449919 000399619 D|077819091 096288551 +000000397 000458376 000413591 D|044216098 019747553 +000000397 000465947 000456280 D|032593265 042876194 +000000397 000525217 000478319 D|039327505 077430140 +000000397 000531009 000478562 D|048783531 000283754 +000000397 000568401 000497705 D|085810776 088769269 +000000397 000573116 000499403 D|025585345 013925100 +000000397 000582731 000511008 D|006169527 086438168 +000000397 000584872 000517847 D|012342056 096343854 +000000397 000587665 000543196 D|020696356 079019931 +000000397 000600480 000547544 D|033833782 088157819 +000000397 000606336 000569773 D|072845996 074793603 +000000397 000619658 000600386 D|045759653 084510285 +000000397 000633946 000645880 D|055409643 062056188 +000000397 000678112 000690616 D|075257587 092542153 +000000397 000683871 000720640 D|094960196 067681926 +000000397 000690497 000773815 D|039855894 058227588 +000000397 000721031 000809520 D|020682331 077693651 +000000397 000788174 000822395 D|068824066 029883606 +000000397 000846493 000826727 D|087132044 043657121 +000000397 000875827 000849387 D|083569137 073120805 +000000397 000897375 000866429 D|066486409 096430739 +000000397 000929425 000892461 D|086819127 004320578 +000000397 000936837 000946761 D|099355970 056425270 +000000397 000946846 000956904 D|053308736 036949073 +000000397 000952250 000973602 D|091448639 014258454 +000000397 000956311 000984251 D|080156397 043451845 +000000397 000970671 000995488 D|031795858 072095800 +000000398 000015949 000024418 D|005144720 092328552 +000000398 000114161 000040648 D|059783583 025081046 +000000398 000130418 000049713 D|051114372 033208833 +000000398 000183941 000057822 D|019648102 044022057 +000000398 000214133 000133718 D|043443763 006004673 +000000398 000220913 000147296 D|096415686 098055893 +000000398 000256226 000153318 D|052833664 060371237 +000000398 000268894 000162423 D|047098813 064521687 +000000398 000281729 000166489 D|064083635 057245906 +000000398 000298146 000187247 D|016920289 089661514 +000000398 000299524 000201382 D|013944379 065882121 +000000398 000342365 000209810 D|016098547 038662714 +000000398 000348716 000221968 D|014213284 031708730 +000000398 000351567 000230761 D|096387064 022855849 +000000398 000380635 000252421 D|082628130 004400324 +000000398 000399778 000263160 D|022629494 054649991 +000000398 000447051 000265029 D|074402112 038945789 +000000398 000478929 000300532 D|011095549 093589501 +000000398 000480743 000321584 D|022406686 004455560 +000000398 000483661 000327978 D|052200707 060042492 +000000398 000502309 000334888 D|086101611 033115892 +000000398 000528413 000342766 D|072325771 009739240 +000000398 000534896 000371738 D|092968318 033225754 +000000398 000539167 000372551 D|019997031 071283743 +000000398 000547772 000396014 D|033258873 058940414 +000000398 000595397 000431286 D|044011636 052652150 +000000398 000630303 000440574 D|019340683 019274763 +000000398 000643246 000467974 D|091801742 002396346 +000000398 000660958 000513231 D|024047680 082374956 +000000398 000677348 000514537 D|048122612 072972877 +000000398 000687261 000551127 D|067510284 037008054 +000000398 000694861 000552923 D|033798616 020543785 +000000398 000702605 000555425 D|018355739 065131962 +000000398 000719321 000604855 D|063052525 078242734 +000000398 000725347 000612250 D|062683768 018033504 +000000398 000747299 000628531 D|021857189 011377879 +000000398 000757591 000656882 D|021053805 077838352 +000000398 000759382 000671290 D|087233674 046593986 +000000398 000771355 000704669 D|082237484 040145069 +000000398 000790286 000727248 D|096656415 045502181 +000000398 000800341 000741664 D|000091696 005872680 +000000398 000830287 000819492 D|069732409 017929536 +000000398 000866101 000860358 D|091652940 073685674 +000000398 000881200 000874492 D|065411210 029543492 +000000398 000888190 000876767 D|008522221 002681189 +000000398 000905082 000889217 D|046092818 080616267 +000000398 000921462 000903164 D|009415470 002996426 +000000398 000965881 000961612 D|068791957 035667315 +000000398 000967257 000966828 D|012009849 001058373 +000000398 000967988 000994059 D|068694723 004156909 +000000399 000014873 000033676 D|080494265 002019733 +000000399 000138435 000039557 D|082232416 027719395 +000000399 000153764 000049985 D|076181152 071275775 +000000399 000161448 000062443 D|037056555 035245643 +000000399 000172701 000079295 D|037803533 083480684 +000000399 000200868 000083386 D|033326443 049506915 +000000399 000202418 000147980 D|054367655 039454457 +000000399 000264607 000153738 D|098146868 056836730 +000000399 000284034 000175226 D|081942052 084718887 +000000399 000292076 000197308 D|029627229 071437163 +000000399 000296222 000215077 D|002599847 009470298 +000000399 000298351 000220629 D|005915050 007371765 +000000399 000310876 000237256 D|098943133 065972511 +000000399 000347381 000239636 D|072730884 032894167 +000000399 000350145 000271781 D|012340848 051177846 +000000399 000392452 000282612 D|032273457 005820671 +000000399 000435714 000284526 D|049062831 024334230 +000000399 000436649 000310389 D|022052182 098905393 +000000399 000460225 000335834 D|055094907 086755619 +000000399 000496798 000347012 D|001421106 096857999 +000000399 000503254 000349817 D|011492145 077670367 +000000399 000527688 000380800 D|015464344 095132779 +000000399 000543470 000380834 D|004914267 029822210 +000000399 000561344 000385307 D|014889652 065784789 +000000399 000562159 000431935 D|058051365 006351658 +000000399 000593861 000475708 D|088165716 004651652 +000000399 000597006 000485702 D|061208548 073468297 +000000399 000608723 000540838 D|048724179 024352252 +000000399 000619205 000553992 D|056293078 009754143 +000000399 000620110 000570360 D|085228049 022218804 +000000399 000667783 000572920 D|058956332 092872500 +000000399 000691378 000581679 D|076678391 047058082 +000000399 000745617 000597730 D|094452793 054439112 +000000399 000759178 000642596 D|095465584 072719789 +000000399 000763556 000660325 D|032296103 034875787 +000000399 000766250 000678915 D|007541829 093143873 +000000399 000797597 000720635 D|023072937 021881859 +000000399 000802892 000725921 D|045964546 054060748 +000000399 000864827 000730919 D|087948152 066927334 +000000399 000888070 000807768 D|097677145 008105922 +000000399 000906154 000831272 D|063803472 042024354 +000000399 000909325 000839231 D|057369662 036414095 +000000399 000920656 000873156 D|005444771 052814151 +000000399 000921093 000883579 D|087348594 006002725 +000000399 000939944 000908103 D|076990476 023839372 +000000399 000942351 000918679 D|042949799 067451990 +000000399 000951857 000936914 D|034200910 084877286 +000000399 000970633 000974665 D|028926109 005954998 +000000399 000978045 000987397 D|074002659 045915930 +000000399 000995515 000992255 D|031341157 083349175 +000000400 000004506 000003954 D|011995117 021512258 +000000400 000028241 000010993 D|096270233 053763375 +000000400 000077377 000017521 D|001199655 035211618 +000000400 000099277 000025912 D|002580948 004390373 +000000400 000114126 000080056 D|011102292 045426758 +000000400 000117694 000140597 D|002511584 015742937 +000000400 000156656 000153297 D|078738905 019877011 +000000400 000224247 000259019 D|075523947 058957292 +000000400 000225408 000271024 D|059291072 030965222 +000000400 000273432 000278976 D|093490937 035101483 +000000400 000302944 000280060 D|092606972 081046213 +000000400 000345111 000308800 D|020027507 082761433 +000000400 000345436 000343905 D|035134805 055378420 +000000400 000354076 000357927 D|061053940 033488296 +000000400 000366058 000362701 D|028019813 009632653 +000000400 000419349 000372199 D|048949308 036850149 +000000400 000490830 000403579 D|026256840 047957660 +000000400 000502107 000412051 D|095302669 023765676 +000000400 000507231 000414919 D|018578788 032944620 +000000400 000532157 000415330 D|048170983 071367729 +000000400 000547359 000420260 D|052307306 034792887 +000000400 000550324 000477964 D|041319876 098024721 +000000400 000551040 000480188 D|052379251 056389368 +000000400 000556923 000522751 D|063263802 084955321 +000000400 000581182 000536605 D|041598824 086389310 +000000400 000598500 000566816 D|020318181 029479347 +000000400 000633260 000690175 D|091700293 098003000 +000000400 000636001 000716783 D|059582112 012255727 +000000400 000647601 000722073 D|097643901 054642097 +000000400 000686217 000725819 D|051677415 058935505 +000000400 000750042 000728383 D|018851392 005528283 +000000400 000772325 000785559 D|019374453 063733287 +000000400 000774439 000800757 D|061312660 000790972 +000000400 000781907 000813330 D|086326229 094601875 +000000400 000782916 000813901 D|031359044 035439038 +000000400 000789594 000827539 D|052879923 047923017 +000000400 000793387 000838474 D|035160689 086545222 +000000400 000797757 000862256 D|042228739 051610565 +000000400 000801401 000864040 D|042132031 082145277 +000000400 000816363 000870476 D|095479783 088659683 +000000400 000882129 000876581 D|064465171 051591925 +000000400 000903394 000878404 D|069352830 056999483 +000000400 000906548 000914704 D|056939302 049497049 +000000400 000917292 000936382 D|030723067 098793353 +000000400 000925785 000938334 D|049318115 068226353 +000000400 000928763 000963188 D|060550047 055378221 +000000400 000931820 000963487 D|093267725 060880803 +000000400 000959444 000972102 D|057183258 034205142 +000000400 000977352 000985552 D|096708626 035899827 +000000400 000996058 000989202 D|013486406 098736995 +000000401 000024590 000018184 D|013243243 066245887 +000000401 000032457 000032933 D|091701353 025410778 +000000401 000049923 000040285 D|063719133 038547582 +000000401 000090990 000046301 D|073627824 019466948 +000000401 000133347 000056700 D|042333687 029850449 +000000401 000134294 000083602 D|052852157 096591313 +000000401 000143949 000121595 D|027446301 011962921 +000000401 000178954 000121725 D|037105397 087007306 +000000401 000189374 000134782 D|068256057 027045076 +000000401 000196512 000144857 D|054386017 086901469 +000000401 000229661 000205258 D|083252370 000439758 +000000401 000237575 000215075 D|046233486 006356971 +000000401 000278297 000240751 D|048819370 095334401 +000000401 000284852 000255697 D|041779589 064540454 +000000401 000347408 000275675 D|071156125 055954209 +000000401 000351359 000307078 D|092597872 023304271 +000000401 000357560 000405128 D|054970192 053570601 +000000401 000391457 000422263 D|000976011 088906860 +000000401 000412265 000435357 D|078399523 034381501 +000000401 000434102 000468679 D|066969518 085022414 +000000401 000453162 000478016 D|078166522 003781413 +000000401 000467485 000493266 D|045902407 073179612 +000000401 000490191 000507209 D|098033350 019003109 +000000401 000509254 000511887 D|050783100 082369439 +000000401 000538390 000513644 D|061605985 046785222 +000000401 000577925 000554213 D|022286632 060261384 +000000401 000587422 000587236 D|048639332 041735387 +000000401 000619387 000633111 D|047090878 077971054 +000000401 000619767 000644182 D|069293132 046966715 +000000401 000650711 000659369 D|047083046 007824642 +000000401 000659855 000673079 D|031859255 046932754 +000000401 000676646 000687325 D|043236115 041328012 +000000401 000679587 000703863 D|018393004 034160112 +000000401 000688728 000710275 D|040737347 046904826 +000000401 000692431 000734265 D|089776973 033953720 +000000401 000707117 000737964 D|071916040 040621830 +000000401 000749138 000743411 D|063607100 058284971 +000000401 000759977 000748950 D|095141486 014169893 +000000401 000762363 000759977 D|074195961 070675099 +000000401 000790177 000764871 D|087156471 090468220 +000000401 000806096 000789357 D|007847499 005522515 +000000401 000817878 000818961 D|003351951 000815485 +000000401 000827106 000833907 D|022694761 042457168 +000000401 000870565 000838699 D|071311079 061154975 +000000401 000896408 000861466 D|088497387 097885040 +000000401 000960398 000879814 D|046502854 014629063 +000000401 000970472 000904254 D|055911644 006744454 +000000401 000977487 000905395 D|098401936 084315218 +000000401 000994262 000912002 D|016407524 086738911 +000000401 000999074 000954958 D|027422005 038812879 +000000402 000009419 000043173 D|086466899 045798316 +000000402 000026169 000046994 D|013310589 068102094 +000000402 000026343 000101313 D|000624295 055097562 +000000402 000068721 000104143 D|051621079 005985000 +000000402 000071634 000112151 D|053491333 020660502 +000000402 000096609 000116917 D|017692028 042805084 +000000402 000096661 000153460 D|037805738 066110081 +000000402 000128738 000156847 D|017199773 000105509 +000000402 000181463 000179332 D|019308414 082369805 +000000402 000188559 000193412 D|007508138 020014209 +000000402 000194063 000199948 D|034797453 032503817 +000000402 000211892 000218371 D|056977561 025853996 +000000402 000276239 000260567 D|062059125 073371095 +000000402 000288479 000266368 D|096291308 066808650 +000000402 000295781 000292111 D|082125700 094309183 +000000402 000320513 000309433 D|005275753 099456741 +000000402 000335285 000353526 D|049039535 080560769 +000000402 000336366 000355208 D|051130465 038442130 +000000402 000360473 000396483 D|012129849 009595604 +000000402 000381520 000396618 D|075363597 088474423 +000000402 000397180 000411462 D|006286652 087571977 +000000402 000471077 000447022 D|014340162 022008420 +000000402 000496379 000449746 D|017339987 095557201 +000000402 000502809 000459776 D|026917259 003714354 +000000402 000544708 000472109 D|065006746 015621618 +000000402 000562693 000478611 D|020740297 096747955 +000000402 000563429 000496098 D|002909128 008955539 +000000402 000568846 000497134 D|027433578 036835095 +000000402 000584773 000567058 D|057803641 093007400 +000000402 000585106 000595806 D|025157380 000472657 +000000402 000611143 000612791 D|040786237 027982905 +000000402 000638180 000623823 D|072001658 074619751 +000000402 000690714 000624892 D|098107256 094615577 +000000402 000712435 000635254 D|056078173 071954396 +000000402 000714818 000722807 D|047408714 008531818 +000000402 000721667 000725997 D|004615329 044795694 +000000402 000724455 000739569 D|016212355 049194237 +000000402 000730973 000753058 D|069555675 090599136 +000000402 000738905 000784133 D|056616743 096007892 +000000402 000807478 000813561 D|021094208 074873618 +000000402 000810607 000829406 D|059784048 028073672 +000000402 000841013 000851540 D|050173407 036645065 +000000402 000851525 000887985 D|093203240 065169393 +000000402 000864221 000897987 D|055486455 020557344 +000000402 000886243 000911728 D|048782568 018083156 +000000402 000944470 000912332 D|046958743 066702918 +000000402 000950863 000919428 D|066096620 055473111 +000000402 000956050 000931111 D|043904446 058288768 +000000402 000981981 000984525 D|023671345 021549478 +000000402 000995511 000995605 D|020048313 046777453 +000000403 000009673 000007621 D|093645701 056644717 +000000403 000049505 000032949 D|042449157 047180840 +000000403 000070081 000036262 D|016670579 037442318 +000000403 000078620 000082713 D|030049648 079991998 +000000403 000089318 000090363 D|007713596 040802879 +000000403 000108696 000095310 D|053354761 031070244 +000000403 000112581 000117974 D|095189064 072418964 +000000403 000239789 000123769 D|096146358 029252119 +000000403 000241536 000143134 D|013659632 062472295 +000000403 000253387 000146915 D|063836042 061787427 +000000403 000255848 000152166 D|066993160 038108360 +000000403 000281715 000165893 D|088061367 056841541 +000000403 000284448 000185814 D|018337065 091125614 +000000403 000294319 000191818 D|077318735 040054349 +000000403 000347400 000234189 D|026750116 015938041 +000000403 000360673 000249570 D|070253231 052680681 +000000403 000381195 000258884 D|026964902 054735691 +000000403 000397397 000290925 D|085060036 070890690 +000000403 000426984 000300372 D|024742983 043418904 +000000403 000429051 000329145 D|052697839 056647930 +000000403 000442893 000335451 D|037979735 094991195 +000000403 000449163 000336252 D|072628528 087620483 +000000403 000452697 000336656 D|088834518 033590941 +000000403 000481988 000342342 D|084038556 099208145 +000000403 000527524 000407812 D|008633528 098402259 +000000403 000556304 000424034 D|016161757 075634779 +000000403 000556618 000499846 D|047145532 016825354 +000000403 000557041 000501898 D|040830100 047781755 +000000403 000564922 000519466 D|059250350 075958331 +000000403 000593734 000531177 D|057349139 036421698 +000000403 000617751 000540176 D|018028591 041517562 +000000403 000653920 000548328 D|088384586 011087082 +000000403 000672018 000566698 D|000831388 043746813 +000000403 000682207 000625949 D|098109248 047514575 +000000403 000713756 000631721 D|085803625 096356619 +000000403 000723048 000641027 D|073678095 010356954 +000000403 000728904 000667359 D|025011339 079900406 +000000403 000744650 000716756 D|029437097 020913927 +000000403 000760292 000729934 D|024470554 091872254 +000000403 000836366 000771462 D|043398312 079359392 +000000403 000842892 000773818 D|085005023 019714075 +000000403 000854657 000790569 D|083199163 065098528 +000000403 000863390 000840930 D|084900584 096435915 +000000403 000868822 000867414 D|061889583 078686955 +000000403 000957518 000891195 D|036806534 046143523 +000000403 000979836 000906876 D|091013630 056187330 +000000403 000981262 000937524 D|049351379 069617876 +000000403 000985936 000968447 D|069121007 052201480 +000000403 000986608 000984690 D|078504033 019481552 +000000403 000987843 000992427 D|073549541 056134129 +000000404 000015703 000013040 D|068403376 069728109 +000000404 000055473 000016286 D|091641218 029749968 +000000404 000069947 000025214 D|033836536 078961153 +000000404 000082256 000044999 D|058298062 070664827 +000000404 000084543 000078058 D|036972417 063319699 +000000404 000142171 000085381 D|038459603 009583035 +000000404 000149743 000130781 D|051190743 040954228 +000000404 000175779 000143888 D|048391033 050474418 +000000404 000191259 000172005 D|072308251 007771411 +000000404 000236989 000187474 D|033594932 038344328 +000000404 000239513 000207453 D|057746514 039229510 +000000404 000254523 000209737 D|054858311 014061583 +000000404 000274030 000263089 D|089785373 049202574 +000000404 000305919 000272268 D|053702953 051270820 +000000404 000316852 000304801 D|022130706 070750279 +000000404 000325633 000339718 D|095273345 099856223 +000000404 000338054 000382616 D|083627827 064608177 +000000404 000352031 000427337 D|091332906 017460444 +000000404 000355072 000453010 D|036111791 064481174 +000000404 000376019 000456911 D|021637244 017112870 +000000404 000379778 000475618 D|095435264 046561881 +000000404 000400609 000478870 D|065634132 078515506 +000000404 000405332 000505281 D|010161569 068321507 +000000404 000418324 000508696 D|050257154 026196098 +000000404 000434454 000525795 D|088378222 077626936 +000000404 000443253 000527532 D|042587418 087541517 +000000404 000516757 000606431 D|097381508 078458840 +000000404 000531235 000621092 D|033909429 094141967 +000000404 000559294 000632641 D|001774694 097651309 +000000404 000566887 000642296 D|024578499 081398113 +000000404 000594733 000649857 D|080838173 047507779 +000000404 000660998 000650833 D|058239475 059199984 +000000404 000663950 000674851 D|006109208 054110923 +000000404 000668228 000711252 D|033381835 046279623 +000000404 000719232 000722716 D|059979014 073672025 +000000404 000723016 000736448 D|053898820 048494712 +000000404 000747143 000786080 D|099860623 054223060 +000000404 000767869 000811517 D|018723300 048657858 +000000404 000780940 000815370 D|038696918 031882101 +000000404 000785799 000823551 D|001139936 021332057 +000000404 000840872 000843174 D|007258206 062520493 +000000404 000841549 000861458 D|068667404 003368492 +000000404 000849516 000873287 D|058352834 095305331 +000000404 000865805 000891326 D|032897681 089983598 +000000404 000890689 000895832 D|053015625 067100957 +000000404 000914255 000931332 D|044096688 084205042 +000000404 000937765 000934142 D|046843074 091592134 +000000404 000937818 000945640 D|019183182 037141792 +000000404 000951028 000948258 D|094136517 087551349 +000000404 000953055 000978242 D|036256828 061767809 +000000405 000019430 000010789 D|068524133 029958984 +000000405 000029193 000029774 D|041842777 099856893 +000000405 000051358 000071688 D|015952280 014996863 +000000405 000060241 000078939 D|005449082 095638145 +000000405 000077085 000080306 D|012845387 013256799 +000000405 000102561 000096492 D|028570529 068110961 +000000405 000103021 000118373 D|043493804 085843332 +000000405 000133688 000136492 D|068056218 007057529 +000000405 000137480 000141987 D|092943540 032053515 +000000405 000154538 000143984 D|022201962 011822302 +000000405 000194399 000212230 D|048248648 091117317 +000000405 000208242 000245225 D|098157005 014172852 +000000405 000228108 000246037 D|042285585 049108853 +000000405 000244708 000250935 D|037553953 008980111 +000000405 000320730 000269596 D|056417474 005691039 +000000405 000327565 000312429 D|006456945 011076656 +000000405 000337330 000326097 D|095320255 030563660 +000000405 000338951 000329110 D|076433673 021881941 +000000405 000341988 000340151 D|024481241 099039037 +000000405 000344966 000405644 D|046045666 034954463 +000000405 000370885 000405745 D|060389555 073968748 +000000405 000380692 000417535 D|044445888 006630231 +000000405 000391794 000422052 D|018643198 054499650 +000000405 000398334 000453337 D|008209773 032518438 +000000405 000437899 000475941 D|026242687 012682787 +000000405 000448841 000480924 D|080049740 038246794 +000000405 000470008 000508187 D|024825167 050297557 +000000405 000471985 000523307 D|057241950 071201095 +000000405 000478420 000555172 D|034353804 012667791 +000000405 000496392 000576813 D|053938727 033383905 +000000405 000550372 000627533 D|088712366 033785652 +000000405 000587950 000656795 D|097068173 063393207 +000000405 000608346 000702810 D|009013133 002970455 +000000405 000623653 000715768 D|080516626 083479115 +000000405 000633736 000723074 D|085474627 060091161 +000000405 000694257 000739647 D|008606199 052117768 +000000405 000695808 000762851 D|038034359 007831408 +000000405 000700599 000789855 D|022487146 094775055 +000000405 000708041 000801909 D|023313187 067313347 +000000405 000709317 000815266 D|030941392 050092036 +000000405 000786107 000833008 D|023791415 080647289 +000000405 000829471 000836158 D|014804210 014250949 +000000405 000836832 000861896 D|070805717 062683520 +000000405 000845063 000881884 D|029318492 036760504 +000000405 000848548 000886140 D|012506594 073102852 +000000405 000861187 000892252 D|068409407 062437235 +000000405 000861578 000912141 D|072969094 092268603 +000000405 000867888 000943074 D|043401119 036935827 +000000405 000928593 000946689 D|056354552 024203543 +000000405 000954947 000957631 D|046897346 038151705 +000000406 000011056 000010552 D|096296370 080712321 +000000406 000023211 000028319 D|060739204 032629938 +000000406 000050412 000073373 D|064667930 043931031 +000000406 000077183 000083479 D|097941655 002244673 +000000406 000077574 000121422 D|010673204 006602820 +000000406 000090107 000132601 D|081083702 024003791 +000000406 000119100 000169029 D|072861527 069817475 +000000406 000125123 000225081 D|059813828 001532390 +000000406 000165728 000230625 D|047347283 007695883 +000000406 000167399 000256663 D|066909053 007193189 +000000406 000209420 000258687 D|088223443 085237703 +000000406 000241694 000272006 D|054411339 082868638 +000000406 000262880 000274615 D|035817377 085919584 +000000406 000281867 000291756 D|030149658 005635178 +000000406 000310957 000295536 D|085843388 063914084 +000000406 000379650 000340669 D|037087361 084448645 +000000406 000442086 000342498 D|073269658 019035220 +000000406 000460669 000346345 D|027340246 034696689 +000000406 000483266 000361449 D|070832854 086847543 +000000406 000496889 000374616 D|021084748 058424487 +000000406 000509372 000379948 D|094781530 090813155 +000000406 000528423 000383169 D|044224336 031483828 +000000406 000558613 000387741 D|066344351 074146298 +000000406 000559238 000391148 D|022102304 096557606 +000000406 000565752 000432200 D|081752263 003438318 +000000406 000571021 000451801 D|089634510 062025449 +000000406 000585588 000460191 D|014890995 008447210 +000000406 000610385 000473613 D|080744498 070793595 +000000406 000610809 000499318 D|094456981 070688717 +000000406 000644802 000529391 D|061704529 008169068 +000000406 000663043 000555059 D|081735277 099653863 +000000406 000669171 000571990 D|004093522 074710302 +000000406 000677339 000581080 D|035644338 088640922 +000000406 000700259 000622651 D|078027607 079762371 +000000406 000725249 000659377 D|040205214 045860115 +000000406 000738956 000705004 D|007325983 090690159 +000000406 000776460 000714735 D|066357568 035424268 +000000406 000792929 000782970 D|050223792 009509047 +000000406 000814592 000844205 D|080272009 086023712 +000000406 000832057 000852097 D|095141781 069109900 +000000406 000839205 000906090 D|087584405 019305566 +000000406 000877026 000916446 D|029555578 057809149 +000000406 000883211 000922759 D|083469184 090049862 +000000406 000910178 000927587 D|031776295 079408934 +000000406 000919670 000944796 D|057111309 010123306 +000000406 000920192 000949100 D|062410846 031698111 +000000406 000949830 000951744 D|029670897 048034496 +000000406 000950803 000961305 D|063705094 078130484 +000000406 000965445 000977454 D|011990823 077398543 +000000406 000997796 000998081 D|060770243 027452354 +000000407 000057041 000014729 D|029734964 005620759 +000000407 000079544 000028274 D|084193046 022657217 +000000407 000092047 000031071 D|016556051 009507499 +000000407 000097367 000034657 D|084733126 037000186 +000000407 000161950 000059993 D|016122386 045233966 +000000407 000178587 000083352 D|072612741 046509102 +000000407 000212778 000085064 D|002369478 049342421 +000000407 000221557 000099161 D|095123338 028478640 +000000407 000231625 000113246 D|082932591 090748720 +000000407 000247018 000134635 D|016930604 044402649 +000000407 000267932 000175962 D|032266216 000300437 +000000407 000290274 000194384 D|001693615 047614989 +000000407 000315392 000214952 D|088045346 007667415 +000000407 000315964 000242519 D|058197707 089520545 +000000407 000329568 000269252 D|004104284 058152242 +000000407 000367997 000302040 D|085804912 050452541 +000000407 000400398 000311307 D|040841836 009389607 +000000407 000402622 000311828 D|016511948 035844592 +000000407 000410563 000325865 D|053481201 057918772 +000000407 000425724 000338386 D|027120541 038331142 +000000407 000449213 000351917 D|056717753 047111537 +000000407 000461089 000353654 D|051865977 085832650 +000000407 000471632 000400209 D|051363975 001765865 +000000407 000502409 000405042 D|082206896 050171482 +000000407 000519508 000427026 D|037372127 013648141 +000000407 000521448 000431845 D|015504906 088498771 +000000407 000530739 000505196 D|051100066 016142057 +000000407 000533336 000547321 D|054413730 019469993 +000000407 000544577 000550118 D|035137677 010257502 +000000407 000552448 000569600 D|086819080 023965663 +000000407 000556184 000597278 D|064269972 020781461 +000000407 000573737 000612241 D|091130269 031522789 +000000407 000633622 000646277 D|023103175 048074072 +000000407 000658495 000672392 D|062895400 063991040 +000000407 000660761 000676152 D|092108089 044049902 +000000407 000727255 000700040 D|068143846 069666198 +000000407 000761142 000754767 D|012755143 037254879 +000000407 000807659 000761617 D|026128548 046753792 +000000407 000824684 000780249 D|081508374 048759909 +000000407 000832066 000793520 D|051166375 099146547 +000000407 000877735 000802097 D|055712269 071849074 +000000407 000898563 000807381 D|043766196 054191216 +000000407 000925295 000812497 D|095320970 094410909 +000000407 000937410 000834232 D|078386731 082784887 +000000407 000965548 000849891 D|003531231 097003401 +000000407 000976973 000856033 D|049233278 078359742 +000000407 000977723 000909029 D|030684770 043266833 +000000407 000985190 000929235 D|022271117 065751511 +000000407 000987245 000948815 D|026434948 085456664 +000000407 000987980 000965884 D|011675636 043969013 +000000408 000002956 000010786 D|098017678 035068847 +000000408 000028926 000031362 D|034384219 062040558 +000000408 000057302 000031527 D|017086446 052260972 +000000408 000072738 000032333 D|082262027 095154989 +000000408 000122844 000035566 D|038355478 080106749 +000000408 000143169 000038922 D|064803436 088772418 +000000408 000170080 000047558 D|000896103 007354312 +000000408 000186394 000068362 D|034931404 020789505 +000000408 000187288 000084800 D|044442277 011008032 +000000408 000192482 000094694 D|004315389 065607931 +000000408 000204105 000120528 D|074395138 007439437 +000000408 000219605 000189597 D|079141387 088127390 +000000408 000222413 000225629 D|087830227 023144211 +000000408 000262514 000238616 D|019272780 000400297 +000000408 000323038 000268955 D|039711471 037170672 +000000408 000324265 000278098 D|088809624 005827878 +000000408 000356479 000342449 D|073751443 033294547 +000000408 000381608 000372753 D|031479664 025395960 +000000408 000408790 000385341 D|097492147 051878436 +000000408 000433883 000427033 D|060750010 013123500 +000000408 000435060 000437726 D|096821365 059981651 +000000408 000435812 000459451 D|048437795 044623860 +000000408 000439812 000465979 D|028435442 000694515 +000000408 000459677 000473584 D|009980369 054650523 +000000408 000518663 000473617 D|036303080 051682186 +000000408 000534186 000478353 D|010246534 016695537 +000000408 000538795 000489011 D|086058639 020853963 +000000408 000590159 000507536 D|021587536 036014413 +000000408 000597752 000510355 D|024274196 018170574 +000000408 000621796 000527295 D|045342279 027482771 +000000408 000656720 000569538 D|067621138 033277445 +000000408 000681151 000581458 D|074872738 022139348 +000000408 000735439 000589283 D|044073937 013290969 +000000408 000742938 000667170 D|046310919 033577010 +000000408 000756674 000678080 D|085870240 051842622 +000000408 000762666 000680335 D|016147671 086695389 +000000408 000768446 000735647 D|081283321 054777106 +000000408 000799058 000746548 D|064328336 032712436 +000000408 000800090 000749634 D|018382831 006489405 +000000408 000813076 000779780 D|002485016 045050392 +000000408 000829985 000803698 D|009261980 022597857 +000000408 000863598 000836868 D|010716275 087680300 +000000408 000879398 000840377 D|095060313 097227657 +000000408 000898393 000854381 D|068169481 068875513 +000000408 000932827 000866171 D|005128441 049085930 +000000408 000933404 000881386 D|060810101 028640894 +000000408 000943735 000892010 D|038258792 028083267 +000000408 000950920 000917946 D|071867468 080914455 +000000408 000965127 000930316 D|026658357 087013851 +000000408 000994353 000981892 D|045625707 088428686 +000000409 000000214 000010193 D|069295168 060285244 +000000409 000089078 000010304 D|035730441 058742128 +000000409 000090789 000050304 D|098738375 061848274 +000000409 000110658 000077242 D|076724115 048082106 +000000409 000117113 000089375 D|017132647 034212492 +000000409 000126029 000114587 D|025453181 038701795 +000000409 000143766 000125804 D|026522583 062912647 +000000409 000176015 000164066 D|078778790 006437499 +000000409 000177966 000192429 D|034463867 024459074 +000000409 000194614 000203955 D|075086166 013317211 +000000409 000202991 000219317 D|093265462 074037566 +000000409 000224883 000219615 D|000186183 014922305 +000000409 000227908 000225259 D|035714328 038066264 +000000409 000258916 000234307 D|055328850 013881506 +000000409 000264820 000253285 D|001396059 019534822 +000000409 000283317 000254574 D|044453620 004310395 +000000409 000302144 000257163 D|085057100 089901923 +000000409 000306154 000274169 D|068059397 089669595 +000000409 000321666 000289298 D|032827941 005937051 +000000409 000350311 000293304 D|084255820 039926417 +000000409 000366622 000310351 D|035163253 062421326 +000000409 000423322 000317465 D|040541425 020085839 +000000409 000443697 000340015 D|035167395 038140448 +000000409 000452002 000387211 D|093047637 066281168 +000000409 000463950 000408335 D|004399447 005805761 +000000409 000468993 000498842 D|080379726 002822557 +000000409 000477698 000500432 D|060510694 090239246 +000000409 000496943 000514173 D|015494755 010091127 +000000409 000606230 000555738 D|030974229 052013432 +000000409 000628921 000571763 D|003531305 081754163 +000000409 000635928 000601842 D|075843185 026561549 +000000409 000699549 000617975 D|040307102 024900386 +000000409 000702124 000645357 D|083037855 098942458 +000000409 000728876 000672725 D|056346962 009935257 +000000409 000733145 000676003 D|082360033 031473299 +000000409 000736044 000702465 D|098452962 026021872 +000000409 000767746 000703560 D|064796264 011786380 +000000409 000799803 000715734 D|080658597 031407141 +000000409 000823178 000730576 D|003874030 004256469 +000000409 000846416 000754211 D|004540109 038159280 +000000409 000854465 000822315 D|070667693 019323981 +000000409 000856327 000853793 D|073411070 028309738 +000000409 000856887 000868821 D|033885411 075043398 +000000409 000859499 000896886 D|037222777 015735669 +000000409 000880639 000903542 D|024058587 009033624 +000000409 000889226 000935293 D|055822129 079980359 +000000409 000907010 000935794 D|074598837 067997610 +000000409 000958762 000937235 D|060960139 002672357 +000000409 000960436 000937522 D|044790186 014770927 +000000409 000972384 000981812 D|039449238 062881955 +000000410 000000750 000002403 D|085227834 022134380 +000000410 000024059 000036889 D|058320147 049609825 +000000410 000027107 000038171 D|034962344 000583173 +000000410 000029498 000061301 D|005712128 009601805 +000000410 000059492 000066503 D|053611025 001593229 +000000410 000070632 000084810 D|061190283 006288667 +000000410 000118206 000092434 D|023096443 037701224 +000000410 000137524 000119411 D|099214466 053598298 +000000410 000141479 000125190 D|088298348 019476366 +000000410 000185190 000220318 D|071213755 042403408 +000000410 000199006 000241859 D|053645997 065458436 +000000410 000201724 000286542 D|015026758 036234322 +000000410 000202150 000295441 D|072873458 079534777 +000000410 000216005 000326392 D|039056927 014331571 +000000410 000217914 000327925 D|013152817 082753176 +000000410 000233932 000328643 D|054039806 047676535 +000000410 000237250 000337403 D|041608518 028322874 +000000410 000240800 000338492 D|035598985 031380449 +000000410 000247915 000342578 D|062798073 028642053 +000000410 000250942 000345544 D|006971116 098545218 +000000410 000315724 000363721 D|015577367 081205295 +000000410 000330845 000394309 D|034359840 023888299 +000000410 000347538 000434677 D|005144306 078234859 +000000410 000374453 000441048 D|050907289 059677556 +000000410 000446707 000525732 D|090986156 049004398 +000000410 000478441 000526100 D|042930485 093579611 +000000410 000536198 000533064 D|007949622 073457473 +000000410 000551227 000535877 D|070191471 058087320 +000000410 000580183 000536087 D|037315481 026475614 +000000410 000607155 000541499 D|023988261 069858077 +000000410 000617451 000566151 D|079275695 054048421 +000000410 000624472 000597748 D|055369031 033458545 +000000410 000641205 000616943 D|030263845 005716609 +000000410 000681566 000651699 D|053399376 001846329 +000000410 000685008 000677933 D|045908842 038483088 +000000410 000708817 000701338 D|087973315 057899229 +000000410 000721454 000706578 D|060178919 092267333 +000000410 000731156 000721717 D|094536077 084220291 +000000410 000749370 000778584 D|016544931 026940159 +000000410 000776465 000806701 D|055764426 029130317 +000000410 000778263 000829210 D|079110867 015094122 +000000410 000787086 000829268 D|010681430 039364441 +000000410 000813748 000848876 D|023192565 076191218 +000000410 000858624 000871254 D|032549196 011129284 +000000410 000894838 000890804 D|018483311 021485230 +000000410 000964842 000895292 D|065983481 066506196 +000000410 000967787 000899631 D|087989525 018057409 +000000410 000971397 000914646 D|026461582 065795856 +000000410 000989904 000928671 D|089676822 004438347 +000000410 000997034 000961110 D|088702165 030575718 +000000411 000014167 000002925 D|015501383 052825381 +000000411 000015110 000059652 D|024644006 001742874 +000000411 000020341 000070922 D|046442600 051734437 +000000411 000021091 000160501 D|042279273 058381247 +000000411 000069119 000164495 D|017453194 018558762 +000000411 000071457 000179405 D|083548217 014177769 +000000411 000101282 000187136 D|079011271 070576731 +000000411 000109637 000196349 D|053626961 039745344 +000000411 000112279 000201713 D|012425081 032454289 +000000411 000117031 000214202 D|055135237 042975996 +000000411 000128667 000231992 D|035811728 052475352 +000000411 000158588 000252953 D|048027422 051206964 +000000411 000160973 000258220 D|041424985 094757364 +000000411 000169141 000298080 D|042464149 099380006 +000000411 000185090 000323585 D|005014300 037623452 +000000411 000232027 000330969 D|012845308 017669043 +000000411 000241255 000335624 D|053260091 028814907 +000000411 000244741 000344268 D|080017802 016629440 +000000411 000265876 000345352 D|025534932 008957265 +000000411 000278476 000389264 D|006165920 080936377 +000000411 000322450 000398546 D|069462435 043499497 +000000411 000324288 000399585 D|015609679 014430415 +000000411 000360196 000408398 D|028771006 068524550 +000000411 000413620 000466411 D|010935279 083679252 +000000411 000421448 000522895 D|072451155 068900833 +000000411 000469670 000548099 D|004654377 002163171 +000000411 000473719 000564853 D|096141884 099109283 +000000411 000485023 000576274 D|027852113 013897403 +000000411 000503716 000579420 D|071093917 021267122 +000000411 000547636 000580438 D|078632837 081635333 +000000411 000569465 000619290 D|022958739 007655057 +000000411 000597155 000629816 D|060518033 044870515 +000000411 000629211 000631682 D|073286475 049231320 +000000411 000631327 000670994 D|074961701 024608829 +000000411 000645724 000676819 D|073279611 075394669 +000000411 000656805 000689505 D|049389195 039811146 +000000411 000659134 000729158 D|074227359 097899343 +000000411 000673068 000731595 D|020569463 093132668 +000000411 000682100 000750832 D|094654414 089744940 +000000411 000709803 000758141 D|018917622 079056275 +000000411 000712605 000779200 D|012808217 037008089 +000000411 000735687 000789252 D|088014793 038358902 +000000411 000753898 000820698 D|037499951 088703973 +000000411 000754899 000847906 D|037454225 006262885 +000000411 000768294 000868884 D|003267441 058590921 +000000411 000869492 000872750 D|001634216 030256457 +000000411 000878115 000931801 D|085631605 095452080 +000000411 000901454 000974939 D|077432963 087527150 +000000411 000962507 000991145 D|024228780 065777017 +000000411 000975667 000995231 D|022500847 039539765 +000000412 000016630 000007434 D|048757401 009106500 +000000412 000022601 000020174 D|006830811 077834312 +000000412 000023324 000024770 D|077278835 020609771 +000000412 000054886 000027618 D|009429260 033003091 +000000412 000082309 000089531 D|099236672 045500907 +000000412 000096123 000108973 D|063753019 051626285 +000000412 000119833 000109759 D|003364187 098183856 +000000412 000133746 000121665 D|063443107 073907100 +000000412 000191326 000124500 D|068089767 055247646 +000000412 000227093 000126844 D|012629831 019066191 +000000412 000238087 000142305 D|053161365 097917681 +000000412 000265093 000171281 D|070697577 000715952 +000000412 000280184 000210388 D|019034112 028649376 +000000412 000356431 000211124 D|084786453 045682465 +000000412 000374756 000220091 D|000941628 045010131 +000000412 000379934 000223390 D|077885091 059118676 +000000412 000397158 000227517 D|037948948 031891675 +000000412 000409579 000245772 D|073690115 081666051 +000000412 000422233 000267141 D|038249270 039802065 +000000412 000500889 000285707 D|035341811 064292785 +000000412 000506902 000331071 D|071499922 060820829 +000000412 000518918 000359300 D|031455777 041565180 +000000412 000529935 000365750 D|073700869 045558626 +000000412 000551318 000378650 D|080374491 087921297 +000000412 000578752 000381579 D|079984185 060774506 +000000412 000583415 000417745 D|005730764 009431684 +000000412 000606844 000448160 D|074889376 004885903 +000000412 000613635 000454004 D|011422491 084295233 +000000412 000631667 000457335 D|081553793 088113468 +000000412 000643455 000464561 D|026067576 018445875 +000000412 000652340 000476747 D|088116391 083517786 +000000412 000662448 000484857 D|000910074 021196482 +000000412 000698396 000594091 D|088282185 012875515 +000000412 000713551 000622157 D|035008275 080507171 +000000412 000749529 000645400 D|069726935 081551746 +000000412 000755821 000667087 D|061420606 076525647 +000000412 000756835 000689496 D|032695613 019900562 +000000412 000845059 000700159 D|073146454 064071234 +000000412 000860347 000747067 D|003343180 098460215 +000000412 000862587 000765320 D|024104561 015138799 +000000412 000883268 000828921 D|044092054 004655536 +000000412 000883297 000843804 D|088382782 004223062 +000000412 000894720 000859204 D|074237170 052269999 +000000412 000928972 000860305 D|038295069 017775127 +000000412 000945332 000865502 D|046788663 038098312 +000000412 000966232 000870767 D|034162649 082608637 +000000412 000974964 000900973 D|020082465 007849763 +000000412 000975686 000938203 D|092864154 091271033 +000000412 000977703 000939419 D|062990549 010565137 +000000412 000978023 000946033 D|051918152 048073392 +000000413 000064810 000004348 D|095873093 073669368 +000000413 000072506 000016702 D|002556872 044437782 +000000413 000078548 000025996 D|093852110 057024126 +000000413 000085323 000028328 D|061623293 039994203 +000000413 000087184 000045369 D|071973087 028296531 +000000413 000124402 000059234 D|079261769 083065655 +000000413 000135565 000077939 D|001453200 019096407 +000000413 000142444 000091112 D|024538220 040001792 +000000413 000171540 000098205 D|078145063 026803633 +000000413 000171574 000109164 D|005855670 080909962 +000000413 000202296 000113775 D|031952778 034722794 +000000413 000202562 000120421 D|046765204 005667821 +000000413 000205316 000145965 D|028904619 047886711 +000000413 000240532 000195728 D|002923462 067727202 +000000413 000247814 000206931 D|040340206 005093651 +000000413 000262070 000208572 D|001348277 032050808 +000000413 000263304 000215071 D|043439035 051747011 +000000413 000269720 000312645 D|099580052 087741429 +000000413 000273233 000357947 D|099343128 096302466 +000000413 000318592 000384266 D|029828793 083954243 +000000413 000339981 000434170 D|034794404 020623261 +000000413 000341787 000438939 D|079877123 062956748 +000000413 000370659 000453588 D|033861691 097330425 +000000413 000393915 000464135 D|061715140 070130692 +000000413 000420351 000468896 D|055696183 080364322 +000000413 000427534 000483705 D|089188680 025553054 +000000413 000462769 000502560 D|095486776 023437861 +000000413 000472020 000521455 D|025179973 000488853 +000000413 000546458 000561874 D|043360720 042277270 +000000413 000552218 000562448 D|041447001 009157220 +000000413 000559647 000607802 D|071098791 022210644 +000000413 000581996 000662128 D|039853930 043098027 +000000413 000610241 000678016 D|020599558 091561456 +000000413 000645328 000716497 D|017582121 043797405 +000000413 000662342 000719708 D|064102445 032923994 +000000413 000683696 000750671 D|036491422 095012101 +000000413 000689306 000753329 D|016833253 048505285 +000000413 000690645 000792993 D|024099899 020007273 +000000413 000755076 000802768 D|015456809 078387032 +000000413 000765357 000816089 D|005479921 006048971 +000000413 000771558 000824942 D|087619794 053419658 +000000413 000798267 000841775 D|095789685 028119797 +000000413 000841246 000862607 D|092956462 080451569 +000000413 000852590 000871474 D|023345441 060394337 +000000413 000859686 000875763 D|013154189 066691064 +000000413 000890824 000878573 D|090601616 061932340 +000000413 000896470 000906401 D|062287336 076518049 +000000413 000898802 000960337 D|005620173 097346506 +000000413 000915292 000976309 D|095818348 024077551 +000000413 000921184 000992778 D|096557047 010173697 +000000414 000011044 000071489 D|056080886 046618694 +000000414 000022678 000076004 D|075887807 050522082 +000000414 000024998 000078118 D|019213983 025014336 +000000414 000038300 000124079 D|011625746 037338043 +000000414 000074323 000126603 D|079296165 088661723 +000000414 000083682 000126862 D|074933233 025231423 +000000414 000102430 000131380 D|020301058 020454210 +000000414 000105089 000145743 D|012445750 068075652 +000000414 000123668 000168290 D|044552313 037693433 +000000414 000127631 000174156 D|050145870 006969861 +000000414 000161022 000203721 D|099415365 005611098 +000000414 000186656 000220257 D|079280247 005098165 +000000414 000191592 000222738 D|068180399 020799842 +000000414 000231055 000225607 D|044158095 030590766 +000000414 000254982 000248179 D|027102867 060281522 +000000414 000267814 000262439 D|017137657 061671391 +000000414 000283496 000265956 D|045488704 059455626 +000000414 000326676 000276777 D|089355865 009878301 +000000414 000345559 000283507 D|001100129 079628220 +000000414 000362231 000301705 D|007991426 067894895 +000000414 000365356 000351197 D|044504061 096667140 +000000414 000429018 000411662 D|021633765 023691288 +000000414 000452001 000426362 D|055749783 087164348 +000000414 000482907 000437268 D|062383363 048723876 +000000414 000506817 000454677 D|025331382 027374711 +000000414 000570469 000464111 D|013301792 043143904 +000000414 000585740 000473320 D|037210253 036059393 +000000414 000606313 000477287 D|060977826 003294730 +000000414 000613244 000488740 D|049056343 003595975 +000000414 000640756 000500217 D|009677139 000783488 +000000414 000646786 000508611 D|070845369 012181667 +000000414 000673433 000509172 D|074775170 095725799 +000000414 000693185 000518961 D|036375768 056554118 +000000414 000704020 000526739 D|033070780 089442298 +000000414 000744081 000536378 D|075060184 017768321 +000000414 000746369 000559376 D|065811691 079944110 +000000414 000749883 000684234 D|060249297 074876420 +000000414 000765765 000693599 D|008538480 070921477 +000000414 000787264 000761299 D|049614669 057419617 +000000414 000804843 000763451 D|049797748 080858517 +000000414 000816465 000764766 D|031093786 089117844 +000000414 000827559 000792457 D|043985193 064897187 +000000414 000848700 000802830 D|018182445 064616103 +000000414 000863401 000808793 D|069101235 095305590 +000000414 000867072 000882616 D|082944573 063365204 +000000414 000887480 000939020 D|027117010 005408792 +000000414 000927791 000957986 D|077899712 079085966 +000000414 000935666 000965367 D|014153999 068475785 +000000414 000950392 000966944 D|072521178 084364871 +000000414 000982006 000996436 D|040892810 064473594 +000000415 000004187 000018245 D|017978825 093282381 +000000415 000032423 000033518 D|016317774 040207676 +000000415 000094623 000033584 D|046803807 048146428 +000000415 000113272 000041473 D|066837977 061900928 +000000415 000116778 000137756 D|032112141 024449549 +000000415 000135019 000140771 D|040718944 043562668 +000000415 000163978 000143898 D|035817539 094708771 +000000415 000197224 000160143 D|014566797 021197333 +000000415 000219430 000164215 D|088968058 021533518 +000000415 000224349 000214619 D|024818934 009274636 +000000415 000237747 000238351 D|027520632 061018764 +000000415 000239320 000265725 D|046805067 005911533 +000000415 000279739 000274577 D|089037177 003395780 +000000415 000303917 000294755 D|018824994 030934194 +000000415 000314248 000326685 D|008987850 068228641 +000000415 000316674 000347279 D|091644070 054649183 +000000415 000320354 000359475 D|035380797 062573939 +000000415 000323755 000361709 D|055183287 057634453 +000000415 000345089 000370302 D|037109380 029690435 +000000415 000347930 000372415 D|041094186 094950160 +000000415 000350479 000394583 D|059087643 084647155 +000000415 000360262 000401127 D|064273151 034338843 +000000415 000394815 000437653 D|005955626 024810938 +000000415 000417509 000524936 D|085345124 007577964 +000000415 000460239 000534367 D|085912128 090783103 +000000415 000471620 000537587 D|061136540 076835470 +000000415 000487876 000586243 D|031246319 037842580 +000000415 000497293 000608655 D|027608459 026431306 +000000415 000507262 000611904 D|086787637 095546694 +000000415 000524163 000637056 D|000390223 055018887 +000000415 000538611 000640165 D|083363667 095851666 +000000415 000569570 000646200 D|031226004 090823968 +000000415 000649147 000651474 D|020235183 042295080 +000000415 000655000 000681663 D|009075699 023507148 +000000415 000729489 000685320 D|034327644 069837014 +000000415 000734532 000686891 D|022880773 080418190 +000000415 000759058 000711461 D|062981291 046694095 +000000415 000762995 000719612 D|076176181 039200977 +000000415 000763431 000793105 D|081517680 007583075 +000000415 000768446 000796890 D|033566969 062913293 +000000415 000783383 000845246 D|081943998 027326382 +000000415 000819637 000858772 D|012717929 023570602 +000000415 000845305 000884354 D|033970568 037196554 +000000415 000866403 000885368 D|057118097 080585301 +000000415 000866771 000901592 D|061845270 020115568 +000000415 000916642 000912063 D|068487329 053899930 +000000415 000923159 000965672 D|043984544 056113837 +000000415 000945983 000977122 D|045780938 076404674 +000000415 000963050 000977453 D|003783912 061617684 +000000415 000993972 000983763 D|042205500 047735767 +000000416 000015142 000010361 D|004463318 009963993 +000000416 000023016 000026271 D|095566589 032123980 +000000416 000060722 000037917 D|099604477 015689340 +000000416 000084476 000112567 D|035580644 059432289 +000000416 000085271 000117497 D|077294218 051730073 +000000416 000109833 000153973 D|007866461 006379490 +000000416 000135486 000172532 D|037204393 081243044 +000000416 000142346 000196276 D|039690348 045340260 +000000416 000143808 000197215 D|044206288 085970440 +000000416 000157076 000203881 D|066256910 083393347 +000000416 000176943 000208771 D|078963878 034272802 +000000416 000180448 000244816 D|027819413 061742917 +000000416 000197889 000278580 D|097171035 020126453 +000000416 000198769 000282557 D|043248957 084062655 +000000416 000267568 000313298 D|016259298 058161699 +000000416 000301352 000315608 D|075584095 053544870 +000000416 000303268 000357297 D|036311866 075820268 +000000416 000303595 000369993 D|043327350 086909144 +000000416 000333978 000392818 D|099168713 091866220 +000000416 000347348 000415393 D|072008242 006320911 +000000416 000381744 000419093 D|024910036 070276786 +000000416 000425291 000439120 D|036858399 079244620 +000000416 000441807 000460461 D|093561451 072032658 +000000416 000469085 000561497 D|001180355 070389112 +000000416 000476920 000570357 D|058917714 026814976 +000000416 000484851 000575968 D|024914408 092200631 +000000416 000486003 000582269 D|050145857 044777485 +000000416 000503353 000589760 D|085227006 018242303 +000000416 000517237 000619492 D|086591881 010242986 +000000416 000528537 000639820 D|007291945 078413440 +000000416 000569687 000689259 D|047544761 064463466 +000000416 000604488 000694908 D|031575891 073803932 +000000416 000608438 000773451 D|066299489 021783069 +000000416 000624240 000776048 D|064961193 064808355 +000000416 000630891 000797862 D|064327347 023253392 +000000416 000640229 000811102 D|039112969 058844166 +000000416 000701385 000829924 D|038997745 067410734 +000000416 000701584 000841409 D|041731764 051059123 +000000416 000704731 000861522 D|019630247 099912924 +000000416 000742206 000867285 D|066386857 077587138 +000000416 000748186 000869238 D|051145071 080593701 +000000416 000779649 000929565 D|085172904 092071983 +000000416 000807410 000930072 D|020571367 099579586 +000000416 000809892 000942970 D|086202022 031998115 +000000416 000841528 000952486 D|037300333 044128116 +000000416 000865940 000959750 D|086615270 056406397 +000000416 000886852 000963034 D|013904242 058573035 +000000416 000906524 000987437 D|099236189 058521931 +000000416 000915981 000988732 D|012446544 039589940 +000000416 000961212 000998599 D|085241683 067703475 +000000417 000008792 000033280 D|030216741 080310859 +000000417 000009933 000051705 D|035777062 001366640 +000000417 000011348 000076977 D|079330987 059988743 +000000417 000040538 000113637 D|010333669 071083879 +000000417 000056287 000119730 D|055775272 070956778 +000000417 000060185 000124261 D|036496602 074004909 +000000417 000060333 000141893 D|015517773 058248084 +000000417 000110890 000150705 D|039190804 049433778 +000000417 000160870 000193501 D|037827282 029214362 +000000417 000196690 000212343 D|074155601 042076303 +000000417 000196982 000215367 D|083142516 059463416 +000000417 000196986 000245056 D|075838843 083904435 +000000417 000216687 000252551 D|066920519 099321399 +000000417 000257383 000287976 D|041833321 062008145 +000000417 000291832 000304898 D|038222041 077512196 +000000417 000300988 000343713 D|034103370 063332042 +000000417 000370804 000347568 D|087663291 032850568 +000000417 000371140 000353262 D|034675314 069377323 +000000417 000378845 000358983 D|035616769 002462399 +000000417 000399979 000370157 D|054999899 008994942 +000000417 000401994 000404635 D|064095866 097591208 +000000417 000404944 000406161 D|032356561 084365920 +000000417 000449178 000415247 D|049433699 040252885 +000000417 000482605 000415910 D|064862335 015821076 +000000417 000505656 000466385 D|040616663 000634222 +000000417 000574326 000471341 D|096048125 033213960 +000000417 000649835 000479013 D|081802001 000813279 +000000417 000662728 000490950 D|087376407 025791111 +000000417 000673306 000530021 D|008590808 001139567 +000000417 000690021 000539185 D|057498047 068892713 +000000417 000700016 000553977 D|088906469 013206531 +000000417 000724023 000630597 D|011241694 021307186 +000000417 000765211 000647464 D|057914358 038807283 +000000417 000783433 000673108 D|047214451 099856325 +000000417 000783595 000719265 D|043977911 073033523 +000000417 000786140 000743142 D|061115819 084375465 +000000417 000787230 000755104 D|007407949 085512496 +000000417 000792038 000755383 D|020863291 033383277 +000000417 000819239 000847250 D|020251415 001655286 +000000417 000826479 000855169 D|051742858 061360658 +000000417 000839533 000857416 D|020959994 085983164 +000000417 000849749 000877429 D|063283405 019362894 +000000417 000852514 000893164 D|089553556 093351859 +000000417 000860776 000897115 D|045663641 054843691 +000000417 000883436 000899447 D|069295671 034311056 +000000417 000901407 000903318 D|010481964 076503554 +000000417 000902339 000909093 D|066812118 026145977 +000000417 000906736 000957838 D|057654854 000525300 +000000417 000922426 000965912 D|068611528 027512755 +000000417 000959061 000983678 D|059705240 055962791 +000000418 000045060 000019954 D|025776620 015618626 +000000418 000059285 000021223 D|066351111 063436690 +000000418 000061390 000042512 D|036706862 033265388 +000000418 000063283 000093441 D|095938567 035433415 +000000418 000075298 000095508 D|019884084 059083109 +000000418 000077299 000122568 D|083401067 020680006 +000000418 000089011 000150669 D|004037487 099185237 +000000418 000093878 000154300 D|002823230 035263505 +000000418 000110587 000205033 D|081961131 063798715 +000000418 000125376 000252648 D|097782275 097036650 +000000418 000139156 000275425 D|076202082 094044705 +000000418 000153211 000284061 D|098638869 005408036 +000000418 000202082 000296644 D|088331029 083826452 +000000418 000235739 000354522 D|034258758 027269609 +000000418 000237642 000386288 D|057657103 034644007 +000000418 000246646 000389294 D|048597997 088596443 +000000418 000250097 000390819 D|027600436 015803641 +000000418 000296360 000423214 D|096902995 087149155 +000000418 000340118 000457805 D|085338884 049815398 +000000418 000365753 000504921 D|091943127 036629398 +000000418 000366847 000515314 D|035174100 024834423 +000000418 000373609 000531862 D|092208383 089174562 +000000418 000435024 000569482 D|083994650 080395930 +000000418 000448846 000574514 D|037843730 089816509 +000000418 000452823 000621215 D|009776631 097969292 +000000418 000508938 000624255 D|036427389 040383538 +000000418 000518425 000658447 D|037008699 065419812 +000000418 000522637 000665102 D|028585206 063495040 +000000418 000539701 000685032 D|058930236 055669045 +000000418 000570736 000685713 D|014915023 073990807 +000000418 000607932 000702632 D|038064840 006267555 +000000418 000674052 000712755 D|029010013 020833654 +000000418 000680625 000737540 D|008997102 091788027 +000000418 000682154 000738603 D|034987670 050120247 +000000418 000687842 000780686 D|034858386 014742093 +000000418 000725395 000785485 D|019173892 074876165 +000000418 000757409 000807489 D|092700180 074967788 +000000418 000793051 000827223 D|064848188 003191926 +000000418 000816035 000834609 D|059527438 085685984 +000000418 000847779 000835837 D|038895072 002644781 +000000418 000887844 000838052 D|081508572 055697467 +000000418 000928431 000860330 D|035139137 008791897 +000000418 000930212 000874608 D|063454096 088312974 +000000418 000932168 000883920 D|023826789 036826212 +000000418 000936638 000887192 D|032956840 062601891 +000000418 000951803 000922169 D|020024001 038466471 +000000418 000954049 000929885 D|088359693 000331042 +000000418 000959706 000954287 D|006010557 097515935 +000000418 000973768 000965960 D|019956734 027997959 +000000418 000974641 000987348 D|000484672 050639287 +000000419 000009305 000047666 D|008249088 038639689 +000000419 000029668 000059742 D|066038858 033784230 +000000419 000044112 000103397 D|023864540 086491663 +000000419 000049750 000119250 D|013304587 040585528 +000000419 000075119 000133651 D|021831065 064689728 +000000419 000094244 000141603 D|062826877 082090616 +000000419 000139790 000159001 D|026472138 098226474 +000000419 000160937 000163652 D|088978759 050198657 +000000419 000178046 000173004 D|003599077 000323172 +000000419 000192497 000173559 D|009459698 068141627 +000000419 000197585 000174941 D|023898329 013956906 +000000419 000207932 000184157 D|025746434 067754406 +000000419 000290671 000185741 D|049807838 057090675 +000000419 000310400 000210684 D|019876017 086833914 +000000419 000320745 000224624 D|072528531 087443599 +000000419 000325434 000234545 D|015143626 075056542 +000000419 000332322 000238033 D|005306167 096014326 +000000419 000360605 000251204 D|002113652 055915813 +000000419 000392411 000253025 D|089745480 061891755 +000000419 000394220 000259969 D|088184496 029015113 +000000419 000409021 000288557 D|058511628 086362510 +000000419 000423395 000405636 D|079474261 094328824 +000000419 000426166 000428277 D|045552007 024952134 +000000419 000435055 000454087 D|079233941 008528013 +000000419 000440434 000459631 D|069815257 038305921 +000000419 000475340 000489155 D|050586700 035308588 +000000419 000497194 000497088 D|096190291 012530437 +000000419 000528510 000534047 D|020312081 025187349 +000000419 000543019 000534826 D|045987116 017853975 +000000419 000578244 000594266 D|085543982 064851564 +000000419 000598132 000599043 D|040271275 026957724 +000000419 000600865 000628793 D|053357226 085185228 +000000419 000605764 000701395 D|023677978 030682363 +000000419 000607771 000702375 D|024660450 028309029 +000000419 000631504 000706548 D|005274374 048443426 +000000419 000696292 000723033 D|050420110 017100334 +000000419 000723470 000779894 D|017507554 004314192 +000000419 000742072 000821571 D|044564041 033004091 +000000419 000799511 000822993 D|026591324 019786214 +000000419 000807368 000845567 D|017144268 038944092 +000000419 000836704 000889582 D|090493386 077620320 +000000419 000840488 000903762 D|097912807 077282978 +000000419 000865762 000906138 D|091381436 066348669 +000000419 000886359 000908533 D|098492453 087480831 +000000419 000889944 000912294 D|056992670 094823643 +000000419 000898269 000936963 D|036611929 066342784 +000000419 000919859 000967761 D|066550304 064297359 +000000419 000955015 000978233 D|092901537 075500930 +000000419 000971283 000980808 D|031760876 053577119 +000000419 000996788 000981975 D|062315080 025623690 +000000420 000019390 000048287 D|021914042 046594368 +000000420 000030292 000073090 D|011050650 033968833 +000000420 000034375 000083051 D|075538622 017351109 +000000420 000038195 000086835 D|091548013 022157774 +000000420 000040709 000111018 D|021786991 072564816 +000000420 000044849 000113600 D|039707917 054648003 +000000420 000064339 000134547 D|001926942 085401826 +000000420 000070042 000186994 D|008367087 098100680 +000000420 000091209 000202989 D|095150441 034912153 +000000420 000104804 000204091 D|034854424 035916903 +000000420 000181757 000207603 D|034432502 082329227 +000000420 000186969 000267930 D|017654455 023387765 +000000420 000194596 000278952 D|092301203 017603651 +000000420 000205072 000342870 D|068441858 061492406 +000000420 000211587 000348842 D|058081521 094969268 +000000420 000226199 000352438 D|018113999 004759246 +000000420 000247453 000380951 D|039494213 042853241 +000000420 000285222 000394989 D|025389499 008472362 +000000420 000298740 000398407 D|065388196 091956112 +000000420 000308587 000423649 D|073838955 082771327 +000000420 000325004 000428164 D|054863806 068373592 +000000420 000353854 000483131 D|057982608 082989821 +000000420 000395535 000499512 D|095370350 043464431 +000000420 000432528 000519344 D|008526842 096353522 +000000420 000438967 000522561 D|025620968 081563418 +000000420 000439784 000565683 D|002385797 076110025 +000000420 000506476 000598482 D|081370820 045161946 +000000420 000529127 000601470 D|042765259 067754580 +000000420 000530038 000609868 D|070465437 092488290 +000000420 000556104 000625063 D|006064148 001923230 +000000420 000570730 000632057 D|066655307 055730267 +000000420 000574298 000639108 D|088130662 078406099 +000000420 000604435 000659841 D|079137660 005159952 +000000420 000652129 000668577 D|006981176 057352867 +000000420 000686152 000686978 D|024647678 061527706 +000000420 000717475 000696330 D|029197947 087636595 +000000420 000758480 000698735 D|030348965 042922722 +000000420 000765576 000700459 D|092622866 084439563 +000000420 000789894 000726421 D|073362087 083663235 +000000420 000814165 000785683 D|086833350 036302349 +000000420 000857197 000804954 D|062739153 062046956 +000000420 000874430 000825146 D|000916498 078570282 +000000420 000878019 000863555 D|081475776 092930906 +000000420 000901266 000881453 D|075627567 098794659 +000000420 000909016 000909256 D|031241193 062047894 +000000420 000929917 000922060 D|025258038 080880390 +000000420 000963773 000965131 D|018872855 033708394 +000000420 000964761 000979518 D|024843744 004796767 +000000420 000985684 000983526 D|014504343 087056459 +000000420 000996317 000988953 D|064173811 036861067 +000000421 000021052 000006524 D|074119742 078161065 +000000421 000033314 000010308 D|024400341 000896224 +000000421 000035933 000015644 D|029833024 099773998 +000000421 000052914 000029567 D|017853944 068639399 +000000421 000072907 000119784 D|091978024 029166802 +000000421 000078710 000128303 D|069153741 025592047 +000000421 000092863 000180201 D|000436232 033581340 +000000421 000124671 000219106 D|051711186 015872473 +000000421 000234869 000222616 D|068975120 031683573 +000000421 000249957 000224113 D|041213910 037277630 +000000421 000255264 000233237 D|071039674 081975051 +000000421 000257635 000254632 D|042509104 076080018 +000000421 000279863 000262993 D|052643269 084953767 +000000421 000294080 000282613 D|043056846 070803407 +000000421 000295131 000352065 D|094415769 077512438 +000000421 000297491 000357906 D|029301752 080855447 +000000421 000309903 000361804 D|041381858 094352965 +000000421 000317659 000375651 D|047986687 004586083 +000000421 000333335 000378658 D|022860318 021947025 +000000421 000370091 000379715 D|020808143 050189023 +000000421 000404293 000392202 D|091453866 034849407 +000000421 000425000 000420156 D|042796058 035434269 +000000421 000448611 000428113 D|033128997 089801822 +000000421 000461807 000436379 D|092118578 006231135 +000000421 000477133 000459671 D|027608273 042491397 +000000421 000488756 000473036 D|029516781 064821833 +000000421 000491311 000478649 D|006758146 074416226 +000000421 000563602 000502143 D|045035033 059967030 +000000421 000565690 000507582 D|007747298 092121951 +000000421 000574567 000507815 D|049192333 069417835 +000000421 000592156 000550160 D|036368369 033725934 +000000421 000600366 000557790 D|012147744 055346435 +000000421 000617358 000569638 D|064996222 068982178 +000000421 000659120 000580223 D|083275174 006367735 +000000421 000659419 000586165 D|022080795 071158579 +000000421 000675857 000610230 D|098069146 005081010 +000000421 000693552 000640885 D|007059050 014858075 +000000421 000695935 000720943 D|013696784 097228489 +000000421 000706593 000750720 D|082685170 083970038 +000000421 000728106 000750739 D|016406202 078347160 +000000421 000739923 000783197 D|081329594 051109574 +000000421 000782365 000795285 D|039344698 056975180 +000000421 000788238 000830776 D|099458389 080323620 +000000421 000795005 000840797 D|003285552 050038507 +000000421 000824495 000855662 D|047182425 099598158 +000000421 000864641 000879224 D|013775790 002701927 +000000421 000883730 000898443 D|076145871 081977509 +000000421 000937250 000931921 D|084653885 093935930 +000000421 000940861 000941918 D|025584361 002100728 +000000421 000950785 000955325 D|045534364 080172237 +000000422 000002894 000034301 D|060144500 035700696 +000000422 000025162 000042765 D|025364420 054158268 +000000422 000026934 000046362 D|062019474 032057261 +000000422 000036556 000057893 D|099593331 073989354 +000000422 000037333 000063308 D|083841512 008683256 +000000422 000051633 000077994 D|050108828 003686898 +000000422 000116491 000089597 D|076332479 047388980 +000000422 000120194 000121540 D|029922761 071030942 +000000422 000138575 000165483 D|041343810 052488097 +000000422 000142867 000181140 D|044540355 084629363 +000000422 000198980 000220900 D|058200768 092256769 +000000422 000214541 000230754 D|013771482 018972817 +000000422 000215253 000239893 D|031852141 036454532 +000000422 000217749 000342730 D|062099976 048430593 +000000422 000219272 000362634 D|083081490 086014246 +000000422 000249639 000399896 D|016171421 047277597 +000000422 000252265 000414242 D|066584055 044583834 +000000422 000323068 000415188 D|076255823 044069599 +000000422 000347915 000458388 D|076574083 085165266 +000000422 000353141 000470184 D|021927317 043177118 +000000422 000405554 000487575 D|037213973 030784953 +000000422 000421317 000503632 D|099724018 099538410 +000000422 000423270 000531633 D|068123111 025025134 +000000422 000448798 000545759 D|063767594 042225738 +000000422 000459438 000557589 D|008649799 009437167 +000000422 000459791 000570556 D|061728014 089277584 +000000422 000481455 000577507 D|053950419 022544147 +000000422 000526831 000579996 D|065536555 010495498 +000000422 000528344 000595296 D|098178564 021000157 +000000422 000537270 000622730 D|086637168 029668993 +000000422 000542589 000634840 D|097361791 090019625 +000000422 000582352 000646268 D|049032670 006995864 +000000422 000582907 000652248 D|095496211 075095324 +000000422 000597773 000668475 D|090191879 072477046 +000000422 000604305 000671537 D|082230452 068989567 +000000422 000646480 000683987 D|020009996 047873781 +000000422 000711643 000693189 D|021055757 032487026 +000000422 000729399 000729196 D|084347268 075689154 +000000422 000746541 000730899 D|019578043 015629347 +000000422 000749541 000739395 D|099461737 014868732 +000000422 000751777 000761075 D|070134882 066399775 +000000422 000783625 000783772 D|072589717 059157819 +000000422 000810201 000810619 D|015420266 095483000 +000000422 000810957 000822203 D|088856238 007975728 +000000422 000831620 000833219 D|037209737 029838446 +000000422 000834054 000882131 D|008239661 032990303 +000000422 000863827 000886813 D|027653317 089153651 +000000422 000870686 000910111 D|087971456 071912721 +000000422 000915097 000922461 D|003314894 089760200 +000000422 000978613 000968620 D|080092081 033831786 +000000423 000000297 000011364 D|080146861 020388913 +000000423 000007236 000041267 D|032197835 047470633 +000000423 000010363 000050913 D|004190880 056582570 +000000423 000070364 000066762 D|078352217 070059607 +000000423 000130350 000069035 D|067168068 002951884 +000000423 000131368 000077848 D|056082121 081282785 +000000423 000139126 000112587 D|045556133 082639545 +000000423 000167116 000148317 D|015015921 033745136 +000000423 000170560 000168135 D|046714180 041839966 +000000423 000177272 000173363 D|065710672 069336552 +000000423 000203764 000178209 D|000985124 098048707 +000000423 000222960 000190575 D|037755747 003134338 +000000423 000258295 000214106 D|003209578 078211544 +000000423 000271320 000230666 D|001054493 085775759 +000000423 000276507 000234533 D|099553256 059269332 +000000423 000277725 000275202 D|019575153 060724187 +000000423 000302139 000276780 D|046851544 089216837 +000000423 000305928 000283560 D|038273550 081905214 +000000423 000306150 000287337 D|026335351 006297290 +000000423 000349176 000305987 D|006320149 047707806 +000000423 000361238 000336670 D|006782160 047209071 +000000423 000368990 000358589 D|065455180 037748959 +000000423 000391147 000364268 D|014877521 086071920 +000000423 000413943 000367579 D|025899403 015767928 +000000423 000448123 000372171 D|004293399 078088612 +000000423 000488488 000377149 D|010838696 057421243 +000000423 000503941 000390685 D|081882759 087060667 +000000423 000521629 000411061 D|081714775 096364120 +000000423 000555693 000435724 D|021455290 054865434 +000000423 000613861 000488006 D|036333080 032495944 +000000423 000634461 000557147 D|016504412 035658933 +000000423 000651427 000562381 D|053435734 065295611 +000000423 000667328 000595858 D|093364446 039001376 +000000423 000686139 000602430 D|089085516 063516745 +000000423 000747125 000613427 D|060543556 021516337 +000000423 000769255 000704592 D|038202960 037011699 +000000423 000772877 000712959 D|082700479 076042660 +000000423 000782154 000718563 D|022030892 074080310 +000000423 000794965 000723856 D|071203395 074386724 +000000423 000795396 000796064 D|018043669 013312172 +000000423 000804884 000797125 D|008612277 054885814 +000000423 000831605 000832010 D|058248223 003798264 +000000423 000862757 000838119 D|050552557 009356029 +000000423 000876703 000883329 D|012907415 084919333 +000000423 000884135 000904973 D|010828851 010225447 +000000423 000910211 000917040 D|045124407 013703062 +000000423 000913813 000930540 D|075464760 076801039 +000000423 000938439 000934083 D|043981257 021538332 +000000423 000949345 000967944 D|044962451 010034851 +000000423 000957114 000971364 D|054208501 022662770 +000000424 000035615 000027194 D|035145461 083825375 +000000424 000072119 000035524 D|028460131 068942516 +000000424 000096143 000062303 D|078809635 039121011 +000000424 000100471 000082799 D|061805222 037967068 +000000424 000136284 000094966 D|046312628 064214410 +000000424 000159184 000113924 D|047210235 089583204 +000000424 000173884 000128578 D|016678865 069302637 +000000424 000174388 000135551 D|080582082 082438045 +000000424 000225122 000144812 D|011466557 009287207 +000000424 000242937 000158847 D|082234375 049973535 +000000424 000249971 000177008 D|066635340 009636682 +000000424 000258832 000181317 D|085269122 033885694 +000000424 000294999 000197148 D|050151346 077317102 +000000424 000314724 000222814 D|002081455 086528859 +000000424 000335670 000226125 D|033677685 026763130 +000000424 000339271 000238356 D|053317685 074399355 +000000424 000344643 000247758 D|065337214 033346027 +000000424 000387074 000266269 D|051705678 073540613 +000000424 000390839 000266362 D|091582238 016297642 +000000424 000412196 000289700 D|092009130 077472267 +000000424 000418156 000306353 D|067697186 052601983 +000000424 000458340 000322440 D|016904981 062348405 +000000424 000469785 000350589 D|067299530 067118684 +000000424 000480900 000358610 D|006876969 080905788 +000000424 000534864 000377535 D|026074932 058560472 +000000424 000545604 000409623 D|001096350 015836737 +000000424 000547641 000481469 D|090290626 017285852 +000000424 000547748 000513515 D|052027706 045771009 +000000424 000550232 000542316 D|039386752 095455808 +000000424 000552377 000551135 D|035446701 082229225 +000000424 000555941 000599885 D|094117974 094448119 +000000424 000578675 000638118 D|046932631 014613194 +000000424 000631687 000645118 D|034033125 012517398 +000000424 000637385 000662389 D|075223893 074599404 +000000424 000651708 000706143 D|039682238 069272403 +000000424 000657820 000751272 D|015373862 092537221 +000000424 000679691 000755526 D|010320377 086925273 +000000424 000694387 000785309 D|098783745 086188840 +000000424 000716333 000789718 D|035219207 099784885 +000000424 000717525 000794204 D|052725916 009358496 +000000424 000728732 000798473 D|082073621 072569614 +000000424 000735643 000896458 D|053620223 047233601 +000000424 000761539 000925801 D|000490810 031552346 +000000424 000781788 000931823 D|062757279 073580191 +000000424 000852976 000934291 D|046206852 061086919 +000000424 000902102 000945772 D|078053100 020455224 +000000424 000906968 000947285 D|084098307 085922896 +000000424 000937506 000975797 D|067423319 033250514 +000000424 000967997 000980634 D|079928991 017281614 +000000424 000971545 000983528 D|006430607 079441855 +000000425 000002265 000012106 D|027208979 017350841 +000000425 000005417 000019509 D|036323263 066964306 +000000425 000035726 000041237 D|038023867 021150976 +000000425 000061201 000041678 D|009753131 060456760 +000000425 000063819 000061742 D|073699484 093278181 +000000425 000121142 000103991 D|049636444 099410620 +000000425 000129653 000104467 D|070762723 024714614 +000000425 000156840 000155204 D|099765310 000794252 +000000425 000159598 000159318 D|013690011 051878795 +000000425 000161285 000160709 D|046039551 033512518 +000000425 000161954 000168655 D|015633457 008800614 +000000425 000175856 000172621 D|021054790 089816473 +000000425 000180193 000197416 D|072776762 010624889 +000000425 000189053 000206912 D|017500956 010733289 +000000425 000193756 000294366 D|086107807 079284094 +000000425 000210999 000312816 D|087953875 057464152 +000000425 000263656 000325265 D|083540751 015343302 +000000425 000266276 000336629 D|073333981 007204098 +000000425 000284304 000367037 D|026071058 095540413 +000000425 000312874 000380100 D|086597673 047736326 +000000425 000334488 000431792 D|094031387 012987161 +000000425 000339281 000454106 D|024120918 096062364 +000000425 000390589 000489414 D|060419850 099027887 +000000425 000440017 000494619 D|090287892 047457308 +000000425 000458690 000531065 D|034638537 050138703 +000000425 000464909 000557492 D|099480559 031332321 +000000425 000496162 000574566 D|073642555 016527948 +000000425 000509533 000587768 D|057263554 037794867 +000000425 000563440 000589822 D|042913708 037518809 +000000425 000611257 000601739 D|058575618 019702058 +000000425 000616996 000624440 D|087600956 046367033 +000000425 000627107 000625764 D|013422560 027394376 +000000425 000641996 000626153 D|088096835 075451349 +000000425 000667470 000643594 D|000769025 023244287 +000000425 000680734 000657934 D|078630423 039705452 +000000425 000690599 000669676 D|038116995 076364319 +000000425 000717618 000683651 D|000082788 026840236 +000000425 000738325 000707466 D|010421169 036616305 +000000425 000764980 000713873 D|044319224 095561450 +000000425 000769472 000724596 D|072473213 066646638 +000000425 000785778 000763765 D|083344328 091820250 +000000425 000796884 000892746 D|034945221 078840555 +000000425 000825961 000897862 D|091214624 099304219 +000000425 000872340 000902772 D|040783284 031584045 +000000425 000878987 000906464 D|011830920 079147858 +000000425 000912648 000906987 D|002423384 019204453 +000000425 000933208 000911655 D|052360488 090351644 +000000425 000958108 000953545 D|010117956 064074134 +000000425 000981441 000970998 D|041464712 065901794 +000000425 000983987 000985969 D|085810561 015467616 +000000426 000000491 000010954 D|041622941 043602529 +000000426 000066463 000027528 D|013466121 046105468 +000000426 000079303 000038335 D|005198043 068331719 +000000426 000080986 000063982 D|049803948 065697522 +000000426 000138003 000082001 D|051650561 028641400 +000000426 000147557 000089707 D|090444365 062664096 +000000426 000148895 000109844 D|010217069 091458844 +000000426 000208338 000110832 D|080058875 079094788 +000000426 000218093 000118804 D|019978535 001080611 +000000426 000274107 000140126 D|070001894 027573226 +000000426 000299079 000181442 D|043794696 011002430 +000000426 000307958 000190472 D|046764393 042200001 +000000426 000309396 000236142 D|088166174 039043814 +000000426 000317190 000265981 D|017123965 056386544 +000000426 000355789 000266725 D|015196203 079146674 +000000426 000375081 000320428 D|093805501 023293534 +000000426 000413181 000330590 D|004820392 026414521 +000000426 000419378 000344345 D|049986956 037619601 +000000426 000419701 000346721 D|064392671 079863083 +000000426 000477722 000385235 D|019932942 075075104 +000000426 000512058 000405485 D|068008827 085056786 +000000426 000554434 000406412 D|056561746 057440938 +000000426 000559938 000440934 D|026760738 009782676 +000000426 000584044 000445037 D|014323964 088922422 +000000426 000606588 000450193 D|073967796 077403071 +000000426 000614253 000465459 D|089812270 086236530 +000000426 000633259 000470182 D|027518709 010229856 +000000426 000646343 000471540 D|063575234 068289203 +000000426 000658843 000482383 D|052435600 017300234 +000000426 000670853 000488914 D|084849889 051493994 +000000426 000704274 000510033 D|046314382 045622775 +000000426 000715687 000516694 D|012830526 018466878 +000000426 000728418 000532815 D|061933755 051006892 +000000426 000734922 000591350 D|024828205 098196426 +000000426 000745026 000603071 D|016179905 033016823 +000000426 000752405 000609679 D|018272094 002302427 +000000426 000775799 000663526 D|009695721 021586962 +000000426 000776909 000672941 D|013435835 002702578 +000000426 000783287 000741201 D|053633713 042961192 +000000426 000785950 000744154 D|041059990 097428764 +000000426 000804435 000748977 D|046834365 081335725 +000000426 000830184 000759796 D|058033224 053350848 +000000426 000838118 000786034 D|084528123 076363014 +000000426 000856019 000787899 D|022444476 036225571 +000000426 000902714 000797588 D|022173074 097055956 +000000426 000929482 000800345 D|028165708 094112342 +000000426 000939532 000856247 D|052908537 010411064 +000000426 000953024 000859483 D|048394875 053783003 +000000426 000973582 000971293 D|094079337 021192465 +000000426 000981327 000978120 D|009880226 032145359 +000000427 000034845 000001002 D|099713401 002859293 +000000427 000071916 000050976 D|015630866 023229174 +000000427 000092323 000084601 D|019284122 038508735 +000000427 000095237 000085324 D|008608541 021942013 +000000427 000098063 000102712 D|083628265 065291904 +000000427 000138468 000168533 D|083044384 095044264 +000000427 000166274 000171625 D|084046281 013125247 +000000427 000181026 000173801 D|005214880 031825972 +000000427 000194377 000200572 D|005012565 080536996 +000000427 000234166 000240634 D|027535187 019269907 +000000427 000242222 000281792 D|044309034 041277380 +000000427 000260894 000303164 D|086870708 048624248 +000000427 000271296 000359988 D|046282595 094752031 +000000427 000275129 000400066 D|062534399 010900606 +000000427 000287145 000418270 D|045082392 017315237 +000000427 000310677 000422937 D|095992865 020122449 +000000427 000320745 000423527 D|032018958 095566826 +000000427 000323688 000424896 D|076067517 073242283 +000000427 000335301 000425334 D|066172314 077776648 +000000427 000373745 000435268 D|085399687 088035614 +000000427 000444430 000462667 D|006127377 077939106 +000000427 000457388 000469195 D|006337521 025400808 +000000427 000482247 000491098 D|095681338 011490154 +000000427 000485728 000495900 D|086542282 094584032 +000000427 000534375 000498555 D|093894285 048402648 +000000427 000541805 000512389 D|063495403 076335022 +000000427 000550937 000518007 D|004660759 018284378 +000000427 000641099 000522762 D|000679658 087680661 +000000427 000662579 000549924 D|079439404 057612798 +000000427 000683697 000598053 D|014914565 050494703 +000000427 000694548 000612307 D|071007316 085145569 +000000427 000699285 000618323 D|097213767 070818628 +000000427 000700963 000621184 D|033806862 050326389 +000000427 000706098 000621262 D|010965441 050225329 +000000427 000715251 000640565 D|067835522 012170315 +000000427 000727040 000645621 D|033597592 024721664 +000000427 000729649 000756004 D|099754621 084688050 +000000427 000729863 000762222 D|028577825 081458767 +000000427 000746542 000762714 D|033662651 046314922 +000000427 000755001 000789292 D|013588677 097668939 +000000427 000768771 000818153 D|084209229 015765968 +000000427 000779497 000826225 D|047750552 030655196 +000000427 000785937 000832021 D|083109892 036879727 +000000427 000843679 000837163 D|023374637 050038791 +000000427 000857958 000905668 D|060665145 061327253 +000000427 000876823 000912517 D|001891893 013406548 +000000427 000903125 000917864 D|085653635 091640211 +000000427 000911934 000942125 D|009734617 024687115 +000000427 000929825 000972889 D|069612965 042698157 +000000427 000982979 000992938 D|022133184 079188899 +000000428 000045014 000026848 D|006493041 002327322 +000000428 000049246 000033601 D|045077929 016995528 +000000428 000054082 000071807 D|015445790 093290976 +000000428 000061470 000098197 D|003115480 034860536 +000000428 000085294 000117904 D|028575586 061925829 +000000428 000106269 000172926 D|031110986 078725598 +000000428 000138447 000207456 D|043572222 067631933 +000000428 000203119 000349229 D|052176516 032225323 +000000428 000217073 000359004 D|094900994 010526319 +000000428 000229934 000359069 D|044295871 049231558 +000000428 000235896 000405546 D|091011185 010012138 +000000428 000243670 000440487 D|073739784 007386049 +000000428 000249535 000447767 D|016653364 010350051 +000000428 000261733 000454206 D|091146194 005433114 +000000428 000302450 000465361 D|071386225 006873679 +000000428 000315207 000473085 D|079628667 084164423 +000000428 000317762 000477667 D|087234264 045480734 +000000428 000331800 000535326 D|069537666 022966430 +000000428 000347480 000569293 D|008116016 057488866 +000000428 000370512 000571839 D|021103879 085672747 +000000428 000383134 000586259 D|040620730 055395508 +000000428 000390213 000608710 D|086549717 001637145 +000000428 000391424 000623347 D|028018680 069525343 +000000428 000426739 000647546 D|008496069 010835542 +000000428 000466422 000649800 D|076841937 024385967 +000000428 000471184 000652979 D|082150794 037023895 +000000428 000474616 000666336 D|053381321 073984183 +000000428 000523177 000691459 D|098389090 042477114 +000000428 000532222 000705727 D|074393369 021482388 +000000428 000533965 000710549 D|009340545 002756138 +000000428 000578479 000769626 D|059823753 019220919 +000000428 000595151 000786575 D|085655403 067949147 +000000428 000596486 000788295 D|004343592 057410099 +000000428 000603186 000794434 D|056367911 079460922 +000000428 000650211 000798804 D|061922164 020471349 +000000428 000686563 000812099 D|092308906 009557454 +000000428 000745093 000822856 D|021642524 055530352 +000000428 000772776 000833731 D|088466304 040975752 +000000428 000815413 000894760 D|076650201 007844917 +000000428 000853327 000897341 D|099812061 017037369 +000000428 000867007 000907310 D|097940455 013134838 +000000428 000876606 000907319 D|032138300 069018124 +000000428 000883200 000909122 D|059294128 052268190 +000000428 000885751 000942869 D|088353293 067376716 +000000428 000911225 000948953 D|062803298 035044622 +000000428 000916147 000963349 D|028908219 038759171 +000000428 000935186 000965231 D|000913359 076572300 +000000428 000956871 000983091 D|071289288 080826431 +000000428 000975670 000985735 D|075546112 066802569 +000000428 000982833 000985761 D|052570735 044518157 +000000429 000049261 000018998 D|061008321 091528776 +000000429 000055641 000022183 D|007819933 075533691 +000000429 000139997 000036462 D|081216192 030284323 +000000429 000154816 000054671 D|088483219 060894511 +000000429 000157323 000064757 D|020555168 094207115 +000000429 000161879 000088695 D|075950832 009688952 +000000429 000169218 000133600 D|007814724 046344367 +000000429 000169887 000134477 D|004317024 097946482 +000000429 000176668 000139943 D|075257766 081257682 +000000429 000206870 000158292 D|074552939 065135642 +000000429 000224662 000166254 D|003364050 074535017 +000000429 000226453 000188031 D|065631521 005109694 +000000429 000231994 000220110 D|015904231 008882256 +000000429 000238747 000224558 D|075387869 055049547 +000000429 000297105 000253933 D|039975667 040089963 +000000429 000371394 000304395 D|006810127 027744899 +000000429 000377904 000398495 D|018563604 065071670 +000000429 000384773 000413961 D|058856847 085468906 +000000429 000404235 000473788 D|050251284 055075743 +000000429 000411532 000473918 D|031826735 037713437 +000000429 000444031 000478087 D|091665715 055141399 +000000429 000447670 000489703 D|032648291 039565793 +000000429 000491157 000497756 D|039357868 042132614 +000000429 000512163 000507975 D|055314562 033680304 +000000429 000542385 000514760 D|035284172 085910282 +000000429 000552055 000523515 D|074903965 097224428 +000000429 000560712 000525862 D|073130157 064821721 +000000429 000569041 000563903 D|093371714 035215740 +000000429 000594536 000577163 D|058263612 004442579 +000000429 000635422 000591248 D|022928713 018293553 +000000429 000637929 000622250 D|057806081 090090530 +000000429 000665769 000625788 D|044241296 056856806 +000000429 000669883 000648342 D|053791341 018642074 +000000429 000671341 000734192 D|039975739 085495914 +000000429 000674220 000738014 D|090862914 027382094 +000000429 000675136 000751897 D|022380518 037598097 +000000429 000696185 000761264 D|085289302 053435036 +000000429 000717564 000762360 D|075377832 067067247 +000000429 000733450 000783008 D|087264285 011385903 +000000429 000786493 000816054 D|058980111 072237689 +000000429 000827925 000845162 D|088697625 071562940 +000000429 000847719 000853439 D|083103852 054963879 +000000429 000859115 000858427 D|071218285 070059370 +000000429 000861980 000870609 D|000835955 069948324 +000000429 000896429 000880300 D|046399287 094226173 +000000429 000941021 000894668 D|013443371 069889756 +000000429 000941813 000910453 D|081390544 015137741 +000000429 000974531 000940770 D|050291887 088592824 +000000429 000977439 000970842 D|060826061 005995017 +000000429 000992511 000972042 D|077242550 046417347 +000000430 000013146 000007784 D|095628572 045744498 +000000430 000068834 000046638 D|067453335 086168563 +000000430 000080053 000093325 D|022882605 069995453 +000000430 000103113 000198594 D|085521919 024299704 +000000430 000131995 000225248 D|099080480 099128097 +000000430 000141069 000226880 D|043270922 002441517 +000000430 000158674 000231202 D|064170303 088089015 +000000430 000166222 000249712 D|026909553 023908586 +000000430 000169840 000252703 D|092786564 064338292 +000000430 000212363 000284725 D|012496854 091039497 +000000430 000229492 000294236 D|024418749 068906599 +000000430 000238039 000311735 D|069180697 082909864 +000000430 000295004 000316059 D|096783036 025062399 +000000430 000325144 000319121 D|003342120 012718999 +000000430 000343251 000347533 D|009087796 068508706 +000000430 000344561 000366403 D|005506017 047989424 +000000430 000346654 000411903 D|015376915 083090999 +000000430 000352469 000438491 D|060374792 049305391 +000000430 000361022 000454254 D|039022248 063059217 +000000430 000364064 000458300 D|058860156 076067666 +000000430 000392503 000462608 D|016507653 038938310 +000000430 000398587 000483214 D|006837125 004767398 +000000430 000405021 000492336 D|004167438 092652312 +000000430 000407560 000512818 D|021267496 069752627 +000000430 000425430 000522687 D|073682212 009785353 +000000430 000471183 000531991 D|074762534 025685424 +000000430 000486503 000533305 D|019950989 089737198 +000000430 000492888 000537628 D|053348917 077778011 +000000430 000505700 000553742 D|079743551 024017120 +000000430 000530672 000562087 D|022641986 026285320 +000000430 000531235 000601391 D|035114351 038509978 +000000430 000533993 000619166 D|033745218 052376404 +000000430 000549058 000630993 D|093536879 097626642 +000000430 000558099 000636855 D|080011797 056447264 +000000430 000570541 000637354 D|086075559 002225009 +000000430 000686100 000642604 D|001165011 065843134 +000000430 000706830 000664941 D|032157040 033786891 +000000430 000709897 000667631 D|059604867 032977886 +000000430 000727492 000699710 D|099134463 023968313 +000000430 000738897 000725495 D|056412597 039218289 +000000430 000774616 000732235 D|058135476 049692613 +000000430 000802006 000789305 D|035989081 059453685 +000000430 000815700 000826451 D|028969384 029534549 +000000430 000878818 000856980 D|058172174 083705573 +000000430 000884600 000879315 D|016785454 019383887 +000000430 000912803 000883499 D|023219941 036758773 +000000430 000918958 000947899 D|041105939 042743741 +000000430 000934799 000954306 D|079833609 067946691 +000000430 000972862 000962385 D|080475779 037230988 +000000430 000989460 000984952 D|022345578 055653736 +000000431 000020869 000040120 D|051787368 056356177 +000000431 000037724 000044981 D|016707159 000296104 +000000431 000061164 000072190 D|080354144 033320286 +000000431 000073789 000077867 D|091760656 013950434 +000000431 000091997 000111232 D|012589854 034715800 +000000431 000092447 000116647 D|006434094 097630654 +000000431 000155534 000154336 D|079584096 027867295 +000000431 000156449 000169413 D|094634890 022414427 +000000431 000185674 000172496 D|047392968 092671009 +000000431 000198166 000178746 D|031350212 039166478 +000000431 000200654 000179507 D|078791419 007008757 +000000431 000241903 000186297 D|026861794 011642366 +000000431 000272199 000208876 D|066459404 013244376 +000000431 000282442 000215112 D|001880145 020721862 +000000431 000290026 000221092 D|031873923 084977882 +000000431 000317979 000299461 D|028683013 079519556 +000000431 000327877 000403673 D|098840442 007844060 +000000431 000345702 000433172 D|042903580 004423949 +000000431 000354848 000453719 D|054326396 064276028 +000000431 000385960 000467755 D|072816815 070388880 +000000431 000412482 000492197 D|040725681 020379509 +000000431 000424197 000497519 D|069575277 063591584 +000000431 000445537 000516752 D|043632575 053359035 +000000431 000448409 000522316 D|049011514 015041628 +000000431 000453813 000527918 D|007279697 096758041 +000000431 000489814 000537148 D|003513352 032204778 +000000431 000508475 000538265 D|087382207 069266975 +000000431 000512012 000546579 D|095569831 083921543 +000000431 000573278 000555439 D|013480804 091498476 +000000431 000587730 000559550 D|051502556 022767395 +000000431 000616748 000571728 D|031032024 040124291 +000000431 000665988 000624224 D|006348180 092344386 +000000431 000677845 000626813 D|070525336 028813681 +000000431 000690164 000703584 D|055616484 063821383 +000000431 000716225 000718232 D|029617228 068222761 +000000431 000726300 000720388 D|097129549 089972140 +000000431 000756311 000733739 D|000468843 024391818 +000000431 000784186 000735549 D|008939303 078337353 +000000431 000822941 000795297 D|000648335 057437621 +000000431 000827224 000795365 D|097344243 063399302 +000000431 000845301 000803022 D|014082493 008987684 +000000431 000849240 000821500 D|016597424 016671324 +000000431 000859965 000827429 D|060541868 036157531 +000000431 000874937 000828243 D|021280066 075446461 +000000431 000899021 000832257 D|054994935 064996695 +000000431 000926915 000880828 D|049104026 030515751 +000000431 000934582 000897645 D|078348308 046465286 +000000431 000972138 000906288 D|066830688 061290966 +000000431 000993775 000916963 D|027511558 043020209 +000000431 000999537 000971201 D|007608947 028172246 +000000432 000000556 000013491 D|095280345 036678539 +000000432 000016283 000055975 D|079511277 095852244 +000000432 000017905 000080818 D|096404971 084090765 +000000432 000061604 000113826 D|058857654 081058967 +000000432 000076713 000123228 D|060539310 024553713 +000000432 000103586 000125075 D|043680020 079852872 +000000432 000116323 000132066 D|088988751 058858281 +000000432 000120809 000183464 D|091925564 095407766 +000000432 000122207 000260769 D|073539967 044170165 +000000432 000187696 000261996 D|092953010 025423993 +000000432 000199621 000303358 D|059735819 080070594 +000000432 000219748 000327414 D|080571068 087364672 +000000432 000259493 000341461 D|076784326 043081952 +000000432 000306780 000353277 D|057708496 077313884 +000000432 000313701 000396126 D|045901087 076969571 +000000432 000358159 000406504 D|018375479 021618243 +000000432 000360933 000438891 D|082235957 053846665 +000000432 000376708 000440993 D|082486749 024324200 +000000432 000377471 000448172 D|043588917 077974599 +000000432 000390874 000460430 D|092484784 085126175 +000000432 000399184 000477027 D|025819390 067221148 +000000432 000418195 000480342 D|095943212 026737590 +000000432 000455448 000481804 D|060860643 049021719 +000000432 000472849 000489894 D|063438984 020350953 +000000432 000496251 000497169 D|057255748 046447713 +000000432 000507973 000520693 D|071202097 025459011 +000000432 000518084 000614165 D|009413832 003982681 +000000432 000526278 000622203 D|074983013 049180162 +000000432 000530439 000625737 D|080209506 083602491 +000000432 000559397 000626417 D|007164790 045423395 +000000432 000572602 000630949 D|054896290 052298557 +000000432 000600907 000648510 D|001414112 063017175 +000000432 000641036 000696310 D|045556550 013714846 +000000432 000689826 000713710 D|012867476 077816101 +000000432 000700300 000727457 D|078554555 082199493 +000000432 000732773 000752221 D|099788302 087222829 +000000432 000788965 000759763 D|004827552 007515555 +000000432 000812626 000779269 D|043398639 053137033 +000000432 000816441 000807277 D|020588758 062569087 +000000432 000864383 000813315 D|035937548 085118424 +000000432 000873869 000826541 D|098636905 053030233 +000000432 000880375 000840456 D|095355746 094480979 +000000432 000889859 000843674 D|053643864 033878256 +000000432 000905373 000886835 D|040819539 084780191 +000000432 000906362 000893937 D|092225687 034652829 +000000432 000920615 000897558 D|039246659 030844379 +000000432 000931729 000914737 D|058015332 098153566 +000000432 000940301 000918791 D|096141277 029232335 +000000432 000985861 000952418 D|051034731 004259695 +000000432 000987527 000968924 D|099258337 099994826 +000000433 000038353 000019329 D|008086257 068501928 +000000433 000041698 000023626 D|033558850 070572997 +000000433 000124679 000030471 D|020739477 005076268 +000000433 000192374 000081402 D|066868902 024362175 +000000433 000199090 000174212 D|063085342 060581312 +000000433 000213668 000185287 D|095451365 004325871 +000000433 000215702 000196729 D|013175321 001660674 +000000433 000302201 000253536 D|022246195 050026653 +000000433 000328822 000259460 D|097163704 073316636 +000000433 000341441 000267207 D|058683278 005268811 +000000433 000371063 000307183 D|038368418 017259316 +000000433 000379587 000308674 D|053575273 036434152 +000000433 000382665 000376820 D|031664729 044018671 +000000433 000386678 000396957 D|085634667 061024295 +000000433 000391660 000400230 D|056286553 062229094 +000000433 000417646 000492846 D|050366574 096469296 +000000433 000422808 000493717 D|017377644 091507970 +000000433 000439714 000505059 D|086800576 025494505 +000000433 000446888 000526592 D|026242902 029182907 +000000433 000455223 000548731 D|069864670 072723655 +000000433 000469553 000549099 D|045002324 000810636 +000000433 000475522 000555422 D|070652115 030267595 +000000433 000481386 000556046 D|034250023 055906165 +000000433 000483980 000567184 D|053169395 085104322 +000000433 000485687 000569910 D|013609161 002530791 +000000433 000495556 000573860 D|087572120 089863930 +000000433 000506876 000611054 D|025544013 040109958 +000000433 000532474 000627815 D|037769454 078731893 +000000433 000612279 000663632 D|045331169 080372806 +000000433 000645647 000702478 D|040347246 053166631 +000000433 000646816 000706124 D|038085239 016897138 +000000433 000669658 000707699 D|078231320 045662494 +000000433 000693529 000715037 D|080251570 043420260 +000000433 000695822 000721298 D|001375395 093006361 +000000433 000723791 000730304 D|054198018 054339198 +000000433 000728215 000734169 D|068564757 060811908 +000000433 000742196 000761996 D|033201391 082518418 +000000433 000785185 000764471 D|036122314 044915298 +000000433 000786670 000768391 D|003317159 082829114 +000000433 000825000 000781381 D|062043175 012317341 +000000433 000838538 000817949 D|079249898 069565896 +000000433 000867621 000832351 D|049681069 081859500 +000000433 000879826 000833733 D|089678099 079174989 +000000433 000924720 000873881 D|084491246 084608628 +000000433 000929704 000875386 D|082554309 075418744 +000000433 000955172 000890164 D|087642316 001114270 +000000433 000964582 000919073 D|067526598 036089244 +000000433 000965189 000919510 D|088207130 071319304 +000000433 000974101 000952521 D|096111846 044180133 +000000433 000997703 000954012 D|090897060 089272619 +000000434 000016326 000017551 D|048948680 003104507 +000000434 000021065 000044190 D|006612610 015277830 +000000434 000029943 000045255 D|042172289 034992924 +000000434 000051477 000059309 D|070079380 022948013 +000000434 000061203 000065493 D|041659854 013994114 +000000434 000111533 000092397 D|075678553 094764091 +000000434 000152635 000118947 D|078817391 007816788 +000000434 000167386 000139776 D|037688825 093065417 +000000434 000172521 000144785 D|012642034 095898668 +000000434 000211115 000154045 D|036076678 058125227 +000000434 000224805 000165886 D|051201091 063388464 +000000434 000269395 000231241 D|096349719 036479229 +000000434 000296575 000282560 D|042983894 039287042 +000000434 000333486 000330785 D|006233855 091697720 +000000434 000339305 000330885 D|022601514 039685130 +000000434 000342944 000334251 D|012792122 034855895 +000000434 000397996 000340471 D|034434418 080469281 +000000434 000403943 000435899 D|082583591 056221860 +000000434 000405051 000444489 D|046343086 023516149 +000000434 000432466 000464371 D|029690769 001376052 +000000434 000455488 000467036 D|052529083 037148296 +000000434 000457257 000479082 D|099986730 082354479 +000000434 000490187 000480033 D|014456968 082862354 +000000434 000521384 000487600 D|015482564 001115158 +000000434 000526697 000494017 D|007907615 076768377 +000000434 000531738 000498487 D|023259413 028873170 +000000434 000573413 000499665 D|080876864 098385996 +000000434 000608032 000532087 D|065874010 037752929 +000000434 000631557 000546534 D|055685920 066784459 +000000434 000632434 000547505 D|059080026 027667678 +000000434 000672810 000549579 D|038316622 011953007 +000000434 000745604 000604987 D|091377508 023844619 +000000434 000750075 000627241 D|033148128 004190113 +000000434 000758682 000634443 D|046509964 049761162 +000000434 000767686 000663148 D|032392449 016940263 +000000434 000769246 000702816 D|086191507 014260866 +000000434 000786921 000716990 D|041973548 085621412 +000000434 000804549 000727262 D|006731069 079363593 +000000434 000832011 000766499 D|093136983 077458461 +000000434 000848182 000780687 D|024574080 032582016 +000000434 000855640 000786341 D|079591839 055067001 +000000434 000855765 000820897 D|068785906 006157651 +000000434 000868463 000848882 D|021078091 026798110 +000000434 000882001 000850714 D|038849088 093475935 +000000434 000885105 000876297 D|029118984 093994645 +000000434 000921108 000901835 D|020403128 002712386 +000000434 000921285 000903672 D|019199446 001015453 +000000434 000991731 000924100 D|091485977 012697319 +000000434 000994814 000937821 D|038953097 047332839 +000000434 000995881 000980007 D|044942568 019892130 +000000435 000003238 000017007 D|073388840 098020096 +000000435 000006476 000021591 D|001630815 074998812 +000000435 000018526 000046864 D|093516154 092352851 +000000435 000050359 000057483 D|057818870 022823069 +000000435 000055686 000068688 D|082318159 047931130 +000000435 000081157 000129747 D|082673678 081356704 +000000435 000123114 000211397 D|006331453 023157531 +000000435 000124505 000214550 D|067308003 016518610 +000000435 000139327 000229770 D|078713059 090069556 +000000435 000163769 000255964 D|063623198 032968045 +000000435 000176788 000333204 D|026570512 081252132 +000000435 000180742 000343707 D|029680521 046956198 +000000435 000194903 000403118 D|033076656 083059793 +000000435 000195610 000421612 D|099752056 043450147 +000000435 000203469 000446676 D|097648985 038478841 +000000435 000230753 000448798 D|007946982 082879775 +000000435 000237016 000468306 D|074611121 080299482 +000000435 000254467 000485497 D|047548900 015131517 +000000435 000282905 000499016 D|078381790 097831497 +000000435 000302769 000518525 D|042836762 034364426 +000000435 000305611 000538591 D|055246598 009481930 +000000435 000308512 000562522 D|073572814 052867013 +000000435 000312670 000590421 D|003316787 032664474 +000000435 000320974 000619356 D|062363864 046578361 +000000435 000339485 000645594 D|025241788 031068200 +000000435 000375483 000715449 D|049133786 071372426 +000000435 000417467 000770130 D|067222176 081487541 +000000435 000426352 000780619 D|030116428 087088671 +000000435 000549253 000781332 D|096861790 004972902 +000000435 000552506 000789760 D|014860174 050805902 +000000435 000569231 000811405 D|022902014 023772015 +000000435 000639514 000818851 D|030605374 081645864 +000000435 000650845 000821667 D|041847637 092591369 +000000435 000705297 000824403 D|050009933 055495466 +000000435 000714784 000826435 D|018520020 099873560 +000000435 000746549 000829276 D|053838233 001005348 +000000435 000763877 000836112 D|060370837 066852299 +000000435 000765562 000853545 D|057029649 049620197 +000000435 000794327 000888273 D|013704289 054340799 +000000435 000813222 000896526 D|032098617 066149057 +000000435 000818035 000905537 D|003442034 047427603 +000000435 000821880 000907045 D|014786680 083976808 +000000435 000827507 000913308 D|060535606 009978373 +000000435 000889162 000914527 D|009815712 093418667 +000000435 000921817 000922422 D|067370312 039378439 +000000435 000928474 000936349 D|082465006 019181698 +000000435 000938644 000941819 D|039996061 043738521 +000000435 000963899 000954204 D|048021406 005643714 +000000435 000970414 000968708 D|052702239 031826678 +000000435 000979576 000986666 D|055026881 025405084 +000000436 000078833 000007980 D|035681743 052401098 +000000436 000097995 000033630 D|039587355 070655424 +000000436 000126011 000040687 D|000065045 092096641 +000000436 000134541 000047384 D|007586346 018026479 +000000436 000163773 000050483 D|062114178 011864927 +000000436 000189620 000052793 D|025146008 016871974 +000000436 000199657 000057201 D|076452353 077639705 +000000436 000209871 000062459 D|062290954 066862581 +000000436 000248558 000065175 D|030371909 038963952 +000000436 000250810 000110511 D|066376362 005416871 +000000436 000259941 000114815 D|063862350 052564417 +000000436 000267785 000118174 D|004642060 083758972 +000000436 000272987 000125109 D|002363409 013892044 +000000436 000298053 000133134 D|064046331 073239228 +000000436 000299168 000156943 D|065244795 047948477 +000000436 000312822 000158455 D|076444725 076494753 +000000436 000316293 000200053 D|046372815 029221679 +000000436 000318754 000214022 D|066902198 067768816 +000000436 000427552 000249526 D|030594829 059150582 +000000436 000437403 000260229 D|006040095 095856107 +000000436 000438228 000261509 D|091487211 099259914 +000000436 000446749 000277357 D|078137426 055798565 +000000436 000453481 000284123 D|067775271 024001014 +000000436 000487774 000307199 D|084431112 013904024 +000000436 000500319 000322722 D|023216257 029242331 +000000436 000528155 000331150 D|043899581 006988677 +000000436 000536194 000428642 D|038270443 027311992 +000000436 000542802 000477982 D|088029973 088582021 +000000436 000656346 000494608 D|052723992 025539072 +000000436 000669365 000507686 D|008189243 040949488 +000000436 000696447 000532159 D|089519153 070813329 +000000436 000710710 000542110 D|026420880 039651684 +000000436 000715850 000587758 D|097742239 058529370 +000000436 000737863 000591588 D|043228065 087790086 +000000436 000777427 000606513 D|011600350 010221601 +000000436 000783817 000634061 D|028512909 048764430 +000000436 000789646 000695338 D|081183193 015639100 +000000436 000800227 000802223 D|096154584 025178387 +000000436 000801700 000846094 D|037650213 027744604 +000000436 000811921 000857514 D|015347177 014691559 +000000436 000838936 000860551 D|033830720 013878595 +000000436 000839353 000866678 D|062939270 071793147 +000000436 000879486 000896989 D|056634617 016635074 +000000436 000891147 000900445 D|001212858 098266577 +000000436 000947315 000907965 D|066252497 099820757 +000000436 000967823 000936239 D|017675420 013358033 +000000436 000972183 000937211 D|054502571 057826318 +000000436 000995289 000937367 D|003182575 074598809 +000000436 000996457 000957686 D|024328083 099408702 +000000436 000998670 000972875 D|081492813 065700287 +000000437 000037843 000019240 D|008430347 019714197 +000000437 000075517 000043520 D|065434772 007552698 +000000437 000100279 000079945 D|052368815 001481145 +000000437 000112614 000084938 D|089752980 070454012 +000000437 000120890 000103916 D|072287352 046535766 +000000437 000134949 000108497 D|059349159 044806393 +000000437 000164474 000109472 D|074539732 053176852 +000000437 000166474 000142665 D|089247477 019357474 +000000437 000200256 000147440 D|004595791 006893852 +000000437 000222344 000152816 D|009645648 049431886 +000000437 000236315 000197657 D|018519844 096131827 +000000437 000244008 000288888 D|038119937 082614914 +000000437 000298906 000293545 D|019530644 026545808 +000000437 000322486 000296600 D|038949354 051187356 +000000437 000324381 000317099 D|059843817 067677199 +000000437 000357109 000329339 D|066463960 087027647 +000000437 000357696 000346889 D|015577029 035903295 +000000437 000362748 000367056 D|051256971 084814280 +000000437 000393071 000423104 D|072293707 081951009 +000000437 000412609 000451269 D|088093861 092896025 +000000437 000451702 000454544 D|094386376 097837258 +000000437 000458977 000472044 D|022970744 049283091 +000000437 000493649 000487130 D|071319340 019703307 +000000437 000502930 000503827 D|066038730 038617785 +000000437 000518111 000512622 D|027291065 038489789 +000000437 000527092 000518735 D|071925156 033849697 +000000437 000553485 000541286 D|053767348 025545430 +000000437 000559648 000555291 D|020266565 044323170 +000000437 000580319 000560064 D|099901397 054817278 +000000437 000592607 000568596 D|038663644 017662013 +000000437 000620834 000591765 D|060646194 015832730 +000000437 000651404 000609417 D|054590161 093688114 +000000437 000662541 000614635 D|031191610 049607608 +000000437 000679086 000618543 D|056708808 080155290 +000000437 000687909 000620084 D|071112152 036480233 +000000437 000740985 000623021 D|057637958 002716303 +000000437 000769857 000720046 D|036934981 046923281 +000000437 000779253 000728146 D|003668670 063022639 +000000437 000792833 000740616 D|055123246 060536884 +000000437 000800678 000756261 D|076863177 073647918 +000000437 000809898 000759779 D|052829078 042106645 +000000437 000827613 000771179 D|062494211 048234111 +000000437 000851189 000837049 D|064362246 078380133 +000000437 000854464 000849454 D|085582081 007872462 +000000437 000864966 000849533 D|074691419 070535007 +000000437 000866273 000894942 D|066787494 011930475 +000000437 000868253 000943753 D|078499058 055447392 +000000437 000917157 000964332 D|033122546 081797201 +000000437 000927805 000982810 D|097183020 027057241 +000000437 000933164 000994351 D|012188492 026682093 +000000438 000095673 000021020 D|038385178 035617634 +000000438 000124010 000027545 D|010184085 049681530 +000000438 000131329 000036523 D|036320686 069121595 +000000438 000223163 000040810 D|035884593 063692646 +000000438 000240077 000048951 D|036783345 060691549 +000000438 000244569 000076003 D|074830315 077949133 +000000438 000249568 000102458 D|025894000 030759497 +000000438 000271389 000132137 D|025868362 088161843 +000000438 000295397 000157334 D|011883403 009307573 +000000438 000301564 000169338 D|070167784 098194409 +000000438 000311617 000193753 D|094969558 035191551 +000000438 000332568 000362846 D|019391604 099563164 +000000438 000355094 000363447 D|074388470 087344494 +000000438 000383940 000375702 D|035893950 029250361 +000000438 000386110 000378079 D|094125916 098156217 +000000438 000416213 000393492 D|055874188 061651764 +000000438 000422183 000412427 D|097992898 061661839 +000000438 000424315 000416384 D|069896502 039098647 +000000438 000424498 000419498 D|062233531 028667610 +000000438 000449230 000419977 D|067249420 056898162 +000000438 000479371 000455347 D|082285893 046453520 +000000438 000484431 000503847 D|014551384 009998328 +000000438 000499237 000507338 D|055969676 070858516 +000000438 000512008 000512339 D|019023696 038306733 +000000438 000522862 000518796 D|079177612 099962671 +000000438 000539407 000521101 D|059631812 092351536 +000000438 000562579 000528186 D|071820900 016644008 +000000438 000581353 000561073 D|067922822 067534984 +000000438 000591049 000577926 D|011891688 036156297 +000000438 000596501 000597580 D|076197998 078231728 +000000438 000598851 000607650 D|089373787 061789197 +000000438 000606325 000656792 D|091617883 038546960 +000000438 000619764 000668815 D|086864761 096347421 +000000438 000640331 000728464 D|046916816 053617672 +000000438 000643421 000757422 D|022814786 055826603 +000000438 000653821 000771820 D|025364792 094530150 +000000438 000660576 000782876 D|062479236 031195221 +000000438 000678339 000783781 D|090060581 041223547 +000000438 000699541 000786192 D|024651350 034960688 +000000438 000781781 000819597 D|031019255 072701152 +000000438 000791336 000850935 D|038002041 091077690 +000000438 000805259 000862400 D|037025995 009998132 +000000438 000820951 000881900 D|039071548 077066283 +000000438 000834949 000886572 D|064993909 048158829 +000000438 000839199 000896443 D|057018573 093997103 +000000438 000852546 000909994 D|090791919 031461955 +000000438 000885574 000933790 D|067461209 025395316 +000000438 000925433 000949826 D|035973288 024397038 +000000438 000961267 000959436 D|056316554 030550648 +000000438 000979349 000965537 D|045882793 027597790 +000000439 000007786 000029958 D|086098413 095251291 +000000439 000028478 000032221 D|058842020 010426186 +000000439 000035900 000033649 D|004695888 067098872 +000000439 000038496 000042833 D|006771546 006981710 +000000439 000045517 000052510 D|071636145 063060200 +000000439 000081152 000068252 D|098351487 022139196 +000000439 000104621 000079209 D|097960970 036417779 +000000439 000121863 000082059 D|012330457 045290319 +000000439 000146082 000159707 D|037050563 022264207 +000000439 000157192 000182524 D|094455538 042037487 +000000439 000216868 000185694 D|089520446 034945403 +000000439 000218774 000199127 D|090058371 043471380 +000000439 000228973 000214788 D|050544024 060676850 +000000439 000232928 000236736 D|079427709 064816131 +000000439 000256056 000240287 D|041696182 025383686 +000000439 000313658 000246363 D|015963616 042070692 +000000439 000326960 000258047 D|077451471 042402236 +000000439 000334945 000267776 D|091079876 075675953 +000000439 000338147 000273355 D|098652815 059569838 +000000439 000344474 000279867 D|039329117 068400544 +000000439 000386698 000345938 D|049174449 062285811 +000000439 000392885 000346085 D|012742256 072482116 +000000439 000397697 000382957 D|014285997 024099184 +000000439 000421990 000400243 D|081418523 044126944 +000000439 000481440 000417161 D|016755210 090107705 +000000439 000506816 000419301 D|012218347 069934171 +000000439 000524094 000439353 D|086739446 066882838 +000000439 000529444 000539110 D|010816214 021292215 +000000439 000538112 000553740 D|005357353 071568850 +000000439 000538828 000567558 D|075396464 018474676 +000000439 000568801 000569896 D|005088787 090052325 +000000439 000586157 000597208 D|013597400 024173943 +000000439 000650019 000601525 D|002228841 011316860 +000000439 000653414 000646862 D|011539774 053411652 +000000439 000701248 000688510 D|071360060 094285798 +000000439 000703107 000713453 D|086394977 017761816 +000000439 000714338 000724551 D|095511277 054912370 +000000439 000741315 000737723 D|088090941 032044893 +000000439 000760433 000808316 D|055782644 012856800 +000000439 000801089 000831427 D|072813753 052099020 +000000439 000816269 000832028 D|084099034 085738778 +000000439 000857601 000833514 D|053019882 008927759 +000000439 000863030 000856882 D|086238004 034349595 +000000439 000881779 000868236 D|046909763 018135363 +000000439 000925626 000920549 D|027721804 022234175 +000000439 000927573 000942105 D|082952525 024465007 +000000439 000934904 000957294 D|064621262 040126937 +000000439 000946115 000962713 D|069397856 029504763 +000000439 000951349 000984913 D|070235462 036241253 +000000439 000971060 000985882 D|071942403 011179403 +000000440 000015349 000003625 D|043731295 064493768 +000000440 000021408 000006482 D|094734768 069976837 +000000440 000072889 000023449 D|043203213 086535288 +000000440 000079926 000066244 D|013986590 068482333 +000000440 000085119 000075458 D|063139422 023065608 +000000440 000115413 000080983 D|095410961 086500193 +000000440 000117914 000105044 D|052282286 066211535 +000000440 000132170 000117773 D|026676026 071157303 +000000440 000153597 000144029 D|071665590 060974115 +000000440 000165134 000146342 D|065540285 072196046 +000000440 000167272 000151439 D|013819606 058267578 +000000440 000184703 000161427 D|024194714 038105156 +000000440 000200435 000184792 D|042555384 081752738 +000000440 000200625 000273864 D|088919441 013103275 +000000440 000216182 000292517 D|089668387 074641414 +000000440 000227552 000303365 D|046321897 075164512 +000000440 000268963 000326565 D|082253551 094512030 +000000440 000279583 000334049 D|004436358 096079649 +000000440 000284684 000358109 D|019989745 002294876 +000000440 000292386 000360959 D|045284603 061054852 +000000440 000298559 000368627 D|012293485 081361302 +000000440 000323856 000380018 D|098023234 051393995 +000000440 000325770 000392097 D|069152799 009157660 +000000440 000338440 000402600 D|039537997 045459439 +000000440 000349099 000404558 D|044137255 082930400 +000000440 000357372 000418664 D|018212121 000543819 +000000440 000368486 000444268 D|063629279 079839501 +000000440 000393654 000503247 D|064110882 059345303 +000000440 000455417 000503474 D|094492288 054142121 +000000440 000491399 000517380 D|072454385 033072207 +000000440 000541775 000576328 D|021064708 076467795 +000000440 000566832 000606970 D|058019581 052368034 +000000440 000582662 000620100 D|066737181 003004168 +000000440 000611521 000620345 D|063987587 002351789 +000000440 000640951 000622854 D|099176231 062226384 +000000440 000649499 000649613 D|056415135 000952337 +000000440 000653263 000656289 D|051537310 083261967 +000000440 000677796 000663941 D|052670319 056329066 +000000440 000742937 000690733 D|029873841 002150773 +000000440 000800686 000748110 D|078665283 025090553 +000000440 000800757 000761767 D|064773207 009557180 +000000440 000806479 000803685 D|029259787 078462949 +000000440 000812615 000830001 D|053778969 071940871 +000000440 000822911 000875052 D|040104497 003504397 +000000440 000824448 000897797 D|012075257 084856647 +000000440 000929815 000904840 D|008041369 002420434 +000000440 000935766 000924994 D|082285852 027283545 +000000440 000950770 000928113 D|076365496 060533012 +000000440 000951053 000941399 D|008980824 094737383 +000000440 000958092 000988080 D|081272715 032158800 +000000441 000013794 000003070 D|089841276 079008539 +000000441 000052005 000014184 D|083082165 078836124 +000000441 000056912 000074947 D|068670591 028065791 +000000441 000070267 000108435 D|088190557 057689115 +000000441 000073886 000156026 D|096803871 091165104 +000000441 000118368 000161671 D|053157500 077887223 +000000441 000135974 000163101 D|087131198 010236840 +000000441 000151848 000202756 D|030856516 061746677 +000000441 000206923 000268293 D|023968269 019778498 +000000441 000219668 000277869 D|031507691 082141971 +000000441 000220816 000288806 D|028229341 011508207 +000000441 000237729 000311143 D|094609718 039250735 +000000441 000248943 000331097 D|018131067 043238504 +000000441 000251131 000372435 D|017820226 019615708 +000000441 000265405 000378888 D|067973019 059940568 +000000441 000299007 000432276 D|096880568 018147890 +000000441 000303262 000445864 D|093283472 020142816 +000000441 000335631 000451254 D|007698046 020840102 +000000441 000341642 000453411 D|077719182 059868792 +000000441 000366308 000474407 D|063859328 087863445 +000000441 000373269 000484690 D|049359862 098303111 +000000441 000376190 000500386 D|089657075 037523435 +000000441 000382782 000503430 D|071338055 018060238 +000000441 000390539 000537250 D|044375359 086844503 +000000441 000413041 000543861 D|098117851 049116113 +000000441 000428919 000554704 D|064994087 047482329 +000000441 000494952 000608771 D|008158975 067225234 +000000441 000544382 000618473 D|043405288 002284214 +000000441 000569793 000634820 D|049803340 061700462 +000000441 000583384 000637783 D|039300529 056629803 +000000441 000587969 000639499 D|000677192 045632135 +000000441 000599003 000645223 D|019285548 037881853 +000000441 000601261 000647451 D|033825002 074372704 +000000441 000618929 000655364 D|010212666 079053035 +000000441 000642828 000668601 D|088522627 082015073 +000000441 000678354 000669836 D|087921382 073970769 +000000441 000700235 000671463 D|045466861 026117427 +000000441 000747689 000705440 D|067451808 086140017 +000000441 000766872 000734064 D|068916871 039666623 +000000441 000819428 000748315 D|044801661 011596089 +000000441 000827879 000773163 D|004968478 025279614 +000000441 000845398 000787028 D|071187422 069915380 +000000441 000850218 000831932 D|078375329 041829847 +000000441 000868351 000834099 D|015502129 003783040 +000000441 000893094 000903013 D|005052751 086167763 +000000441 000913572 000905392 D|057917083 004393360 +000000441 000978977 000907215 D|060047062 086658618 +000000441 000984401 000915528 D|095742990 090575434 +000000441 000995467 000939389 D|035481006 093345252 +000000441 000995608 000967728 D|048124629 006182785 +000000442 000027675 000020764 D|041576936 040244793 +000000442 000032732 000025505 D|097337569 055201076 +000000442 000048244 000055146 D|034538306 069488944 +000000442 000050431 000065761 D|048624276 054767247 +000000442 000055661 000098633 D|096073701 045388710 +000000442 000086531 000102364 D|058886644 066537076 +000000442 000102646 000124785 D|065246897 008746865 +000000442 000109893 000147649 D|011069136 080472207 +000000442 000139042 000191937 D|029683893 059033138 +000000442 000226890 000193315 D|077362637 088455984 +000000442 000242226 000207858 D|028810226 045751774 +000000442 000254076 000223797 D|009647350 023866933 +000000442 000283429 000295645 D|027754645 043076792 +000000442 000336763 000298763 D|029361196 003825084 +000000442 000345172 000323146 D|091797982 021546552 +000000442 000375663 000327032 D|062965074 062736005 +000000442 000494533 000327327 D|034388356 004401274 +000000442 000500459 000341049 D|093555776 040236292 +000000442 000525764 000352088 D|015598357 083179631 +000000442 000556993 000357426 D|030933863 006125358 +000000442 000582444 000358752 D|014085690 079991612 +000000442 000591438 000360028 D|021277661 043016841 +000000442 000608629 000376770 D|093290415 060744246 +000000442 000627577 000385015 D|087765268 027120783 +000000442 000636908 000386071 D|051486231 016886031 +000000442 000647846 000394510 D|079423834 021909065 +000000442 000675325 000396757 D|030073847 094440395 +000000442 000706975 000405403 D|036478539 005091230 +000000442 000713087 000412168 D|082672669 057030725 +000000442 000716950 000444362 D|027164426 074541527 +000000442 000721166 000470100 D|062371606 086609057 +000000442 000727690 000494423 D|022030095 034217813 +000000442 000743503 000525363 D|040824035 000833999 +000000442 000761737 000529780 D|081376543 027158353 +000000442 000762600 000593534 D|037432380 082335330 +000000442 000768770 000595725 D|013723496 001336254 +000000442 000769506 000599635 D|020247752 029020025 +000000442 000798463 000632991 D|062331930 092772493 +000000442 000799106 000656648 D|073029257 078184891 +000000442 000808201 000728235 D|074784258 070247343 +000000442 000852382 000730063 D|089166430 012045393 +000000442 000900610 000731586 D|032119177 067885233 +000000442 000902126 000738105 D|077976296 092376265 +000000442 000904749 000747662 D|065866855 091022229 +000000442 000906148 000767160 D|079244690 042295006 +000000442 000921221 000877921 D|073673784 034011671 +000000442 000944463 000888127 D|074288275 083966215 +000000442 000982695 000902080 D|026776682 010966832 +000000442 000990900 000977094 D|036014421 063900158 +000000442 000996239 000984092 D|053818702 025307468 +000000443 000001098 000039260 D|057558588 067848904 +000000443 000065291 000044023 D|039163525 084228215 +000000443 000075938 000070414 D|025702401 021321735 +000000443 000079787 000098285 D|013536651 046043995 +000000443 000101157 000122916 D|088603261 057540316 +000000443 000137337 000173649 D|073364342 042065190 +000000443 000154802 000176124 D|040854138 094186314 +000000443 000174172 000177513 D|071837972 086699586 +000000443 000178359 000186227 D|006854390 061275980 +000000443 000178407 000243673 D|010358366 099550497 +000000443 000249041 000309050 D|016512415 058491602 +000000443 000254464 000346412 D|024085990 054715622 +000000443 000283819 000352333 D|074284962 068510902 +000000443 000296975 000356891 D|066912405 030741992 +000000443 000300048 000357319 D|089075399 037791005 +000000443 000307879 000362103 D|037070973 016173751 +000000443 000315282 000382943 D|077099515 006570332 +000000443 000335647 000390809 D|078933065 088924988 +000000443 000341540 000425860 D|008419433 010167954 +000000443 000362294 000434427 D|075078442 030966306 +000000443 000399063 000438756 D|060887660 001956416 +000000443 000436321 000455126 D|029428486 010376634 +000000443 000470951 000466242 D|083646556 084621414 +000000443 000484589 000512370 D|077233642 042495104 +000000443 000499714 000512697 D|026437113 015297318 +000000443 000505611 000549423 D|021651072 064918283 +000000443 000586685 000549573 D|062357966 007865724 +000000443 000589383 000577869 D|036317464 075477976 +000000443 000591759 000589644 D|065013093 083020207 +000000443 000615188 000594887 D|052337710 010171679 +000000443 000624144 000601643 D|080380918 075712074 +000000443 000629522 000616097 D|026256032 042983603 +000000443 000721049 000653182 D|002965082 033190270 +000000443 000746473 000657079 D|073248218 045150535 +000000443 000751908 000659339 D|016021080 015768478 +000000443 000759216 000661711 D|002843296 056388839 +000000443 000801324 000678639 D|059511302 028539450 +000000443 000801858 000690534 D|070512225 054124043 +000000443 000806144 000711236 D|055183908 096901173 +000000443 000806235 000718153 D|060132482 011278342 +000000443 000848904 000767462 D|033344666 038775670 +000000443 000855348 000791916 D|046095843 073771854 +000000443 000874493 000801892 D|035296412 043757253 +000000443 000878834 000810495 D|054073121 062540276 +000000443 000895768 000847479 D|090123519 049991437 +000000443 000907433 000854851 D|006084640 050736532 +000000443 000920537 000911571 D|016505451 022719264 +000000443 000949136 000921952 D|063805805 017040806 +000000443 000953891 000946434 D|071697872 003488003 +000000443 000974355 000961429 D|061711155 012661505 +000000444 000027141 000011544 D|053666548 038827912 +000000444 000027205 000015221 D|016310587 099647014 +000000444 000049707 000038753 D|099358757 044008696 +000000444 000056171 000076080 D|079171566 084690315 +000000444 000057184 000091980 D|062070011 033845809 +000000444 000076686 000126468 D|044180876 017184963 +000000444 000100636 000150802 D|056042411 003600164 +000000444 000101543 000170743 D|080037801 069039033 +000000444 000113588 000171869 D|079641683 031623842 +000000444 000178781 000182284 D|068337554 091717697 +000000444 000189717 000186461 D|096200073 015028336 +000000444 000197811 000198468 D|038369232 022025968 +000000444 000223083 000199387 D|042873513 049832100 +000000444 000231134 000224151 D|015449191 052695198 +000000444 000265588 000239823 D|090279188 071431493 +000000444 000312241 000246123 D|068962205 018532430 +000000444 000328066 000267106 D|047479615 097284386 +000000444 000348265 000272593 D|052210224 044445481 +000000444 000366273 000298287 D|075527766 077358787 +000000444 000390702 000333088 D|061533753 089569942 +000000444 000408162 000334629 D|037417851 030361110 +000000444 000410859 000340620 D|058413988 054221829 +000000444 000426192 000354600 D|019275767 009993145 +000000444 000427073 000370168 D|021846295 084255333 +000000444 000455992 000408403 D|033981475 069338242 +000000444 000472630 000488884 D|090279918 035597883 +000000444 000481307 000496272 D|006933785 037944042 +000000444 000485545 000504117 D|092229019 047374140 +000000444 000488986 000510395 D|058355308 095258285 +000000444 000500176 000563710 D|092783579 029660421 +000000444 000542656 000574878 D|085086737 089168404 +000000444 000579726 000585122 D|098352845 029462251 +000000444 000607268 000652652 D|074334532 032430849 +000000444 000612239 000683099 D|069820097 071638447 +000000444 000652636 000744846 D|027561209 042544302 +000000444 000678312 000754323 D|038736057 060308860 +000000444 000696142 000764822 D|009752827 037967755 +000000444 000707854 000767499 D|048569186 014951596 +000000444 000762306 000770877 D|037496122 006535470 +000000444 000770847 000794987 D|018494252 093459154 +000000444 000780939 000830566 D|005852840 040045217 +000000444 000820855 000844687 D|090363394 080449121 +000000444 000829191 000856204 D|032339495 032399324 +000000444 000834323 000915861 D|006406275 072036095 +000000444 000916306 000930097 D|000222059 018027186 +000000444 000928666 000969090 D|059104403 075551796 +000000444 000934096 000978713 D|075082412 039027103 +000000444 000940767 000989368 D|005993267 021848747 +000000444 000960154 000996682 D|040971260 080804746 +000000444 000960155 000996837 D|099798411 051269017 +000000445 000007578 000000393 D|030612722 045163538 +000000445 000029406 000004160 D|077541219 078278248 +000000445 000045415 000013599 D|072319478 081448110 +000000445 000046836 000084929 D|009505894 026709926 +000000445 000047459 000092216 D|080590832 050036547 +000000445 000062213 000105378 D|009125657 060368493 +000000445 000073674 000134703 D|010123637 040920438 +000000445 000080315 000146198 D|074290440 094590257 +000000445 000089030 000163085 D|026623587 028681225 +000000445 000091562 000187332 D|015268911 073844312 +000000445 000099445 000191588 D|070992608 021631545 +000000445 000127192 000216258 D|045972172 043284540 +000000445 000145277 000259459 D|059370310 059349874 +000000445 000146219 000283735 D|039893861 012806857 +000000445 000187495 000320327 D|066685632 005532994 +000000445 000199069 000324469 D|014613085 007934659 +000000445 000201051 000328347 D|014858401 011605483 +000000445 000209922 000339780 D|081610542 033497746 +000000445 000258496 000353867 D|021200903 022266608 +000000445 000296536 000386463 D|067917278 084822285 +000000445 000344247 000388721 D|015874235 003059651 +000000445 000379009 000400253 D|058962254 050844481 +000000445 000388443 000404581 D|087732848 052003315 +000000445 000409571 000407212 D|093021549 012429837 +000000445 000416886 000417317 D|074422473 049681754 +000000445 000460648 000432599 D|006931198 081481631 +000000445 000482526 000446449 D|073166259 032340497 +000000445 000487497 000459093 D|021886063 025154240 +000000445 000518628 000474999 D|041096727 000812890 +000000445 000540742 000483866 D|047666884 030113554 +000000445 000557929 000530809 D|099730939 097439724 +000000445 000565515 000596392 D|050278634 052685058 +000000445 000583726 000618396 D|075651403 089388829 +000000445 000641934 000658048 D|065442576 098073534 +000000445 000686863 000685407 D|052814506 023218996 +000000445 000708951 000732814 D|091113918 087334030 +000000445 000712399 000791851 D|020065852 012123475 +000000445 000742210 000799429 D|084210847 026510837 +000000445 000810576 000818303 D|076135356 028998784 +000000445 000820561 000821183 D|005467603 020737020 +000000445 000824604 000827788 D|053937340 013618641 +000000445 000834248 000831298 D|052748247 003230920 +000000445 000839677 000834226 D|076222850 097077253 +000000445 000846512 000835473 D|099053810 050594739 +000000445 000920507 000868105 D|082031798 089723205 +000000445 000953923 000888169 D|016151294 065679800 +000000445 000961659 000921858 D|099243642 070356789 +000000445 000972929 000933746 D|013658144 059746850 +000000445 000984950 000950814 D|035510876 031522459 +000000445 000985715 000964430 D|063383918 015786574 +000000446 000021930 000040585 D|086569946 032573811 +000000446 000025176 000047107 D|064068886 014763131 +000000446 000032883 000075816 D|069010825 092093371 +000000446 000033189 000122876 D|062065128 008674118 +000000446 000034544 000123502 D|029531742 001712321 +000000446 000061407 000130689 D|098267089 025518460 +000000446 000089569 000161526 D|086686806 053154869 +000000446 000095778 000226852 D|084709403 085274067 +000000446 000098022 000265183 D|029242384 086891793 +000000446 000114940 000273628 D|007238260 064847566 +000000446 000116807 000288968 D|058870288 071417140 +000000446 000126122 000296798 D|053616157 091118327 +000000446 000134733 000302059 D|085788392 091242458 +000000446 000134953 000373557 D|084283634 047550768 +000000446 000145435 000409612 D|099501463 003470274 +000000446 000173104 000423319 D|018935101 043405177 +000000446 000176549 000458621 D|033388229 003660673 +000000446 000194129 000549314 D|023650331 034503535 +000000446 000226075 000551160 D|059194999 022637968 +000000446 000236551 000560999 D|051596465 010487355 +000000446 000291525 000566613 D|079095767 044271600 +000000446 000307150 000583124 D|048756787 072440660 +000000446 000334745 000588435 D|010193381 099358056 +000000446 000394257 000620110 D|030486977 040235493 +000000446 000397890 000631052 D|071322059 023287342 +000000446 000452353 000645976 D|021900670 001874515 +000000446 000525059 000649517 D|019235498 075998813 +000000446 000563408 000671257 D|054573540 088760987 +000000446 000567033 000676558 D|050619166 062472012 +000000446 000576171 000711238 D|089421548 093322570 +000000446 000582522 000722758 D|087846622 065132339 +000000446 000585656 000730519 D|091165138 083996655 +000000446 000656847 000736944 D|097521774 045993142 +000000446 000683051 000744347 D|059049056 003573770 +000000446 000692260 000749760 D|060094238 011120218 +000000446 000719349 000757695 D|026210804 045852263 +000000446 000756388 000782003 D|026318664 064787091 +000000446 000805506 000791083 D|027080821 006764390 +000000446 000829901 000806492 D|072320005 043410421 +000000446 000829967 000823075 D|055605330 010844278 +000000446 000837143 000850686 D|086107714 084063751 +000000446 000885345 000858603 D|061278310 018942612 +000000446 000916945 000866750 D|097811875 098508700 +000000446 000933372 000890470 D|090524123 033057382 +000000446 000952667 000908412 D|011323970 038619372 +000000446 000954989 000922505 D|009218233 010781040 +000000446 000961354 000927214 D|041970671 080360348 +000000446 000962683 000978134 D|027551048 074611062 +000000446 000989601 000985605 D|084943663 090991879 +000000446 000992705 000998313 D|034166196 022745940 +000000447 000000658 000000114 D|062094460 075473781 +000000447 000003935 000018329 D|042809179 011800544 +000000447 000011818 000060698 D|079093083 096607386 +000000447 000014411 000061213 D|021482669 073604030 +000000447 000017788 000080160 D|018923012 001632642 +000000447 000042465 000120728 D|016262326 092047195 +000000447 000048052 000140097 D|061893102 082816170 +000000447 000059847 000161440 D|090788562 017139148 +000000447 000072902 000173999 D|061507966 017581430 +000000447 000078088 000202787 D|027907479 015149539 +000000447 000104532 000203017 D|023350457 075043584 +000000447 000109491 000204765 D|071904152 086139423 +000000447 000134354 000228254 D|088900520 014223661 +000000447 000157762 000240607 D|085377114 052083932 +000000447 000173696 000260199 D|095871282 051957019 +000000447 000208159 000269209 D|026762351 098445249 +000000447 000218544 000279896 D|023007628 033770929 +000000447 000227394 000291551 D|046900023 051180294 +000000447 000256448 000298385 D|033202213 017514026 +000000447 000323971 000377666 D|040366707 083299612 +000000447 000351729 000463782 D|062537602 094175800 +000000447 000356640 000471261 D|075873590 003120356 +000000447 000366156 000503900 D|006183683 067031064 +000000447 000473158 000540715 D|033862819 092143442 +000000447 000495951 000563138 D|076079043 078236000 +000000447 000504483 000582544 D|001557281 011841624 +000000447 000523759 000629022 D|043062996 069220483 +000000447 000530642 000650113 D|065391555 000784487 +000000447 000548762 000650908 D|044865371 086673735 +000000447 000554672 000663909 D|072896266 069478819 +000000447 000591193 000668191 D|078425405 078713674 +000000447 000600770 000674194 D|064088260 021491741 +000000447 000615375 000680362 D|073737276 050101736 +000000447 000631104 000690243 D|082777729 010770719 +000000447 000643772 000749503 D|034319408 086551172 +000000447 000728142 000759798 D|012003949 038109724 +000000447 000734524 000770969 D|041736123 070712385 +000000447 000757823 000787340 D|032096138 030586182 +000000447 000764145 000876399 D|071370334 007882153 +000000447 000824875 000884868 D|052971772 019439651 +000000447 000852513 000885141 D|082375888 029328080 +000000447 000855568 000899812 D|071090240 056534342 +000000447 000882115 000903684 D|065102440 023607957 +000000447 000915018 000934104 D|087515177 066309467 +000000447 000939909 000967975 D|080846547 012779188 +000000447 000948504 000974479 D|072690181 089504180 +000000447 000962048 000985260 D|093409089 000879762 +000000447 000972076 000985629 D|008016385 073435175 +000000447 000988043 000994943 D|038354167 007870090 +000000447 000988854 000995818 D|090272272 039547489 +000000448 000001973 000004126 D|060577587 041517583 +000000448 000019015 000037901 D|035628787 053211993 +000000448 000045519 000077913 D|098291175 088024441 +000000448 000052720 000085684 D|017614270 039717525 +000000448 000110614 000085867 D|064040592 023438460 +000000448 000120816 000096135 D|031919960 003723080 +000000448 000129402 000111944 D|011946324 009018953 +000000448 000171680 000239654 D|022350970 026634689 +000000448 000213959 000251956 D|032353054 041410723 +000000448 000242209 000270629 D|080232637 044922916 +000000448 000303427 000321888 D|080028424 006621480 +000000448 000305154 000371378 D|055534512 073452254 +000000448 000305744 000396815 D|013115331 063468915 +000000448 000361217 000426902 D|030597223 019900198 +000000448 000407153 000454319 D|000801928 012967855 +000000448 000444937 000462685 D|025686781 036980629 +000000448 000468407 000483500 D|057437447 041106219 +000000448 000474902 000491545 D|027389198 011743900 +000000448 000539779 000506105 D|071560586 099846846 +000000448 000540962 000524866 D|086325725 048818593 +000000448 000550314 000529523 D|024705368 055583424 +000000448 000550341 000556174 D|064546104 027437818 +000000448 000570561 000571243 D|059051828 099074854 +000000448 000607731 000606636 D|041863315 074270449 +000000448 000611016 000620477 D|063961732 068930841 +000000448 000616272 000637192 D|092267334 004234536 +000000448 000618110 000670337 D|083001021 044200438 +000000448 000620211 000673090 D|037421668 012738626 +000000448 000643248 000682246 D|055172313 057440475 +000000448 000694810 000717432 D|071221234 027484882 +000000448 000702137 000719969 D|080382882 004574582 +000000448 000716590 000745809 D|045533994 044541230 +000000448 000721897 000762007 D|029680223 086322391 +000000448 000753383 000780196 D|057812739 038126475 +000000448 000774995 000780745 D|022931085 041360774 +000000448 000779255 000785201 D|069739723 045560222 +000000448 000788715 000820631 D|093234550 058005378 +000000448 000792086 000824486 D|026251055 065466988 +000000448 000797892 000834285 D|072691110 010805828 +000000448 000806953 000838279 D|048835930 025832468 +000000448 000843774 000865517 D|083924439 037205003 +000000448 000861042 000895848 D|092451370 021828942 +000000448 000870750 000900343 D|008946463 023343108 +000000448 000891683 000945210 D|041330151 082393275 +000000448 000901093 000950343 D|094680718 088190775 +000000448 000926643 000959794 D|075586502 007898641 +000000448 000961300 000969440 D|041279525 046569391 +000000448 000987612 000981562 D|049020879 086745931 +000000448 000991549 000991396 D|089696172 083735536 +000000448 000991830 000991653 D|089726171 032315457 +000000449 000028232 000001489 D|097406956 037443219 +000000449 000032709 000003272 D|070028605 029352695 +000000449 000058272 000021764 D|024663324 026842587 +000000449 000115981 000054317 D|012954388 041785632 +000000449 000190250 000072380 D|037825827 078168458 +000000449 000195306 000078289 D|047465881 072530223 +000000449 000228425 000090574 D|041911665 097966785 +000000449 000236093 000103717 D|041324518 017490159 +000000449 000237431 000122931 D|044505409 077967654 +000000449 000285766 000147963 D|020951775 082944635 +000000449 000288909 000196206 D|071676528 066742660 +000000449 000330950 000245697 D|072535407 001864010 +000000449 000370704 000264234 D|049304028 052866267 +000000449 000380758 000275893 D|053773944 098908707 +000000449 000394656 000308190 D|022165630 026630622 +000000449 000413329 000348213 D|092529321 003147202 +000000449 000429271 000355916 D|079278972 059355652 +000000449 000525749 000372693 D|017699780 053414685 +000000449 000535362 000383069 D|067247602 088275964 +000000449 000552857 000385051 D|009564955 086877266 +000000449 000571449 000390387 D|067006912 056394272 +000000449 000590265 000455367 D|003239159 004744901 +000000449 000604523 000457701 D|022169183 024993692 +000000449 000607309 000496664 D|019616532 008934196 +000000449 000613654 000512739 D|023247555 063996476 +000000449 000641001 000519016 D|004610152 014836626 +000000449 000651605 000598123 D|047376024 057821271 +000000449 000655762 000620944 D|009689565 037416281 +000000449 000655980 000636159 D|032928819 049082686 +000000449 000692739 000660589 D|025615631 032823932 +000000449 000693431 000660708 D|044472603 002155914 +000000449 000700289 000665372 D|051180121 091305567 +000000449 000737863 000678183 D|030752629 081174159 +000000449 000738947 000702099 D|070968921 076941420 +000000449 000745467 000727988 D|042085548 045438156 +000000449 000795378 000743474 D|013309721 022326000 +000000449 000828291 000751134 D|078128991 099097526 +000000449 000864702 000752990 D|054926783 030954991 +000000449 000898484 000839808 D|019567141 023712635 +000000449 000923531 000845001 D|026819245 080934201 +000000449 000924985 000848456 D|029355108 071459882 +000000449 000942088 000866506 D|000232589 039227575 +000000449 000945244 000870658 D|067398076 095577302 +000000449 000948071 000888136 D|001706192 092831083 +000000449 000957025 000933793 D|019496049 046837039 +000000449 000962377 000936518 D|076237637 024685345 +000000449 000972786 000942712 D|027011010 032604566 +000000449 000973497 000944912 D|089140216 000529662 +000000449 000987643 000983446 D|093625423 010334973 +000000449 000997065 000992783 D|004376952 094570394 +000000450 000013544 000003241 D|047620620 003822632 +000000450 000033235 000047625 D|071696638 056860336 +000000450 000055753 000125370 D|087257312 069319372 +000000450 000056560 000127678 D|037189359 094562456 +000000450 000077529 000129661 D|027504107 030068414 +000000450 000092819 000130227 D|087762884 011151769 +000000450 000111511 000152418 D|057905699 038945544 +000000450 000116274 000167983 D|013708472 087308155 +000000450 000122647 000179956 D|018747862 019838867 +000000450 000131339 000182657 D|028733669 061613963 +000000450 000174009 000209735 D|027757973 084925280 +000000450 000193479 000224802 D|091669825 089071732 +000000450 000199930 000269574 D|013640382 002385997 +000000450 000234300 000290353 D|073615372 017909862 +000000450 000253262 000340492 D|079933051 051991900 +000000450 000269278 000340562 D|095895096 021011823 +000000450 000273792 000369279 D|094035108 065629553 +000000450 000328784 000383723 D|065745504 071800054 +000000450 000422574 000399980 D|021751916 071085188 +000000450 000428339 000434205 D|072502905 043356877 +000000450 000431122 000451265 D|041864936 041974872 +000000450 000477152 000485740 D|070527525 083891490 +000000450 000489674 000511526 D|023172989 001237010 +000000450 000516015 000530427 D|033760311 017483414 +000000450 000536887 000560943 D|063867303 099467583 +000000450 000560409 000571513 D|012864676 083109444 +000000450 000611742 000650691 D|074760513 000966410 +000000450 000631237 000671748 D|056079322 077875687 +000000450 000638909 000685450 D|008910351 077031711 +000000450 000650301 000686156 D|011859706 088601202 +000000450 000658457 000697006 D|042896458 096987548 +000000450 000680306 000734787 D|051689053 049175561 +000000450 000700992 000780540 D|088076499 013965475 +000000450 000714181 000789065 D|028500046 037397130 +000000450 000754574 000798030 D|005702215 022392046 +000000450 000759170 000800596 D|026661089 034624681 +000000450 000783456 000825278 D|012510041 068664107 +000000450 000798175 000828989 D|006914291 026478077 +000000450 000832125 000832035 D|097666624 014331056 +000000450 000834305 000845357 D|088700932 092116510 +000000450 000849219 000872627 D|097140699 011368500 +000000450 000856623 000907733 D|014971664 021109548 +000000450 000874142 000908076 D|099504182 089617698 +000000450 000881028 000911466 D|059804095 026610732 +000000450 000906891 000924750 D|053459033 064686706 +000000450 000918566 000942844 D|007148199 067876948 +000000450 000945485 000947112 D|041229713 084520759 +000000450 000950821 000959940 D|007410191 084089129 +000000450 000980253 000981634 D|045131766 015447241 +000000450 000980416 000987110 D|002823466 049783432 +000000451 000021288 000025500 D|013752673 015068225 +000000451 000045314 000028900 D|000506471 023795957 +000000451 000045650 000062750 D|037767204 001548462 +000000451 000047096 000075031 D|016713831 056358701 +000000451 000053384 000099750 D|075339519 045719364 +000000451 000080916 000101555 D|072992443 023761114 +000000451 000099669 000109476 D|074373611 071019895 +000000451 000115812 000117435 D|052550923 000919728 +000000451 000127200 000130661 D|006344793 023588862 +000000451 000154774 000140855 D|096885895 017267548 +000000451 000161886 000192699 D|072288994 069069540 +000000451 000174934 000218240 D|020353249 042768661 +000000451 000177593 000223489 D|026710800 075262562 +000000451 000187321 000250376 D|011066126 079764772 +000000451 000198650 000263616 D|025844207 040974514 +000000451 000214972 000267883 D|048152023 055467509 +000000451 000228347 000273293 D|009791020 042287411 +000000451 000248017 000288983 D|054629333 056356509 +000000451 000346442 000337468 D|081017569 022933335 +000000451 000361586 000344041 D|067020065 049059050 +000000451 000368731 000348495 D|028821421 045372020 +000000451 000372813 000365327 D|043609427 083975833 +000000451 000383825 000366025 D|020949206 022581684 +000000451 000393751 000371117 D|069354251 052763244 +000000451 000403887 000373673 D|087339907 018046127 +000000451 000409561 000380620 D|076561539 024553687 +000000451 000437970 000399969 D|008703953 004213103 +000000451 000441196 000412230 D|030492121 031350304 +000000451 000446526 000438076 D|003232727 014328054 +000000451 000478941 000501777 D|034845990 043431487 +000000451 000479725 000502110 D|050774750 053534579 +000000451 000522189 000506628 D|054637979 015930936 +000000451 000581446 000523816 D|098327546 096456765 +000000451 000583631 000528222 D|004585026 088124792 +000000451 000599583 000541740 D|047275336 006321966 +000000451 000623362 000598274 D|037255258 097565354 +000000451 000644117 000606671 D|038189661 042332246 +000000451 000657451 000645932 D|030434698 092693309 +000000451 000762111 000650582 D|051504955 056881172 +000000451 000775045 000673456 D|086729467 096093065 +000000451 000776058 000678188 D|034736470 075424524 +000000451 000796259 000679382 D|071383372 046864179 +000000451 000868376 000687358 D|043693000 031171835 +000000451 000879343 000715580 D|028343607 093256153 +000000451 000924406 000740430 D|024264705 045041188 +000000451 000927531 000817059 D|030042954 064064412 +000000451 000938743 000872321 D|012954135 062547638 +000000451 000979182 000874788 D|049213563 066775287 +000000451 000980752 000929091 D|034264177 070148431 +000000451 000994346 000929832 D|084727021 030490450 +000000452 000000093 000040029 D|095668867 091805769 +000000452 000071910 000094567 D|095985739 023046174 +000000452 000074303 000097421 D|014833176 059533916 +000000452 000087482 000101215 D|085493120 062196662 +000000452 000122646 000105814 D|054174680 017811992 +000000452 000125318 000127260 D|051950986 078474148 +000000452 000136390 000186679 D|044562150 059290216 +000000452 000206312 000202103 D|007064603 002073819 +000000452 000239257 000214864 D|086360439 034624080 +000000452 000278067 000255006 D|076212213 049658952 +000000452 000373331 000270300 D|005309684 093504438 +000000452 000390875 000294665 D|000070537 023428665 +000000452 000391665 000295043 D|065306782 037776831 +000000452 000431260 000297240 D|038740774 013137846 +000000452 000432577 000302973 D|070686172 016723525 +000000452 000442938 000312374 D|040250650 015807231 +000000452 000446898 000339281 D|079752246 066920662 +000000452 000454061 000365170 D|059871839 020085951 +000000452 000477830 000393150 D|085807316 054040398 +000000452 000493855 000398577 D|096797026 048142097 +000000452 000517035 000420295 D|000131590 065606248 +000000452 000534823 000462046 D|010407271 095340704 +000000452 000547340 000491174 D|034936122 049526881 +000000452 000581662 000535376 D|024134308 023260900 +000000452 000581782 000538408 D|034101703 085806188 +000000452 000591285 000554416 D|009718301 030183449 +000000452 000624111 000565694 D|035345904 066124198 +000000452 000625000 000579225 D|051080791 087357909 +000000452 000630745 000582763 D|080160229 045619892 +000000452 000635729 000588961 D|096456739 064673746 +000000452 000638805 000602443 D|035912600 071817603 +000000452 000649488 000607625 D|076558276 063829879 +000000452 000680233 000683272 D|032853176 057486868 +000000452 000696991 000691800 D|087420383 034747672 +000000452 000720339 000709055 D|016395032 046334972 +000000452 000758161 000719714 D|098266028 034112622 +000000452 000758924 000728193 D|046019295 072223132 +000000452 000760144 000747636 D|034501698 076492218 +000000452 000763934 000751365 D|071829658 026715778 +000000452 000775882 000776547 D|075662131 078121778 +000000452 000826587 000787965 D|001814674 000269834 +000000452 000836659 000804140 D|086738314 073964032 +000000452 000870722 000810735 D|052670779 020171730 +000000452 000877474 000823479 D|031877523 084416834 +000000452 000883196 000857281 D|000947046 031407725 +000000452 000892721 000859425 D|022710403 049920849 +000000452 000945064 000876891 D|052257378 048838383 +000000452 000948537 000891758 D|036924945 030373322 +000000452 000949909 000956646 D|043461189 053981191 +000000452 000973500 000992196 D|058944421 022692384 +000000453 000014293 000038076 D|050649143 009138466 +000000453 000037667 000064997 D|051742689 054038061 +000000453 000059978 000099680 D|035516563 067402593 +000000453 000069691 000115984 D|067406011 071820524 +000000453 000076603 000135986 D|077209007 026881187 +000000453 000086178 000162299 D|070007398 078283223 +000000453 000100061 000188661 D|009824335 016544158 +000000453 000129622 000216398 D|037075365 092399008 +000000453 000173093 000220392 D|097436186 072667776 +000000453 000173425 000272921 D|067543084 098292111 +000000453 000196999 000300855 D|065561040 006469301 +000000453 000204209 000345782 D|045692323 013589651 +000000453 000206756 000418680 D|055725897 007322998 +000000453 000224990 000442117 D|040838679 098617980 +000000453 000236920 000442775 D|070219145 039422923 +000000453 000252726 000472592 D|020050989 055056060 +000000453 000253979 000507119 D|048067271 049968119 +000000453 000254497 000549886 D|097440041 099922209 +000000453 000270359 000575456 D|050027189 073743596 +000000453 000310337 000586311 D|016670998 087461480 +000000453 000352780 000606278 D|043445781 035642294 +000000453 000353018 000623465 D|073439305 065963448 +000000453 000399461 000623612 D|042963010 034070317 +000000453 000418562 000652735 D|047447679 093210335 +000000453 000462026 000653427 D|009237763 099790732 +000000453 000471399 000682854 D|080496294 000597753 +000000453 000510303 000693325 D|018236348 009780871 +000000453 000529748 000696843 D|014201810 028457675 +000000453 000553306 000700497 D|052076755 077846557 +000000453 000584806 000703835 D|095219588 027566109 +000000453 000662959 000720072 D|054836032 077606717 +000000453 000670209 000723787 D|076209115 003733080 +000000453 000684193 000735174 D|086289145 029489710 +000000453 000692584 000743615 D|086978913 037748454 +000000453 000739231 000744702 D|061442943 006148831 +000000453 000761098 000745267 D|094977857 035101989 +000000453 000766154 000792487 D|036841187 003114938 +000000453 000787318 000834260 D|012652827 058378145 +000000453 000793060 000836915 D|092448946 023082985 +000000453 000823770 000851707 D|017623680 054988344 +000000453 000824799 000864246 D|070830305 097909706 +000000453 000855447 000885991 D|002890387 045617019 +000000453 000855965 000891717 D|061231337 093340148 +000000453 000856284 000904520 D|047781409 038154523 +000000453 000903387 000930892 D|015043101 039537746 +000000453 000905435 000934646 D|066034516 017356450 +000000453 000906451 000936207 D|025830532 073960703 +000000453 000912070 000940733 D|066616364 029506302 +000000453 000914322 000950214 D|043402747 047989209 +000000453 000963024 000980198 D|092217382 025958100 +000000454 000000540 000045331 D|095780532 032642596 +000000454 000009997 000055770 D|073459104 014127464 +000000454 000020813 000059906 D|008786327 042915963 +000000454 000021986 000059912 D|063303702 016791159 +000000454 000047368 000075493 D|018810843 007676064 +000000454 000064895 000102117 D|002931263 098979610 +000000454 000094269 000107728 D|014805219 034541347 +000000454 000134387 000130855 D|000892171 099493595 +000000454 000194129 000135216 D|039132675 077594447 +000000454 000218423 000138853 D|016806167 099842038 +000000454 000228627 000154424 D|049696033 018976861 +000000454 000238532 000161162 D|047358015 087181831 +000000454 000270015 000161933 D|045707301 086657342 +000000454 000293824 000167796 D|019798375 025864431 +000000454 000294845 000176318 D|069243311 003331605 +000000454 000310343 000198596 D|034395862 012812000 +000000454 000329734 000216063 D|027783898 018644979 +000000454 000360597 000225061 D|028904545 032181666 +000000454 000401699 000226690 D|087132993 071088527 +000000454 000423819 000246551 D|016437466 094462248 +000000454 000432560 000249203 D|095628861 095650686 +000000454 000434501 000265996 D|030163612 018656341 +000000454 000439145 000284045 D|003139514 018131123 +000000454 000454568 000291827 D|011099574 055618784 +000000454 000460694 000292789 D|072090504 030990020 +000000454 000469778 000308180 D|091965605 038384240 +000000454 000490623 000320679 D|098033687 049663569 +000000454 000501849 000384189 D|063027437 028918199 +000000454 000527762 000415883 D|082720135 061952801 +000000454 000560742 000436425 D|011095541 044117233 +000000454 000570418 000451085 D|072579308 009190052 +000000454 000578430 000467179 D|069603511 072264840 +000000454 000606429 000494795 D|010836007 091344108 +000000454 000614619 000495071 D|098645676 028567638 +000000454 000639405 000511259 D|073283733 080492841 +000000454 000642391 000638730 D|047339466 055335143 +000000454 000787032 000674525 D|085887025 030008749 +000000454 000789261 000679844 D|046331544 067059301 +000000454 000794451 000708346 D|099950094 035828660 +000000454 000820387 000709248 D|099222054 017942418 +000000454 000830787 000718201 D|069336333 095370500 +000000454 000843956 000764490 D|037953561 098438053 +000000454 000852092 000787735 D|013813398 049766462 +000000454 000876159 000796962 D|026743712 073472889 +000000454 000891483 000814110 D|057462275 059749271 +000000454 000892440 000859330 D|069804703 050095458 +000000454 000915297 000908894 D|087548915 082102370 +000000454 000916389 000962318 D|099958772 036547972 +000000454 000945027 000994747 D|025477158 002875588 +000000454 000989004 000996240 D|078489873 074572118 +000000455 000119376 000030560 D|050154452 082317659 +000000455 000120870 000030573 D|025709240 002698541 +000000455 000142436 000066543 D|008195292 072997422 +000000455 000153868 000137218 D|001483771 039826484 +000000455 000155871 000145509 D|015271057 051011118 +000000455 000168974 000150541 D|034815631 089762773 +000000455 000177741 000170349 D|080389547 003760919 +000000455 000184742 000180465 D|013298896 026481002 +000000455 000191987 000219142 D|092535788 089849437 +000000455 000205948 000220462 D|077328599 005228577 +000000455 000227905 000231826 D|037321978 013931957 +000000455 000270904 000237692 D|095014551 009902895 +000000455 000284548 000253305 D|051624289 006724951 +000000455 000317204 000299365 D|007675890 084664348 +000000455 000327431 000314667 D|063091914 091307595 +000000455 000335946 000314918 D|022237277 063436150 +000000455 000345223 000321806 D|084433549 066905620 +000000455 000352545 000336345 D|068099787 098815792 +000000455 000354135 000355451 D|052094979 094268775 +000000455 000370405 000381597 D|081798347 053908701 +000000455 000389697 000385861 D|080826436 036045428 +000000455 000392104 000410013 D|068612972 001986795 +000000455 000466035 000414173 D|001405980 049729041 +000000455 000470421 000423791 D|071180068 051954189 +000000455 000563830 000424672 D|000508655 022941220 +000000455 000571764 000450737 D|014600145 096494708 +000000455 000588602 000458904 D|059884824 067267241 +000000455 000644940 000487723 D|005379470 050021589 +000000455 000675425 000501943 D|071455418 080794235 +000000455 000677684 000508585 D|017486639 007783063 +000000455 000693281 000513669 D|071387436 034352615 +000000455 000707626 000513864 D|034706784 016085376 +000000455 000746127 000546824 D|097355240 046228019 +000000455 000755404 000556328 D|042970611 076195983 +000000455 000766413 000557047 D|015054747 034977600 +000000455 000779910 000575946 D|057714337 004645043 +000000455 000840631 000622823 D|061010958 043792983 +000000455 000841011 000643572 D|092558100 070685611 +000000455 000854082 000644974 D|007162683 075114315 +000000455 000865731 000648778 D|068906982 084807921 +000000455 000881582 000759223 D|044357545 073280349 +000000455 000883479 000801641 D|053759542 046071058 +000000455 000884275 000816518 D|037405732 012525514 +000000455 000909984 000860196 D|064406243 040590687 +000000455 000918769 000905858 D|095019942 094939323 +000000455 000919495 000930915 D|012918670 000787051 +000000455 000925490 000936528 D|044425153 013943989 +000000455 000925551 000963166 D|062357378 018305613 +000000455 000959322 000973304 D|032019895 097020394 +000000455 000963458 000994579 D|085829506 021712464 +000000456 000024738 000003634 D|060802478 066037488 +000000456 000064582 000049130 D|027013308 086794621 +000000456 000077598 000095199 D|052316316 043325911 +000000456 000138332 000113185 D|056827000 096915887 +000000456 000162665 000118452 D|084271094 084996802 +000000456 000189493 000125114 D|021072101 098990614 +000000456 000196210 000141434 D|096875354 086682959 +000000456 000207748 000206444 D|056287066 042264187 +000000456 000240311 000211601 D|009052728 023743167 +000000456 000282730 000239744 D|080940287 097020617 +000000456 000299412 000265013 D|028107589 088055715 +000000456 000318796 000298763 D|014582069 010240578 +000000456 000321639 000301072 D|043477661 059376506 +000000456 000329987 000319204 D|090890346 046471080 +000000456 000332549 000319919 D|022626815 056383531 +000000456 000356747 000330395 D|026963933 036415345 +000000456 000362981 000385057 D|045231204 051812376 +000000456 000364365 000386835 D|090108833 060378395 +000000456 000374841 000388367 D|059415395 042384214 +000000456 000399312 000399667 D|083989590 098097463 +000000456 000404791 000406454 D|050753332 095830846 +000000456 000447540 000429730 D|036788644 048509120 +000000456 000465300 000433684 D|068238193 057384591 +000000456 000472973 000509722 D|052222132 095272634 +000000456 000484871 000540407 D|028162092 045136621 +000000456 000498167 000561894 D|082941800 005411496 +000000456 000506801 000573666 D|091100337 012575289 +000000456 000545302 000574798 D|071448932 011703666 +000000456 000558334 000579411 D|015832387 032096135 +000000456 000570575 000594627 D|068403889 017032923 +000000456 000587229 000601685 D|094939635 032942944 +000000456 000606131 000639506 D|056863285 027939334 +000000456 000636986 000669917 D|073944354 045249956 +000000456 000643092 000683603 D|041331627 029147308 +000000456 000652980 000692266 D|019838978 095537614 +000000456 000662871 000710970 D|069457174 048585818 +000000456 000697298 000732963 D|068697526 043710750 +000000456 000703271 000738211 D|086077533 031239349 +000000456 000734394 000764985 D|098415264 011034008 +000000456 000744133 000788278 D|027609905 070267151 +000000456 000753049 000842206 D|064432705 010178261 +000000456 000779147 000880083 D|003919621 014039993 +000000456 000808548 000910916 D|014603452 090505972 +000000456 000810225 000929816 D|087556152 040322523 +000000456 000830599 000934672 D|093182233 011489978 +000000456 000834160 000955253 D|078161990 044883467 +000000456 000849963 000968040 D|097849942 057453853 +000000456 000875594 000974704 D|065772693 062001087 +000000456 000913721 000988078 D|026881819 094248816 +000000456 000986446 000994290 D|089533493 065149326 +000000457 000007302 000012572 D|062267256 017846059 +000000457 000043101 000014155 D|026350977 067454546 +000000457 000067082 000018861 D|092894217 027178139 +000000457 000151316 000071367 D|069273226 040343977 +000000457 000181431 000102388 D|016000211 030011343 +000000457 000186993 000111875 D|077802912 074119983 +000000457 000188183 000135494 D|036005474 057751251 +000000457 000207185 000188006 D|097015428 044730263 +000000457 000264764 000201907 D|061502767 047829697 +000000457 000272259 000211398 D|086187028 076510237 +000000457 000321157 000219424 D|039556792 058308462 +000000457 000424534 000228869 D|066930962 062831769 +000000457 000434892 000247309 D|093143189 041585882 +000000457 000488278 000260729 D|030825479 038850634 +000000457 000517075 000292463 D|017998964 063780893 +000000457 000524372 000292550 D|031225115 075975697 +000000457 000525118 000296724 D|077140638 084067818 +000000457 000542023 000344794 D|003424175 020531280 +000000457 000567321 000359668 D|090160942 065107900 +000000457 000572965 000378719 D|098083617 037346352 +000000457 000626431 000406272 D|045593974 043645548 +000000457 000627373 000422186 D|037068763 061342999 +000000457 000637202 000426355 D|027190631 078702048 +000000457 000638194 000443873 D|003636346 057247535 +000000457 000647204 000463073 D|068882182 067554828 +000000457 000662681 000470687 D|060247853 055337726 +000000457 000673052 000497974 D|076910860 002916757 +000000457 000677354 000555401 D|046434355 039715317 +000000457 000694960 000601529 D|059572405 039157063 +000000457 000695743 000622774 D|058756207 000690334 +000000457 000701748 000628509 D|016827506 085146071 +000000457 000721845 000631923 D|015313479 034964701 +000000457 000722948 000662429 D|096476683 092765290 +000000457 000723439 000662610 D|070278750 083279414 +000000457 000739800 000668422 D|054946661 045767463 +000000457 000743403 000680342 D|078559233 041460459 +000000457 000752853 000699604 D|065056223 015171717 +000000457 000765266 000706119 D|075324265 088505508 +000000457 000778449 000735932 D|054872363 030184589 +000000457 000778949 000754795 D|047996280 090000061 +000000457 000797625 000796831 D|034111377 077746409 +000000457 000807173 000800135 D|024610875 079060867 +000000457 000812002 000816199 D|002688442 099168118 +000000457 000861848 000829605 D|012224384 047093358 +000000457 000870347 000850466 D|041381364 004366118 +000000457 000886416 000852424 D|027982439 072235681 +000000457 000888530 000919903 D|056797576 052180579 +000000457 000908098 000942100 D|085888691 091582922 +000000457 000951200 000958471 D|017935837 034040349 +000000457 000993176 000974295 D|086242098 085336056 +000000458 000007888 000000269 D|076196669 094547071 +000000458 000010471 000026326 D|037619358 074498269 +000000458 000015270 000090933 D|095313186 015378367 +000000458 000016822 000127749 D|047636143 027230401 +000000458 000068629 000175204 D|000276703 094999211 +000000458 000089322 000183105 D|025369633 012770479 +000000458 000094144 000208798 D|000303270 098364257 +000000458 000098147 000229841 D|053905552 033783641 +000000458 000099368 000239385 D|066893462 025077148 +000000458 000122769 000252072 D|002848719 066375681 +000000458 000156827 000267357 D|007077741 072116337 +000000458 000185088 000283779 D|030602031 050113954 +000000458 000190329 000294911 D|049127170 037397070 +000000458 000190855 000319111 D|007958136 021586083 +000000458 000229414 000341525 D|063490331 046933310 +000000458 000240240 000356905 D|045322536 062240561 +000000458 000251500 000360578 D|002373331 004357119 +000000458 000269771 000361865 D|061492448 002819157 +000000458 000285365 000403690 D|072407827 073040089 +000000458 000321785 000407232 D|049195576 087153635 +000000458 000323660 000411955 D|077881807 070614307 +000000458 000330844 000416257 D|095474443 026696914 +000000458 000333265 000416878 D|011588314 046023165 +000000458 000345345 000437261 D|030098386 079830237 +000000458 000364215 000454431 D|068501924 017537129 +000000458 000374009 000454610 D|088902350 058178072 +000000458 000397801 000462565 D|081933524 054098582 +000000458 000424590 000496262 D|089646418 083740400 +000000458 000469348 000553448 D|098630650 064157152 +000000458 000478865 000581750 D|008289449 027014197 +000000458 000482563 000595640 D|098273889 035888732 +000000458 000530861 000665890 D|013860007 010055202 +000000458 000571541 000667673 D|005219333 043355836 +000000458 000610249 000699870 D|089911768 074650698 +000000458 000634602 000699978 D|051000776 077446484 +000000458 000702606 000700328 D|044059425 041588787 +000000458 000741723 000701777 D|085574060 089787220 +000000458 000772048 000713062 D|080005939 023608788 +000000458 000776592 000733915 D|004722968 034995875 +000000458 000806281 000757023 D|069133379 068152225 +000000458 000809516 000765137 D|033745367 061544698 +000000458 000827643 000767301 D|081808210 043671933 +000000458 000856688 000771971 D|081102724 013333479 +000000458 000883821 000794695 D|089008039 098601247 +000000458 000885651 000822317 D|051040054 070830156 +000000458 000885657 000837054 D|051974092 007171096 +000000458 000940915 000900899 D|006905908 073507924 +000000458 000978092 000953800 D|054337319 017244841 +000000458 000983153 000962090 D|021674190 041323710 +000000458 000993244 000999716 D|083937603 048604479 +000000459 000002674 000010420 D|054273671 070902633 +000000459 000025661 000010440 D|055561847 045273529 +000000459 000079882 000028486 D|007582924 054074746 +000000459 000085775 000047658 D|063143023 042813651 +000000459 000090020 000066799 D|070960781 094869194 +000000459 000120368 000070135 D|019139798 065213023 +000000459 000121784 000121995 D|060814515 071896572 +000000459 000138400 000122487 D|054422680 093670940 +000000459 000169076 000136457 D|064126337 035096594 +000000459 000170606 000148841 D|075003365 027162219 +000000459 000187210 000158596 D|053879281 013870112 +000000459 000192331 000159021 D|042227466 069158976 +000000459 000212182 000164909 D|076007186 095818750 +000000459 000224519 000208578 D|044118133 025987691 +000000459 000234157 000225762 D|051064302 072259833 +000000459 000235100 000240808 D|047616846 021064668 +000000459 000275791 000256098 D|000905964 021109530 +000000459 000280610 000268705 D|083682829 013052373 +000000459 000336956 000270106 D|099147806 035503270 +000000459 000374289 000273392 D|065699565 088156127 +000000459 000444464 000359455 D|061386723 031691752 +000000459 000451103 000371706 D|011301233 032682757 +000000459 000457791 000389478 D|031787884 026933233 +000000459 000476187 000398989 D|094552003 051568539 +000000459 000516634 000402265 D|028748455 034170678 +000000459 000541049 000511491 D|080814860 097534451 +000000459 000569278 000548725 D|031956062 045036304 +000000459 000570971 000552262 D|092769165 048863774 +000000459 000573289 000578053 D|070384336 046124462 +000000459 000581977 000620255 D|070491928 002977147 +000000459 000591466 000625241 D|095801677 053977861 +000000459 000600691 000633000 D|030255753 047162993 +000000459 000614055 000689301 D|094180817 005751978 +000000459 000629441 000694398 D|015512646 031034315 +000000459 000646539 000697030 D|066637693 019994316 +000000459 000661538 000721771 D|091632367 055387983 +000000459 000661740 000724056 D|055847421 019826432 +000000459 000718258 000743703 D|082828845 001515245 +000000459 000736817 000745464 D|088314666 028746095 +000000459 000774790 000761185 D|053738018 081174062 +000000459 000777016 000796914 D|066341540 016808432 +000000459 000825112 000804813 D|031787726 021671676 +000000459 000831932 000813714 D|098772809 057272835 +000000459 000860272 000827199 D|030345226 065810615 +000000459 000867922 000865814 D|024304546 091464950 +000000459 000879253 000909854 D|008620796 024408690 +000000459 000894484 000925248 D|023866595 061463800 +000000459 000946384 000938829 D|056065729 002559548 +000000459 000990647 000973743 D|079292526 048547912 +000000459 000999509 000991211 D|088672498 078956781 +000000460 000000513 000006417 D|086404396 036958849 +000000460 000019838 000012709 D|055509737 083029355 +000000460 000023460 000027820 D|011842918 007071667 +000000460 000027902 000056945 D|098308772 004610429 +000000460 000047394 000075432 D|023539705 052651381 +000000460 000063310 000110273 D|070569565 084422894 +000000460 000125673 000114901 D|086779023 089356383 +000000460 000141906 000151679 D|013939393 034844934 +000000460 000145055 000185439 D|015768704 007312325 +000000460 000162542 000202992 D|099450893 020059183 +000000460 000167931 000266947 D|017643695 063422044 +000000460 000173911 000267257 D|042985155 014751498 +000000460 000175403 000293005 D|023423367 011684545 +000000460 000219358 000306669 D|053468094 096730292 +000000460 000219426 000306863 D|025800849 020313813 +000000460 000243912 000321130 D|087431327 063236892 +000000460 000268515 000327075 D|016144939 043789487 +000000460 000276264 000361941 D|055365851 040700270 +000000460 000284309 000369241 D|004406171 014061678 +000000460 000313999 000387391 D|062892152 066699472 +000000460 000323556 000408528 D|036526023 099070026 +000000460 000330495 000416135 D|028293768 040990500 +000000460 000331819 000422786 D|065310508 007810598 +000000460 000373170 000424289 D|047977232 079998477 +000000460 000391195 000447058 D|037665493 073868652 +000000460 000404891 000477924 D|065358470 007065049 +000000460 000412711 000481187 D|025934618 088811241 +000000460 000421775 000493771 D|006938999 018233197 +000000460 000533241 000498990 D|045575071 021218517 +000000460 000549786 000512034 D|086859805 031051645 +000000460 000552861 000571861 D|076829455 035665553 +000000460 000555646 000587844 D|003441344 064715184 +000000460 000578162 000591108 D|057760627 074133331 +000000460 000598515 000611466 D|015062156 009307681 +000000460 000635130 000626818 D|086133570 019500487 +000000460 000653339 000628829 D|070416269 040238566 +000000460 000663833 000638338 D|049624802 048618140 +000000460 000676866 000651062 D|028321851 090136561 +000000460 000704436 000761872 D|023348486 003183408 +000000460 000743557 000765463 D|028407631 024846433 +000000460 000755167 000768353 D|097305361 017875257 +000000460 000762937 000814506 D|095126159 080504013 +000000460 000835970 000817622 D|061608835 047336612 +000000460 000841491 000850333 D|035997007 088339337 +000000460 000860837 000904207 D|008197005 014209465 +000000460 000869536 000907761 D|076123262 045773693 +000000460 000882879 000912993 D|027152396 073031575 +000000460 000902838 000921669 D|069991815 057448810 +000000460 000952205 000963664 D|040332231 047104728 +000000460 000999768 000990097 D|040692710 000344094 +000000461 000016799 000034146 D|062326824 005449885 +000000461 000093346 000086502 D|061203386 033992913 +000000461 000101557 000149196 D|051313060 019800273 +000000461 000127121 000160130 D|018705890 055987686 +000000461 000137346 000196327 D|071097066 005355635 +000000461 000157500 000197828 D|045260357 078846818 +000000461 000174573 000232047 D|047274919 013140650 +000000461 000181058 000242042 D|080630107 010273423 +000000461 000192522 000242549 D|051045308 032173889 +000000461 000215150 000297009 D|055779319 094120802 +000000461 000221377 000307547 D|044703393 012632911 +000000461 000229087 000314926 D|004559583 081202450 +000000461 000230472 000337023 D|053174648 038888428 +000000461 000230748 000350359 D|059613029 087311082 +000000461 000321470 000356564 D|006905967 090317730 +000000461 000336645 000371578 D|049818094 033178056 +000000461 000341158 000391055 D|029855973 082727779 +000000461 000341760 000396798 D|016243959 075663109 +000000461 000385770 000406879 D|027898636 059891920 +000000461 000404710 000409482 D|062700828 052350783 +000000461 000404919 000409955 D|029616943 037151631 +000000461 000439684 000482675 D|036764879 088797116 +000000461 000482350 000505102 D|051842773 021240340 +000000461 000492039 000546867 D|047850767 028934873 +000000461 000492610 000555808 D|072444645 022036326 +000000461 000492847 000597322 D|002654373 028221610 +000000461 000506316 000615549 D|012901988 048867454 +000000461 000515232 000620240 D|076853367 023226366 +000000461 000532071 000623341 D|040019376 052343157 +000000461 000566306 000665098 D|002621476 018127622 +000000461 000567894 000687227 D|094998327 088123524 +000000461 000597010 000700110 D|080086101 028238150 +000000461 000636961 000700813 D|075177543 006932205 +000000461 000649513 000735685 D|047550732 010311745 +000000461 000710289 000787296 D|048963250 041803991 +000000461 000763354 000787382 D|033578534 085286514 +000000461 000763660 000797002 D|078527215 058136083 +000000461 000769330 000851198 D|019409522 060325175 +000000461 000777983 000854170 D|085333248 053343250 +000000461 000795129 000862381 D|000528744 067771784 +000000461 000805739 000874988 D|084705830 020869580 +000000461 000830349 000892929 D|062562920 062658430 +000000461 000858876 000900483 D|038812030 081506546 +000000461 000865140 000916247 D|084294965 097240116 +000000461 000870517 000937185 D|019581415 051249236 +000000461 000880991 000937225 D|076126007 057530676 +000000461 000887870 000968912 D|077218729 026563187 +000000461 000893027 000977357 D|013648685 003551957 +000000461 000911032 000997365 D|024640306 087663998 +000000461 000948784 000999913 D|094168431 063270814 +000000462 000009145 000002795 D|027556975 018427058 +000000462 000031185 000011138 D|046452351 021167161 +000000462 000040398 000029263 D|018670735 053987126 +000000462 000067941 000049739 D|087461348 033846494 +000000462 000071111 000066768 D|039577240 079506865 +000000462 000073598 000090254 D|032278753 010915227 +000000462 000084249 000111549 D|079053490 086977801 +000000462 000112323 000115748 D|095644540 053384551 +000000462 000125360 000130681 D|055746481 052376037 +000000462 000137707 000145805 D|011947708 030750889 +000000462 000165664 000148145 D|073631038 013576755 +000000462 000221203 000151980 D|075921563 043702814 +000000462 000221512 000156837 D|001866630 088080591 +000000462 000236958 000162923 D|097735799 045797496 +000000462 000239476 000163843 D|011078908 077008912 +000000462 000275373 000169486 D|081742822 035297981 +000000462 000277095 000185216 D|073767770 064595207 +000000462 000282406 000186690 D|080932876 031692165 +000000462 000300707 000267216 D|057291175 052622743 +000000462 000328037 000318464 D|079690420 083112749 +000000462 000349591 000383915 D|048619050 032101428 +000000462 000353347 000406944 D|028241374 050188080 +000000462 000370829 000413314 D|059594832 048982994 +000000462 000383414 000437217 D|011247259 043038453 +000000462 000400100 000473856 D|073123000 002958049 +000000462 000414905 000477273 D|092634047 001010191 +000000462 000432199 000487170 D|051132167 089507731 +000000462 000460290 000489388 D|079117339 010625465 +000000462 000486145 000490049 D|072994613 005800359 +000000462 000490969 000491871 D|038172749 088284782 +000000462 000599038 000499749 D|033105367 091641989 +000000462 000604532 000546830 D|075235516 006905074 +000000462 000646734 000591421 D|021062481 063634172 +000000462 000665460 000614812 D|004607060 031538279 +000000462 000703489 000630804 D|089095447 097781041 +000000462 000726156 000632467 D|076906930 070772711 +000000462 000745775 000647306 D|089212047 078696961 +000000462 000759998 000651151 D|053134305 078537539 +000000462 000762842 000720270 D|028181942 050153711 +000000462 000766695 000737043 D|095476795 027839604 +000000462 000779570 000746911 D|065770451 087594251 +000000462 000793638 000787217 D|094237071 036686354 +000000462 000865736 000844301 D|006271220 093786180 +000000462 000875646 000846976 D|030130545 073586118 +000000462 000881963 000872984 D|072543678 042858252 +000000462 000897910 000914418 D|022035603 029131682 +000000462 000917917 000939871 D|085945763 066744324 +000000462 000918641 000963184 D|049764970 079196572 +000000462 000956679 000976393 D|046847326 018561861 +000000462 000962668 000978217 D|093560518 031153654 +000000463 000012784 000038129 D|079569684 023697940 +000000463 000017781 000066562 D|025423097 004873815 +000000463 000041179 000149251 D|096489590 048243389 +000000463 000053239 000170667 D|041308853 005712348 +000000463 000053677 000181734 D|097050627 061146424 +000000463 000074545 000239800 D|095087948 081380831 +000000463 000160732 000245226 D|002162279 086876761 +000000463 000167626 000248399 D|038456581 008224653 +000000463 000187044 000261762 D|037223173 073336785 +000000463 000190325 000262707 D|042153364 019748902 +000000463 000199566 000262983 D|073118591 041057405 +000000463 000200242 000272868 D|057976081 091209767 +000000463 000220968 000273306 D|041211298 021744668 +000000463 000223055 000287500 D|095952233 015439330 +000000463 000244851 000295610 D|042253586 050019974 +000000463 000250646 000302282 D|018052156 041758200 +000000463 000277052 000305873 D|076661580 023839761 +000000463 000341169 000310772 D|093242147 080487438 +000000463 000356880 000317776 D|054183237 059517687 +000000463 000371200 000319270 D|045983729 057582579 +000000463 000381135 000322155 D|042969591 046264565 +000000463 000412205 000327430 D|014511784 091974922 +000000463 000457586 000356241 D|027894280 094086114 +000000463 000457987 000357083 D|017092217 003740237 +000000463 000491541 000360922 D|034462809 095716170 +000000463 000535984 000460300 D|092520728 049483782 +000000463 000547334 000472587 D|043281861 044966410 +000000463 000554739 000483383 D|000872527 049402765 +000000463 000571111 000518650 D|075222041 090396906 +000000463 000610233 000530121 D|055662875 053285009 +000000463 000614435 000533099 D|006194719 048141937 +000000463 000651118 000566402 D|061887662 038847767 +000000463 000660323 000588005 D|007504769 049616106 +000000463 000664599 000602654 D|059931800 011372668 +000000463 000696212 000628382 D|015523810 021018072 +000000463 000707611 000723269 D|005013055 092126436 +000000463 000722990 000726000 D|014257440 073505756 +000000463 000730674 000745572 D|054289905 082400528 +000000463 000739027 000784450 D|050108053 039298179 +000000463 000752660 000825920 D|074541391 020347663 +000000463 000787770 000839245 D|086471301 092650801 +000000463 000800520 000843624 D|048592293 078700346 +000000463 000832848 000848623 D|053295657 076398812 +000000463 000848227 000860778 D|059811873 098579111 +000000463 000861841 000929939 D|022088648 001614420 +000000463 000878923 000953498 D|012950040 058538339 +000000463 000883114 000965765 D|045490360 072725113 +000000463 000887913 000980030 D|006072405 046461524 +000000463 000890462 000983622 D|071671861 091661188 +000000463 000988748 000989549 D|070913697 014556189 +000000464 000004522 000010185 D|056685595 035080242 +000000464 000058131 000021014 D|050357298 047261947 +000000464 000069699 000033525 D|075069727 084682466 +000000464 000074870 000088986 D|074777150 068390082 +000000464 000093101 000103126 D|024563088 090543054 +000000464 000134695 000107176 D|036668529 095682856 +000000464 000165459 000121376 D|005951319 058631374 +000000464 000172626 000125559 D|040159304 094583198 +000000464 000194036 000128133 D|094466259 099711615 +000000464 000208839 000153639 D|028966081 039837758 +000000464 000242240 000176347 D|019384774 036063001 +000000464 000278530 000208435 D|006692287 025518918 +000000464 000291199 000222568 D|045311213 038422622 +000000464 000309345 000228287 D|088021374 090578525 +000000464 000345423 000248550 D|065573899 010989380 +000000464 000349395 000251497 D|005173791 036732042 +000000464 000357988 000251827 D|065825470 080398386 +000000464 000380131 000259106 D|060672028 095732874 +000000464 000413251 000277742 D|096267837 066396900 +000000464 000438936 000315221 D|094469289 097954136 +000000464 000465547 000319425 D|003614733 060976756 +000000464 000479339 000334399 D|038732964 023281761 +000000464 000485404 000372283 D|050412084 094062965 +000000464 000488285 000429304 D|082881926 057166701 +000000464 000529675 000468436 D|081477954 074935992 +000000464 000532494 000518722 D|089005867 082121118 +000000464 000557179 000519546 D|058641624 087547583 +000000464 000565270 000528437 D|086929798 065879012 +000000464 000576106 000558315 D|019674337 069499782 +000000464 000594878 000576628 D|013062579 061918872 +000000464 000626610 000580334 D|090966337 077793761 +000000464 000627264 000641391 D|071703163 069259724 +000000464 000628608 000663978 D|089655005 049524438 +000000464 000634185 000697811 D|062869444 025919516 +000000464 000639312 000721872 D|075407306 048529940 +000000464 000642923 000729420 D|083061754 088564818 +000000464 000654279 000759526 D|058513972 051349099 +000000464 000738817 000774992 D|032697354 004924822 +000000464 000750546 000792880 D|016101049 058677665 +000000464 000754885 000811790 D|098171491 097409893 +000000464 000770863 000813457 D|074047018 071542782 +000000464 000791058 000829669 D|025644591 020258290 +000000464 000801334 000887493 D|069370863 029429213 +000000464 000831444 000899277 D|035068867 096067710 +000000464 000913247 000899677 D|006560345 012434598 +000000464 000929745 000905621 D|054972422 001913242 +000000464 000936255 000922371 D|073066996 089276592 +000000464 000966565 000925569 D|005751401 004451658 +000000464 000976905 000969023 D|077587696 033074379 +000000464 000994224 000970298 D|087701156 019612654 +000000465 000008375 000025809 D|066798419 084068175 +000000465 000009584 000030422 D|039357181 075562773 +000000465 000039215 000053712 D|003215202 071956433 +000000465 000041558 000057906 D|078295138 018016344 +000000465 000069427 000069449 D|062394110 058021530 +000000465 000102037 000096899 D|010931133 084564398 +000000465 000108943 000121498 D|092764886 029962622 +000000465 000120078 000132935 D|098796202 040207383 +000000465 000167424 000133395 D|012643055 037117570 +000000465 000214078 000134802 D|045211889 009233815 +000000465 000242126 000144952 D|008425483 095474547 +000000465 000261245 000149947 D|099913916 092196291 +000000465 000283628 000151360 D|092018106 088297896 +000000465 000299959 000154041 D|021375690 062878199 +000000465 000317937 000159386 D|014755633 065712935 +000000465 000348164 000179178 D|029623707 033333219 +000000465 000361180 000214228 D|049016733 081455580 +000000465 000384905 000251966 D|040783901 044633310 +000000465 000390679 000257685 D|078048670 027940452 +000000465 000400869 000306170 D|060027080 064079689 +000000465 000406417 000347966 D|000257610 067742660 +000000465 000407708 000364833 D|010088803 092648639 +000000465 000427527 000368225 D|027865137 057641676 +000000465 000436872 000377043 D|012985844 056387969 +000000465 000461846 000397904 D|079448428 077693650 +000000465 000470299 000409385 D|093927356 010120031 +000000465 000482077 000431102 D|081829952 045222014 +000000465 000540332 000437274 D|039932690 055083582 +000000465 000545374 000438447 D|024488690 070571372 +000000465 000564141 000442684 D|051327248 025790744 +000000465 000602900 000475510 D|094320684 040064132 +000000465 000626538 000493380 D|045325595 053739941 +000000465 000633973 000537992 D|037598051 084740188 +000000465 000636420 000601071 D|037056317 055969704 +000000465 000669731 000618659 D|048306095 017179619 +000000465 000674640 000625579 D|058406284 044583504 +000000465 000712665 000632365 D|092827846 045643701 +000000465 000729226 000648885 D|089506196 089962314 +000000465 000732657 000658933 D|029530114 037082118 +000000465 000741103 000683482 D|043566118 055310157 +000000465 000756720 000752315 D|023661025 070473852 +000000465 000760963 000757000 D|014766977 091687078 +000000465 000772404 000818516 D|040935426 004883543 +000000465 000794724 000831596 D|030559730 060143179 +000000465 000816983 000848239 D|043156457 033380663 +000000465 000841406 000862408 D|093304450 051850782 +000000465 000850229 000877547 D|028134885 046812148 +000000465 000850472 000879262 D|030327661 020318778 +000000465 000920474 000917679 D|015964541 004678849 +000000465 000937702 000981666 D|028523288 066359528 +000000466 000032238 000032117 D|072476010 082834809 +000000466 000043037 000074172 D|034659982 062061043 +000000466 000072524 000117919 D|021301729 068096142 +000000466 000089943 000128356 D|031270552 064128931 +000000466 000161132 000165818 D|013081811 065987696 +000000466 000166842 000209005 D|041874385 010627404 +000000466 000178766 000236956 D|033736672 039573346 +000000466 000183712 000256496 D|047912336 060664074 +000000466 000244171 000263238 D|095231172 078184856 +000000466 000276452 000274569 D|002755449 087127300 +000000466 000349268 000275401 D|098873520 078886097 +000000466 000360343 000320824 D|005742730 092594440 +000000466 000394400 000321356 D|063818189 064812800 +000000466 000436683 000321707 D|040066057 024535252 +000000466 000445581 000326777 D|018162972 053421251 +000000466 000492550 000355449 D|080357146 079876098 +000000466 000493567 000359751 D|027879123 065248520 +000000466 000500906 000362280 D|065177656 092391225 +000000466 000503125 000407398 D|037007861 081890628 +000000466 000519991 000419721 D|080287156 015218413 +000000466 000520700 000426561 D|029359841 053267266 +000000466 000520865 000443524 D|007801012 068428076 +000000466 000537450 000463588 D|080065102 085533732 +000000466 000545726 000479029 D|074593706 017190622 +000000466 000557967 000502995 D|073388225 041274311 +000000466 000562467 000537816 D|012650513 066612297 +000000466 000582995 000540646 D|090957222 089086436 +000000466 000590817 000543278 D|024982986 082548845 +000000466 000595382 000545485 D|034214131 016676682 +000000466 000599081 000604996 D|092237383 032187801 +000000466 000656388 000607771 D|008716642 039983176 +000000466 000726634 000617884 D|039385595 064557746 +000000466 000728135 000631508 D|016225358 062652126 +000000466 000745206 000647036 D|012472183 033826624 +000000466 000759492 000654105 D|087233566 007025114 +000000466 000761557 000684480 D|032968886 028099739 +000000466 000763618 000698750 D|011819763 084568222 +000000466 000773598 000720936 D|023946793 062687666 +000000466 000774489 000749513 D|087625722 091926552 +000000466 000786398 000772136 D|098546785 095324487 +000000466 000786743 000785269 D|034284847 090212174 +000000466 000799683 000789518 D|076364334 048748754 +000000466 000837563 000806290 D|047485663 023884459 +000000466 000841044 000834235 D|081299031 055964554 +000000466 000851017 000852713 D|091457424 061619024 +000000466 000863952 000873832 D|080963953 040476397 +000000466 000878304 000890677 D|003396029 026899123 +000000466 000899833 000891505 D|002821441 025816558 +000000466 000933435 000950832 D|036529733 006094888 +000000466 000967934 000987452 D|072863149 088315610 +000000467 000000135 000006637 D|045689486 055488928 +000000467 000012788 000018891 D|097337410 046427746 +000000467 000015711 000027717 D|007712561 035473055 +000000467 000018050 000033593 D|082829314 015689201 +000000467 000034149 000035073 D|089244906 031245325 +000000467 000051937 000045371 D|058517459 026642699 +000000467 000065415 000078408 D|069136977 011538763 +000000467 000071052 000129486 D|056219793 019969253 +000000467 000095003 000145864 D|077309308 010978623 +000000467 000115579 000146232 D|021584402 099563404 +000000467 000152614 000211666 D|067783316 096080282 +000000467 000162671 000218544 D|016210672 036097416 +000000467 000214348 000244270 D|080809715 081603062 +000000467 000240440 000245369 D|040006069 069446442 +000000467 000258423 000274394 D|063935619 038868386 +000000467 000269498 000289668 D|069455235 045806665 +000000467 000276957 000328615 D|026113474 016514241 +000000467 000277760 000328708 D|058579663 011128114 +000000467 000289838 000357895 D|074429489 002710429 +000000467 000312820 000366027 D|089424650 061650134 +000000467 000327010 000394387 D|011999399 045717424 +000000467 000366352 000419957 D|023939848 054127595 +000000467 000366380 000440633 D|063491085 025970746 +000000467 000406980 000465603 D|061984651 004984338 +000000467 000429943 000529026 D|002949887 000211225 +000000467 000450113 000596937 D|088814044 069384472 +000000467 000465532 000635748 D|041956000 022320422 +000000467 000476252 000652033 D|045918647 082719756 +000000467 000506268 000703168 D|099798451 028344237 +000000467 000515309 000729573 D|077667654 094499512 +000000467 000543852 000729983 D|042261906 013977480 +000000467 000546563 000745757 D|013249814 019555948 +000000467 000565936 000776605 D|052417949 013575743 +000000467 000640096 000780124 D|023935086 020429034 +000000467 000653974 000788540 D|051634757 034381349 +000000467 000681433 000803078 D|025654863 021452591 +000000467 000707875 000811244 D|066365186 003940051 +000000467 000721106 000818650 D|037599067 030110553 +000000467 000741455 000822790 D|045894882 049349853 +000000467 000777493 000836453 D|044161593 097702127 +000000467 000780738 000850716 D|089760476 067244012 +000000467 000803194 000892963 D|056904168 096794807 +000000467 000812912 000919221 D|010667997 013391564 +000000467 000813406 000925468 D|092147325 040134477 +000000467 000817186 000955487 D|017558004 049111472 +000000467 000818111 000956571 D|062870394 097974078 +000000467 000830407 000962858 D|095224724 018595482 +000000467 000831468 000964893 D|009028474 016335874 +000000467 000946088 000981626 D|007504915 009454573 +000000467 000975951 000995539 D|094916552 004811987 +000000468 000000632 000007688 D|046548297 034451317 +000000468 000030906 000011332 D|015725977 011543701 +000000468 000036825 000011512 D|081360553 070335131 +000000468 000055505 000033060 D|060836682 032440677 +000000468 000067187 000038254 D|026542798 076100209 +000000468 000079355 000063138 D|029200235 072796951 +000000468 000086969 000105258 D|096833362 096155569 +000000468 000101177 000105474 D|053478121 056951038 +000000468 000168287 000117683 D|092837297 034352794 +000000468 000206890 000161648 D|046377874 097139820 +000000468 000230012 000186464 D|065238579 073030088 +000000468 000236337 000194934 D|090093929 027927933 +000000468 000250747 000221258 D|049837794 049725688 +000000468 000281958 000254496 D|081657574 034472119 +000000468 000297704 000327252 D|060616218 071954101 +000000468 000323226 000353589 D|058083280 015518659 +000000468 000345391 000358834 D|091393695 056609081 +000000468 000374092 000366432 D|022984549 082581091 +000000468 000377354 000379136 D|056906640 088607064 +000000468 000383662 000388894 D|098779071 010177976 +000000468 000402879 000396338 D|063687568 047582208 +000000468 000412874 000406271 D|032354151 080160332 +000000468 000419441 000414904 D|088699821 078908716 +000000468 000441818 000415913 D|019974788 014122673 +000000468 000454245 000446088 D|082245653 016177913 +000000468 000464329 000455992 D|092213816 074920021 +000000468 000478842 000491284 D|035693770 073665891 +000000468 000487553 000526058 D|034348710 094542298 +000000468 000501102 000528683 D|010954700 056919453 +000000468 000508577 000533552 D|081408066 025775128 +000000468 000520135 000535201 D|035891410 053468370 +000000468 000522419 000540317 D|092452389 035901633 +000000468 000558359 000542420 D|041152031 060657035 +000000468 000563185 000608146 D|095653876 020818055 +000000468 000612100 000614514 D|053577074 099476487 +000000468 000643513 000620190 D|074154166 085429181 +000000468 000661112 000628157 D|024842666 052888990 +000000468 000683538 000650667 D|084501810 034432552 +000000468 000707442 000655562 D|061787281 016900238 +000000468 000722195 000657610 D|075324116 053228760 +000000468 000763567 000769346 D|043237581 007139147 +000000468 000823842 000811161 D|064394036 039606448 +000000468 000859893 000817117 D|077688790 093040444 +000000468 000864480 000859456 D|084545980 044791864 +000000468 000869086 000882562 D|005795185 069484192 +000000468 000888716 000937620 D|097067516 076917714 +000000468 000912349 000939614 D|098788245 015985812 +000000468 000916289 000966354 D|068108063 010504480 +000000468 000943534 000983659 D|028780349 088133980 +000000468 000946245 000995124 D|030427329 026890338 +000000469 000004268 000009933 D|013267157 035497290 +000000469 000014452 000036889 D|074466748 024810118 +000000469 000033749 000043360 D|095181786 029951148 +000000469 000039015 000049694 D|018936330 072827541 +000000469 000055800 000062072 D|059898799 095859816 +000000469 000070167 000074699 D|057431518 036052171 +000000469 000074008 000114516 D|086043728 079635529 +000000469 000122593 000190251 D|047689134 035192501 +000000469 000125366 000228787 D|025187245 086600879 +000000469 000134761 000281701 D|011154796 024944484 +000000469 000168471 000282749 D|064335701 050176957 +000000469 000214947 000300442 D|053591386 010293140 +000000469 000250700 000320740 D|052175221 022466043 +000000469 000257393 000320947 D|006735182 026832839 +000000469 000281028 000364653 D|051383982 076858162 +000000469 000361650 000416431 D|089749315 053007115 +000000469 000375257 000422851 D|065398248 069987475 +000000469 000402743 000436265 D|038244950 048268979 +000000469 000452652 000439526 D|041462660 044755458 +000000469 000477187 000444504 D|023957226 054663005 +000000469 000484724 000452653 D|023157561 075823615 +000000469 000484997 000466035 D|018776173 009961298 +000000469 000525020 000467984 D|027344505 041911662 +000000469 000542435 000491940 D|015059684 071512167 +000000469 000548909 000511655 D|078008852 058220451 +000000469 000597554 000512729 D|063794514 077693811 +000000469 000602802 000534317 D|067823092 001677941 +000000469 000630126 000535395 D|089646690 064843896 +000000469 000634794 000548557 D|041564592 023067234 +000000469 000643560 000576787 D|023359753 019211670 +000000469 000656058 000593754 D|084924677 016067270 +000000469 000656298 000622131 D|092087025 074762634 +000000469 000657036 000622283 D|089121133 010743216 +000000469 000708913 000627087 D|095735024 044639553 +000000469 000714641 000640680 D|067468143 068207301 +000000469 000723374 000646635 D|043685774 044387683 +000000469 000740050 000674977 D|024082613 082927297 +000000469 000773852 000687183 D|055944042 001076322 +000000469 000780933 000691563 D|018645232 075951516 +000000469 000805234 000721662 D|058590045 008127395 +000000469 000813496 000758445 D|029338823 007207892 +000000469 000814173 000853110 D|018119887 020500089 +000000469 000849141 000871772 D|021454702 037329258 +000000469 000865822 000875813 D|059612967 029839784 +000000469 000901664 000894855 D|031906838 065617425 +000000469 000941457 000895510 D|088262453 062335670 +000000469 000941677 000918939 D|026163390 083715854 +000000469 000943015 000924217 D|092879576 067817080 +000000469 000947852 000930726 D|071997310 078738859 +000000469 000972475 000960197 D|098403564 054530264 +000000470 000061969 000021424 D|067567988 084437872 +000000470 000078679 000038072 D|003624879 079929660 +000000470 000090994 000060629 D|082046253 042866435 +000000470 000137616 000146571 D|004383534 019608635 +000000470 000141423 000159925 D|058362642 001528019 +000000470 000143753 000167244 D|056533502 007192792 +000000470 000161757 000177345 D|011274116 059997395 +000000470 000164385 000210101 D|016174767 033421888 +000000470 000199988 000226921 D|059307333 052774038 +000000470 000206216 000304022 D|043252683 001819898 +000000470 000267394 000328311 D|022242497 083023118 +000000470 000269624 000328802 D|065862621 070668961 +000000470 000299804 000332291 D|064358673 067339621 +000000470 000312733 000334673 D|065798917 036339134 +000000470 000317925 000367393 D|016228631 022742177 +000000470 000333441 000371766 D|089330172 055593792 +000000470 000415359 000394283 D|069372382 011503086 +000000470 000417863 000401270 D|076194010 087655909 +000000470 000455560 000420417 D|090661928 084557319 +000000470 000455970 000421218 D|073733032 012962295 +000000470 000470228 000452410 D|058271429 088629862 +000000470 000479704 000501933 D|085433559 060601462 +000000470 000501768 000566375 D|018072837 091536225 +000000470 000545596 000624143 D|068395504 002947593 +000000470 000548091 000624818 D|033212541 077574969 +000000470 000551541 000642403 D|042698539 030161146 +000000470 000575402 000660646 D|028837224 090749437 +000000470 000595016 000665805 D|054207355 095364310 +000000470 000596387 000671782 D|010386070 066724391 +000000470 000621978 000676959 D|085728334 085933383 +000000470 000630031 000683788 D|082404463 047535410 +000000470 000632429 000706795 D|019916139 026910059 +000000470 000658039 000730630 D|046314649 044498674 +000000470 000712384 000778942 D|094399295 089021483 +000000470 000723732 000779048 D|087093319 073377508 +000000470 000737657 000828420 D|039299130 025484148 +000000470 000749862 000840374 D|098211230 078796824 +000000470 000769442 000841593 D|016830260 018156943 +000000470 000771061 000846080 D|004300897 024493019 +000000470 000774344 000851529 D|036875928 074330888 +000000470 000811190 000878271 D|089613876 046478017 +000000470 000822517 000895355 D|000373417 068255138 +000000470 000836153 000912501 D|035214067 032986759 +000000470 000845330 000914678 D|089301957 082827153 +000000470 000856494 000934053 D|042986578 091119830 +000000470 000913049 000935049 D|028763689 049817963 +000000470 000944815 000942428 D|070909526 019697013 +000000470 000946392 000972586 D|089349624 014468519 +000000470 000974392 000981177 D|069697871 072949819 +000000470 000974994 000996218 D|095510981 058085023 +000000471 000014682 000005475 D|043543756 071221722 +000000471 000021847 000066194 D|009158133 091456984 +000000471 000027072 000079678 D|006751487 021046515 +000000471 000033057 000108952 D|035369629 023342918 +000000471 000063214 000118532 D|031042977 049869832 +000000471 000074335 000172452 D|090479936 005480880 +000000471 000100415 000192441 D|049394778 046056420 +000000471 000160869 000225478 D|031271476 037528162 +000000471 000173433 000239231 D|057338950 019948646 +000000471 000191596 000279272 D|088753171 017996599 +000000471 000196738 000280657 D|062106572 040897094 +000000471 000198272 000287994 D|061566784 022633379 +000000471 000200028 000292228 D|087490027 063290276 +000000471 000203183 000297686 D|090215430 089132142 +000000471 000221288 000303775 D|075754804 073385319 +000000471 000232265 000323680 D|025957698 060784874 +000000471 000243532 000329826 D|002972249 075182463 +000000471 000284394 000346141 D|085040969 018571403 +000000471 000286599 000363060 D|013775048 071326592 +000000471 000295836 000385446 D|095130649 002002146 +000000471 000378445 000392379 D|084521187 049800262 +000000471 000382869 000396619 D|071302369 013023145 +000000471 000399248 000421188 D|038356243 066022900 +000000471 000420341 000432008 D|050238219 013937533 +000000471 000442394 000433741 D|070349154 079624737 +000000471 000450165 000452806 D|056602319 083136791 +000000471 000453775 000464536 D|068108921 008511540 +000000471 000473679 000472247 D|059179646 062509508 +000000471 000616073 000475967 D|079137422 092535270 +000000471 000618820 000477407 D|026086657 056091578 +000000471 000645618 000503241 D|003719060 075595612 +000000471 000657353 000521595 D|045404101 082159465 +000000471 000699864 000527587 D|064182767 069852134 +000000471 000718746 000566301 D|023710687 002838011 +000000471 000781491 000566406 D|045156699 049628387 +000000471 000798716 000586242 D|021147107 034546910 +000000471 000802112 000604062 D|056215837 021949760 +000000471 000806717 000666449 D|048709889 041499131 +000000471 000812397 000734741 D|021755582 003514436 +000000471 000833530 000748086 D|045605953 099342066 +000000471 000849845 000775957 D|090888476 014037621 +000000471 000884506 000813259 D|051474180 072038353 +000000471 000914220 000836363 D|073348633 080070507 +000000471 000918977 000883637 D|074340550 046514938 +000000471 000926880 000938738 D|070554430 046019405 +000000471 000952573 000940415 D|060963929 047370008 +000000471 000967380 000943342 D|002945945 016499051 +000000471 000967602 000966444 D|064243379 077808869 +000000471 000967833 000986294 D|087875496 091462424 +000000471 000973774 000996067 D|004922407 051648088 +000000472 000002836 000000811 D|045998184 088754659 +000000472 000009586 000017279 D|092686824 078367754 +000000472 000013971 000022697 D|051774394 060342976 +000000472 000027609 000029337 D|015983370 074763970 +000000472 000048485 000033565 D|031054659 009372471 +000000472 000074584 000062922 D|092456718 031940652 +000000472 000139095 000063372 D|009603104 016505575 +000000472 000149586 000066904 D|043120374 092676714 +000000472 000154428 000121911 D|013659846 079330316 +000000472 000180500 000132027 D|056592170 010814630 +000000472 000182971 000181080 D|085293829 087633401 +000000472 000192772 000196244 D|085851177 037152169 +000000472 000212551 000199378 D|068883769 085153637 +000000472 000223819 000214404 D|064881683 044706936 +000000472 000232060 000215446 D|080882429 047795012 +000000472 000256691 000297512 D|042797735 093500464 +000000472 000316069 000301964 D|007429691 015001170 +000000472 000322171 000371252 D|034915300 063596391 +000000472 000343033 000395460 D|008286412 074638038 +000000472 000371173 000423226 D|033808836 082184246 +000000472 000415818 000462638 D|041268715 010124090 +000000472 000463437 000463006 D|018074031 018077977 +000000472 000467701 000480134 D|008007690 007878369 +000000472 000502505 000493993 D|000737448 072829595 +000000472 000510691 000504487 D|059327972 097036836 +000000472 000517420 000548002 D|062414265 010518164 +000000472 000579880 000553387 D|033077312 078974412 +000000472 000583124 000591610 D|032876530 073314091 +000000472 000589370 000617303 D|000927261 028298630 +000000472 000624041 000617862 D|047212656 067169127 +000000472 000633941 000619701 D|053299710 083977349 +000000472 000657424 000639271 D|024672429 093095531 +000000472 000660776 000640075 D|013402782 077873613 +000000472 000696434 000641338 D|079286027 018972167 +000000472 000718945 000652712 D|061465073 034001087 +000000472 000719452 000669836 D|053772682 004452892 +000000472 000773287 000686438 D|099208246 027612167 +000000472 000783833 000725858 D|071100460 047314132 +000000472 000786668 000750149 D|057247604 091772816 +000000472 000815824 000797148 D|036843171 039061064 +000000472 000833070 000804736 D|016427924 014492033 +000000472 000857716 000809260 D|011664676 067412779 +000000472 000874118 000851651 D|054504769 058228191 +000000472 000874316 000854454 D|019767675 099366902 +000000472 000876590 000870588 D|037209444 029505233 +000000472 000892006 000896346 D|021325785 028615652 +000000472 000898369 000913408 D|024742302 029587624 +000000472 000910257 000935158 D|070485241 058656261 +000000472 000926526 000936799 D|023750916 050811242 +000000472 000999670 000938195 D|091258513 099467830 +000000473 000006354 000010047 D|033945596 041816694 +000000473 000009172 000036257 D|051306630 009801988 +000000473 000041290 000051104 D|062637279 062894489 +000000473 000116371 000096336 D|056841728 005727419 +000000473 000131162 000164870 D|024989277 035203135 +000000473 000132650 000171184 D|093208776 076871009 +000000473 000133779 000254124 D|000125592 038416493 +000000473 000180290 000255824 D|080046053 096348974 +000000473 000194023 000262210 D|075964989 020931547 +000000473 000225333 000278454 D|094073789 043201830 +000000473 000252829 000297467 D|071663412 051900284 +000000473 000254350 000377924 D|040766783 029128784 +000000473 000295952 000394740 D|049255773 026386919 +000000473 000314427 000402814 D|060910265 085014791 +000000473 000324051 000406746 D|021634185 083764695 +000000473 000333415 000428487 D|072093730 045803251 +000000473 000352645 000438792 D|025276120 046709434 +000000473 000376693 000440658 D|023225456 021803604 +000000473 000402025 000476552 D|089003710 058412916 +000000473 000416293 000484474 D|068955252 075459295 +000000473 000455757 000497665 D|002767372 034188197 +000000473 000484309 000500199 D|016992790 069344377 +000000473 000486708 000512471 D|037289275 052500916 +000000473 000492810 000532564 D|096309112 018292474 +000000473 000502361 000537456 D|000916282 031404572 +000000473 000550166 000545172 D|015341282 086217187 +000000473 000568796 000549367 D|000736407 048817504 +000000473 000617046 000575718 D|091685901 084913755 +000000473 000689792 000596479 D|049517256 051096088 +000000473 000703812 000604567 D|059519438 013235656 +000000473 000751541 000605052 D|098568792 073582382 +000000473 000785271 000610998 D|073516234 025573713 +000000473 000794497 000650703 D|000876838 084107070 +000000473 000803826 000684683 D|058804721 043750113 +000000473 000811850 000729757 D|011027879 042752254 +000000473 000819156 000737945 D|005896549 048309108 +000000473 000824244 000768924 D|036866789 077756630 +000000473 000825352 000780737 D|087751358 027714924 +000000473 000833288 000788850 D|068217006 041730096 +000000473 000855082 000819738 D|024279017 018469735 +000000473 000862413 000835548 D|076841841 098090344 +000000473 000885246 000844935 D|011418101 098394384 +000000473 000901979 000870147 D|088519697 065530958 +000000473 000920770 000908017 D|077159997 074236880 +000000473 000943591 000910102 D|050782600 089183189 +000000473 000949618 000922268 D|062785073 043501118 +000000473 000954614 000952420 D|078997813 043271283 +000000473 000956605 000952600 D|006719918 057553840 +000000473 000988882 000980411 D|069935609 004535235 +000000473 000989956 000993367 D|028131971 099849702 +000000474 000062310 000017907 D|038577222 019648423 +000000474 000088924 000022621 D|000090280 069960417 +000000474 000114156 000029156 D|066163052 024803221 +000000474 000171083 000049970 D|081681087 041765749 +000000474 000172182 000068246 D|033247340 073911536 +000000474 000173131 000094868 D|029210912 011267460 +000000474 000176052 000105888 D|081075908 083670213 +000000474 000208642 000111160 D|015131699 091297654 +000000474 000254784 000116165 D|051169028 009815728 +000000474 000258795 000126501 D|020034493 071674494 +000000474 000289738 000128452 D|025966018 089408295 +000000474 000305193 000142213 D|027458482 035415014 +000000474 000310557 000194022 D|074015787 065275664 +000000474 000323456 000231421 D|000437462 026644314 +000000474 000327355 000247495 D|054026032 053071775 +000000474 000334783 000256857 D|074436347 047976819 +000000474 000369456 000265655 D|001718156 005100392 +000000474 000385424 000294110 D|018029885 071814897 +000000474 000389231 000335159 D|069517419 079040321 +000000474 000398313 000376654 D|013993018 049759130 +000000474 000432648 000386350 D|022991280 067480863 +000000474 000442498 000397360 D|010459687 063384553 +000000474 000519492 000402587 D|066329145 093041552 +000000474 000521530 000403087 D|020106325 018166652 +000000474 000524463 000462561 D|018390543 045241777 +000000474 000526929 000495194 D|011654966 055312469 +000000474 000600820 000496098 D|023141354 038593701 +000000474 000602668 000496594 D|051947129 041350885 +000000474 000605001 000560536 D|024606025 037511031 +000000474 000608295 000580644 D|080581275 042429200 +000000474 000648060 000620242 D|061237492 006675825 +000000474 000665529 000637446 D|065399561 075324888 +000000474 000679302 000670623 D|074263053 084583055 +000000474 000682019 000687167 D|020855624 056806334 +000000474 000730387 000764421 D|035978772 082348251 +000000474 000733427 000785646 D|037839281 028439977 +000000474 000789086 000796914 D|072380499 026529412 +000000474 000809723 000812888 D|087879019 068660500 +000000474 000820044 000815572 D|008337307 058918211 +000000474 000832141 000848914 D|015277011 000353924 +000000474 000836163 000855874 D|071747583 054993030 +000000474 000851786 000875887 D|005155521 024673235 +000000474 000860178 000897101 D|009474960 022390964 +000000474 000863367 000897478 D|027516013 036177757 +000000474 000874490 000908186 D|049710816 024326916 +000000474 000886063 000915737 D|059948030 069201912 +000000474 000914274 000956898 D|047780698 090584532 +000000474 000947785 000974769 D|041892620 041525090 +000000474 000955510 000995707 D|009937112 074776685 +000000474 000998997 000998676 D|040204398 035827406 +000000475 000020325 000012046 D|060999183 003973065 +000000475 000033915 000025452 D|038957565 054131551 +000000475 000113680 000042973 D|005622003 099420131 +000000475 000115482 000084861 D|007628547 005039229 +000000475 000142114 000119146 D|066040509 045664523 +000000475 000170001 000132895 D|099008324 056361730 +000000475 000188862 000138409 D|025896075 044017486 +000000475 000211520 000157390 D|079891048 053818208 +000000475 000216874 000172858 D|054841060 021125118 +000000475 000231650 000183390 D|094785768 006593391 +000000475 000271485 000191357 D|085760190 019326051 +000000475 000296608 000197903 D|038099357 011456912 +000000475 000321679 000207273 D|042415385 042144377 +000000475 000333495 000257408 D|007473702 073076166 +000000475 000364761 000258194 D|018838436 023424726 +000000475 000376375 000282864 D|099636457 092790851 +000000475 000405532 000316106 D|020860215 035336021 +000000475 000427483 000355866 D|058811494 066419502 +000000475 000453195 000390553 D|012202520 009388538 +000000475 000471716 000394736 D|004209973 089598087 +000000475 000490215 000422861 D|093617018 053140004 +000000475 000518676 000450899 D|031565038 012329604 +000000475 000546200 000524337 D|023918886 061396571 +000000475 000552259 000570422 D|080806737 045968343 +000000475 000575064 000598047 D|034783662 096932240 +000000475 000583502 000605735 D|080559875 015774017 +000000475 000594121 000624988 D|084355999 019541631 +000000475 000606561 000641349 D|041521834 000273477 +000000475 000642653 000646183 D|049166496 025478270 +000000475 000665509 000647962 D|073544424 077001042 +000000475 000692995 000701395 D|088662982 092353202 +000000475 000699166 000743013 D|093371853 025354128 +000000475 000747395 000748085 D|065664552 039407844 +000000475 000757006 000766069 D|045607895 041921032 +000000475 000757854 000770615 D|024278659 017395036 +000000475 000782948 000779911 D|081382574 058491120 +000000475 000794791 000800821 D|073828347 066313927 +000000475 000811402 000822366 D|088753019 002692327 +000000475 000817444 000860625 D|084592489 009723780 +000000475 000819937 000886092 D|075201010 004776936 +000000475 000820029 000910353 D|015550954 074929256 +000000475 000823096 000919178 D|044272570 061033995 +000000475 000823755 000938154 D|042268805 042914691 +000000475 000832160 000944712 D|054342097 083225266 +000000475 000864264 000957382 D|056269376 016226147 +000000475 000876625 000960362 D|094865687 064107359 +000000475 000902553 000962057 D|039856470 050016526 +000000475 000908343 000973538 D|082938366 078741962 +000000475 000923322 000978510 D|037521087 086792098 +000000475 000981204 000997069 D|074062473 031904036 +000000476 000012106 000031474 D|010643545 078111173 +000000476 000030432 000033798 D|008058365 008519585 +000000476 000044388 000042514 D|016229699 031925435 +000000476 000056274 000046602 D|026774304 009479592 +000000476 000065747 000074791 D|004964498 057163710 +000000476 000067916 000076994 D|088685667 080141137 +000000476 000069510 000080098 D|021646883 035338488 +000000476 000085292 000097578 D|063414935 086254807 +000000476 000124154 000115317 D|058643674 055162382 +000000476 000137488 000167601 D|011685019 049712815 +000000476 000138643 000173530 D|023589450 063611038 +000000476 000148492 000229068 D|063577994 038124676 +000000476 000181056 000268697 D|015971995 060686181 +000000476 000200134 000287965 D|069078257 009791168 +000000476 000201843 000298540 D|049302179 075725026 +000000476 000215058 000331383 D|016391308 034858106 +000000476 000255422 000333341 D|013876027 015426887 +000000476 000264436 000356424 D|000633448 058555553 +000000476 000313736 000357478 D|026117189 093557982 +000000476 000445001 000378521 D|030311223 044893063 +000000476 000461222 000394628 D|035452434 007366792 +000000476 000536895 000396761 D|088004832 072145653 +000000476 000596097 000431582 D|093298260 088726881 +000000476 000646755 000433238 D|091802892 056297068 +000000476 000655601 000441105 D|057511257 033491954 +000000476 000678406 000522556 D|001004601 009729328 +000000476 000690544 000535495 D|003177418 023998872 +000000476 000705330 000540300 D|019543529 080350180 +000000476 000706823 000584007 D|089647256 010301293 +000000476 000707507 000636259 D|083062004 044527708 +000000476 000728685 000668417 D|017571601 014358359 +000000476 000730784 000691189 D|065799136 001229145 +000000476 000752660 000714358 D|053764922 034791451 +000000476 000759135 000735391 D|008228325 033272927 +000000476 000792519 000736653 D|083332557 082185610 +000000476 000812821 000738398 D|082662985 032722840 +000000476 000822572 000781947 D|073841082 015673403 +000000476 000831415 000793573 D|022069893 048219638 +000000476 000868992 000800414 D|016391587 088761592 +000000476 000874526 000803740 D|090856924 082378598 +000000476 000888822 000803897 D|066622685 083751295 +000000476 000891474 000807967 D|093259214 003921289 +000000476 000898591 000827038 D|004512019 075091055 +000000476 000909038 000832487 D|000021228 066143569 +000000476 000915042 000876454 D|088935195 091436418 +000000476 000922137 000881848 D|089131975 048074185 +000000476 000929213 000921109 D|034729496 016679112 +000000476 000965876 000925200 D|090690813 078396146 +000000476 000982896 000950274 D|086521201 075204494 +000000476 000999295 000980043 D|060171972 084945759 +000000477 000001016 000008691 D|023528812 042624276 +000000477 000033677 000031827 D|090707747 081863852 +000000477 000037175 000043060 D|071199484 021364701 +000000477 000057738 000062002 D|059898184 038339614 +000000477 000071639 000087420 D|038919736 004374454 +000000477 000151200 000088441 D|092157792 007538167 +000000477 000152259 000092709 D|073786753 063942696 +000000477 000158820 000106875 D|000208416 090402808 +000000477 000159064 000156554 D|079265921 050964599 +000000477 000162033 000190556 D|041038377 058250606 +000000477 000169446 000207180 D|020292126 020022489 +000000477 000196249 000278021 D|046195724 015395305 +000000477 000223483 000288076 D|082664512 057474068 +000000477 000234844 000310896 D|059254212 098552876 +000000477 000300973 000318704 D|073911066 080973876 +000000477 000306700 000370921 D|020506472 081295037 +000000477 000308320 000381437 D|073358213 009629314 +000000477 000313307 000405897 D|072208696 056818717 +000000477 000333159 000440057 D|033508969 064045036 +000000477 000336432 000442334 D|047206101 014922138 +000000477 000339615 000445940 D|029561183 002718340 +000000477 000340674 000469685 D|092785467 086740728 +000000477 000414267 000483653 D|070460562 098611978 +000000477 000417530 000585105 D|009623066 059594693 +000000477 000418448 000596541 D|051937629 082736438 +000000477 000419061 000601463 D|057073199 093902362 +000000477 000449419 000605141 D|072583612 082693576 +000000477 000482044 000609990 D|089288713 059688221 +000000477 000527134 000616255 D|058044411 081006267 +000000477 000534437 000620354 D|056108523 055442923 +000000477 000605960 000630903 D|052839615 008844518 +000000477 000634728 000633748 D|002437912 046802886 +000000477 000635353 000639019 D|088058054 002164327 +000000477 000646909 000669493 D|094085246 039189693 +000000477 000652153 000674653 D|090323086 046804680 +000000477 000675288 000681965 D|002593421 049773404 +000000477 000676159 000711033 D|056541370 081991158 +000000477 000688000 000718992 D|008924682 046713598 +000000477 000688107 000753146 D|036944949 004413906 +000000477 000690761 000758544 D|062989619 037718188 +000000477 000703930 000782839 D|035556400 042157867 +000000477 000723889 000790078 D|086599756 043287174 +000000477 000728404 000828496 D|072953125 086206985 +000000477 000730687 000859480 D|075755176 019840742 +000000477 000757661 000860645 D|055231827 079051575 +000000477 000761865 000872451 D|020751326 060708491 +000000477 000778503 000902350 D|014876316 061972008 +000000477 000805750 000957518 D|052712966 024136836 +000000477 000814789 000962865 D|076920187 066969905 +000000477 000917159 000997282 D|057120787 018574941 +000000478 000016240 000037635 D|076386296 027670255 +000000478 000036409 000073396 D|049001657 000608196 +000000478 000039357 000097470 D|030619450 077081541 +000000478 000083816 000104168 D|088458827 078894841 +000000478 000083899 000105218 D|031290668 029898892 +000000478 000119264 000120989 D|034210573 034322295 +000000478 000124696 000154121 D|061822300 075047792 +000000478 000128718 000199172 D|018128410 078393117 +000000478 000131627 000210711 D|076575671 098710554 +000000478 000155679 000252173 D|073256948 069840709 +000000478 000197916 000266641 D|018305188 026199557 +000000478 000227547 000291675 D|078117945 073554393 +000000478 000252382 000294062 D|061742794 052097107 +000000478 000333069 000307173 D|056595430 054994898 +000000478 000366173 000321095 D|010343987 084758892 +000000478 000385281 000371825 D|033713853 008956370 +000000478 000410899 000383578 D|019235182 016219449 +000000478 000453604 000384379 D|044681262 025167626 +000000478 000483008 000388948 D|030647464 046935757 +000000478 000484962 000393000 D|007229300 052329484 +000000478 000502219 000403061 D|064318569 009887803 +000000478 000510381 000408934 D|067032123 033588188 +000000478 000564113 000427186 D|023670973 063002945 +000000478 000585900 000444375 D|040980621 007067299 +000000478 000587776 000459412 D|038716140 005560352 +000000478 000590401 000484318 D|041747618 036312481 +000000478 000597110 000508744 D|050348215 079025571 +000000478 000600036 000523159 D|077928243 031719435 +000000478 000646974 000532645 D|031802202 010536328 +000000478 000661972 000539062 D|022356308 050951621 +000000478 000664844 000592575 D|077562196 034723134 +000000478 000666958 000598323 D|022823909 076118696 +000000478 000675188 000656314 D|078880786 017109588 +000000478 000679307 000659838 D|053026051 006471927 +000000478 000700314 000660415 D|037759316 054187224 +000000478 000715341 000662650 D|062340797 093681648 +000000478 000717342 000671970 D|097749848 088299323 +000000478 000722331 000691149 D|023345818 008279059 +000000478 000757311 000714674 D|039108422 051516962 +000000478 000806140 000750666 D|060954810 044965613 +000000478 000847064 000752852 D|085427833 020376355 +000000478 000847456 000763186 D|015605502 053627901 +000000478 000882043 000789653 D|040468598 083772649 +000000478 000895823 000821577 D|098147600 089558628 +000000478 000933322 000844388 D|044562355 082609800 +000000478 000935073 000860407 D|051015742 092428579 +000000478 000948285 000874321 D|093288292 088134337 +000000478 000955514 000934764 D|037717604 014416707 +000000478 000958985 000942166 D|038057286 052862984 +000000478 000973714 000977982 D|041180529 031392816 +000000479 000019022 000044974 D|068282149 073923220 +000000479 000070303 000045157 D|068431114 032036271 +000000479 000092540 000059363 D|069100096 004627261 +000000479 000096490 000070595 D|099637257 038259632 +000000479 000098585 000103191 D|014318292 032739096 +000000479 000144778 000108904 D|067296399 009165043 +000000479 000167477 000126078 D|000319775 024324898 +000000479 000198354 000143056 D|055677048 096260605 +000000479 000234965 000144310 D|029295661 000621380 +000000479 000280148 000190751 D|025350309 074094949 +000000479 000305202 000192857 D|086937113 098411728 +000000479 000343632 000195562 D|055198199 026390029 +000000479 000345484 000230132 D|030180978 051875155 +000000479 000355707 000232164 D|001592808 095185833 +000000479 000358056 000277782 D|033825514 039580302 +000000479 000401798 000278468 D|036152263 091241257 +000000479 000404343 000282352 D|003080004 020557693 +000000479 000427367 000300829 D|075153122 089043053 +000000479 000449678 000305292 D|078975166 045525456 +000000479 000453191 000313394 D|042975925 034247579 +000000479 000457514 000329582 D|067148511 069664880 +000000479 000463529 000339549 D|068878270 052235363 +000000479 000469823 000358432 D|051355306 012474137 +000000479 000483293 000405522 D|019976990 043230317 +000000479 000498001 000413778 D|074695629 072975149 +000000479 000519886 000452951 D|053867659 014570843 +000000479 000542721 000463725 D|029115649 064072644 +000000479 000574918 000467548 D|094934292 028321909 +000000479 000578710 000499856 D|013202585 010015712 +000000479 000582443 000527250 D|029078459 008138560 +000000479 000604503 000601669 D|094226916 069279497 +000000479 000626260 000642124 D|037642448 027129393 +000000479 000627614 000706698 D|080057678 045285655 +000000479 000630390 000731737 D|066254405 071894427 +000000479 000643939 000739102 D|043730422 002699956 +000000479 000658133 000753864 D|033859426 030362382 +000000479 000670560 000758152 D|017020055 025817216 +000000479 000697771 000790706 D|060135642 041225817 +000000479 000730245 000794602 D|066509517 023800909 +000000479 000780472 000824532 D|066618482 059319511 +000000479 000784027 000829208 D|016323317 057663094 +000000479 000810479 000845686 D|073800407 066290052 +000000479 000818630 000853230 D|053852894 038564374 +000000479 000830000 000882638 D|030582963 051981609 +000000479 000846677 000898174 D|070415855 041101315 +000000479 000895922 000941176 D|023229269 013693136 +000000479 000899340 000959717 D|068220634 003078864 +000000479 000944652 000959787 D|045519172 041181580 +000000479 000948178 000967301 D|039643230 047371733 +000000479 000977222 000972857 D|011641421 036684760 +000000480 000008430 000027545 D|053981663 005014057 +000000480 000043852 000027592 D|021138979 032333183 +000000480 000048707 000036911 D|005925337 009270186 +000000480 000055735 000038571 D|017294583 075030365 +000000480 000057601 000112946 D|023269064 030938213 +000000480 000059303 000126106 D|056226027 028695140 +000000480 000078095 000148562 D|088138374 072459864 +000000480 000107816 000149205 D|075220337 099497502 +000000480 000113537 000168832 D|019646457 072013918 +000000480 000141958 000179820 D|052705435 007981491 +000000480 000179858 000217818 D|057479157 050473150 +000000480 000194485 000219855 D|058812023 000966671 +000000480 000262414 000220737 D|092183932 066343268 +000000480 000306663 000225199 D|081516222 025222001 +000000480 000321032 000251032 D|089148516 008228346 +000000480 000360677 000306472 D|023500688 033241344 +000000480 000427389 000328286 D|034585951 071315928 +000000480 000438476 000352926 D|090500134 084455482 +000000480 000447727 000355639 D|002184163 011928582 +000000480 000461433 000448879 D|002769041 052734243 +000000480 000467238 000465557 D|017723369 096350024 +000000480 000471156 000467826 D|003496166 005710213 +000000480 000484892 000472947 D|038863004 037711982 +000000480 000488899 000534564 D|021831511 081296587 +000000480 000493437 000551206 D|089898734 098827435 +000000480 000502240 000570646 D|035643868 018434773 +000000480 000532087 000584115 D|041998358 019429297 +000000480 000549821 000601674 D|041189502 002065542 +000000480 000560790 000604513 D|043222040 020029724 +000000480 000581327 000605296 D|089908788 054837106 +000000480 000596199 000625456 D|071878021 015754164 +000000480 000658191 000627909 D|097026233 080300653 +000000480 000662426 000702315 D|088321972 030016024 +000000480 000671829 000706457 D|010871113 006886926 +000000480 000784707 000712242 D|087733891 026778224 +000000480 000804144 000715016 D|095182040 067621795 +000000480 000809895 000738751 D|018393645 018920503 +000000480 000820269 000738848 D|020262565 074184780 +000000480 000827139 000746194 D|041969635 052354188 +000000480 000836278 000754019 D|077412704 082354577 +000000480 000837504 000812910 D|069721048 000385839 +000000480 000855769 000813648 D|007899699 068445962 +000000480 000865735 000815406 D|063469301 041288978 +000000480 000867715 000906869 D|087337084 057486738 +000000480 000907107 000942966 D|099517924 039945790 +000000480 000922581 000953725 D|004909542 035721164 +000000480 000942509 000961936 D|035075861 053636643 +000000480 000954135 000968671 D|069107771 072466355 +000000480 000961485 000973395 D|091144142 002507898 +000000480 000966572 000996710 D|099072043 066240636 +000000481 000024595 000003660 D|040591011 082409380 +000000481 000028756 000003790 D|025247147 078437552 +000000481 000039135 000012525 D|069680524 080567117 +000000481 000090878 000024203 D|060741914 059916601 +000000481 000092666 000042006 D|061446691 006032065 +000000481 000092758 000064802 D|046793990 098444780 +000000481 000092761 000074490 D|034360370 035944254 +000000481 000100255 000084340 D|073054211 078058386 +000000481 000114427 000138470 D|094285381 033325255 +000000481 000127270 000174427 D|099548617 008061461 +000000481 000166208 000178992 D|027515544 075964948 +000000481 000171337 000183122 D|045228075 001283404 +000000481 000189739 000188037 D|069299562 062101592 +000000481 000222380 000230727 D|064274970 019231873 +000000481 000230209 000239857 D|060086668 094773248 +000000481 000240731 000246257 D|054869454 058289838 +000000481 000266011 000276523 D|018673427 034815162 +000000481 000270303 000288013 D|098096704 024656118 +000000481 000298865 000302346 D|019583300 037558426 +000000481 000303093 000302478 D|058776061 011368616 +000000481 000325438 000399687 D|054946249 073620188 +000000481 000329850 000415303 D|020355290 070008793 +000000481 000348460 000416793 D|009230081 087794378 +000000481 000348963 000427948 D|095680133 027750606 +000000481 000418857 000472622 D|059259252 080312659 +000000481 000429260 000482744 D|030425661 077963104 +000000481 000437872 000532974 D|077081783 083215972 +000000481 000461981 000560813 D|061453488 009676701 +000000481 000480556 000569461 D|060366402 037172159 +000000481 000499474 000597134 D|088580017 043050073 +000000481 000504090 000621832 D|062010798 089389890 +000000481 000515721 000646962 D|072217966 036436620 +000000481 000521156 000659474 D|033047167 070564467 +000000481 000562231 000667476 D|075926841 045495629 +000000481 000563010 000680644 D|015873827 064915728 +000000481 000616112 000686086 D|068384104 075410100 +000000481 000617408 000698819 D|080270048 068113814 +000000481 000703847 000725949 D|007739496 002693457 +000000481 000744904 000726649 D|029985991 058529758 +000000481 000766630 000793737 D|033456754 075519933 +000000481 000782202 000804055 D|077281424 085699781 +000000481 000800274 000815051 D|044417803 009523529 +000000481 000811159 000819721 D|038146144 083780012 +000000481 000859123 000824521 D|006828957 098196351 +000000481 000911273 000841861 D|037818575 002557795 +000000481 000939260 000888428 D|092170805 048678559 +000000481 000947248 000892544 D|006582283 010973554 +000000481 000974748 000934929 D|072652131 017117864 +000000481 000993372 000968880 D|034806689 090764877 +000000481 000995699 000978210 D|065482931 006195203 +000000482 000053312 000026626 D|081993728 061888477 +000000482 000074525 000045133 D|016271192 063226692 +000000482 000098280 000048430 D|077370303 070933001 +000000482 000218292 000053013 D|064223054 065158998 +000000482 000220960 000072446 D|083310372 016555860 +000000482 000229090 000163878 D|032321445 087066152 +000000482 000239150 000169360 D|013636318 047039630 +000000482 000274146 000173167 D|096217670 057364820 +000000482 000281527 000183104 D|055656656 070699039 +000000482 000282347 000184403 D|020723395 030735686 +000000482 000296234 000186800 D|094873843 018265657 +000000482 000316739 000187391 D|071536887 057834963 +000000482 000323467 000220320 D|023811430 091241757 +000000482 000326717 000249190 D|043100778 089497319 +000000482 000331126 000273700 D|068980843 037540287 +000000482 000380576 000295004 D|015088814 095061351 +000000482 000383454 000312124 D|073018564 006347829 +000000482 000411034 000323039 D|006605519 063501008 +000000482 000434113 000351207 D|058448977 073328131 +000000482 000440162 000359673 D|069248043 089426985 +000000482 000445514 000437249 D|070787086 070072742 +000000482 000462673 000455052 D|022811156 005756629 +000000482 000480097 000486974 D|005290367 018857837 +000000482 000505402 000498264 D|063914050 072424673 +000000482 000511544 000505314 D|022954648 035603747 +000000482 000520076 000523315 D|043629037 036434492 +000000482 000570248 000526649 D|030242897 049537677 +000000482 000596432 000555523 D|096002580 056612486 +000000482 000615707 000572473 D|001204200 050035806 +000000482 000621302 000584936 D|037180217 012119830 +000000482 000629346 000627175 D|061328966 034938755 +000000482 000643478 000627804 D|028300821 083818618 +000000482 000692937 000632541 D|023185698 096134021 +000000482 000723374 000636276 D|083821651 060681617 +000000482 000742532 000653944 D|011185012 069962984 +000000482 000761303 000689229 D|082606946 049074396 +000000482 000782674 000700796 D|067555514 039978870 +000000482 000802269 000720725 D|076012938 062627765 +000000482 000835562 000727226 D|019423751 050083127 +000000482 000866493 000727492 D|044246503 024839465 +000000482 000875511 000760578 D|090255351 057926017 +000000482 000884130 000763537 D|024882360 040610259 +000000482 000902484 000769260 D|024976564 020647562 +000000482 000908931 000770360 D|042793737 006748047 +000000482 000927876 000784525 D|071566531 022055192 +000000482 000935363 000793697 D|044601990 040965731 +000000482 000952770 000849810 D|025174396 019808240 +000000482 000953907 000884789 D|001572459 004274678 +000000482 000986585 000887984 D|062627611 092686200 +000000482 000990317 000976897 D|037441854 058455921 +000000483 000037702 000030678 D|064181474 053210014 +000000483 000043292 000052836 D|086337989 045527624 +000000483 000118867 000073314 D|095653939 084383905 +000000483 000126546 000112453 D|068766147 095608352 +000000483 000137966 000131900 D|003183618 008331414 +000000483 000157275 000201203 D|099769534 028612795 +000000483 000172166 000207544 D|059703904 031657592 +000000483 000179059 000210142 D|055801658 029747305 +000000483 000214535 000212035 D|039326435 082743972 +000000483 000242981 000280880 D|030979977 066194042 +000000483 000262372 000312183 D|038747138 030330114 +000000483 000285197 000347676 D|013084605 029810602 +000000483 000296997 000367577 D|017623903 006789688 +000000483 000318533 000411074 D|063939631 037713954 +000000483 000343587 000425567 D|095055993 041578980 +000000483 000345048 000431779 D|072241507 072646997 +000000483 000347971 000446795 D|055108252 071650070 +000000483 000367836 000448587 D|027146111 062299810 +000000483 000368491 000449691 D|027050812 073244559 +000000483 000372105 000487127 D|004225837 093691632 +000000483 000378049 000489321 D|007890208 092636487 +000000483 000385321 000491226 D|004796542 049295618 +000000483 000418231 000512903 D|013783011 040548035 +000000483 000500287 000539381 D|096637597 076325469 +000000483 000531742 000569472 D|014498310 054033425 +000000483 000532110 000583075 D|044075264 052944453 +000000483 000533512 000594240 D|084235425 090182817 +000000483 000551003 000599358 D|064077564 011675620 +000000483 000563509 000602639 D|066305752 087813407 +000000483 000574282 000608561 D|052127791 002514336 +000000483 000591989 000612213 D|080977697 057881760 +000000483 000592613 000614657 D|061380802 012374718 +000000483 000592739 000616424 D|073929785 022387610 +000000483 000596867 000622084 D|079733607 033509974 +000000483 000601156 000645629 D|031124442 099664270 +000000483 000614528 000720323 D|029148155 022061568 +000000483 000618510 000728745 D|013634344 078165055 +000000483 000673237 000741469 D|038165935 027660237 +000000483 000689910 000754166 D|031939290 046579797 +000000483 000702707 000808017 D|020395603 041984854 +000000483 000724461 000828237 D|004109910 049160669 +000000483 000728796 000838156 D|095575212 067526957 +000000483 000736179 000839117 D|074646584 034006011 +000000483 000741967 000841272 D|071093316 092638748 +000000483 000761490 000853130 D|055334098 076913517 +000000483 000858905 000855103 D|020053667 027377872 +000000483 000864350 000944351 D|070200448 032066319 +000000483 000961750 000967494 D|078649507 085871451 +000000483 000993438 000971448 D|007414188 092894448 +000000483 000995728 000979980 D|002459621 058900963 +000000484 000006712 000011702 D|084723753 026568367 +000000484 000037713 000022098 D|001378883 098604834 +000000484 000038841 000026290 D|034896864 066987501 +000000484 000046828 000029936 D|046233325 030072584 +000000484 000084968 000115002 D|020501925 049624011 +000000484 000085529 000118962 D|088427352 010635965 +000000484 000139369 000119973 D|071218653 031222643 +000000484 000151516 000132006 D|027986093 056597661 +000000484 000171392 000232784 D|058856073 009606138 +000000484 000189058 000265574 D|099795950 039090748 +000000484 000206628 000301623 D|089079496 065595945 +000000484 000246433 000313084 D|006783652 065997679 +000000484 000247617 000367274 D|052468353 088608898 +000000484 000250768 000378984 D|090333835 011429620 +000000484 000266500 000379695 D|014915923 007009418 +000000484 000270214 000410376 D|041230887 014932599 +000000484 000273094 000451936 D|070017847 035033703 +000000484 000279551 000479575 D|041714616 097010180 +000000484 000284206 000479672 D|055661683 031192303 +000000484 000292483 000519988 D|007969384 019717923 +000000484 000298883 000520518 D|033275813 072733626 +000000484 000405277 000529099 D|040290898 097171342 +000000484 000433055 000537301 D|013053049 082406418 +000000484 000444492 000541661 D|076056797 066124139 +000000484 000474567 000565566 D|005236933 086754357 +000000484 000505240 000581988 D|005358975 064762478 +000000484 000534831 000622381 D|095935353 056182392 +000000484 000614641 000624376 D|065188452 051180322 +000000484 000624328 000644642 D|087783897 055231618 +000000484 000637237 000648868 D|070890973 007305727 +000000484 000644334 000651352 D|088273715 016968216 +000000484 000685178 000656019 D|073477376 077566582 +000000484 000729839 000668409 D|058776923 092154772 +000000484 000735587 000701011 D|000548950 081805491 +000000484 000759757 000706410 D|026294003 096148570 +000000484 000774148 000721795 D|073915948 061204627 +000000484 000778286 000749824 D|099099675 073881403 +000000484 000788522 000765175 D|041269429 021746606 +000000484 000799590 000765216 D|017527525 064823836 +000000484 000804531 000778417 D|097304296 006861399 +000000484 000822064 000800236 D|015803180 007118792 +000000484 000826085 000801529 D|078388966 007520893 +000000484 000842084 000831668 D|067224009 026045549 +000000484 000854806 000859812 D|070164778 070182590 +000000484 000880220 000873977 D|075822520 018423505 +000000484 000882138 000887469 D|007645061 084423504 +000000484 000914878 000917794 D|030546959 077240150 +000000484 000918690 000941911 D|048764761 026420660 +000000484 000932068 000975973 D|058695669 006279859 +000000484 000936425 000993547 D|042479231 015347022 +000000485 000014431 000037132 D|073219766 023082708 +000000485 000077554 000083648 D|008736277 067264214 +000000485 000106553 000105355 D|050602821 048345862 +000000485 000114247 000118534 D|089326307 054629325 +000000485 000136583 000123414 D|039243902 072252447 +000000485 000147185 000128283 D|083225020 005995343 +000000485 000157795 000132222 D|080961942 051174710 +000000485 000165969 000138397 D|063087993 079616240 +000000485 000166398 000156052 D|007579356 002074412 +000000485 000177670 000169093 D|008003831 058778335 +000000485 000193118 000190990 D|010273129 092985557 +000000485 000194804 000199215 D|059116891 092207395 +000000485 000198572 000205147 D|097109197 044146318 +000000485 000253911 000207751 D|060683651 038305638 +000000485 000281098 000218828 D|056068310 048468663 +000000485 000294108 000234590 D|076624196 022561821 +000000485 000325340 000251402 D|085498858 020253007 +000000485 000335222 000263244 D|084278749 031105115 +000000485 000335395 000285531 D|030823641 086552921 +000000485 000364806 000332427 D|084728197 072893307 +000000485 000370072 000341489 D|021552388 017440452 +000000485 000410159 000375393 D|051995224 060469989 +000000485 000464711 000399777 D|053405508 008693839 +000000485 000478647 000415567 D|004920687 025186019 +000000485 000529074 000499393 D|007399208 038512040 +000000485 000533060 000540389 D|066047104 069617393 +000000485 000542469 000600643 D|034981264 031289702 +000000485 000563671 000604918 D|027895663 040572052 +000000485 000583252 000613793 D|089948569 047729533 +000000485 000587246 000632159 D|091367813 074133914 +000000485 000595263 000670473 D|004191242 060777557 +000000485 000635022 000673310 D|026541397 003954599 +000000485 000639536 000687467 D|008452310 070019534 +000000485 000676130 000704422 D|005398731 049543528 +000000485 000740275 000735827 D|001997547 097050829 +000000485 000744936 000767917 D|001410916 026593722 +000000485 000745753 000795350 D|086140016 098738384 +000000485 000762549 000796506 D|001215361 089386177 +000000485 000779476 000806533 D|051614902 096707681 +000000485 000797577 000807420 D|057058286 047616837 +000000485 000808220 000811391 D|021441728 041091321 +000000485 000821323 000833309 D|053355852 020092812 +000000485 000832029 000838634 D|099049488 084638303 +000000485 000845341 000840232 D|075290115 016919158 +000000485 000854308 000876180 D|032314077 016724385 +000000485 000890367 000899974 D|016253692 082269493 +000000485 000921037 000909479 D|063543533 089931327 +000000485 000927504 000925425 D|013013682 057695180 +000000485 000946531 000937361 D|047779222 094292609 +000000485 000948638 000958410 D|050595189 068116211 +000000486 000022968 000027913 D|000400777 000690417 +000000486 000023895 000057034 D|098692606 080317011 +000000486 000037836 000059749 D|079315476 049431800 +000000486 000041556 000123212 D|068930285 035984339 +000000486 000101161 000170959 D|017597897 023214820 +000000486 000137771 000195613 D|002217249 076733328 +000000486 000165405 000232049 D|083641334 067503260 +000000486 000175217 000236704 D|061883111 079322554 +000000486 000178887 000241208 D|072857812 017763230 +000000486 000205509 000251954 D|070957317 080483592 +000000486 000221288 000276727 D|063598705 090539756 +000000486 000222065 000332966 D|046763907 037890651 +000000486 000224109 000339264 D|075773827 033024697 +000000486 000226866 000339935 D|022204052 052964618 +000000486 000284091 000353890 D|079152423 025032578 +000000486 000318850 000378707 D|039101714 091344541 +000000486 000348950 000389351 D|067163577 043490097 +000000486 000382204 000405249 D|062304308 022261592 +000000486 000386604 000420277 D|079841769 091834440 +000000486 000392208 000421894 D|070199074 003970761 +000000486 000436861 000421997 D|012237618 010913044 +000000486 000443311 000436966 D|056239696 099053015 +000000486 000481016 000442856 D|009335196 098091197 +000000486 000492873 000457940 D|079721850 070015066 +000000486 000493195 000477311 D|016792885 054197122 +000000486 000522401 000486317 D|014073741 065025210 +000000486 000557753 000523448 D|009948430 004557745 +000000486 000585239 000551827 D|009669549 053758208 +000000486 000601407 000619642 D|029742645 054876143 +000000486 000610795 000632056 D|045826039 075565786 +000000486 000629474 000634721 D|004076870 081590785 +000000486 000653044 000689308 D|067462691 081692287 +000000486 000663342 000691750 D|078525813 019309859 +000000486 000680936 000703884 D|080847063 050596633 +000000486 000744967 000711001 D|032690952 018701424 +000000486 000762503 000715927 D|032726989 060396459 +000000486 000778502 000770247 D|047107048 008544215 +000000486 000792102 000789191 D|004016101 093755015 +000000486 000820384 000798506 D|029697374 015485430 +000000486 000820667 000817818 D|024061012 000309108 +000000486 000840353 000870807 D|037062746 008508668 +000000486 000848116 000877508 D|022966709 094174766 +000000486 000859975 000879663 D|032866081 016547217 +000000486 000874548 000899033 D|020567196 074217529 +000000486 000882193 000902478 D|051633732 097470703 +000000486 000883295 000913673 D|066961534 051839876 +000000486 000923626 000915394 D|071441717 070051137 +000000486 000925867 000917359 D|085974831 082465656 +000000486 000936271 000927696 D|090161028 006875465 +000000486 000983223 000968810 D|079281090 000615486 +000000487 000006682 000032956 D|077792434 086048604 +000000487 000029265 000101955 D|028532181 094151294 +000000487 000047171 000109009 D|001858074 036045797 +000000487 000054804 000166192 D|051892451 071146038 +000000487 000060066 000173710 D|062735006 047268318 +000000487 000073037 000213687 D|043399966 022197650 +000000487 000104982 000214229 D|078048915 079975862 +000000487 000129328 000233692 D|009107400 091201302 +000000487 000189597 000243955 D|070135274 048159443 +000000487 000202127 000280382 D|075341572 021305484 +000000487 000216130 000286532 D|005390131 002990114 +000000487 000217469 000303798 D|097940136 050120026 +000000487 000229880 000332861 D|061720085 087464200 +000000487 000236459 000350739 D|042040169 006685138 +000000487 000254605 000353716 D|000872611 064881956 +000000487 000272237 000362172 D|087559600 070227222 +000000487 000336157 000373262 D|003087440 017443366 +000000487 000351654 000388081 D|034564804 072913602 +000000487 000358884 000404711 D|050963075 039000085 +000000487 000366391 000432939 D|011900327 060331948 +000000487 000409834 000476379 D|041982803 024478126 +000000487 000431275 000489719 D|040314604 071438394 +000000487 000440000 000490304 D|075707632 090453314 +000000487 000442400 000506551 D|023263494 092059447 +000000487 000509670 000516304 D|086613488 025897042 +000000487 000537877 000596235 D|038603661 040935175 +000000487 000573087 000617379 D|040932074 042059636 +000000487 000573415 000644459 D|042452846 004894824 +000000487 000574373 000644475 D|085268944 018133228 +000000487 000580389 000645849 D|097779532 014859792 +000000487 000587536 000649591 D|073189776 031315509 +000000487 000590309 000676248 D|019875687 039910042 +000000487 000599145 000769033 D|038656573 020543029 +000000487 000625031 000806439 D|059522983 083521408 +000000487 000637251 000844938 D|015890450 066252749 +000000487 000641469 000854141 D|059806529 001515420 +000000487 000644363 000876607 D|098267426 093953607 +000000487 000650776 000885721 D|003092019 032002361 +000000487 000660211 000900304 D|031215927 056997734 +000000487 000660238 000907522 D|011228527 085080728 +000000487 000679061 000923146 D|032347233 000067916 +000000487 000752558 000950838 D|056356411 049497918 +000000487 000777748 000959684 D|057010817 027031453 +000000487 000811904 000959775 D|015442151 084881592 +000000487 000827378 000962966 D|021804095 004908159 +000000487 000886691 000973644 D|095934230 080057300 +000000487 000901682 000987484 D|079452832 093991880 +000000487 000924243 000992766 D|002689741 033768925 +000000487 000929361 000994924 D|015729103 022202354 +000000487 000960698 000998102 D|008398725 084544255 +000000488 000007082 000000049 D|063160007 017896919 +000000488 000052616 000005159 D|043776332 049930969 +000000488 000058247 000009894 D|078057511 078138257 +000000488 000077648 000025767 D|004973898 019820645 +000000488 000083589 000029379 D|062697718 007296663 +000000488 000117718 000031936 D|011259260 000240819 +000000488 000139136 000036485 D|033386599 060111463 +000000488 000171438 000043664 D|073148777 021210081 +000000488 000180719 000067840 D|085551741 081015739 +000000488 000189099 000092253 D|097607939 061245337 +000000488 000218385 000095885 D|028646751 041296660 +000000488 000224604 000104988 D|004245307 031879640 +000000488 000238362 000108170 D|066694254 083122158 +000000488 000258777 000166223 D|098959334 029993120 +000000488 000281290 000188043 D|036259430 014287088 +000000488 000282115 000244218 D|071838945 033798881 +000000488 000308884 000264189 D|049549738 037467580 +000000488 000333734 000315563 D|016808960 032992583 +000000488 000334390 000369971 D|039916422 008527284 +000000488 000365159 000393719 D|095547672 087024967 +000000488 000388624 000398047 D|063013988 089454235 +000000488 000392358 000417615 D|025599984 093937655 +000000488 000398868 000425805 D|047751545 069245110 +000000488 000402106 000435661 D|028845056 075159321 +000000488 000408827 000445666 D|067220717 040817031 +000000488 000499622 000540279 D|064643867 058918687 +000000488 000552011 000548360 D|007452759 082609868 +000000488 000570378 000562536 D|026188963 087387551 +000000488 000574608 000575747 D|023410987 067644256 +000000488 000579814 000582454 D|078742380 057914549 +000000488 000617474 000583442 D|034709404 002671810 +000000488 000650111 000598599 D|057078684 041425107 +000000488 000684628 000607612 D|060871894 051736040 +000000488 000685816 000628670 D|063649883 092586413 +000000488 000723120 000630362 D|041095013 091382074 +000000488 000727681 000717465 D|019747366 061499296 +000000488 000731413 000718683 D|018824631 004534940 +000000488 000735487 000780838 D|030245719 008853225 +000000488 000771126 000824805 D|013212937 020070557 +000000488 000783221 000853684 D|022025843 089979963 +000000488 000790372 000875323 D|048931715 090520686 +000000488 000851048 000901118 D|005142510 013900929 +000000488 000867274 000904522 D|005465814 063053776 +000000488 000870891 000915461 D|000449299 071109827 +000000488 000888684 000929984 D|073712044 017166842 +000000488 000957923 000943093 D|037847080 017487799 +000000488 000958351 000948249 D|010637338 013710357 +000000488 000974067 000956061 D|016833312 070709429 +000000488 000983340 000986840 D|090486014 002287737 +000000488 000994674 000989952 D|069840306 072024553 +000000489 000010787 000023617 D|095930444 009326898 +000000489 000048078 000033292 D|021193110 027693332 +000000489 000090008 000049960 D|033572030 071443186 +000000489 000127026 000061706 D|062072661 050407487 +000000489 000157513 000081676 D|074963240 050527063 +000000489 000195287 000103856 D|017959579 001157252 +000000489 000203720 000139845 D|081962158 029530739 +000000489 000204123 000169818 D|015975942 027847563 +000000489 000221298 000236075 D|040751548 053067391 +000000489 000243080 000241310 D|087148012 008703832 +000000489 000245670 000253780 D|046032726 004900371 +000000489 000281251 000264480 D|071628247 014459874 +000000489 000294418 000279286 D|065911766 073911506 +000000489 000299914 000286930 D|067056310 040515989 +000000489 000318326 000314334 D|003292204 044544944 +000000489 000363096 000353736 D|071929025 034890607 +000000489 000369115 000374758 D|022134284 072585457 +000000489 000381431 000375104 D|065883675 034769006 +000000489 000410918 000382173 D|038504767 097840884 +000000489 000422550 000392632 D|091214699 032760868 +000000489 000443537 000396161 D|077570825 036795561 +000000489 000447750 000405743 D|012040677 056881662 +000000489 000457709 000410375 D|028863366 070491121 +000000489 000462956 000435786 D|092409382 087385392 +000000489 000493527 000439739 D|034838032 097271053 +000000489 000513277 000451989 D|014369355 098404604 +000000489 000552026 000454053 D|024589641 016412722 +000000489 000584010 000481460 D|031649879 018285609 +000000489 000589652 000520652 D|054153111 029775746 +000000489 000625541 000532936 D|061832584 051173602 +000000489 000634627 000583064 D|063853969 077519341 +000000489 000663384 000593302 D|032724569 005137597 +000000489 000667295 000679491 D|023469648 060419723 +000000489 000679036 000683871 D|007189771 037978338 +000000489 000686962 000690066 D|063266311 000831050 +000000489 000690706 000695025 D|023418643 015288422 +000000489 000726242 000697183 D|095934006 070329518 +000000489 000773484 000716543 D|012696996 000329918 +000000489 000775939 000737593 D|067809127 035164347 +000000489 000783270 000763081 D|089408574 050546113 +000000489 000810686 000765018 D|020639235 004412291 +000000489 000839648 000815336 D|067558905 052115425 +000000489 000843636 000856532 D|079169577 095680031 +000000489 000897384 000866504 D|017550293 039644750 +000000489 000908500 000888401 D|057518781 063562658 +000000489 000929203 000897221 D|093574053 037564181 +000000489 000952147 000919786 D|081151924 059720453 +000000489 000968628 000931780 D|040202365 002785463 +000000489 000974998 000937193 D|077021923 065016679 +000000489 000984634 000996529 D|090416238 001057799 +000000490 000002186 000038478 D|094007325 096497700 +000000490 000003789 000059490 D|000089948 053772773 +000000490 000031746 000071787 D|044823672 052872958 +000000490 000071387 000077298 D|041210341 041438464 +000000490 000071970 000088623 D|027647642 048879003 +000000490 000082527 000103612 D|053483184 083408101 +000000490 000135119 000116719 D|097895751 094993341 +000000490 000148716 000174208 D|017437937 093784361 +000000490 000157864 000195246 D|066621732 085579753 +000000490 000178203 000202024 D|047979975 024620467 +000000490 000198746 000218384 D|017952198 018241519 +000000490 000214306 000222974 D|009476810 003692554 +000000490 000231380 000223610 D|058894469 045477580 +000000490 000245063 000230836 D|056251360 094611512 +000000490 000288499 000255287 D|066173042 053209947 +000000490 000290198 000275517 D|053986286 007391095 +000000490 000302936 000303000 D|029155136 080353995 +000000490 000310830 000360455 D|042464474 070762617 +000000490 000333356 000376395 D|068179809 049416075 +000000490 000338210 000408300 D|041466068 018313746 +000000490 000367595 000408689 D|081928415 003720107 +000000490 000397260 000461084 D|015502291 025707350 +000000490 000427430 000462138 D|075752885 098701036 +000000490 000470813 000472672 D|021970730 072071564 +000000490 000493549 000487012 D|089458712 098398328 +000000490 000505988 000509063 D|004354392 086820847 +000000490 000511503 000513008 D|076800254 021915732 +000000490 000516426 000534989 D|006033153 008031261 +000000490 000563385 000539891 D|096832767 044060956 +000000490 000564593 000574231 D|014175978 088868578 +000000490 000570044 000590766 D|048500850 076676069 +000000490 000596330 000593558 D|070193505 047294582 +000000490 000601674 000593804 D|063616008 009867148 +000000490 000643848 000605543 D|082477160 067388261 +000000490 000659075 000642131 D|073920036 048071634 +000000490 000691697 000688238 D|074051892 020127634 +000000490 000700917 000722645 D|075982192 066503836 +000000490 000701907 000725367 D|070681924 097493177 +000000490 000707136 000742093 D|054967200 037213044 +000000490 000757143 000761584 D|051602907 030164982 +000000490 000769722 000767328 D|077291547 034017344 +000000490 000821260 000770053 D|095599609 042979353 +000000490 000846324 000771639 D|030937564 091509243 +000000490 000895195 000779282 D|088671568 026545648 +000000490 000900971 000809144 D|000894546 090809309 +000000490 000936234 000829783 D|038818635 023477422 +000000490 000957851 000860075 D|029737056 041542400 +000000490 000965021 000866298 D|063635752 075224136 +000000490 000968734 000866973 D|037482160 074841450 +000000490 000997560 000970553 D|068718245 049147769 +000000491 000035965 000004195 D|005853739 004192988 +000000491 000039141 000048195 D|055198442 051733091 +000000491 000042348 000061336 D|095325317 092736350 +000000491 000116537 000095208 D|021462784 063972939 +000000491 000129706 000124376 D|094917578 031443954 +000000491 000133387 000131978 D|016682260 099933787 +000000491 000195927 000152108 D|073310953 024257899 +000000491 000200991 000174622 D|022722456 046386464 +000000491 000215445 000179002 D|091553916 057067024 +000000491 000218905 000186380 D|081502143 038268807 +000000491 000220825 000210336 D|087228469 027475600 +000000491 000223278 000219927 D|074316888 077197573 +000000491 000227307 000230813 D|017080994 089483839 +000000491 000229468 000231263 D|018849024 086935143 +000000491 000245545 000256546 D|001010116 091225099 +000000491 000247660 000273837 D|009396779 051826325 +000000491 000277739 000288366 D|022355917 074016046 +000000491 000351710 000316494 D|047229476 038690456 +000000491 000352581 000442289 D|013247319 091104478 +000000491 000371338 000503979 D|018387938 078682174 +000000491 000382202 000597952 D|022532590 041795250 +000000491 000387551 000603585 D|047797950 040960499 +000000491 000397942 000610225 D|014501364 008376290 +000000491 000463756 000624937 D|035509967 008658070 +000000491 000490902 000642964 D|078553755 076050322 +000000491 000526017 000650768 D|009380957 087042301 +000000491 000539383 000651435 D|081034933 069494977 +000000491 000570355 000657552 D|084492234 052613554 +000000491 000595124 000669271 D|049254208 054067225 +000000491 000626742 000684186 D|056940159 046738750 +000000491 000648794 000693849 D|048714764 076024196 +000000491 000665269 000706457 D|059785770 061252510 +000000491 000688605 000709187 D|017211337 096035007 +000000491 000692137 000752747 D|064601862 043887211 +000000491 000697044 000781321 D|088724900 071890167 +000000491 000740516 000802269 D|053730474 053261050 +000000491 000745244 000816868 D|047260284 018808885 +000000491 000746780 000817171 D|076960049 021229716 +000000491 000757410 000834807 D|070252282 009033031 +000000491 000790074 000841995 D|023780741 067313095 +000000491 000798368 000845622 D|027163588 027808912 +000000491 000834570 000853337 D|040730920 053010257 +000000491 000840465 000858228 D|006524793 033180100 +000000491 000857452 000861908 D|090130961 038245638 +000000491 000870758 000866839 D|021062780 041976377 +000000491 000874413 000867140 D|082241074 044127335 +000000491 000881870 000902963 D|001640553 076517229 +000000491 000892236 000939979 D|063549546 070533832 +000000491 000919372 000950636 D|087449857 033735008 +000000491 000959433 000999853 D|082187227 034185638 +000000492 000005254 000003380 D|096979650 003247555 +000000492 000036737 000014589 D|052158978 039879975 +000000492 000087993 000039738 D|072103619 074557217 +000000492 000088387 000042591 D|060084061 092995056 +000000492 000093924 000067361 D|032006476 048199135 +000000492 000095156 000120578 D|030502302 026897758 +000000492 000115420 000191584 D|024959476 061646746 +000000492 000118774 000228688 D|009339674 081668340 +000000492 000159517 000243314 D|020395822 088026245 +000000492 000165773 000263162 D|054575958 099205051 +000000492 000197924 000271199 D|000203516 072932470 +000000492 000207482 000347277 D|035443720 055409629 +000000492 000217994 000353749 D|053908453 093015515 +000000492 000221782 000373515 D|048599432 065055687 +000000492 000229416 000379660 D|094100193 083505551 +000000492 000237874 000389473 D|052096932 088550755 +000000492 000270274 000411980 D|042189111 024418264 +000000492 000288450 000428498 D|070054091 022103002 +000000492 000362907 000444111 D|086267112 086020549 +000000492 000377298 000509678 D|029504515 012473873 +000000492 000392197 000545434 D|025820162 043286989 +000000492 000404433 000594881 D|047814279 041641433 +000000492 000417945 000605639 D|025619494 099504258 +000000492 000437166 000627842 D|022013786 065722923 +000000492 000487255 000632479 D|084262416 084467195 +000000492 000494921 000673919 D|045228655 098010854 +000000492 000524374 000693380 D|083447820 009138113 +000000492 000546758 000708526 D|063321890 059124651 +000000492 000561406 000737266 D|056315489 031566160 +000000492 000566584 000738832 D|014833542 098137198 +000000492 000574440 000757234 D|095784369 030587192 +000000492 000589354 000764892 D|098932601 031176090 +000000492 000590608 000789823 D|003698165 026680689 +000000492 000614314 000804834 D|049665836 028214618 +000000492 000666036 000805306 D|070383831 004946271 +000000492 000692955 000816351 D|085309573 098909679 +000000492 000701060 000818138 D|099302829 024483074 +000000492 000701811 000822382 D|091980588 001684381 +000000492 000716658 000839752 D|091728788 067998816 +000000492 000724304 000848778 D|049400730 084318247 +000000492 000724659 000854315 D|045331917 028911392 +000000492 000746138 000857743 D|098122679 004118414 +000000492 000779511 000860826 D|096460856 072445797 +000000492 000851192 000864787 D|057132469 048389709 +000000492 000895371 000876534 D|033476094 043715284 +000000492 000902568 000924505 D|068325290 018286963 +000000492 000922845 000928163 D|099518741 091785952 +000000492 000936434 000929810 D|060566868 005775407 +000000492 000949142 000939498 D|059743601 072998756 +000000492 000969315 000953219 D|084075363 053996424 +000000493 000003987 000004594 D|072616309 052782240 +000000493 000028996 000014632 D|084327441 097658902 +000000493 000054600 000016764 D|076506418 063286198 +000000493 000060204 000020021 D|035119105 087511076 +000000493 000068534 000020395 D|018133897 097441286 +000000493 000097493 000045683 D|039327478 010354394 +000000493 000127646 000055059 D|041525703 082651936 +000000493 000128650 000103949 D|040281777 015277649 +000000493 000140590 000112378 D|069584360 083974126 +000000493 000152967 000132843 D|054330316 013076110 +000000493 000183151 000142565 D|070854855 082375296 +000000493 000195606 000155436 D|043173156 083260824 +000000493 000217106 000175425 D|062201972 018230916 +000000493 000232799 000242997 D|052202267 043110103 +000000493 000236741 000279835 D|069284855 013327820 +000000493 000278733 000312262 D|090570698 062666997 +000000493 000285510 000328704 D|031893428 072707178 +000000493 000288752 000340975 D|038324453 040761190 +000000493 000292131 000359970 D|006412106 089226206 +000000493 000329454 000373438 D|010695027 037209647 +000000493 000334439 000380814 D|060741210 052313896 +000000493 000343694 000387273 D|023313882 037396154 +000000493 000358438 000388043 D|011881043 092113344 +000000493 000360005 000450512 D|053774182 000244439 +000000493 000389734 000457866 D|008884495 028514901 +000000493 000396630 000488958 D|047156011 066080255 +000000493 000441857 000490595 D|028723969 082367802 +000000493 000482182 000500474 D|085123258 047779775 +000000493 000495211 000500693 D|094462413 024424072 +000000493 000513953 000517012 D|028147501 043738695 +000000493 000537534 000534291 D|024020981 095780774 +000000493 000546528 000536823 D|028675501 031434968 +000000493 000547645 000607373 D|025717796 043731523 +000000493 000596610 000654863 D|047593765 050610273 +000000493 000660389 000690903 D|021619331 064704452 +000000493 000682474 000710236 D|021239922 089333685 +000000493 000690039 000718588 D|011548228 087054531 +000000493 000724222 000751789 D|097365995 050115433 +000000493 000768738 000803551 D|061660394 046588615 +000000493 000790131 000813181 D|042086648 064133565 +000000493 000857102 000858897 D|044689092 038391519 +000000493 000870948 000859804 D|041821400 004205925 +000000493 000873090 000866809 D|065477728 088801668 +000000493 000887789 000875054 D|090409870 040725614 +000000493 000904159 000895823 D|033620393 083891929 +000000493 000913419 000919676 D|056416033 090994533 +000000493 000947166 000927430 D|056238714 080411584 +000000493 000959951 000931468 D|091047248 072427000 +000000493 000971608 000989308 D|026087257 070754594 +000000493 000999477 000999194 D|006265141 042213562 +000000494 000029350 000019179 D|042941334 079095920 +000000494 000036699 000029926 D|078084441 005059412 +000000494 000038747 000045188 D|007406729 092309003 +000000494 000101762 000057829 D|068304654 078300887 +000000494 000101859 000100087 D|031411286 011100205 +000000494 000142586 000102513 D|042413614 041166162 +000000494 000144900 000124920 D|049514304 009155664 +000000494 000203687 000163755 D|092422671 041819013 +000000494 000218509 000183920 D|077799307 089478457 +000000494 000234018 000190320 D|003133822 074850867 +000000494 000274633 000213003 D|004974435 046918853 +000000494 000299319 000221901 D|038330832 027898028 +000000494 000314564 000271672 D|027535096 064350206 +000000494 000325762 000272808 D|040160720 048724078 +000000494 000343865 000329736 D|083645016 070082607 +000000494 000351947 000334341 D|043130839 032472174 +000000494 000398380 000344236 D|058275742 062844745 +000000494 000401754 000396698 D|004014981 086154545 +000000494 000420144 000430362 D|031645811 003943460 +000000494 000454557 000443054 D|077656450 047708082 +000000494 000469506 000450933 D|075493963 086809477 +000000494 000474092 000451679 D|038720895 092985687 +000000494 000507207 000459679 D|059335688 056255642 +000000494 000551669 000466889 D|053570242 075961869 +000000494 000554856 000502628 D|021370677 096547733 +000000494 000588344 000531622 D|093192768 080617389 +000000494 000618960 000590339 D|025727166 085728533 +000000494 000642310 000593172 D|048279564 013705088 +000000494 000661075 000602282 D|062890302 026915928 +000000494 000717383 000632094 D|088345814 033387962 +000000494 000718596 000646547 D|073282846 040380761 +000000494 000734435 000663180 D|022271782 030817705 +000000494 000737323 000667010 D|018780618 061811925 +000000494 000757435 000671194 D|093002437 093466343 +000000494 000783243 000675123 D|015699346 031952387 +000000494 000786386 000687732 D|031340204 098604400 +000000494 000786639 000740105 D|028036168 093809329 +000000494 000795154 000745613 D|020732799 089851830 +000000494 000826236 000803880 D|011398671 055026291 +000000494 000827894 000820655 D|059232822 053661483 +000000494 000841380 000846191 D|041802528 036198623 +000000494 000854236 000854808 D|039688251 095096534 +000000494 000858269 000880065 D|088783800 069393520 +000000494 000886820 000884116 D|077418446 007836642 +000000494 000892548 000889022 D|075735317 035384544 +000000494 000898337 000895901 D|036856397 056328881 +000000494 000904416 000916095 D|059563265 078219064 +000000494 000934544 000926859 D|060686786 073003507 +000000494 000938625 000947275 D|037777042 095329541 +000000494 000949832 000989053 D|092677469 009252171 +000000495 000020045 000016733 D|028416375 021401741 +000000495 000026249 000023795 D|085095333 097612358 +000000495 000032389 000031011 D|013847348 031603057 +000000495 000048182 000044901 D|053887599 048790448 +000000495 000071026 000126714 D|018892904 028604214 +000000495 000085331 000178643 D|063071534 075392145 +000000495 000092231 000182581 D|008032233 086391282 +000000495 000119639 000196670 D|030653717 000872354 +000000495 000131163 000209893 D|020912712 032323711 +000000495 000142668 000315878 D|031471928 009259308 +000000495 000153179 000322646 D|027943332 029474907 +000000495 000209301 000335811 D|057555795 089370718 +000000495 000277455 000338545 D|080276690 071331439 +000000495 000296642 000364670 D|062866462 035617923 +000000495 000314108 000386884 D|061140425 021717908 +000000495 000316631 000411291 D|080047852 056600039 +000000495 000374354 000420046 D|009495096 063462788 +000000495 000379092 000491035 D|045295466 093107811 +000000495 000404862 000493948 D|008700053 056083480 +000000495 000409556 000511116 D|016921963 085086594 +000000495 000410589 000528527 D|081038818 061925005 +000000495 000438954 000540192 D|053402794 022831987 +000000495 000439573 000563678 D|037284855 073188427 +000000495 000471508 000586766 D|058137284 031324116 +000000495 000472030 000606014 D|079850596 018935514 +000000495 000480926 000633290 D|056610445 073081243 +000000495 000487092 000635339 D|005182745 017476570 +000000495 000578289 000647781 D|055100787 059930574 +000000495 000612185 000654258 D|019452714 054965177 +000000495 000631078 000664882 D|032932166 003108448 +000000495 000640899 000670518 D|079282600 086576183 +000000495 000654796 000733296 D|064153841 043307781 +000000495 000693579 000739936 D|054765179 046801686 +000000495 000698509 000750515 D|073975024 028303727 +000000495 000704382 000769200 D|033151875 000246465 +000000495 000720138 000779979 D|034104979 042799991 +000000495 000746988 000781368 D|006576221 065742531 +000000495 000747901 000791131 D|075216591 002472444 +000000495 000753257 000796980 D|075269193 009115448 +000000495 000763386 000817390 D|074039758 095076747 +000000495 000764362 000817574 D|075807453 030432626 +000000495 000772153 000871727 D|046466829 019499038 +000000495 000793478 000888430 D|032234584 081645849 +000000495 000800645 000915598 D|011894141 059784160 +000000495 000897424 000926769 D|032121946 083497411 +000000495 000904929 000926806 D|065752740 087657995 +000000495 000921824 000928899 D|026363927 054709538 +000000495 000939110 000931472 D|016860515 069629895 +000000495 000964143 000935733 D|047110070 091736790 +000000495 000990146 000949954 D|069175639 062945560 +000000496 000028616 000048470 D|064372668 046265351 +000000496 000034712 000065928 D|028040930 095351445 +000000496 000052788 000097663 D|028561682 058292713 +000000496 000070216 000103800 D|040019253 057240559 +000000496 000093355 000158067 D|036029255 037492307 +000000496 000121792 000168793 D|021860672 094373488 +000000496 000149505 000220905 D|046404943 027945421 +000000496 000157035 000238394 D|075695006 039326502 +000000496 000200333 000251708 D|099649239 008989546 +000000496 000229629 000256571 D|005943876 000430082 +000000496 000230060 000280743 D|002638774 099876867 +000000496 000245280 000301560 D|084824881 000023309 +000000496 000246123 000311719 D|044763611 046401918 +000000496 000254312 000327267 D|032657389 035730418 +000000496 000289632 000328801 D|037190332 089200824 +000000496 000307431 000376293 D|069806899 090758159 +000000496 000352089 000386332 D|066644406 026381545 +000000496 000362730 000439231 D|047722056 010121584 +000000496 000438417 000442702 D|031499327 016756192 +000000496 000452209 000457582 D|027984885 089039590 +000000496 000467428 000471718 D|049459664 020996782 +000000496 000475081 000491849 D|010208708 030363132 +000000496 000482732 000501064 D|021129691 055378085 +000000496 000511772 000586351 D|003039703 008227078 +000000496 000539575 000599568 D|040956132 030146045 +000000496 000543791 000663706 D|046002779 057040564 +000000496 000543848 000676078 D|095428359 020135327 +000000496 000558965 000677800 D|011768222 004805507 +000000496 000576058 000679094 D|089685057 076717022 +000000496 000585710 000688015 D|094107899 032533426 +000000496 000586049 000697504 D|024340956 088376595 +000000496 000627112 000715326 D|024200572 084802542 +000000496 000631776 000717210 D|037282711 036366240 +000000496 000643682 000732875 D|032379746 056015617 +000000496 000656343 000751921 D|003677926 044936039 +000000496 000695052 000754973 D|098090650 086959966 +000000496 000709363 000795395 D|001898788 010030343 +000000496 000762630 000806771 D|042335387 042898773 +000000496 000762732 000831589 D|045968304 041478591 +000000496 000798394 000847023 D|080228924 037070164 +000000496 000814277 000849035 D|023679737 002024289 +000000496 000878188 000854758 D|019620318 002646390 +000000496 000897994 000867071 D|079154933 040104739 +000000496 000906503 000918692 D|081488335 065206914 +000000496 000908679 000924334 D|014933809 054862223 +000000496 000912020 000947044 D|065762069 092767747 +000000496 000938562 000959418 D|006001419 056412089 +000000496 000955799 000964320 D|094934528 029913484 +000000496 000963292 000975463 D|036713272 030357144 +000000496 000986101 000982705 D|015643962 067846597 +000000497 000000413 000010027 D|053482865 084008113 +000000497 000005341 000018300 D|082351805 054745013 +000000497 000006152 000031037 D|047659580 098573777 +000000497 000014210 000040721 D|042716825 038097202 +000000497 000027564 000049007 D|002254099 094077559 +000000497 000065237 000066403 D|073767339 020219669 +000000497 000102840 000089795 D|024244394 002400605 +000000497 000117508 000123068 D|010356808 089562247 +000000497 000121350 000197901 D|048094438 084508698 +000000497 000145020 000248734 D|072635114 031534073 +000000497 000162232 000284851 D|073570482 075090124 +000000497 000166875 000319521 D|000181928 084634919 +000000497 000205823 000320562 D|069272732 010431920 +000000497 000237247 000329454 D|060475769 099864738 +000000497 000263837 000347364 D|049272295 075492619 +000000497 000278524 000352518 D|024757727 070821740 +000000497 000297441 000356664 D|044183953 054963390 +000000497 000300013 000379261 D|029473033 080390769 +000000497 000330928 000386698 D|060022212 012419718 +000000497 000344840 000415730 D|030192745 045218992 +000000497 000359223 000417521 D|059485718 052581833 +000000497 000421158 000431946 D|087331517 053826386 +000000497 000421366 000471296 D|001213724 035372038 +000000497 000428420 000479598 D|008031753 029224290 +000000497 000441032 000509423 D|071969472 053970105 +000000497 000448451 000527810 D|041403665 066942422 +000000497 000463114 000546182 D|096661876 089622425 +000000497 000483320 000550942 D|019199114 041898989 +000000497 000487506 000569571 D|028444683 062421215 +000000497 000497794 000570155 D|027589092 030579365 +000000497 000563247 000613016 D|080521528 055036014 +000000497 000565791 000643530 D|099403122 019267560 +000000497 000572588 000647653 D|085964950 081985828 +000000497 000611042 000696546 D|045584322 039868725 +000000497 000615802 000706336 D|033470030 099851589 +000000497 000666910 000729209 D|040482296 033705910 +000000497 000705670 000741441 D|054096683 089111253 +000000497 000725400 000750742 D|015271122 077619777 +000000497 000764165 000830113 D|030662885 063076613 +000000497 000777682 000839358 D|011647603 090468450 +000000497 000783261 000842611 D|078309263 060458739 +000000497 000804041 000848879 D|088641192 026550750 +000000497 000836443 000863536 D|003610832 050451373 +000000497 000867688 000868869 D|010173698 063000491 +000000497 000873725 000872911 D|027038339 065571680 +000000497 000911860 000897316 D|079545252 044779783 +000000497 000919065 000919134 D|034683515 081468829 +000000497 000943919 000974135 D|064666408 040932236 +000000497 000982661 000989023 D|028274569 017370345 +000000497 000984982 000997211 D|006170158 057354463 +000000498 000003438 000004837 D|021805626 094122771 +000000498 000008359 000028005 D|062550799 084119662 +000000498 000013581 000033071 D|083411668 000783894 +000000498 000033946 000048432 D|064200548 004537119 +000000498 000065705 000066731 D|070718284 020741316 +000000498 000069265 000095873 D|078435705 016764289 +000000498 000076189 000108436 D|062256019 061142166 +000000498 000079610 000126979 D|012270525 061479621 +000000498 000101462 000128304 D|062365202 000846538 +000000498 000129287 000134967 D|047311806 087077943 +000000498 000158621 000183259 D|086091408 069330536 +000000498 000177905 000184144 D|046219106 061058808 +000000498 000208263 000222494 D|028208945 093949058 +000000498 000324197 000268297 D|008281825 098233683 +000000498 000371375 000308243 D|082476596 022694260 +000000498 000416772 000347363 D|023675213 032676206 +000000498 000421596 000372945 D|005976325 049408542 +000000498 000432525 000395402 D|093604427 032439278 +000000498 000491919 000428934 D|064701553 058129959 +000000498 000502662 000429631 D|026568294 036127082 +000000498 000504215 000453640 D|060834638 077995417 +000000498 000511720 000462152 D|044900928 092401407 +000000498 000520602 000467310 D|067757542 032594077 +000000498 000547501 000507043 D|036226923 095864700 +000000498 000597699 000511109 D|059524673 039911770 +000000498 000625377 000528142 D|058281107 074978359 +000000498 000647838 000528750 D|075011926 092494996 +000000498 000657343 000536905 D|013025542 016273755 +000000498 000662488 000542866 D|067765511 099838423 +000000498 000673315 000578294 D|048058452 036985113 +000000498 000673530 000581575 D|085478314 097535963 +000000498 000678536 000582157 D|096506775 021750282 +000000498 000726925 000594262 D|000558881 022593931 +000000498 000760815 000595065 D|021865153 078380418 +000000498 000764010 000612910 D|002584716 055427696 +000000498 000799617 000652044 D|084680023 028497111 +000000498 000812287 000657353 D|064396521 024407072 +000000498 000830603 000760937 D|054590869 063049985 +000000498 000859259 000776005 D|054481516 035394363 +000000498 000866214 000832068 D|056182585 099385003 +000000498 000871320 000844479 D|090858520 078818131 +000000498 000875382 000852737 D|086626993 017314068 +000000498 000890032 000865208 D|043722298 024255093 +000000498 000895603 000883701 D|080797761 015287862 +000000498 000944269 000925680 D|016007989 094949312 +000000498 000952363 000928608 D|034101241 020727696 +000000498 000971032 000945316 D|048257230 009599827 +000000498 000982778 000954061 D|084076892 022219939 +000000498 000995004 000957992 D|029336487 091053236 +000000498 000995662 000989271 D|043097314 033020151 +000000499 000008882 000035706 D|055458299 062259294 +000000499 000031565 000047359 D|041355143 025558843 +000000499 000068532 000073143 D|072664890 062422884 +000000499 000129379 000101584 D|008944503 050801760 +000000499 000135695 000108894 D|007904758 095102704 +000000499 000162936 000142219 D|018102564 094894204 +000000499 000164749 000145864 D|020891934 000351298 +000000499 000202479 000146432 D|075070038 063558681 +000000499 000244046 000166712 D|054324430 012301098 +000000499 000257088 000171008 D|004578793 012266575 +000000499 000259224 000176530 D|047436834 034686335 +000000499 000263569 000201684 D|078127277 066952266 +000000499 000280452 000202156 D|088309542 089015406 +000000499 000300135 000205655 D|079859135 064109478 +000000499 000301171 000225859 D|084109176 002750449 +000000499 000305230 000230601 D|084398708 018217642 +000000499 000310758 000246277 D|083665940 055709303 +000000499 000332039 000252107 D|050836076 066805997 +000000499 000336052 000271037 D|075581851 067912704 +000000499 000362072 000282520 D|083682054 041894166 +000000499 000365978 000313698 D|006841604 086045453 +000000499 000370613 000330676 D|036963842 045552956 +000000499 000383549 000382859 D|094024273 033036596 +000000499 000384315 000414498 D|038659853 040053932 +000000499 000388232 000429268 D|063800028 045738879 +000000499 000393813 000442912 D|000451900 077708517 +000000499 000410590 000468128 D|076455598 084227145 +000000499 000422891 000482894 D|066843462 022349022 +000000499 000462676 000483372 D|010661334 028563949 +000000499 000503912 000491002 D|020255020 050939681 +000000499 000516381 000509639 D|019343683 041912320 +000000499 000529699 000540236 D|099270776 094242594 +000000499 000549596 000569124 D|056267165 049063243 +000000499 000555572 000576180 D|096724670 027889172 +000000499 000574649 000644733 D|053403234 030362794 +000000499 000633710 000689421 D|022238304 028681347 +000000499 000650660 000720489 D|055017272 081544442 +000000499 000668849 000734333 D|073527395 048348995 +000000499 000686182 000755280 D|094554790 020462332 +000000499 000698836 000772385 D|012745162 027639050 +000000499 000714245 000775335 D|004029360 096433605 +000000499 000740990 000806594 D|094520802 096904964 +000000499 000743657 000814325 D|021246062 080966019 +000000499 000809157 000825613 D|066944197 010964788 +000000499 000826492 000907646 D|001669622 049996139 +000000499 000886240 000935363 D|055471963 040669398 +000000499 000920766 000939811 D|093928349 051839721 +000000499 000967430 000974594 D|022341449 002907937 +000000499 000968698 000988607 D|059598920 088554975 +000000499 000972699 000994614 D|030714953 093429450 +000000500 000005687 000029037 D|046475642 067202943 +000000500 000008208 000062052 D|030969563 076309473 +000000500 000013209 000062939 D|062022476 029080655 +000000500 000055309 000076920 D|046981689 027736337 +000000500 000088647 000105274 D|024781723 098744919 +000000500 000128362 000107919 D|030009375 054124562 +000000500 000155369 000155374 D|070807000 035963277 +000000500 000156724 000177079 D|055931045 083066121 +000000500 000161859 000180975 D|021615197 021610798 +000000500 000169902 000198499 D|037326734 044700618 +000000500 000184387 000207561 D|046441862 067898440 +000000500 000185152 000215757 D|011452356 003410972 +000000500 000187320 000224110 D|094963235 091652592 +000000500 000190122 000227699 D|005757932 044898871 +000000500 000214322 000279366 D|095514976 078821866 +000000500 000217474 000281784 D|067978047 099075873 +000000500 000251624 000286948 D|022110877 005328492 +000000500 000280526 000340057 D|099174778 092565641 +000000500 000295196 000347344 D|087547105 064958289 +000000500 000334466 000350474 D|078171686 028673929 +000000500 000387389 000418478 D|085018987 035660348 +000000500 000425668 000427159 D|098623204 090489375 +000000500 000467680 000442865 D|005417456 096735192 +000000500 000468406 000496945 D|007732703 061263381 +000000500 000482230 000535055 D|045274440 057932521 +000000500 000482920 000538561 D|008836805 044414774 +000000500 000547663 000539150 D|059292797 036341598 +000000500 000558004 000544467 D|071858730 046393315 +000000500 000568130 000566691 D|084635650 001896348 +000000500 000600000 000610401 D|065308722 010665499 +000000500 000612999 000620499 D|019219786 028035714 +000000500 000638592 000632107 D|054209335 009790102 +000000500 000652133 000657298 D|018191952 041081994 +000000500 000659703 000662657 D|035060343 047345908 +000000500 000669299 000677244 D|073322492 042997418 +000000500 000688411 000703325 D|040700496 090379817 +000000500 000694709 000732128 D|050248068 048400834 +000000500 000701982 000769147 D|064372751 017677245 +000000500 000740860 000786489 D|047010333 061981823 +000000500 000769733 000828323 D|063567226 056875066 +000000500 000790266 000846366 D|066826811 097324097 +000000500 000823003 000870878 D|053503335 063523931 +000000500 000830249 000883687 D|027543929 013745371 +000000500 000830735 000886016 D|033640212 005873450 +000000500 000834361 000897406 D|040938898 097395957 +000000500 000855445 000897523 D|024599703 016734398 +000000500 000885974 000932627 D|016232191 017617504 +000000500 000968313 000938935 D|002697763 032125996 +000000500 000976142 000954116 D|062512039 014235792 +000000500 000994256 000970033 D|082734450 034244955 +000000501 000004601 000007338 D|000489140 025910627 +000000501 000091661 000030011 D|075290660 092811556 +000000501 000096385 000070288 D|061838220 075282288 +000000501 000096790 000074623 D|081235813 085720619 +000000501 000104779 000085095 D|060357672 032588529 +000000501 000167957 000107042 D|012192956 015190082 +000000501 000179904 000113039 D|098569476 052689921 +000000501 000233511 000138084 D|002862193 017948577 +000000501 000241190 000145438 D|008392429 084309275 +000000501 000251331 000146897 D|008755251 035528181 +000000501 000256418 000157114 D|012254722 012104542 +000000501 000300500 000169360 D|084540629 027449134 +000000501 000326853 000207832 D|048481195 016302794 +000000501 000342799 000238435 D|065214063 058892805 +000000501 000374940 000242039 D|000912477 097270616 +000000501 000375892 000244055 D|077267110 032382496 +000000501 000377293 000255972 D|030551665 042142170 +000000501 000378692 000301185 D|015494381 092480956 +000000501 000445642 000315092 D|005685447 045774734 +000000501 000475860 000331062 D|047794386 069713947 +000000501 000485058 000339205 D|001063111 029047678 +000000501 000504880 000341454 D|097497340 019507461 +000000501 000509286 000359057 D|073239280 064109650 +000000501 000542891 000408032 D|063180096 053329123 +000000501 000553065 000452937 D|025050636 094408130 +000000501 000563665 000453330 D|065207761 046069838 +000000501 000594116 000457444 D|044156568 082778002 +000000501 000598875 000469501 D|033370640 068958715 +000000501 000609703 000489152 D|035677666 058871511 +000000501 000630120 000537625 D|096853946 086552018 +000000501 000637792 000544428 D|046754354 020328063 +000000501 000643722 000567910 D|008354060 018063130 +000000501 000669660 000575267 D|026471347 010370130 +000000501 000691563 000588369 D|002293313 022901187 +000000501 000698609 000592580 D|038481646 030173680 +000000501 000699022 000676328 D|089541458 012401349 +000000501 000731264 000726611 D|083498510 016364471 +000000501 000736669 000731679 D|055703705 062910672 +000000501 000743010 000742106 D|060410956 020887098 +000000501 000753729 000797436 D|008814046 092685451 +000000501 000765391 000812096 D|038902264 019716436 +000000501 000790962 000832622 D|095908536 077106156 +000000501 000791030 000838490 D|055564922 033325688 +000000501 000870396 000874095 D|057341854 061760229 +000000501 000883287 000888968 D|006272511 090092132 +000000501 000912737 000889744 D|027056125 065341087 +000000501 000933186 000910087 D|012994223 018251072 +000000501 000936810 000959016 D|035983229 036518113 +000000501 000945727 000977748 D|002495760 048699102 +000000501 000981131 000999016 D|042795841 020373260 +000000502 000020548 000002416 D|065931122 051960305 +000000502 000053738 000016180 D|078848440 008592284 +000000502 000097476 000027045 D|035013811 083433353 +000000502 000133796 000031857 D|027262685 083492619 +000000502 000144039 000042589 D|090588429 065856360 +000000502 000171887 000058525 D|056386434 047421431 +000000502 000180978 000067846 D|011374934 092315455 +000000502 000190352 000082352 D|049812568 082221685 +000000502 000218391 000155311 D|019093218 063725709 +000000502 000237838 000168122 D|075662333 048547049 +000000502 000251042 000178918 D|011217724 011032506 +000000502 000300495 000183888 D|018706043 092964936 +000000502 000302913 000217335 D|072059395 093363342 +000000502 000310009 000220807 D|081946581 015436079 +000000502 000363960 000235282 D|051276581 052928494 +000000502 000445208 000258736 D|009513192 099963867 +000000502 000448066 000262806 D|030551285 039965964 +000000502 000455405 000302685 D|099878670 031602645 +000000502 000460380 000323775 D|072701618 007770680 +000000502 000469723 000336035 D|094670087 062708312 +000000502 000474763 000336826 D|023163261 017142833 +000000502 000502953 000373365 D|020538717 058102147 +000000502 000636211 000389020 D|008863223 097110062 +000000502 000655310 000391071 D|097250664 069783425 +000000502 000670260 000460132 D|029953747 086081320 +000000502 000688698 000478150 D|053485013 022045417 +000000502 000713688 000535976 D|078650464 044983972 +000000502 000715910 000538657 D|064750423 048740048 +000000502 000726108 000540184 D|041660165 082593443 +000000502 000726948 000583716 D|036892575 024278926 +000000502 000736728 000595571 D|019039647 051823092 +000000502 000737181 000605242 D|003175453 052015437 +000000502 000766502 000615218 D|044996056 068405838 +000000502 000779386 000652115 D|046496529 009719859 +000000502 000796921 000757585 D|015970888 047948607 +000000502 000811944 000760796 D|023000498 089486065 +000000502 000812664 000761537 D|000210336 047925264 +000000502 000817023 000763000 D|084634819 095961937 +000000502 000836342 000766886 D|080298893 084277443 +000000502 000837112 000791676 D|041232132 038998543 +000000502 000845603 000817836 D|022338902 065975739 +000000502 000908058 000838724 D|087215445 005961636 +000000502 000932982 000894780 D|062948604 075046898 +000000502 000962924 000901809 D|095133821 048148109 +000000502 000967043 000908868 D|056369516 006526599 +000000502 000984928 000912048 D|046458886 038680840 +000000502 000991571 000962294 D|031304648 009392760 +000000502 000997609 000972902 D|008680249 094343992 +000000502 000998748 000975568 D|066929243 062888322 +000000502 000999874 000975581 D|053696254 005674762 +000000503 000036971 000011238 D|043081968 007433149 +000000503 000104508 000023478 D|095498997 087912605 +000000503 000111960 000063931 D|033442371 000278765 +000000503 000123702 000090305 D|082998025 065647764 +000000503 000199986 000128214 D|044953082 014456953 +000000503 000204678 000143449 D|037597304 075294341 +000000503 000209255 000149894 D|067197248 023419519 +000000503 000227542 000171922 D|081937915 080634001 +000000503 000251832 000176349 D|004249475 071899461 +000000503 000252852 000177152 D|069886389 055752446 +000000503 000297406 000198177 D|038466584 002723290 +000000503 000301437 000234853 D|007703884 019794634 +000000503 000312717 000239874 D|018908094 030750462 +000000503 000323332 000252977 D|074190374 080317500 +000000503 000333790 000279995 D|046239393 081853765 +000000503 000346019 000298375 D|089868969 013335716 +000000503 000349742 000359209 D|024144648 003460194 +000000503 000357850 000370598 D|055230406 076573673 +000000503 000377055 000395493 D|040167707 016921126 +000000503 000400327 000403602 D|083510493 057393627 +000000503 000414051 000432903 D|008635542 097677467 +000000503 000417331 000471688 D|063568216 066084682 +000000503 000466286 000473871 D|080771183 069573265 +000000503 000473556 000504950 D|033567802 055637628 +000000503 000480265 000508313 D|053830907 072031543 +000000503 000497039 000516224 D|072398275 020221619 +000000503 000498604 000527996 D|018429826 063807537 +000000503 000503421 000555462 D|064868895 057291880 +000000503 000506137 000559302 D|086813177 072363633 +000000503 000521874 000578002 D|064993073 057664572 +000000503 000543303 000582746 D|059219213 058391835 +000000503 000554589 000588934 D|031783061 011768302 +000000503 000576550 000592026 D|088663315 059068888 +000000503 000599360 000596447 D|096771631 038898002 +000000503 000613374 000617927 D|053649206 044301357 +000000503 000626588 000640016 D|054038721 052706430 +000000503 000627820 000690168 D|025490901 030294550 +000000503 000682672 000727844 D|086613257 050868028 +000000503 000691741 000747679 D|080322370 084948631 +000000503 000699029 000749724 D|002161256 069621172 +000000503 000710711 000774305 D|065167437 026845646 +000000503 000731252 000792341 D|036452399 070428182 +000000503 000784694 000807451 D|094390276 007307651 +000000503 000847866 000811723 D|058267434 018877088 +000000503 000876421 000817589 D|079213592 042513661 +000000503 000896762 000833468 D|023151159 034031442 +000000503 000902123 000847418 D|038278643 022586835 +000000503 000927835 000853800 D|066428404 094302011 +000000503 000963655 000879457 D|008390291 086383987 +000000503 000988922 000913385 D|022817943 098715951 +000000504 000049301 000008261 D|014057928 017004721 +000000504 000098990 000009599 D|061451878 076259057 +000000504 000125027 000019483 D|010215125 048052445 +000000504 000128555 000042453 D|023621667 050162498 +000000504 000136127 000063144 D|027147516 021703436 +000000504 000164153 000097200 D|062526095 020615706 +000000504 000175491 000105109 D|005495435 006034003 +000000504 000193936 000133018 D|023393376 061737157 +000000504 000202688 000147360 D|075100339 037027089 +000000504 000222855 000184259 D|002423135 017582986 +000000504 000274774 000189653 D|050626177 027674824 +000000504 000287653 000211647 D|008788750 014487225 +000000504 000340910 000219553 D|070597749 009406386 +000000504 000345298 000290069 D|047750690 029266646 +000000504 000347938 000316054 D|010193421 071450940 +000000504 000447723 000328271 D|072107143 035455014 +000000504 000478417 000365661 D|056137838 053316777 +000000504 000487390 000368722 D|075312271 018314775 +000000504 000514168 000404642 D|065002126 040488771 +000000504 000571384 000411408 D|016705122 018603862 +000000504 000588080 000414183 D|060804228 085702888 +000000504 000604312 000414987 D|012091595 098796677 +000000504 000627196 000438223 D|012104469 011623603 +000000504 000663749 000449946 D|041261026 037647844 +000000504 000678437 000454906 D|025169748 076795259 +000000504 000687917 000476231 D|070115273 086767002 +000000504 000690074 000512561 D|009501270 002058365 +000000504 000690381 000537863 D|006207623 051861490 +000000504 000710737 000556629 D|083074897 094163932 +000000504 000775067 000565805 D|098263522 079245140 +000000504 000776927 000608143 D|065401686 018491193 +000000504 000812018 000627242 D|076961567 036012424 +000000504 000827875 000638071 D|094640594 053176325 +000000504 000844162 000640857 D|094520439 017630447 +000000504 000852602 000648810 D|069007862 078662919 +000000504 000884048 000665267 D|020796737 072519504 +000000504 000885524 000699827 D|067269741 015777972 +000000504 000892679 000723480 D|019160935 033671842 +000000504 000893282 000750399 D|048214612 011526913 +000000504 000914602 000802354 D|027033944 025129631 +000000504 000921480 000805126 D|032714323 050211723 +000000504 000931805 000807836 D|066442442 030860662 +000000504 000940408 000829437 D|013111656 007625769 +000000504 000942299 000859286 D|017873743 031602129 +000000504 000946965 000893756 D|028503595 040670899 +000000504 000960380 000937314 D|000303254 021717038 +000000504 000987587 000941585 D|063745206 039792700 +000000504 000989004 000949150 D|051628961 058071199 +000000504 000993592 000958990 D|046852234 005453820 +000000504 000994506 000984922 D|017731569 038348415 +000000505 000022878 000059854 D|010880585 005254664 +000000505 000051524 000089377 D|010180947 017791192 +000000505 000058117 000094416 D|035497065 026038276 +000000505 000076000 000095320 D|036656400 058179166 +000000505 000079093 000108917 D|000487900 086377634 +000000505 000118960 000112089 D|019026676 019598089 +000000505 000128126 000127510 D|050320814 093628892 +000000505 000155280 000131302 D|051457998 097474537 +000000505 000175378 000160728 D|038014251 047556462 +000000505 000188558 000161110 D|017106553 046889739 +000000505 000216700 000162050 D|013046936 001947704 +000000505 000220195 000244735 D|082206373 034262012 +000000505 000227414 000250535 D|045681502 033348167 +000000505 000245615 000279176 D|077842020 052486594 +000000505 000252568 000291574 D|031868125 001581509 +000000505 000254112 000303254 D|053787301 033404744 +000000505 000254473 000308502 D|034976913 030781401 +000000505 000326189 000312593 D|003377402 087603548 +000000505 000362893 000378806 D|044200785 015531734 +000000505 000377893 000427393 D|000771544 098158800 +000000505 000396493 000427787 D|013496137 023520751 +000000505 000426204 000431817 D|052821689 079176458 +000000505 000449145 000457554 D|009052918 036945420 +000000505 000459535 000470666 D|033267619 038112424 +000000505 000474813 000473012 D|069939233 062818686 +000000505 000491232 000523599 D|098204320 012313624 +000000505 000526890 000539941 D|077644804 089214171 +000000505 000544090 000545840 D|089826618 040383265 +000000505 000546898 000564565 D|044724213 049943041 +000000505 000550918 000566706 D|015134344 088949910 +000000505 000558892 000579814 D|019329568 046332686 +000000505 000585536 000588972 D|080274711 080508329 +000000505 000604427 000593300 D|003092299 016514732 +000000505 000612489 000640147 D|059921629 029839238 +000000505 000619497 000691963 D|055924152 030849662 +000000505 000629213 000696909 D|083810870 019783637 +000000505 000649271 000734966 D|050343492 038437870 +000000505 000663355 000756270 D|020708906 066305889 +000000505 000666124 000761402 D|031116548 017940178 +000000505 000698911 000765257 D|098095413 095884129 +000000505 000710141 000791116 D|062928150 028551820 +000000505 000717066 000791299 D|063109941 030624765 +000000505 000753813 000794880 D|063345230 081862347 +000000505 000825234 000861210 D|031420175 041442157 +000000505 000834124 000866375 D|056611571 027460681 +000000505 000859671 000870163 D|009811496 061273820 +000000505 000860825 000900799 D|040115494 095898968 +000000505 000888130 000909806 D|098395855 013948961 +000000505 000914645 000939761 D|067612969 022566901 +000000505 000928003 000985479 D|057203671 068967169 +000000506 000002232 000021752 D|016572954 004112101 +000000506 000020750 000083168 D|032279745 055132637 +000000506 000081164 000088218 D|090956317 025155054 +000000506 000087684 000095479 D|006256977 095095024 +000000506 000121183 000110306 D|089734693 012581412 +000000506 000125558 000122548 D|021557340 049432930 +000000506 000135679 000123357 D|005131861 005511547 +000000506 000137136 000178433 D|072892053 093576818 +000000506 000144238 000194890 D|088081893 056243809 +000000506 000146567 000209999 D|007248177 064948289 +000000506 000167668 000244521 D|001305200 053769832 +000000506 000193977 000256560 D|059754219 047257759 +000000506 000202211 000270346 D|074390855 014163661 +000000506 000222699 000286020 D|039376665 043419904 +000000506 000250907 000308679 D|013893297 011377906 +000000506 000253806 000328266 D|078777984 008603211 +000000506 000258437 000333852 D|093174619 069582761 +000000506 000267431 000348421 D|091524082 063008364 +000000506 000296108 000369654 D|015500826 072984146 +000000506 000299615 000406718 D|011823895 048576037 +000000506 000320482 000408279 D|015753400 064094603 +000000506 000375710 000414804 D|096378563 091935364 +000000506 000401554 000415624 D|066441298 080182721 +000000506 000416767 000437787 D|022837359 019723903 +000000506 000420404 000497325 D|063709575 002248289 +000000506 000431748 000512444 D|039885339 093821120 +000000506 000463998 000512761 D|041254464 070748529 +000000506 000473073 000538882 D|041515607 061387541 +000000506 000476000 000558940 D|012910761 091017724 +000000506 000494827 000567748 D|057770089 019543846 +000000506 000517400 000571212 D|028347797 056641147 +000000506 000538361 000572222 D|020087788 058529358 +000000506 000551955 000590740 D|043922220 018945396 +000000506 000616397 000605391 D|008383454 026010843 +000000506 000653987 000612713 D|087102747 039044609 +000000506 000672832 000672392 D|022088897 049784917 +000000506 000730925 000681184 D|037489858 067388879 +000000506 000773363 000687371 D|040877375 022190222 +000000506 000775310 000693628 D|005873459 026567408 +000000506 000781625 000725627 D|063970480 073007091 +000000506 000797334 000729059 D|059513453 079494569 +000000506 000802916 000730911 D|014590302 059165241 +000000506 000811005 000764968 D|038344916 019342500 +000000506 000826936 000775406 D|007387772 004520896 +000000506 000866721 000795153 D|066839908 020282769 +000000506 000880637 000810812 D|001413204 002868053 +000000506 000886538 000826572 D|037299250 033984293 +000000506 000898102 000834741 D|048257761 006127470 +000000506 000980473 000863128 D|099615819 047075507 +000000506 000990885 000997422 D|068536000 027354508 +000000507 000037863 000021203 D|000112400 072350527 +000000507 000050138 000038711 D|077775273 028065622 +000000507 000072308 000047085 D|061628893 033787601 +000000507 000081576 000052259 D|037908829 047487452 +000000507 000095048 000058683 D|076895259 099769261 +000000507 000135269 000079276 D|001289555 028913220 +000000507 000147058 000097471 D|029537174 075511476 +000000507 000149120 000110687 D|014860031 020204211 +000000507 000171783 000126102 D|046849250 041934052 +000000507 000177004 000135748 D|095554178 034213905 +000000507 000191772 000146841 D|049250770 083457444 +000000507 000199457 000151806 D|003442597 094197095 +000000507 000213585 000167127 D|071988703 011523171 +000000507 000226126 000191123 D|065329040 001332348 +000000507 000241517 000201041 D|099903452 030063799 +000000507 000250943 000219835 D|030617836 049436947 +000000507 000282786 000226377 D|034868376 078298964 +000000507 000284109 000234510 D|098753785 069221475 +000000507 000285893 000240650 D|009513510 043417441 +000000507 000287527 000290660 D|052576142 038269500 +000000507 000346073 000310776 D|066761634 032138702 +000000507 000351731 000318835 D|070524262 005691662 +000000507 000365163 000334755 D|087718356 010813170 +000000507 000392944 000341310 D|064234015 020156693 +000000507 000484888 000441084 D|006566089 056740640 +000000507 000525131 000454440 D|022145953 034107939 +000000507 000535551 000459137 D|029480921 026152853 +000000507 000544912 000464658 D|089149455 000451473 +000000507 000545608 000489996 D|095486807 018378806 +000000507 000586742 000513927 D|070548037 035598316 +000000507 000604850 000540470 D|002408380 095568111 +000000507 000634453 000546377 D|011132857 021047856 +000000507 000647863 000549895 D|014045716 072774553 +000000507 000650578 000559382 D|001312088 056348242 +000000507 000653661 000585290 D|081147481 077677416 +000000507 000677169 000602168 D|097725761 048642133 +000000507 000713220 000620299 D|090017265 013963519 +000000507 000715211 000649143 D|009772097 034472583 +000000507 000715804 000699703 D|058497415 016280875 +000000507 000761439 000712128 D|074590968 009415283 +000000507 000801151 000723267 D|058791167 037519246 +000000507 000803885 000751005 D|049381775 070742661 +000000507 000827001 000755016 D|081046670 083989961 +000000507 000831834 000812392 D|043900653 098989054 +000000507 000836285 000854846 D|025541207 026823854 +000000507 000921513 000862359 D|017896944 020312136 +000000507 000945038 000880418 D|031832050 018354723 +000000507 000948045 000902411 D|065538618 066511931 +000000507 000954428 000933615 D|006208383 059754437 +000000507 000966485 000991769 D|081006946 005714044 +000000508 000039114 000009016 D|092989974 027514564 +000000508 000053281 000024333 D|047614111 014063510 +000000508 000077673 000073067 D|056103082 059098153 +000000508 000168909 000085097 D|026579945 025364440 +000000508 000176222 000090020 D|061267088 027252410 +000000508 000204834 000111372 D|037730243 063042191 +000000508 000264976 000151354 D|073741247 010690452 +000000508 000301268 000180167 D|082923156 065303979 +000000508 000318711 000187817 D|082606510 095160740 +000000508 000339880 000200278 D|084947491 029551192 +000000508 000354234 000230398 D|027388146 080790193 +000000508 000373831 000251679 D|004019827 060825397 +000000508 000376703 000262356 D|056552962 074452405 +000000508 000381948 000271828 D|079453363 045463744 +000000508 000397090 000291347 D|086272891 052913013 +000000508 000450837 000293336 D|006423785 032253875 +000000508 000456753 000294399 D|096895591 009850487 +000000508 000503758 000321307 D|065758807 079488970 +000000508 000526654 000321709 D|072669437 092140826 +000000508 000532086 000329323 D|062717028 079320354 +000000508 000542706 000387827 D|054807420 086836010 +000000508 000579129 000397313 D|031646291 070308647 +000000508 000579882 000405812 D|074131368 015838190 +000000508 000609515 000408868 D|016243691 081925024 +000000508 000639881 000415293 D|097495504 070655539 +000000508 000647804 000438698 D|062943753 084409067 +000000508 000682843 000443716 D|064513286 024310767 +000000508 000684938 000444026 D|002106431 023742857 +000000508 000692827 000508345 D|054844628 092218639 +000000508 000733850 000513207 D|071692492 035768408 +000000508 000736381 000522695 D|062197029 073142989 +000000508 000740586 000585648 D|097830940 048557213 +000000508 000742431 000638983 D|035306040 069683267 +000000508 000767111 000656618 D|014310772 031584771 +000000508 000788853 000670036 D|057205248 063935739 +000000508 000794692 000698074 D|099960677 099115244 +000000508 000827091 000714519 D|094519590 019638128 +000000508 000843611 000717441 D|049002390 099202375 +000000508 000857856 000742659 D|064079126 017064642 +000000508 000862045 000743101 D|071705865 028059318 +000000508 000867323 000766385 D|041458158 073114153 +000000508 000888700 000772304 D|001476505 064219292 +000000508 000912047 000776627 D|072964471 047222847 +000000508 000961553 000824816 D|061161958 042705831 +000000508 000968249 000844187 D|014468376 015781565 +000000508 000978276 000858575 D|081810494 024435594 +000000508 000983227 000909553 D|057574734 048842930 +000000508 000989678 000916273 D|057898359 083093268 +000000508 000993775 000927358 D|009211248 006740058 +000000508 000999341 000955205 D|083110186 083454231 +000000509 000013614 000005027 D|020096691 082488547 +000000509 000014460 000008372 D|097693484 047012528 +000000509 000034121 000028975 D|040274395 057506225 +000000509 000068375 000038118 D|096314223 099249843 +000000509 000087296 000087618 D|099616361 054843299 +000000509 000113242 000097998 D|016692926 092681836 +000000509 000114161 000108912 D|002946586 072792714 +000000509 000136070 000133729 D|081128649 085161680 +000000509 000147539 000149945 D|022429260 049840457 +000000509 000148266 000152457 D|070179569 066287749 +000000509 000218330 000170448 D|086494874 010747613 +000000509 000241344 000177771 D|010042093 042248479 +000000509 000241784 000184422 D|023710127 002776197 +000000509 000262644 000195438 D|013840003 044825550 +000000509 000268201 000213405 D|004047960 007161219 +000000509 000272288 000262160 D|062562003 091719099 +000000509 000295662 000293252 D|071146461 097996505 +000000509 000295730 000320725 D|003502527 005968821 +000000509 000348043 000347341 D|049669396 022402715 +000000509 000349925 000365886 D|078689680 007986171 +000000509 000360197 000371622 D|057449809 011567159 +000000509 000392565 000372350 D|017066296 018288048 +000000509 000396850 000396482 D|089120999 001955949 +000000509 000428914 000403944 D|067286173 091844370 +000000509 000465554 000424307 D|097140257 092096816 +000000509 000478554 000456976 D|027777611 076099480 +000000509 000502619 000537786 D|014795871 073460669 +000000509 000520378 000541133 D|022974005 017261594 +000000509 000551044 000545083 D|087361659 052568791 +000000509 000577601 000548641 D|039548042 017328944 +000000509 000586004 000549549 D|066141648 046431381 +000000509 000586581 000555723 D|001576794 054251747 +000000509 000627149 000594294 D|002567809 065117987 +000000509 000630347 000613620 D|010023252 088848545 +000000509 000636446 000622129 D|045929225 046128442 +000000509 000639476 000631845 D|071358363 013308737 +000000509 000643953 000690748 D|072328509 063584752 +000000509 000686927 000708045 D|015843025 042592180 +000000509 000689020 000721743 D|074672430 075671151 +000000509 000695396 000731818 D|067161688 060653715 +000000509 000717146 000793432 D|014771979 047655145 +000000509 000747606 000855020 D|037570983 093955704 +000000509 000773168 000862846 D|024506270 081011952 +000000509 000801941 000862932 D|085720915 004091073 +000000509 000826213 000865148 D|074620771 033497999 +000000509 000846542 000871308 D|027701347 093609284 +000000509 000941813 000964039 D|021536516 060025831 +000000509 000956379 000974651 D|060059804 071159543 +000000509 000971415 000979890 D|007172306 019606565 +000000509 000973255 000990297 D|091738755 087542466 +000000510 000005409 000025563 D|061895085 074727778 +000000510 000026510 000029376 D|081832495 011746411 +000000510 000048436 000056389 D|093182645 057780909 +000000510 000064277 000125459 D|094177934 034719175 +000000510 000079137 000138019 D|000620526 088549583 +000000510 000093736 000138925 D|065232479 057347038 +000000510 000098436 000145015 D|051373995 045914598 +000000510 000136241 000178887 D|034116067 084837101 +000000510 000136689 000179077 D|095907298 006263407 +000000510 000146714 000185467 D|024046817 016498702 +000000510 000159828 000190529 D|042646094 006774644 +000000510 000186997 000198184 D|063241977 093121036 +000000510 000191987 000214399 D|051813327 007284812 +000000510 000214047 000232612 D|066858627 030344627 +000000510 000258847 000237093 D|035044762 043214140 +000000510 000269957 000242926 D|011373883 066482249 +000000510 000280538 000302253 D|008526020 064399063 +000000510 000301583 000308790 D|060911020 060025976 +000000510 000315049 000324042 D|082484178 043943836 +000000510 000353333 000332795 D|042199049 066964531 +000000510 000378338 000355689 D|030964262 016715006 +000000510 000381274 000372976 D|028614593 065155092 +000000510 000409997 000398660 D|039055018 015717876 +000000510 000530867 000401681 D|076010032 078124407 +000000510 000532737 000407062 D|033739705 032819496 +000000510 000542104 000413066 D|025846642 060060006 +000000510 000602101 000418862 D|003818131 019768567 +000000510 000662214 000421806 D|073841181 028900658 +000000510 000666140 000430436 D|096372950 085218810 +000000510 000721559 000434841 D|061232528 027431009 +000000510 000721588 000440028 D|031764666 047184504 +000000510 000722857 000456344 D|056451842 007960961 +000000510 000733432 000494910 D|096515355 011725968 +000000510 000750321 000501745 D|018753236 095095451 +000000510 000754263 000581874 D|008998342 060179143 +000000510 000764529 000605507 D|094275123 044106875 +000000510 000766918 000621388 D|030442717 090935662 +000000510 000811337 000649360 D|001265966 039076101 +000000510 000811788 000672969 D|011596951 080187648 +000000510 000815541 000721525 D|062984835 040828638 +000000510 000836391 000763528 D|071322448 056488162 +000000510 000847557 000768376 D|027994568 018154221 +000000510 000877323 000822569 D|053451640 023390957 +000000510 000897397 000840843 D|079063077 047276859 +000000510 000923743 000875154 D|091407554 094811993 +000000510 000939833 000876436 D|079200690 036952229 +000000510 000971051 000949940 D|098187533 031786615 +000000510 000983845 000968069 D|036224147 006743431 +000000510 000991697 000968320 D|062745992 038831210 +000000510 000997860 000986453 D|008340978 006570981 +000000511 000027605 000025324 D|071783236 059417580 +000000511 000056580 000027526 D|019572479 061358786 +000000511 000064071 000063096 D|051042318 010230264 +000000511 000115087 000184919 D|073252471 055571078 +000000511 000184723 000221989 D|070376482 007799185 +000000511 000188304 000233318 D|039857172 037627924 +000000511 000203320 000241124 D|022641789 058532351 +000000511 000214281 000250455 D|069354289 022365542 +000000511 000227581 000253805 D|059398088 040371659 +000000511 000232414 000285555 D|041144936 074087405 +000000511 000269020 000351597 D|048256659 082855679 +000000511 000291810 000385514 D|099582972 010692285 +000000511 000292882 000398535 D|065465203 075496810 +000000511 000296833 000429440 D|016841621 083804459 +000000511 000297256 000434557 D|034706179 033823472 +000000511 000311391 000437872 D|029959025 042119193 +000000511 000324923 000455840 D|055620129 041272806 +000000511 000335430 000468780 D|006169320 059873401 +000000511 000339878 000474049 D|027499435 016385382 +000000511 000340759 000498063 D|022017641 038494396 +000000511 000347440 000499827 D|045525828 071854798 +000000511 000357346 000544943 D|044273633 099167885 +000000511 000392219 000549812 D|061080535 092112790 +000000511 000429794 000585517 D|045797073 084243578 +000000511 000438342 000586235 D|097777866 041337036 +000000511 000445442 000613596 D|092339391 088168393 +000000511 000452453 000627034 D|033572661 079786318 +000000511 000469606 000658091 D|058304025 013715502 +000000511 000498327 000661302 D|031679322 052452202 +000000511 000510444 000673444 D|025675616 016824847 +000000511 000581909 000698987 D|056778914 095819592 +000000511 000613244 000705387 D|075122851 011808464 +000000511 000614265 000707718 D|059078044 058330027 +000000511 000617521 000732289 D|015796774 081328447 +000000511 000621257 000739698 D|005649082 070940291 +000000511 000642786 000749219 D|014387275 092663534 +000000511 000652223 000756472 D|093978465 047378423 +000000511 000660534 000765000 D|078046974 066186887 +000000511 000661385 000774558 D|065236436 084938560 +000000511 000677727 000802666 D|099644020 036710014 +000000511 000730915 000812605 D|049536203 043395013 +000000511 000783308 000854868 D|010955677 037720846 +000000511 000791090 000880452 D|054149559 018647877 +000000511 000820383 000883838 D|011445025 062519461 +000000511 000834324 000946880 D|036524717 064813066 +000000511 000853677 000964874 D|017451770 063608318 +000000511 000861633 000978197 D|049064926 037857987 +000000511 000895691 000978675 D|070756201 094564969 +000000511 000958943 000978897 D|022000728 012889362 +000000511 000995873 000984415 D|083841933 068190393 +000000512 000015416 000014733 D|092819267 044288256 +000000512 000018799 000047978 D|001637294 065561790 +000000512 000042652 000081719 D|033379746 061886799 +000000512 000056733 000101270 D|092445049 076584817 +000000512 000063437 000103411 D|020392141 018259325 +000000512 000083154 000116777 D|094562961 019935362 +000000512 000105917 000157875 D|038604051 002296644 +000000512 000113896 000164543 D|069749986 055536456 +000000512 000115874 000222964 D|079700134 066837162 +000000512 000121661 000238918 D|085083512 023010870 +000000512 000139005 000263956 D|063033024 032690400 +000000512 000150439 000280655 D|026849203 033048947 +000000512 000191256 000291634 D|075695749 099410939 +000000512 000193555 000328383 D|019278569 091355095 +000000512 000209801 000352011 D|040470300 090564537 +000000512 000226514 000364907 D|029217365 014798586 +000000512 000227046 000414536 D|004164054 075592460 +000000512 000234830 000421453 D|071582064 015837735 +000000512 000258867 000500040 D|038133377 053836171 +000000512 000269476 000502489 D|084234789 086899304 +000000512 000271673 000510432 D|019429783 019746981 +000000512 000305721 000527055 D|037465707 025133414 +000000512 000318293 000567613 D|013254818 085062256 +000000512 000321965 000585467 D|063331061 057370669 +000000512 000334866 000588567 D|053022214 094489373 +000000512 000426255 000592284 D|010039868 016787031 +000000512 000429999 000611676 D|068189461 012748588 +000000512 000457373 000645439 D|092976182 064481157 +000000512 000467818 000657231 D|004425253 081504586 +000000512 000491897 000702324 D|034160970 055374275 +000000512 000494768 000704427 D|092257742 061129427 +000000512 000514016 000716153 D|095656107 096864202 +000000512 000559317 000733662 D|070239415 007288168 +000000512 000627938 000741673 D|008521378 059049015 +000000512 000636668 000758139 D|012716874 056099160 +000000512 000665970 000760307 D|015976223 062606279 +000000512 000689134 000763383 D|019360940 062340600 +000000512 000708719 000790289 D|047980131 047713862 +000000512 000744083 000809008 D|034976283 030332720 +000000512 000778422 000822926 D|013006891 059674597 +000000512 000795426 000824746 D|005198541 048690829 +000000512 000798467 000828379 D|078015677 023699168 +000000512 000804386 000868528 D|020342257 068540191 +000000512 000833117 000875653 D|015516442 063145458 +000000512 000840795 000894530 D|030139053 026499489 +000000512 000870632 000901566 D|029503411 019712666 +000000512 000921008 000965086 D|032761444 087166668 +000000512 000924624 000969824 D|083639421 012879890 +000000512 000948732 000981821 D|077540862 000502292 +000000512 000956688 000995415 D|005710559 084149878 +000000513 000030937 000021339 D|035326917 028888761 +000000513 000032759 000049943 D|066625720 060610166 +000000513 000048954 000056356 D|018363283 073321582 +000000513 000053778 000075245 D|006657719 062151599 +000000513 000055887 000107213 D|056802529 034793446 +000000513 000064632 000108810 D|000924937 032318152 +000000513 000136801 000113712 D|019879313 044499072 +000000513 000139380 000127894 D|025015665 003091531 +000000513 000177801 000140819 D|079925398 001533280 +000000513 000208162 000157136 D|004748737 026863866 +000000513 000208399 000178422 D|059906614 038611986 +000000513 000208893 000223593 D|054580992 033847094 +000000513 000212727 000232508 D|023785794 031639680 +000000513 000225142 000245439 D|077404331 047956582 +000000513 000270624 000247938 D|094441871 026947873 +000000513 000277835 000269074 D|041576107 085140234 +000000513 000289753 000296432 D|084289870 082071612 +000000513 000317605 000347716 D|096594056 010483468 +000000513 000371583 000407592 D|033970749 077440421 +000000513 000381369 000410285 D|091848378 022171847 +000000513 000384063 000425511 D|057417638 005815650 +000000513 000397840 000485263 D|052279734 095491094 +000000513 000477489 000510191 D|019008791 065362108 +000000513 000485560 000520823 D|090645557 098887892 +000000513 000485761 000556187 D|081946773 033764076 +000000513 000495541 000558741 D|051721395 060981415 +000000513 000506549 000583992 D|010440093 055649888 +000000513 000515715 000589843 D|055016728 099758540 +000000513 000546040 000600530 D|036690194 051370608 +000000513 000554579 000601126 D|087690901 029146216 +000000513 000559722 000605970 D|055629295 023142068 +000000513 000570937 000637146 D|052856206 073500498 +000000513 000636934 000680036 D|010705606 002948649 +000000513 000657429 000699693 D|072278376 035258859 +000000513 000672750 000707430 D|065696168 018054632 +000000513 000721799 000786452 D|079332299 093681073 +000000513 000723362 000793475 D|067221072 012358396 +000000513 000746449 000812979 D|076407080 045251806 +000000513 000751004 000830307 D|047950963 071931404 +000000513 000758434 000831114 D|082383232 032539606 +000000513 000769268 000834945 D|038523863 063795443 +000000513 000788701 000861832 D|045727127 011828863 +000000513 000871781 000902272 D|042534838 047530875 +000000513 000877405 000906889 D|044781836 015646511 +000000513 000881630 000907946 D|098237886 092031033 +000000513 000893107 000908215 D|026143983 064610055 +000000513 000906339 000963479 D|077703318 049875766 +000000513 000919346 000977116 D|048554838 093526653 +000000513 000929231 000980073 D|086944865 081012853 +000000513 000982852 000992463 D|089675570 061052869 +000000514 000034106 000007376 D|015879201 029722046 +000000514 000050029 000009543 D|080447821 079752267 +000000514 000056349 000025122 D|077866930 017866588 +000000514 000076233 000103539 D|070189951 022173259 +000000514 000090273 000115489 D|087139826 031397281 +000000514 000162228 000116725 D|044767891 089515169 +000000514 000196015 000124840 D|042598198 024925329 +000000514 000246436 000138462 D|038651664 043292251 +000000514 000298700 000167882 D|067072114 044172862 +000000514 000319387 000170883 D|035545618 090529329 +000000514 000319950 000175109 D|084361278 084588912 +000000514 000332182 000176808 D|028431161 034396010 +000000514 000337582 000189355 D|055483527 085632931 +000000514 000342472 000192906 D|047094647 001398276 +000000514 000346656 000246816 D|012871334 065713038 +000000514 000353102 000265048 D|026493237 074582391 +000000514 000383506 000281051 D|059047046 046745288 +000000514 000392325 000286529 D|064692045 066069459 +000000514 000393265 000299614 D|054036111 059165774 +000000514 000415220 000301397 D|036868313 092071036 +000000514 000436202 000313185 D|015546361 034469650 +000000514 000473123 000362472 D|036298479 094338317 +000000514 000476005 000365475 D|070453762 041316343 +000000514 000482750 000394457 D|089475521 044211333 +000000514 000483132 000396992 D|028221618 072260253 +000000514 000544352 000433047 D|043668625 099210645 +000000514 000559229 000443725 D|072431055 084948679 +000000514 000580437 000517940 D|049279788 096554395 +000000514 000597147 000523692 D|046620302 013620813 +000000514 000617241 000564935 D|000619943 029710308 +000000514 000619110 000604009 D|085614452 037352685 +000000514 000640214 000645258 D|095993277 053473359 +000000514 000679925 000683460 D|082150732 088350192 +000000514 000686321 000684164 D|035331929 038429269 +000000514 000740100 000717748 D|027120208 023080291 +000000514 000750254 000723972 D|064488985 042252962 +000000514 000750989 000743782 D|035530666 068333351 +000000514 000752797 000749565 D|079750451 079835957 +000000514 000757792 000752708 D|086699811 007290978 +000000514 000776947 000754953 D|055558929 073903071 +000000514 000800609 000780853 D|057982600 025480923 +000000514 000802607 000785020 D|061537847 026773275 +000000514 000811723 000834619 D|052986286 003143677 +000000514 000823426 000855055 D|097050493 002784759 +000000514 000873788 000869032 D|046136038 005945647 +000000514 000932166 000929372 D|008320616 018686742 +000000514 000949139 000936058 D|086642967 042349301 +000000514 000954250 000938710 D|072271336 084779276 +000000514 000974157 000962792 D|077449896 071390975 +000000514 000981413 000982976 D|006956036 081339115 +000000515 000029947 000059433 D|043194860 047507587 +000000515 000037490 000069582 D|076728332 047664340 +000000515 000056588 000092130 D|015583451 078714020 +000000515 000059176 000104271 D|009299159 063567537 +000000515 000077464 000130640 D|099781627 075201865 +000000515 000086994 000142493 D|062588149 044989740 +000000515 000105876 000145651 D|021776530 008128306 +000000515 000113884 000169597 D|066299276 024957391 +000000515 000120136 000196110 D|052962548 044545048 +000000515 000148333 000205641 D|049630612 025885098 +000000515 000150569 000212304 D|064678880 048502460 +000000515 000175042 000252361 D|034748724 088802838 +000000515 000218027 000259756 D|073559908 051468292 +000000515 000219914 000264285 D|055157319 039467432 +000000515 000257170 000294645 D|092404557 014885734 +000000515 000293496 000371697 D|092583115 040013602 +000000515 000357507 000377514 D|098757880 043876612 +000000515 000382499 000384441 D|075850739 038456139 +000000515 000459349 000388061 D|097940007 099578747 +000000515 000471080 000390382 D|078879170 076531136 +000000515 000492239 000402639 D|002117319 027982125 +000000515 000500563 000402834 D|079575429 007707078 +000000515 000508503 000461122 D|073669737 096464711 +000000515 000523441 000484220 D|092271840 047998256 +000000515 000553979 000497325 D|060952354 073807326 +000000515 000560005 000507268 D|016515248 028641063 +000000515 000564182 000510597 D|062432498 015447948 +000000515 000564976 000539065 D|011694214 035884497 +000000515 000594901 000541224 D|022024336 040699717 +000000515 000615249 000543145 D|012760297 091006459 +000000515 000645729 000544642 D|061972032 006941984 +000000515 000652370 000572338 D|008069152 008947351 +000000515 000658488 000587066 D|093144492 081270852 +000000515 000682223 000649045 D|023803207 072554187 +000000515 000682931 000653747 D|011906136 010424528 +000000515 000688785 000688347 D|085520738 089038540 +000000515 000696476 000701768 D|055205801 025981217 +000000515 000708660 000728942 D|045521843 071437978 +000000515 000710354 000730301 D|054663317 008018911 +000000515 000768371 000738873 D|077183364 020623469 +000000515 000800399 000764837 D|047467477 046617479 +000000515 000808792 000767871 D|060275771 047625233 +000000515 000875075 000776153 D|099806240 091392696 +000000515 000886399 000788118 D|086682502 045016330 +000000515 000911523 000791141 D|002557445 076121556 +000000515 000931678 000898622 D|058313480 073699584 +000000515 000938656 000906165 D|071007759 035630966 +000000515 000945030 000953108 D|097881553 052849955 +000000515 000947098 000953191 D|078321639 055214319 +000000515 000999372 000981815 D|035631791 077573011 +000000516 000029100 000007701 D|027673863 065667339 +000000516 000030588 000020605 D|065200353 093512036 +000000516 000053656 000031077 D|057443887 090049357 +000000516 000056874 000043762 D|019180805 015366172 +000000516 000074491 000053239 D|096318728 063522599 +000000516 000103418 000067904 D|032101032 063923729 +000000516 000169696 000089167 D|002050290 090050078 +000000516 000195754 000096870 D|014439458 098060050 +000000516 000202916 000104201 D|084101968 027028239 +000000516 000243054 000104514 D|036659737 000348803 +000000516 000262562 000174921 D|045370545 069642152 +000000516 000299036 000188536 D|088303256 092181737 +000000516 000305700 000193169 D|029638205 021107723 +000000516 000315194 000271373 D|077473082 075860764 +000000516 000340647 000294753 D|037542247 074942789 +000000516 000359760 000298714 D|030121835 055184948 +000000516 000368023 000300237 D|018958564 007467853 +000000516 000376746 000306834 D|050088130 081571870 +000000516 000380866 000367994 D|009682301 060995105 +000000516 000406414 000415665 D|011652796 036566125 +000000516 000464748 000469764 D|007311858 097869690 +000000516 000466039 000472803 D|060276209 023772124 +000000516 000498846 000519950 D|086825020 073117494 +000000516 000507334 000522213 D|007237466 083142574 +000000516 000514836 000596095 D|083185173 044680311 +000000516 000516446 000596477 D|022252487 079104338 +000000516 000543503 000597338 D|043448130 093780708 +000000516 000549474 000600073 D|054174341 079974649 +000000516 000553593 000623542 D|085745174 087173017 +000000516 000564942 000637033 D|092626797 093285651 +000000516 000575123 000650244 D|096301780 002686443 +000000516 000603197 000672890 D|085931823 064292384 +000000516 000631651 000750233 D|071576277 002331088 +000000516 000637102 000753472 D|089835800 007183084 +000000516 000670729 000753488 D|005629567 008574970 +000000516 000683340 000767668 D|042350196 042218865 +000000516 000693630 000770987 D|028663788 000460910 +000000516 000700755 000814166 D|045540075 097143312 +000000516 000701260 000814509 D|064215217 020077856 +000000516 000738644 000816828 D|008224722 069425183 +000000516 000739028 000849999 D|052466564 099249605 +000000516 000770298 000855545 D|002048052 057329498 +000000516 000793783 000876383 D|063870624 009754057 +000000516 000833169 000902194 D|096011764 041643592 +000000516 000843076 000921173 D|089215143 048009707 +000000516 000865390 000921528 D|017773765 003362223 +000000516 000896049 000929482 D|073022016 070713915 +000000516 000946436 000932584 D|079470022 040799693 +000000516 000949962 000937361 D|072310559 060379302 +000000516 000979152 000938995 D|035925316 018769697 +000000517 000013152 000027944 D|022595287 051576894 +000000517 000019304 000046417 D|092620733 070125249 +000000517 000088999 000054436 D|004159295 049896254 +000000517 000173224 000061021 D|057873617 089004261 +000000517 000246370 000075773 D|027014707 099878895 +000000517 000297739 000139363 D|019794018 023191620 +000000517 000303622 000139522 D|001945338 028733238 +000000517 000340709 000198113 D|086433948 020050938 +000000517 000344803 000206894 D|089764220 090490837 +000000517 000346050 000220940 D|056792313 042978917 +000000517 000362807 000240170 D|079923657 099278805 +000000517 000381015 000244283 D|073769392 005311719 +000000517 000385614 000282566 D|070800935 000760987 +000000517 000394562 000355315 D|094448750 068444733 +000000517 000422571 000364671 D|007951352 010731899 +000000517 000434344 000373079 D|010333876 038097237 +000000517 000441292 000400977 D|036346603 053350437 +000000517 000444209 000409269 D|073922640 000310078 +000000517 000453778 000416395 D|036065155 075785151 +000000517 000459852 000426731 D|040228303 001452382 +000000517 000473098 000431936 D|037890602 036847289 +000000517 000473145 000441053 D|000027938 077809514 +000000517 000515635 000465748 D|015590383 029182271 +000000517 000542618 000493156 D|063115484 082019363 +000000517 000544274 000494622 D|096264663 018924540 +000000517 000547572 000495371 D|082381371 098010797 +000000517 000588236 000504555 D|040297170 055822666 +000000517 000599647 000530319 D|065622561 086491715 +000000517 000599718 000533960 D|084329269 010527590 +000000517 000627669 000540466 D|063256755 069602209 +000000517 000633701 000586225 D|048228747 026626473 +000000517 000635581 000610345 D|065075432 002608071 +000000517 000644272 000675192 D|056192825 022808381 +000000517 000645058 000684021 D|089639749 091025252 +000000517 000759135 000686037 D|073551025 040947832 +000000517 000799293 000687169 D|068986937 098653301 +000000517 000836802 000691991 D|017780980 063986113 +000000517 000841936 000746012 D|029123614 002665524 +000000517 000843928 000785309 D|070915827 059091247 +000000517 000905692 000792414 D|082648806 025469397 +000000517 000913871 000797339 D|066610025 044222536 +000000517 000928079 000822095 D|072418889 024945158 +000000517 000928436 000835065 D|061032493 021331557 +000000517 000929603 000842272 D|010778421 098058961 +000000517 000932155 000854024 D|097039904 041673453 +000000517 000939928 000855399 D|013174702 057335669 +000000517 000955700 000873384 D|090310264 044494501 +000000517 000957991 000911794 D|080763235 016425446 +000000517 000970411 000924395 D|011704197 020986881 +000000517 000988286 000933426 D|094850157 099609379 +000000518 000001930 000016604 D|032101348 005492883 +000000518 000020953 000086475 D|004062943 003940986 +000000518 000026291 000092023 D|071492425 006911035 +000000518 000057755 000103936 D|059323787 035399610 +000000518 000059369 000119093 D|031584086 050684430 +000000518 000081332 000120608 D|046053082 012813161 +000000518 000096645 000123282 D|060546253 090174062 +000000518 000152178 000157871 D|032814560 077643971 +000000518 000158615 000182970 D|093053602 072757376 +000000518 000187615 000188180 D|031555726 059351695 +000000518 000192437 000204330 D|021361935 089643087 +000000518 000195633 000205641 D|042226523 034373075 +000000518 000197392 000211958 D|091540540 052236221 +000000518 000198180 000224564 D|059426356 014112658 +000000518 000213885 000240356 D|082126125 030979242 +000000518 000230892 000244489 D|046181298 022663377 +000000518 000256454 000249995 D|016567762 064381980 +000000518 000263907 000252925 D|086181188 020417953 +000000518 000273870 000253441 D|067367673 098293700 +000000518 000298972 000286180 D|082519019 070770951 +000000518 000310951 000295504 D|037599446 078673499 +000000518 000313140 000310793 D|047417026 081359663 +000000518 000414108 000316655 D|028967603 071811204 +000000518 000437731 000328001 D|041912290 004466549 +000000518 000456998 000370881 D|086287900 021857764 +000000518 000457361 000390097 D|071546122 047948819 +000000518 000507317 000397826 D|067139431 063171196 +000000518 000514517 000424112 D|060447260 023251795 +000000518 000549969 000429493 D|074173558 050752169 +000000518 000591342 000469851 D|035278849 094757050 +000000518 000627426 000514046 D|012010139 051357899 +000000518 000664134 000533784 D|011727988 083461812 +000000518 000668184 000547485 D|061048387 054276664 +000000518 000668268 000549285 D|031774619 092757014 +000000518 000700260 000559147 D|034894093 044195175 +000000518 000771268 000573208 D|059771393 078186663 +000000518 000776656 000598349 D|094836148 059401745 +000000518 000783271 000599956 D|027317279 021439262 +000000518 000788282 000617321 D|078779078 088335960 +000000518 000800202 000619076 D|085276311 055379754 +000000518 000811896 000715526 D|087309721 001752263 +000000518 000855817 000721068 D|079446551 089922785 +000000518 000864507 000793654 D|077962122 065475780 +000000518 000868429 000811317 D|013291210 017800477 +000000518 000879563 000912773 D|011494321 055231607 +000000518 000884494 000925883 D|078525053 092169597 +000000518 000923633 000950539 D|036761662 030065259 +000000518 000956672 000956305 D|096709216 016268809 +000000518 000969406 000989092 D|040837982 031760139 +000000518 000983108 000998846 D|030305146 079520884 +000000519 000004794 000012041 D|007732116 071456994 +000000519 000014942 000070498 D|091041167 063271722 +000000519 000046331 000080902 D|048687687 085496125 +000000519 000051251 000102123 D|039660688 044158046 +000000519 000065718 000138484 D|013763721 051067747 +000000519 000086735 000189052 D|075350702 093102175 +000000519 000098277 000198734 D|032813990 097028629 +000000519 000101773 000217178 D|010465046 054060721 +000000519 000116173 000220100 D|097819540 005868108 +000000519 000132725 000226624 D|090495776 081155177 +000000519 000185858 000229882 D|043537124 059244419 +000000519 000196439 000246941 D|083929047 016218594 +000000519 000198143 000278518 D|033569831 076242094 +000000519 000301980 000289261 D|098792273 069510677 +000000519 000341758 000301059 D|076779114 046914440 +000000519 000347704 000339134 D|045315473 061061631 +000000519 000381164 000340562 D|099104356 063852980 +000000519 000393106 000353038 D|033935829 010309267 +000000519 000401783 000395291 D|098978240 050650044 +000000519 000405873 000405914 D|081740064 073723849 +000000519 000420923 000416192 D|004342708 018583281 +000000519 000428521 000421565 D|014940403 055282758 +000000519 000469304 000436562 D|004310521 008357583 +000000519 000482386 000436978 D|077476369 037888639 +000000519 000485231 000451665 D|006710773 050831436 +000000519 000489752 000475773 D|018051213 098876085 +000000519 000545536 000496287 D|072822772 071980778 +000000519 000552678 000511760 D|076284545 066871567 +000000519 000575273 000529477 D|029276224 076896521 +000000519 000633209 000529580 D|029534266 090357717 +000000519 000669195 000547185 D|068076567 071769337 +000000519 000674133 000568349 D|085516288 043091214 +000000519 000682942 000577988 D|094374200 083926603 +000000519 000690237 000597118 D|051818786 099728036 +000000519 000710138 000658293 D|044938521 009288276 +000000519 000718008 000676304 D|088296147 035050151 +000000519 000732599 000676941 D|038745895 084273731 +000000519 000735787 000680283 D|054511531 095769920 +000000519 000778154 000771116 D|046955391 038158560 +000000519 000782592 000830434 D|085245539 075756531 +000000519 000782886 000872383 D|000415722 063992258 +000000519 000792284 000903206 D|029824199 040729573 +000000519 000808671 000908367 D|092504907 039396938 +000000519 000856674 000919170 D|086090761 000424547 +000000519 000860784 000927463 D|070209747 029898371 +000000519 000864083 000935214 D|024640498 057450823 +000000519 000876360 000941150 D|046184530 039732877 +000000519 000957551 000974595 D|067863807 031585900 +000000519 000962715 000991439 D|015243208 012559469 +000000519 000994468 000999094 D|063826982 076868888 +000000520 000016159 000023602 D|001878106 053440423 +000000520 000040993 000049329 D|046017361 099251584 +000000520 000088116 000066103 D|054636188 083804461 +000000520 000109028 000070492 D|079924788 025636709 +000000520 000121265 000094459 D|041553466 069731949 +000000520 000144252 000118312 D|048412296 018186319 +000000520 000202107 000120894 D|095382527 035108198 +000000520 000212459 000133662 D|011299316 029408176 +000000520 000222366 000155868 D|086876298 014127236 +000000520 000243632 000173049 D|098664419 058006320 +000000520 000245656 000214088 D|013294643 022403346 +000000520 000256899 000231845 D|036312748 084514327 +000000520 000264550 000244551 D|012695326 010106366 +000000520 000267209 000286046 D|063229088 099541540 +000000520 000292128 000300437 D|029423023 095331608 +000000520 000307356 000305353 D|028528439 038012891 +000000520 000326857 000307934 D|014940322 088733580 +000000520 000334199 000351931 D|004879464 014149912 +000000520 000367225 000378771 D|042671867 075363127 +000000520 000375572 000431609 D|082077050 040903348 +000000520 000382893 000449547 D|010322955 064043676 +000000520 000392083 000470345 D|011417127 057284875 +000000520 000421035 000487892 D|000278968 041400734 +000000520 000421914 000498386 D|048556123 027971371 +000000520 000435850 000512211 D|032899627 052399778 +000000520 000461346 000526220 D|074103202 091257414 +000000520 000502433 000583101 D|011381082 036036535 +000000520 000584813 000611745 D|009034653 084514938 +000000520 000587894 000664161 D|053799105 018803852 +000000520 000602545 000690863 D|031861708 085881548 +000000520 000606528 000691356 D|084966223 070287224 +000000520 000636862 000698659 D|094633484 024100708 +000000520 000660743 000713756 D|084949265 074423048 +000000520 000663261 000720917 D|013508005 073972580 +000000520 000676339 000730811 D|051662645 044011133 +000000520 000680581 000747911 D|030629386 020991184 +000000520 000699099 000755241 D|063643706 064429025 +000000520 000703220 000767673 D|056084147 027259334 +000000520 000754525 000780845 D|095351652 064580672 +000000520 000765670 000800168 D|078643806 057735143 +000000520 000784678 000804708 D|044422689 090795819 +000000520 000789877 000855269 D|059850316 027532444 +000000520 000804603 000881620 D|098398791 016315983 +000000520 000805504 000889903 D|005051587 050863965 +000000520 000844870 000912733 D|039793403 069925608 +000000520 000901946 000920708 D|088596378 045672625 +000000520 000921718 000962381 D|019294070 047970296 +000000520 000924784 000964668 D|090405604 021210407 +000000520 000969038 000966338 D|032154881 016199966 +000000520 000991824 000973543 D|032597316 055449959 +000000521 000029048 000003905 D|087425929 033350467 +000000521 000050159 000009482 D|051029489 082521324 +000000521 000057202 000021697 D|020660323 016069958 +000000521 000067987 000049084 D|062874430 093413916 +000000521 000075669 000056782 D|020646284 099899911 +000000521 000091148 000123126 D|043046186 025128769 +000000521 000104781 000151034 D|035470857 006407916 +000000521 000129686 000163311 D|057640422 048322276 +000000521 000177102 000209366 D|032938954 099620068 +000000521 000182125 000215305 D|097097661 081640630 +000000521 000202380 000301614 D|060702826 009349532 +000000521 000219744 000340291 D|088565983 065912759 +000000521 000250236 000346018 D|081642332 089039862 +000000521 000261596 000352458 D|082928747 005152612 +000000521 000285641 000353004 D|009489432 018636267 +000000521 000335673 000378480 D|016031493 045047733 +000000521 000381915 000378601 D|010823526 020980735 +000000521 000397214 000389859 D|044227433 003178607 +000000521 000435334 000409503 D|052510130 064400511 +000000521 000448456 000429810 D|049346952 045412267 +000000521 000448644 000438510 D|024937436 071085016 +000000521 000453393 000441900 D|052030327 031716115 +000000521 000460610 000456322 D|020271457 086313223 +000000521 000473428 000462105 D|025123481 076507299 +000000521 000486768 000482000 D|097744154 064150097 +000000521 000493142 000505670 D|072631916 090450921 +000000521 000516456 000521450 D|041361997 059812663 +000000521 000556433 000527925 D|089443239 012901337 +000000521 000570186 000570145 D|096886894 092408705 +000000521 000658339 000592938 D|090139430 012951490 +000000521 000658579 000593746 D|088032779 021942943 +000000521 000682630 000637720 D|088660022 067087391 +000000521 000690542 000640374 D|052778890 079742965 +000000521 000694848 000656546 D|033267356 039681382 +000000521 000700517 000663005 D|057722058 030580495 +000000521 000762096 000663645 D|000368475 095862266 +000000521 000764182 000665382 D|007888246 025094238 +000000521 000775886 000675176 D|037209051 026850699 +000000521 000780864 000705325 D|014349759 022783236 +000000521 000803884 000712256 D|063767473 007620783 +000000521 000809410 000784638 D|068028628 079551951 +000000521 000815569 000819998 D|074551179 092078925 +000000521 000847767 000822302 D|068440430 051318485 +000000521 000855937 000834607 D|056474222 048825871 +000000521 000856780 000868999 D|070082492 065582221 +000000521 000867832 000877217 D|088272289 061726124 +000000521 000882049 000914813 D|095762814 090720385 +000000521 000963972 000925253 D|000855695 030046194 +000000521 000969993 000928537 D|010426435 000445447 +000000521 000994366 000958016 D|069567548 084902997 +000000522 000028085 000003103 D|096836894 016766659 +000000522 000028116 000017859 D|067170935 020680267 +000000522 000052347 000042866 D|071119258 050361739 +000000522 000054693 000075898 D|017375115 076295720 +000000522 000081053 000099225 D|060490629 084811036 +000000522 000107435 000111217 D|004609114 004595555 +000000522 000158234 000127610 D|065154199 025524895 +000000522 000158471 000135177 D|088346192 009464953 +000000522 000180204 000154439 D|062087887 066087007 +000000522 000183570 000171788 D|017977614 072628879 +000000522 000233051 000177436 D|090192127 007764975 +000000522 000272124 000206946 D|043056250 044213990 +000000522 000312924 000217446 D|012381126 061274664 +000000522 000315619 000260147 D|025314249 002960923 +000000522 000346731 000365308 D|050891844 052469102 +000000522 000361994 000382663 D|072835085 077702201 +000000522 000390485 000416420 D|094027597 085563144 +000000522 000392986 000416866 D|043751036 041323003 +000000522 000412416 000426422 D|010726399 055273535 +000000522 000423228 000456055 D|059852508 087780673 +000000522 000440216 000461611 D|088760280 096446001 +000000522 000451206 000497551 D|026946375 065965145 +000000522 000455442 000505687 D|078050235 021730621 +000000522 000510156 000509482 D|025970394 050640350 +000000522 000516115 000519496 D|095379042 022447492 +000000522 000523908 000541601 D|073665961 095522488 +000000522 000557560 000545164 D|072527523 013695217 +000000522 000570628 000571246 D|023443049 054116495 +000000522 000590120 000578839 D|033457519 093281535 +000000522 000621574 000598477 D|000047479 013403166 +000000522 000623573 000607959 D|064240231 063462445 +000000522 000662968 000618309 D|033544247 051347906 +000000522 000674119 000619466 D|084852593 069426119 +000000522 000694136 000626762 D|077529807 024975013 +000000522 000697196 000626863 D|008224880 079021230 +000000522 000708100 000798575 D|075893273 047370254 +000000522 000782828 000826683 D|092906767 000341067 +000000522 000790769 000826743 D|070629457 091070696 +000000522 000797719 000841347 D|091419468 040593518 +000000522 000803301 000865339 D|042534136 040357801 +000000522 000811512 000887746 D|085891848 052766592 +000000522 000815726 000913689 D|020111546 036342831 +000000522 000838404 000927728 D|057764915 072100447 +000000522 000859503 000939229 D|087338719 033440543 +000000522 000859840 000940127 D|072329878 097166827 +000000522 000897323 000948618 D|087990427 092537866 +000000522 000944641 000957027 D|010392759 012016845 +000000522 000950460 000963883 D|084065295 057362040 +000000522 000978716 000997973 D|023649791 007168030 +000000522 000980641 000998994 D|072137487 082187069 +000000523 000000074 000004645 D|027725622 085477599 +000000523 000013051 000027849 D|027469189 094669443 +000000523 000061669 000058058 D|019262693 090105776 +000000523 000097561 000063107 D|042176546 053857844 +000000523 000098066 000094564 D|057095312 087719102 +000000523 000127804 000107827 D|079203568 019465539 +000000523 000128985 000127095 D|095587997 092440012 +000000523 000178850 000175236 D|043534612 080667770 +000000523 000190909 000209162 D|023183077 033170052 +000000523 000221207 000223467 D|019093846 096137720 +000000523 000239405 000224036 D|057053548 010502446 +000000523 000261749 000230524 D|043332263 050224903 +000000523 000303507 000292661 D|095778040 095276948 +000000523 000314530 000324500 D|009312391 051578717 +000000523 000406509 000404422 D|002291602 097699513 +000000523 000425043 000424058 D|093106567 085211341 +000000523 000440178 000431266 D|001716180 030218046 +000000523 000465540 000436362 D|033852568 016969458 +000000523 000483612 000443854 D|093570074 082357720 +000000523 000506413 000468179 D|048055924 056054780 +000000523 000551265 000484367 D|015974437 025691408 +000000523 000563654 000488801 D|029946965 096201276 +000000523 000576690 000490268 D|070309881 028333693 +000000523 000595478 000496842 D|026130488 097530533 +000000523 000599909 000506109 D|001207428 067792317 +000000523 000623064 000511931 D|049661237 010087076 +000000523 000629047 000525406 D|042056919 089173753 +000000523 000631604 000537602 D|024067173 021519543 +000000523 000639210 000551145 D|077953374 080441781 +000000523 000641004 000615551 D|051236464 075279100 +000000523 000650336 000618463 D|051644817 091853058 +000000523 000656428 000644092 D|011837140 036631699 +000000523 000667297 000644786 D|037801679 078852877 +000000523 000687460 000667867 D|087145833 014110375 +000000523 000705266 000678154 D|078018190 089630032 +000000523 000719516 000694049 D|007615786 000350993 +000000523 000785181 000698691 D|014254287 031435515 +000000523 000792752 000738189 D|042345922 091838541 +000000523 000808988 000749884 D|086209642 091700298 +000000523 000820186 000771029 D|007261539 081006424 +000000523 000821997 000785120 D|051227601 063032930 +000000523 000832254 000841403 D|042978385 041242777 +000000523 000839736 000860520 D|076638328 007558327 +000000523 000862081 000870900 D|031859858 085245718 +000000523 000865554 000882392 D|066628599 013668273 +000000523 000931409 000930770 D|080801066 077489804 +000000523 000935834 000959532 D|057110610 042761354 +000000523 000954491 000960960 D|031245116 022560606 +000000523 000965928 000970563 D|020047898 079175584 +000000523 000981622 000986888 D|049090479 029569716 +000000524 000012042 000017021 D|052216432 077538690 +000000524 000041713 000036090 D|078180214 050896006 +000000524 000078227 000036688 D|087795680 005238319 +000000524 000103683 000046229 D|047383763 060855544 +000000524 000149995 000056396 D|010935597 014869683 +000000524 000206405 000070799 D|098981511 085521667 +000000524 000224428 000087434 D|032813960 051450748 +000000524 000224821 000100099 D|094736377 016310060 +000000524 000236623 000149619 D|062698018 036906904 +000000524 000241375 000161894 D|097774574 068895120 +000000524 000271463 000177027 D|046538823 085310927 +000000524 000281948 000188173 D|063399593 051999068 +000000524 000315917 000189947 D|018976138 032214964 +000000524 000318205 000240719 D|086022402 003374036 +000000524 000355777 000257378 D|000886708 060595083 +000000524 000360417 000280993 D|014447881 011431382 +000000524 000374093 000285040 D|006365237 057136360 +000000524 000381318 000305195 D|091976626 087933268 +000000524 000381636 000311741 D|073664739 037643666 +000000524 000389144 000340895 D|009477033 030574637 +000000524 000401459 000408011 D|033834881 065843798 +000000524 000417060 000421247 D|079101841 081132333 +000000524 000425471 000453257 D|032595753 057325535 +000000524 000433756 000466981 D|057253145 046235778 +000000524 000448923 000492143 D|087742261 035192618 +000000524 000461454 000492810 D|076935761 054680691 +000000524 000468200 000493963 D|000549538 032725167 +000000524 000479203 000506925 D|069210620 006589460 +000000524 000489047 000511926 D|098288734 082734293 +000000524 000489827 000520691 D|030716828 041768787 +000000524 000508228 000528742 D|076905190 013122364 +000000524 000519481 000566162 D|001787225 025993104 +000000524 000519723 000593425 D|065876733 009803807 +000000524 000613756 000627057 D|083369437 034562391 +000000524 000670697 000655548 D|077913783 027481516 +000000524 000698450 000676313 D|080778778 097521037 +000000524 000710107 000677699 D|049792782 087597338 +000000524 000751837 000739141 D|001061928 001765628 +000000524 000766318 000765966 D|017158448 089399968 +000000524 000774480 000769271 D|010091123 001868371 +000000524 000792212 000815463 D|038006346 062060218 +000000524 000811014 000830819 D|081700426 051602251 +000000524 000815328 000835408 D|020147585 095451526 +000000524 000866008 000883533 D|006540863 031060233 +000000524 000889241 000893568 D|000316560 064023893 +000000524 000890644 000926083 D|002029356 038509830 +000000524 000929684 000947734 D|058291672 089857655 +000000524 000956750 000957610 D|001157888 098155813 +000000524 000996699 000959334 D|025205308 032581012 +000000524 000999135 000977167 D|041683001 063459805 +000000525 000027017 000024365 D|037388365 070644887 +000000525 000059293 000055834 D|075773821 077077776 +000000525 000062020 000067363 D|021373999 088668926 +000000525 000079298 000082275 D|004465064 067049705 +000000525 000084851 000085290 D|000522610 075928790 +000000525 000136056 000085477 D|093257062 015441508 +000000525 000149562 000087437 D|004969201 034147861 +000000525 000162273 000087712 D|097355921 044082520 +000000525 000190075 000093714 D|052646964 012478236 +000000525 000222158 000137178 D|094036144 076899217 +000000525 000226563 000138519 D|030772413 027712565 +000000525 000257707 000175685 D|082719700 019288990 +000000525 000261312 000252959 D|048093575 034469814 +000000525 000287483 000254594 D|093177596 064483260 +000000525 000294182 000255248 D|027291431 029030849 +000000525 000296772 000255790 D|068319874 030924741 +000000525 000312636 000395068 D|022045182 087899188 +000000525 000331302 000397803 D|094368948 028823842 +000000525 000406632 000408607 D|098453179 029579037 +000000525 000426894 000472855 D|093838637 082456807 +000000525 000472684 000485008 D|000496702 080749718 +000000525 000483076 000490179 D|035878616 039484150 +000000525 000488643 000540854 D|052024293 006806038 +000000525 000490571 000551888 D|035721768 000385552 +000000525 000502998 000556410 D|031243993 045618899 +000000525 000503415 000562427 D|068229170 001619239 +000000525 000601955 000564057 D|089899662 038977379 +000000525 000621497 000593272 D|044628767 036736601 +000000525 000674515 000594089 D|093244386 027335862 +000000525 000711086 000607323 D|091629256 063213634 +000000525 000724632 000649398 D|021327668 003790192 +000000525 000740032 000688664 D|053278095 032587442 +000000525 000743318 000692754 D|034692257 035830318 +000000525 000745367 000710399 D|084587366 063614645 +000000525 000748284 000737580 D|032780332 020335465 +000000525 000750606 000740591 D|019544434 025460721 +000000525 000792179 000741453 D|079533609 001048828 +000000525 000800981 000742718 D|095874559 063829722 +000000525 000801060 000749576 D|011578997 015737144 +000000525 000809366 000766830 D|092522802 070649520 +000000525 000814263 000770832 D|046088228 051081790 +000000525 000819048 000785783 D|039343194 082266632 +000000525 000823392 000810107 D|045841828 028899090 +000000525 000877874 000822715 D|032758364 036145082 +000000525 000887685 000846390 D|043597090 027787853 +000000525 000946503 000849015 D|046642480 077206424 +000000525 000969206 000853426 D|099451899 032337677 +000000525 000975608 000903189 D|090108525 011818337 +000000525 000994856 000974268 D|033138311 086608262 +000000525 000995641 000984642 D|051413670 012320547 +000000526 000011488 000003124 D|048659058 027707861 +000000526 000069321 000079313 D|016788571 028821864 +000000526 000076565 000117426 D|034705789 038894839 +000000526 000106698 000130866 D|088974456 087634045 +000000526 000107062 000200479 D|098399470 015947856 +000000526 000197280 000235353 D|098406831 013660094 +000000526 000199462 000254064 D|084823013 096260280 +000000526 000210055 000266374 D|059276486 042915404 +000000526 000240113 000275172 D|054083797 082043213 +000000526 000244373 000277721 D|090199802 070468467 +000000526 000274307 000281107 D|084159900 032904138 +000000526 000276447 000294135 D|034917295 031772644 +000000526 000318699 000317260 D|083681575 078871293 +000000526 000386157 000340241 D|056423348 044897690 +000000526 000406716 000366830 D|094787803 026461966 +000000526 000437599 000380196 D|075940410 054417382 +000000526 000443755 000382032 D|008571930 014485970 +000000526 000445781 000391031 D|027328708 049701417 +000000526 000467758 000415940 D|043620477 043675797 +000000526 000478454 000436898 D|085264708 080755041 +000000526 000479252 000447786 D|079997882 076415520 +000000526 000513518 000453418 D|003850389 043055605 +000000526 000539539 000465296 D|076990953 067455148 +000000526 000541938 000478661 D|061278108 058530511 +000000526 000552954 000485392 D|005671092 080464851 +000000526 000556209 000487084 D|050875267 036908078 +000000526 000561199 000512160 D|058701332 061804713 +000000526 000566430 000538086 D|093520348 075004428 +000000526 000626417 000540320 D|019716528 096616123 +000000526 000640388 000610887 D|067263047 041790651 +000000526 000677772 000615064 D|084027185 026037627 +000000526 000684901 000621995 D|052041647 030924980 +000000526 000736900 000626661 D|037924257 028204482 +000000526 000737898 000648861 D|062588025 002616019 +000000526 000767135 000672735 D|000386602 060129042 +000000526 000777549 000677240 D|039798310 036030234 +000000526 000780177 000692983 D|010736358 015815310 +000000526 000799060 000721742 D|000889276 005827952 +000000526 000802068 000750256 D|030421488 082717884 +000000526 000808919 000792728 D|063078447 053522744 +000000526 000821153 000802385 D|079476725 001365748 +000000526 000824161 000817632 D|019270710 038578737 +000000526 000834100 000849462 D|022144642 080631622 +000000526 000840904 000850348 D|097478188 070748972 +000000526 000842823 000853058 D|022056112 088326001 +000000526 000865425 000880132 D|060172905 083389979 +000000526 000895484 000935186 D|038761005 086851253 +000000526 000932594 000953400 D|057532840 033904233 +000000526 000990155 000959935 D|051280400 093421833 +000000526 000996325 000971486 D|015707821 070847141 +000000527 000028015 000016984 D|007010116 069395161 +000000527 000032716 000061027 D|061889873 072849059 +000000527 000035500 000066007 D|061504826 073670180 +000000527 000048903 000114798 D|007631636 085202736 +000000527 000060793 000197633 D|038298284 053186235 +000000527 000062589 000208809 D|014351165 086601390 +000000527 000099239 000223044 D|036292634 018071642 +000000527 000135641 000226559 D|068209057 072878052 +000000527 000137266 000248327 D|018435224 044703141 +000000527 000211297 000299045 D|030139998 070991854 +000000527 000226037 000303832 D|067948753 029670085 +000000527 000231370 000316858 D|069294624 054037750 +000000527 000270988 000318930 D|013258115 023550765 +000000527 000323964 000330256 D|057596165 056316758 +000000527 000347360 000349135 D|000249130 061663996 +000000527 000350378 000350980 D|067730979 069466228 +000000527 000351039 000373307 D|042369606 062212735 +000000527 000355560 000380772 D|061011729 025932874 +000000527 000369963 000382996 D|011613965 073076698 +000000527 000370418 000391003 D|001232157 014930465 +000000527 000390137 000416920 D|017491496 038373839 +000000527 000418365 000448795 D|051083306 026899257 +000000527 000475300 000498843 D|070263508 014860239 +000000527 000500010 000505826 D|094781530 071847076 +000000527 000502433 000514255 D|055443290 051042852 +000000527 000513554 000517562 D|041293156 069280654 +000000527 000531941 000532885 D|061786670 043723928 +000000527 000533995 000545996 D|030564845 019136835 +000000527 000614311 000581465 D|054353430 009154919 +000000527 000625773 000599955 D|062349917 048554573 +000000527 000631145 000675974 D|069073680 058485910 +000000527 000637147 000687798 D|059795032 007251179 +000000527 000642611 000736027 D|032439320 000033002 +000000527 000644332 000756788 D|049003331 013221022 +000000527 000658223 000760083 D|069435784 018498192 +000000527 000680739 000774848 D|019191300 038324113 +000000527 000704355 000782716 D|023443881 072547854 +000000527 000717072 000791857 D|001145138 038667916 +000000527 000758044 000793419 D|040510647 065748903 +000000527 000760911 000804618 D|016324803 010960378 +000000527 000780396 000805665 D|058048383 054171812 +000000527 000787284 000834897 D|090850248 057855903 +000000527 000843222 000851892 D|035487887 062451573 +000000527 000863921 000894456 D|029912541 019925016 +000000527 000880251 000910728 D|000474712 008045494 +000000527 000965326 000941421 D|009182805 060270989 +000000527 000975975 000942202 D|062830745 030351301 +000000527 000983814 000947954 D|009491333 094884160 +000000527 000998123 000965448 D|006012929 079281269 +000000527 000999983 000992347 D|037021004 003658366 +000000528 000003781 000017354 D|047659852 047033216 +000000528 000014452 000020098 D|023952925 020706341 +000000528 000043068 000022375 D|063444702 028971250 +000000528 000060510 000042478 D|004827016 041428476 +000000528 000078894 000043302 D|086794493 008219455 +000000528 000080833 000044432 D|098556707 054901138 +000000528 000098899 000078640 D|094743959 021198653 +000000528 000111693 000079263 D|061267143 076121263 +000000528 000154571 000084615 D|039098061 071034811 +000000528 000197022 000092368 D|078252847 083270819 +000000528 000255142 000103258 D|046355656 069789660 +000000528 000284856 000128358 D|068791543 019527071 +000000528 000291939 000137310 D|087228224 053237358 +000000528 000301711 000154863 D|077009180 043733048 +000000528 000382680 000173804 D|023265444 020266574 +000000528 000449882 000178766 D|063452432 010959703 +000000528 000479555 000243563 D|021982753 023302928 +000000528 000502064 000244737 D|031022922 012237188 +000000528 000535137 000245281 D|083713152 077479356 +000000528 000535517 000269318 D|019323408 055640819 +000000528 000546016 000297691 D|027422076 073448344 +000000528 000553297 000315119 D|072640501 088696529 +000000528 000587493 000332116 D|015937559 022447203 +000000528 000609721 000360566 D|020236075 080038852 +000000528 000609887 000382957 D|000714805 019916216 +000000528 000619253 000391098 D|031684958 029169170 +000000528 000634280 000391743 D|093738277 017213424 +000000528 000638220 000403575 D|033113299 089385740 +000000528 000642763 000425026 D|094845579 026582635 +000000528 000674025 000433784 D|072734781 032665632 +000000528 000680187 000444057 D|086972653 009453451 +000000528 000683825 000489481 D|013895249 055992430 +000000528 000703229 000519243 D|031342173 027919786 +000000528 000704626 000542393 D|087620205 016784470 +000000528 000706946 000603729 D|001481058 092788908 +000000528 000756304 000677885 D|005823271 066487158 +000000528 000759053 000692383 D|080652519 031631510 +000000528 000763439 000697816 D|066968515 042823822 +000000528 000783851 000702832 D|092329867 005999179 +000000528 000798228 000704044 D|051178739 073087501 +000000528 000803158 000730512 D|039021022 012090650 +000000528 000809811 000737595 D|053735324 048747904 +000000528 000851960 000759769 D|042262953 080267476 +000000528 000863346 000761126 D|054975023 011257797 +000000528 000873900 000816610 D|019163883 069145277 +000000528 000877351 000839155 D|020163933 009452419 +000000528 000883765 000938336 D|040545606 093017444 +000000528 000970087 000981965 D|096545554 069979317 +000000528 000982290 000982265 D|054802537 036735675 +000000528 000987966 000991073 D|038447965 013737315 +000000529 000047196 000036322 D|094108806 029350684 +000000529 000062598 000038368 D|026475811 014371026 +000000529 000119004 000045344 D|008263278 019463259 +000000529 000138708 000067322 D|046851017 002505546 +000000529 000148250 000093827 D|083360806 081439048 +000000529 000162470 000112073 D|018894230 046080309 +000000529 000183952 000172988 D|062438965 042713209 +000000529 000186281 000189577 D|001977974 064132499 +000000529 000219394 000238955 D|072957494 041450105 +000000529 000236707 000255250 D|041698927 034632782 +000000529 000265257 000270931 D|098689071 000765138 +000000529 000275988 000277020 D|062940618 012276378 +000000529 000324811 000293865 D|029204765 060423551 +000000529 000341368 000295330 D|093693074 076372071 +000000529 000379880 000317686 D|091218838 017812539 +000000529 000386447 000320899 D|020380839 076911774 +000000529 000393941 000338067 D|084895587 093289267 +000000529 000405673 000357384 D|013904606 005897001 +000000529 000420049 000370481 D|086727057 035071143 +000000529 000421009 000386227 D|035105486 082305675 +000000529 000447442 000388083 D|049995649 099381612 +000000529 000469843 000401404 D|012268172 036487142 +000000529 000486724 000402852 D|098992415 040938823 +000000529 000532403 000408992 D|050025334 022236051 +000000529 000542570 000447641 D|033670978 087811076 +000000529 000543786 000487031 D|008106866 089182071 +000000529 000558667 000520526 D|054112313 087475061 +000000529 000565153 000529328 D|014350866 084927208 +000000529 000568134 000558975 D|005943088 069247092 +000000529 000571171 000585537 D|017769160 052144975 +000000529 000600357 000610765 D|018331654 077707147 +000000529 000624696 000640670 D|090949151 018521556 +000000529 000659167 000649040 D|099935560 064285812 +000000529 000664636 000651542 D|082005399 032205555 +000000529 000668021 000673949 D|085313152 035159135 +000000529 000674569 000742260 D|071616250 005092999 +000000529 000697442 000750960 D|028266788 045471674 +000000529 000728588 000778836 D|009365188 015226016 +000000529 000804698 000781881 D|007373608 027451571 +000000529 000808365 000785091 D|098089470 081248016 +000000529 000839997 000789219 D|064678978 079964970 +000000529 000847403 000832763 D|045915781 066361316 +000000529 000859404 000834227 D|005808252 096465652 +000000529 000871972 000854655 D|028683550 015255194 +000000529 000873751 000870165 D|026745906 077563424 +000000529 000904917 000879250 D|002652157 027278519 +000000529 000913654 000963799 D|026351900 064211679 +000000529 000932931 000964829 D|019648399 080274449 +000000529 000944180 000971112 D|024201216 039274154 +000000529 000970335 000999041 D|023139708 072423637 +000000530 000020473 000046141 D|015109654 017777131 +000000530 000021769 000074734 D|085079549 041441889 +000000530 000027922 000089144 D|053985242 095364463 +000000530 000057513 000113403 D|077642680 037752340 +000000530 000063195 000113692 D|099659823 084548255 +000000530 000073925 000148616 D|041458944 007235731 +000000530 000088442 000170237 D|067904532 000944691 +000000530 000099268 000170486 D|013027911 027514070 +000000530 000121826 000185673 D|098830267 012338410 +000000530 000183740 000199353 D|099460255 070175225 +000000530 000189951 000204042 D|074073918 050264639 +000000530 000266134 000210777 D|033880714 097173456 +000000530 000275330 000245406 D|003381505 049127870 +000000530 000331094 000245486 D|020011643 028474490 +000000530 000350277 000262855 D|077653042 093815012 +000000530 000359710 000317769 D|095671222 038221197 +000000530 000424266 000321423 D|091386254 078482080 +000000530 000429404 000325196 D|090456887 060621453 +000000530 000445466 000333614 D|058173493 007010010 +000000530 000455809 000334486 D|072170683 009622101 +000000530 000458036 000363399 D|013692723 095139166 +000000530 000482617 000468692 D|025328459 007439858 +000000530 000577196 000484143 D|076721729 056835083 +000000530 000614498 000484477 D|039506660 091048464 +000000530 000648818 000519539 D|085838641 060228194 +000000530 000666607 000575581 D|039988970 022949845 +000000530 000670284 000603385 D|028926125 099726511 +000000530 000692318 000619581 D|022716489 025409048 +000000530 000713920 000649199 D|097883660 025887266 +000000530 000715250 000658993 D|013097512 074701885 +000000530 000731318 000696623 D|028017231 054298960 +000000530 000738749 000699001 D|010275699 004831510 +000000530 000744307 000711857 D|035719666 066487832 +000000530 000749335 000733853 D|057278217 020536482 +000000530 000757065 000750091 D|020122893 044183279 +000000530 000827332 000753689 D|008458627 030249610 +000000530 000827657 000776897 D|085181226 050518502 +000000530 000828517 000792755 D|010350220 008634730 +000000530 000853801 000808173 D|033876581 060084101 +000000530 000871286 000827289 D|030803144 009678291 +000000530 000901307 000836097 D|048869284 029025552 +000000530 000910749 000837859 D|097047870 031648544 +000000530 000912147 000843736 D|002430834 077010692 +000000530 000923430 000850837 D|023110965 034468410 +000000530 000928066 000876648 D|029870178 021751517 +000000530 000935361 000877211 D|055616142 039152765 +000000530 000966799 000893932 D|061580950 064119774 +000000530 000982794 000900768 D|022512253 059647359 +000000530 000985896 000983332 D|077203009 089608633 +000000530 000998397 000991854 D|019421880 056985180 +000000531 000014212 000002477 D|051615433 051785220 +000000531 000021337 000041819 D|091020406 077272845 +000000531 000033423 000043109 D|056010623 026002700 +000000531 000064665 000073264 D|017044739 049042484 +000000531 000122473 000114839 D|061724221 094209099 +000000531 000149700 000118758 D|011186695 055108217 +000000531 000163297 000128440 D|052762704 041027132 +000000531 000185281 000149725 D|026692526 049373236 +000000531 000216866 000159491 D|002172556 077504205 +000000531 000254419 000183563 D|063189494 035399921 +000000531 000268322 000206474 D|006923809 083030373 +000000531 000281372 000208236 D|044906583 024802219 +000000531 000291347 000208707 D|037329416 088443362 +000000531 000301956 000228001 D|046846337 065718434 +000000531 000361516 000261213 D|009062639 079000939 +000000531 000434806 000282467 D|005464252 051602208 +000000531 000449514 000285045 D|057364163 002138147 +000000531 000462874 000340944 D|089473840 031360469 +000000531 000466256 000352437 D|010116591 069237933 +000000531 000469251 000354632 D|099841536 097323023 +000000531 000490764 000355812 D|072500759 052806055 +000000531 000491688 000368425 D|092168929 073635038 +000000531 000502422 000434402 D|067092814 085277136 +000000531 000530380 000459509 D|031445143 030707714 +000000531 000532489 000479757 D|067480976 036586714 +000000531 000546675 000520791 D|040724034 048006240 +000000531 000558522 000521373 D|002631840 061923389 +000000531 000564606 000526402 D|056418956 026803387 +000000531 000571378 000542822 D|011191003 006711520 +000000531 000646457 000577428 D|033065952 003919635 +000000531 000664011 000590235 D|045022680 049501923 +000000531 000669789 000603463 D|050760984 080989039 +000000531 000692498 000613003 D|076516445 068643589 +000000531 000706634 000649881 D|071037563 056763327 +000000531 000711991 000656659 D|047911143 097898070 +000000531 000714536 000670126 D|060755121 029062912 +000000531 000716554 000728962 D|034434558 063385347 +000000531 000810125 000729611 D|011702258 029764589 +000000531 000810605 000755874 D|041635701 034313317 +000000531 000842727 000757087 D|090284594 042005633 +000000531 000860457 000761438 D|096429523 092420536 +000000531 000860678 000800266 D|090111817 011313221 +000000531 000885064 000838636 D|063521476 039373598 +000000531 000888143 000851380 D|099484011 082176260 +000000531 000893132 000863467 D|066872701 095980003 +000000531 000934669 000886867 D|076444694 093129702 +000000531 000939120 000948820 D|040154761 039875970 +000000531 000955022 000971837 D|099105764 093159351 +000000531 000958767 000990008 D|017324941 047128225 +000000531 000988830 000997705 D|098417970 022177508 +000000532 000075672 000014173 D|031074146 055698750 +000000532 000083643 000038867 D|086446886 043215577 +000000532 000083797 000118973 D|009152364 047984728 +000000532 000095938 000140212 D|036679364 023777109 +000000532 000126579 000176830 D|063269285 027184250 +000000532 000148048 000192808 D|083170425 099663254 +000000532 000201924 000201655 D|040431800 034143078 +000000532 000214281 000212391 D|037053469 013986212 +000000532 000239578 000217683 D|003437193 088082086 +000000532 000245981 000234494 D|072061971 058550733 +000000532 000252226 000246127 D|004617616 023895614 +000000532 000255361 000257881 D|038394639 058175971 +000000532 000284070 000305999 D|015266561 030811657 +000000532 000284784 000344860 D|061959147 059837766 +000000532 000285096 000369609 D|029777919 052111203 +000000532 000319465 000370085 D|039217640 086435017 +000000532 000344012 000373660 D|028696891 088325814 +000000532 000349718 000417553 D|039986260 036166752 +000000532 000362177 000446003 D|073063178 047710801 +000000532 000375188 000446843 D|039285613 049183333 +000000532 000381373 000468952 D|014723621 054848617 +000000532 000388975 000483864 D|050128925 083471087 +000000532 000442886 000496846 D|079388335 053804655 +000000532 000458178 000505630 D|055389034 029713784 +000000532 000463357 000528001 D|092309355 096829632 +000000532 000467848 000532616 D|063077628 068658504 +000000532 000504209 000580100 D|041468364 039198079 +000000532 000514600 000581960 D|013844503 069938075 +000000532 000533144 000594871 D|066285698 092446382 +000000532 000628858 000599815 D|012530051 059640572 +000000532 000647712 000612072 D|086015154 040361868 +000000532 000666885 000637318 D|008814368 068328297 +000000532 000686296 000640937 D|094783133 006813267 +000000532 000687605 000664124 D|011392900 052069570 +000000532 000698581 000680498 D|012177448 043588867 +000000532 000700979 000683845 D|096962417 030005093 +000000532 000720682 000741655 D|080723251 052078750 +000000532 000744861 000784956 D|058428224 026301631 +000000532 000745669 000863880 D|037661269 012950104 +000000532 000747802 000893485 D|029486785 011420426 +000000532 000752774 000897681 D|024604145 053977357 +000000532 000791509 000918302 D|075730807 069836038 +000000532 000822908 000923670 D|044845352 054690295 +000000532 000848228 000948111 D|038659488 067824198 +000000532 000858318 000958139 D|072353038 042755333 +000000532 000874150 000972672 D|057631276 006579546 +000000532 000918731 000974954 D|069709949 083249554 +000000532 000939816 000986530 D|097847786 053303982 +000000532 000941101 000988164 D|046690933 068635381 +000000532 000985595 000995799 D|021768534 044961657 +000000533 000030309 000028180 D|035321914 045453633 +000000533 000039806 000032070 D|029886851 043398842 +000000533 000053293 000034006 D|077819743 093266990 +000000533 000080407 000040273 D|040726275 060370436 +000000533 000105301 000111631 D|011260353 096131285 +000000533 000134676 000122849 D|030593380 053972635 +000000533 000174774 000130137 D|053327232 043419835 +000000533 000182592 000155799 D|072124781 009320404 +000000533 000212181 000186638 D|082828529 008771186 +000000533 000220101 000212807 D|073778270 068547530 +000000533 000223918 000222742 D|047778427 024150734 +000000533 000225202 000248249 D|027479419 001473214 +000000533 000230517 000263340 D|023067876 048499347 +000000533 000232210 000313108 D|090087932 052909775 +000000533 000254104 000326773 D|014494494 075090307 +000000533 000263998 000371666 D|048237539 060481536 +000000533 000312944 000402730 D|047609874 065425498 +000000533 000350298 000407463 D|069058657 086561230 +000000533 000353066 000424114 D|094249825 093238064 +000000533 000365139 000445076 D|018020977 077511354 +000000533 000370136 000452132 D|065040308 003310782 +000000533 000380781 000460948 D|075437455 071473902 +000000533 000406869 000496116 D|047958917 087161848 +000000533 000504499 000523065 D|094082225 062533995 +000000533 000528899 000559520 D|000421333 082124327 +000000533 000533761 000565504 D|095002875 079960320 +000000533 000545067 000587042 D|041802100 040797488 +000000533 000566627 000613702 D|042240317 057860875 +000000533 000609111 000642876 D|060922281 092202234 +000000533 000631263 000652741 D|033800329 039094239 +000000533 000645481 000658454 D|090158917 062583265 +000000533 000704373 000659568 D|037198335 002120164 +000000533 000728519 000683291 D|059107277 022776682 +000000533 000737746 000684287 D|053215009 032247088 +000000533 000740444 000728224 D|021527724 008447591 +000000533 000799262 000729471 D|083139822 040216670 +000000533 000799794 000764231 D|030703405 068564236 +000000533 000804550 000794111 D|099602436 086906756 +000000533 000815732 000819288 D|067988609 082546502 +000000533 000818242 000830482 D|039642556 024640309 +000000533 000842461 000835761 D|051077234 030313941 +000000533 000855172 000873298 D|094271664 026659550 +000000533 000892952 000876446 D|052545775 062664075 +000000533 000896657 000886419 D|073557874 051509263 +000000533 000919029 000891213 D|086556870 052094299 +000000533 000923915 000927154 D|092504259 091243401 +000000533 000926335 000947379 D|034063349 086438215 +000000533 000927874 000951539 D|091148107 049091436 +000000533 000931340 000967709 D|029589214 063183038 +000000533 000993171 000995400 D|011561597 083483373 +000000534 000001349 000015113 D|057725656 027327482 +000000534 000005502 000024239 D|055040843 038141812 +000000534 000013413 000038587 D|089120988 083656469 +000000534 000015987 000063185 D|087077094 066249387 +000000534 000024991 000065959 D|087410984 063929640 +000000534 000058731 000105207 D|062543416 012591361 +000000534 000071693 000121148 D|001575539 050520942 +000000534 000073888 000130014 D|096633956 087573057 +000000534 000117187 000151169 D|004690270 057957577 +000000534 000175955 000188132 D|020751421 022165351 +000000534 000213146 000191971 D|006966367 012787199 +000000534 000236460 000207012 D|025441483 072583739 +000000534 000262202 000216225 D|064619411 003450463 +000000534 000306451 000268952 D|025260071 066716455 +000000534 000319611 000285735 D|085945825 040680595 +000000534 000325351 000289601 D|040664091 078293964 +000000534 000355958 000304790 D|014798355 022878019 +000000534 000370539 000311949 D|068691507 072662432 +000000534 000406437 000315486 D|006250467 090980182 +000000534 000422239 000319047 D|073018354 084104835 +000000534 000449431 000335388 D|093012677 023804287 +000000534 000471407 000357730 D|051080265 065623005 +000000534 000472032 000391325 D|002646491 014896717 +000000534 000474240 000392015 D|040769632 082868591 +000000534 000477489 000393699 D|015920885 080650094 +000000534 000520404 000395300 D|039640393 063181837 +000000534 000522523 000396486 D|009065429 000393928 +000000534 000523283 000401105 D|064676558 073168458 +000000534 000539745 000413488 D|046090516 093383862 +000000534 000571936 000420973 D|036881755 076588108 +000000534 000582002 000454457 D|043236920 073470642 +000000534 000625809 000455678 D|002903536 005311103 +000000534 000635194 000499190 D|046505385 040617830 +000000534 000638083 000508665 D|080591840 032404898 +000000534 000643965 000528518 D|029825806 038453806 +000000534 000681154 000553563 D|056903497 056457962 +000000534 000730488 000557762 D|065761231 008572003 +000000534 000791297 000572448 D|052344729 056313972 +000000534 000813815 000599397 D|056431177 075700042 +000000534 000817524 000619870 D|001828721 075301167 +000000534 000855359 000622564 D|070084716 033965063 +000000534 000881278 000719004 D|017206786 055686995 +000000534 000884800 000750833 D|010655619 015552731 +000000534 000899071 000755315 D|090220065 017820414 +000000534 000907429 000810981 D|021882289 054598076 +000000534 000908755 000889273 D|093360928 008314206 +000000534 000909478 000891526 D|082497390 043300128 +000000534 000936872 000932341 D|092212814 073650918 +000000534 000966767 000947346 D|043892775 096159670 +000000534 000993034 000973654 D|038562547 042064929 +000000535 000000287 000009297 D|049793166 023860019 +000000535 000044712 000044570 D|014406970 091190093 +000000535 000060636 000049491 D|098453350 032690236 +000000535 000120877 000050066 D|016926789 085341704 +000000535 000215907 000083231 D|035030613 053978873 +000000535 000223655 000084597 D|022943453 040628886 +000000535 000226584 000141836 D|061049017 012489585 +000000535 000231587 000159838 D|093707477 037651880 +000000535 000242002 000168950 D|062841607 064778179 +000000535 000264709 000180239 D|098573187 072207416 +000000535 000266568 000217285 D|017201192 010576237 +000000535 000282602 000227433 D|026457248 029297634 +000000535 000316682 000250922 D|030174917 044296792 +000000535 000356643 000262820 D|071111232 005852970 +000000535 000371588 000270037 D|080794255 032671153 +000000535 000378487 000341117 D|006123228 077695508 +000000535 000408702 000345507 D|008272964 080637137 +000000535 000416435 000358906 D|066828177 040141279 +000000535 000421461 000374703 D|027921292 080731070 +000000535 000432536 000376677 D|047559657 037606769 +000000535 000435887 000377966 D|061654387 098577549 +000000535 000447300 000398409 D|021393028 040861845 +000000535 000453202 000424746 D|053777479 031599279 +000000535 000482473 000447059 D|097546388 025091864 +000000535 000491578 000462618 D|037654471 046374770 +000000535 000505806 000475725 D|006616337 054026619 +000000535 000507540 000518750 D|040784243 008935742 +000000535 000521151 000537981 D|026190154 027401929 +000000535 000533167 000558534 D|041184530 008315926 +000000535 000547888 000581317 D|011738551 025100406 +000000535 000569865 000621051 D|082265782 028120399 +000000535 000590032 000630491 D|012606947 090596686 +000000535 000652678 000646232 D|046881521 057919904 +000000535 000658919 000651108 D|059099213 011161543 +000000535 000662304 000652994 D|014965857 037851594 +000000535 000678801 000653725 D|069559331 053594812 +000000535 000689335 000660998 D|081793551 091753488 +000000535 000706943 000669774 D|080404472 064723120 +000000535 000723674 000671547 D|064534793 058342743 +000000535 000777317 000680285 D|075660153 068060125 +000000535 000786460 000682248 D|046635922 019834503 +000000535 000795230 000704787 D|067530182 069134146 +000000535 000801074 000714109 D|084210543 010494250 +000000535 000814678 000776440 D|077956963 093246680 +000000535 000821614 000804390 D|008817057 051410805 +000000535 000831364 000860825 D|032896120 000968251 +000000535 000838421 000864410 D|002738033 085113010 +000000535 000870637 000871316 D|086742879 039310689 +000000535 000905729 000943259 D|090807730 039706055 +000000535 000981568 000997892 D|003467676 023621277 +000000536 000007296 000051038 D|055727681 001717634 +000000536 000013433 000075709 D|019709924 035076157 +000000536 000014914 000125901 D|036643126 067524359 +000000536 000017242 000145576 D|064567011 050546713 +000000536 000024558 000184850 D|030478894 093879103 +000000536 000096483 000188022 D|037854843 093103611 +000000536 000097490 000209243 D|049373849 036526803 +000000536 000115875 000211035 D|040045256 008759741 +000000536 000133373 000253450 D|048969274 035772656 +000000536 000157105 000283724 D|039120625 099313658 +000000536 000181715 000321536 D|087626457 031792965 +000000536 000206219 000325796 D|044448173 085066831 +000000536 000256507 000341293 D|003634001 043335025 +000000536 000269501 000364017 D|074990014 003702692 +000000536 000279636 000386860 D|085552355 079369394 +000000536 000298311 000396359 D|063057096 076230745 +000000536 000308272 000400869 D|056562511 015374899 +000000536 000325191 000422604 D|042196871 003977333 +000000536 000330463 000430663 D|014606642 062387590 +000000536 000336704 000513733 D|052827641 094170122 +000000536 000353016 000545305 D|023474112 085902252 +000000536 000378699 000594398 D|065968386 059438612 +000000536 000382138 000606300 D|088637530 044745657 +000000536 000408630 000634535 D|050538637 077906793 +000000536 000414814 000639515 D|041433205 026196360 +000000536 000445658 000667063 D|023700904 031592459 +000000536 000503153 000687910 D|032383230 061810257 +000000536 000513959 000699274 D|006738864 054774830 +000000536 000556617 000703892 D|057788288 020117176 +000000536 000566986 000716892 D|046223248 039212932 +000000536 000572165 000734099 D|095088062 035087179 +000000536 000576617 000736379 D|087164101 050925934 +000000536 000631259 000757270 D|004235896 019438687 +000000536 000656916 000770292 D|068212978 097598011 +000000536 000659719 000771115 D|016424175 037003279 +000000536 000666633 000778855 D|002463114 041513406 +000000536 000684070 000798981 D|068465936 040950963 +000000536 000710353 000805844 D|007413287 020311907 +000000536 000746417 000820594 D|092459392 098375773 +000000536 000747515 000841518 D|051515162 077077670 +000000536 000794827 000845534 D|046269357 090829647 +000000536 000823199 000884479 D|065623628 019235125 +000000536 000824640 000886024 D|023455782 099630896 +000000536 000834001 000916614 D|060511541 019511520 +000000536 000865956 000920568 D|045593421 089888041 +000000536 000876238 000921177 D|030983544 069895258 +000000536 000887487 000961573 D|025895356 088516299 +000000536 000892839 000965871 D|013573629 051504602 +000000536 000917073 000966135 D|007452861 012276060 +000000536 000946162 000999907 D|013769131 099391255 +000000537 000017054 000009460 D|005527925 093372303 +000000537 000018355 000027900 D|082331930 075302912 +000000537 000036642 000041981 D|021173650 040924272 +000000537 000048202 000046756 D|067653811 070389539 +000000537 000079165 000096732 D|072867522 059671336 +000000537 000087631 000111591 D|060448587 091397245 +000000537 000088679 000122059 D|005608326 047823800 +000000537 000100148 000177105 D|080444747 089922006 +000000537 000100618 000216988 D|098311781 035916148 +000000537 000120441 000233509 D|021698357 027341862 +000000537 000125201 000239565 D|004082204 014181044 +000000537 000153436 000257405 D|082280552 061698943 +000000537 000243888 000258349 D|039494701 080703033 +000000537 000253263 000261048 D|025802832 021962628 +000000537 000281511 000262612 D|032888232 067557637 +000000537 000282553 000273492 D|052938620 060408850 +000000537 000289615 000277088 D|082075359 061747262 +000000537 000290647 000296846 D|003593605 093715825 +000000537 000311824 000337057 D|013558408 041617503 +000000537 000361559 000357039 D|033861731 099827178 +000000537 000361804 000407244 D|093218313 007001193 +000000537 000365995 000459526 D|041355772 029818130 +000000537 000372196 000464259 D|033398113 063404848 +000000537 000402430 000509613 D|095461707 094712259 +000000537 000414875 000521020 D|090135994 004753444 +000000537 000424691 000522949 D|029804399 095054142 +000000537 000449632 000541194 D|076534484 069195134 +000000537 000479607 000563966 D|089235741 059906588 +000000537 000487668 000570930 D|071362596 086529252 +000000537 000530457 000619339 D|083827094 057654709 +000000537 000559649 000624985 D|095732977 032370086 +000000537 000566672 000672562 D|039986371 059527185 +000000537 000609108 000675679 D|074181279 052586634 +000000537 000612903 000693570 D|063188228 037778725 +000000537 000614802 000709941 D|015652694 089926878 +000000537 000614816 000754782 D|075916061 024184373 +000000537 000626478 000759673 D|002663785 014216193 +000000537 000672568 000790461 D|036388754 067655988 +000000537 000714950 000796363 D|042376330 097649317 +000000537 000719928 000827892 D|006737873 005938292 +000000537 000723422 000830534 D|048617953 017047525 +000000537 000745032 000840165 D|043026610 030382447 +000000537 000802117 000885150 D|025406243 022819832 +000000537 000826202 000896871 D|050928553 072315827 +000000537 000831123 000919763 D|028890440 094904836 +000000537 000833261 000934931 D|003546394 044537119 +000000537 000880274 000939305 D|080896065 024480728 +000000537 000887785 000949193 D|074402637 050393080 +000000537 000915357 000957872 D|006650761 051882188 +000000537 000940125 000961739 D|074359383 011652514 +000000538 000002939 000004667 D|000602621 092674609 +000000538 000044984 000013784 D|098999435 080174539 +000000538 000072045 000020812 D|045164749 035622431 +000000538 000076073 000043879 D|085615073 083785700 +000000538 000146973 000135765 D|023004045 001147294 +000000538 000168931 000148645 D|092442546 019930288 +000000538 000177732 000169256 D|067430313 009511543 +000000538 000186792 000179834 D|088875328 047877000 +000000538 000210516 000207727 D|092416976 032257730 +000000538 000236734 000210915 D|003231973 073912259 +000000538 000287792 000218546 D|090682839 029476680 +000000538 000305745 000227924 D|085123747 026517902 +000000538 000327973 000251114 D|046615569 095519263 +000000538 000363033 000311181 D|071052371 055323975 +000000538 000404935 000330573 D|012573698 041332653 +000000538 000407603 000423028 D|090336004 032867864 +000000538 000422595 000431553 D|033617125 080532336 +000000538 000454838 000447571 D|019048184 027796607 +000000538 000482390 000457495 D|066063455 051618173 +000000538 000510223 000459865 D|059584177 096968597 +000000538 000518284 000463214 D|027517224 051912471 +000000538 000526205 000465442 D|001464509 086728634 +000000538 000554983 000480049 D|030917215 041493282 +000000538 000569224 000550085 D|008953380 044930177 +000000538 000581091 000559862 D|051694820 099891654 +000000538 000590540 000568491 D|002994889 007835797 +000000538 000599434 000589802 D|016793336 066206793 +000000538 000602106 000607593 D|010184761 034745768 +000000538 000642291 000622250 D|094102166 003398201 +000000538 000647047 000639333 D|081596180 039025545 +000000538 000671227 000666442 D|098922421 065232860 +000000538 000693375 000681733 D|074355683 083001841 +000000538 000704011 000736350 D|078887448 089815386 +000000538 000720228 000759198 D|077007561 035155792 +000000538 000747866 000787994 D|065863688 038095594 +000000538 000748811 000806109 D|043529026 039185908 +000000538 000751798 000823799 D|065939958 080637927 +000000538 000760275 000825456 D|066030498 085153224 +000000538 000800629 000856858 D|012750697 037854207 +000000538 000828702 000897460 D|019851643 037075836 +000000538 000835925 000919551 D|063705664 049725574 +000000538 000839060 000923945 D|038754543 000713260 +000000538 000850833 000926188 D|070405241 096715290 +000000538 000855211 000927855 D|061200117 079943055 +000000538 000870779 000945430 D|052686498 043385497 +000000538 000871038 000955602 D|079261725 041933051 +000000538 000935011 000979455 D|078725094 066063342 +000000538 000938264 000984050 D|024221918 068707424 +000000538 000951155 000987127 D|045977146 090312001 +000000538 000970992 000989851 D|017609065 082668645 +000000539 000010046 000016104 D|046838794 088001432 +000000539 000016845 000028832 D|085552532 081197639 +000000539 000045286 000079163 D|033462577 094680414 +000000539 000062493 000118129 D|012077452 095376806 +000000539 000081672 000137827 D|040248938 007154600 +000000539 000164545 000176714 D|048677528 019389372 +000000539 000183651 000304684 D|011986837 080703765 +000000539 000209064 000326404 D|016646321 030761927 +000000539 000257074 000334073 D|051400482 026487592 +000000539 000260645 000340264 D|054349948 073138384 +000000539 000261134 000357731 D|055417851 077768074 +000000539 000298478 000359759 D|033668472 001146869 +000000539 000387143 000368109 D|097504765 063289037 +000000539 000410473 000429344 D|046310457 065724172 +000000539 000415462 000434633 D|071209954 026700731 +000000539 000429909 000484224 D|081903023 099087892 +000000539 000449739 000489091 D|037757889 069993295 +000000539 000451344 000506098 D|088537970 012806231 +000000539 000483432 000516136 D|064272978 084384539 +000000539 000496090 000540025 D|086779374 012990901 +000000539 000526719 000549217 D|019845817 083316973 +000000539 000531521 000555104 D|016729596 016696310 +000000539 000551141 000566492 D|092975352 001534801 +000000539 000570077 000578038 D|055803538 002976648 +000000539 000594413 000610410 D|034002393 079886171 +000000539 000601061 000627718 D|007748892 076140296 +000000539 000622819 000629952 D|032691582 092172975 +000000539 000649027 000651544 D|031468056 074001724 +000000539 000672499 000660723 D|093633310 005399326 +000000539 000679216 000698139 D|063074234 059823370 +000000539 000707153 000719176 D|025817642 067838499 +000000539 000787975 000761348 D|057388297 097292718 +000000539 000831076 000766630 D|007437256 019699492 +000000539 000835473 000775044 D|015945454 049840737 +000000539 000837324 000777891 D|031605998 032875285 +000000539 000854969 000783327 D|044804352 068019433 +000000539 000856537 000784660 D|043991982 020153844 +000000539 000873258 000802342 D|038138608 007730957 +000000539 000876566 000816989 D|046958224 039455976 +000000539 000884996 000840216 D|093377077 038943945 +000000539 000898218 000850951 D|041639056 072192106 +000000539 000898422 000860042 D|051964546 074444496 +000000539 000899125 000877476 D|064697101 077453889 +000000539 000910111 000877939 D|034986208 029072754 +000000539 000918845 000888931 D|061867590 032589454 +000000539 000929829 000895874 D|073776896 011161676 +000000539 000957168 000943147 D|045767001 024399081 +000000539 000958917 000985791 D|054892919 006448008 +000000539 000982466 000986911 D|075521797 049166614 +000000539 000998385 000991461 D|078468148 044221671 +000000540 000005536 000001338 D|038570427 083448198 +000000540 000045456 000057428 D|020308388 026926723 +000000540 000072360 000062851 D|016128463 079710142 +000000540 000085308 000077606 D|088640223 040012859 +000000540 000135272 000092404 D|031270844 054409384 +000000540 000135633 000128232 D|051315033 091590535 +000000540 000136735 000131205 D|038506432 086908840 +000000540 000178547 000189389 D|009136744 004615914 +000000540 000180165 000226223 D|050898145 072943768 +000000540 000184354 000249773 D|089960002 098011032 +000000540 000187536 000261825 D|058970531 010965893 +000000540 000215444 000261957 D|038589311 091146141 +000000540 000239530 000348025 D|004819829 086908652 +000000540 000246938 000351593 D|074127543 030973249 +000000540 000260798 000360812 D|025941718 064106025 +000000540 000262797 000376561 D|080541316 036315005 +000000540 000270099 000395103 D|003514539 044314473 +000000540 000341147 000421902 D|018298869 023677107 +000000540 000355486 000442539 D|068383050 071633938 +000000540 000426851 000453193 D|055116102 055457222 +000000540 000436422 000500848 D|019516488 013674842 +000000540 000468872 000512020 D|014409040 076527049 +000000540 000485459 000515599 D|039513041 010386135 +000000540 000523712 000551241 D|096525561 092620684 +000000540 000532951 000552332 D|026561005 056221399 +000000540 000564043 000577280 D|084675460 006646347 +000000540 000572062 000584896 D|016312413 062152543 +000000540 000638978 000586225 D|084718979 057554153 +000000540 000653789 000595768 D|004832933 050691869 +000000540 000656782 000595844 D|045566706 096505978 +000000540 000661243 000597491 D|030642579 055292702 +000000540 000669312 000604257 D|029909179 092811355 +000000540 000674171 000632676 D|034929064 052095203 +000000540 000681774 000648639 D|001723439 017723324 +000000540 000692262 000684615 D|077935058 089737328 +000000540 000695949 000689577 D|027974069 030412308 +000000540 000711702 000690034 D|021538284 038186656 +000000540 000713163 000731523 D|010298460 068113276 +000000540 000716999 000745906 D|055705899 061740330 +000000540 000727315 000750852 D|015415658 028238710 +000000540 000734525 000768820 D|082782409 077233747 +000000540 000770086 000793408 D|015526236 037107942 +000000540 000790327 000820738 D|078733272 091369889 +000000540 000869084 000825993 D|028108461 038220545 +000000540 000884498 000840461 D|086672342 004060352 +000000540 000903860 000879749 D|061494928 087798022 +000000540 000923180 000883250 D|078539383 014907819 +000000540 000988486 000903307 D|024601144 009179530 +000000540 000995137 000934576 D|099260860 019044646 +000000540 000997045 000990796 D|049948761 024572754 +000000541 000057686 000014107 D|084846643 054050217 +000000541 000072273 000042338 D|007450296 001929777 +000000541 000121552 000120510 D|085633027 035922376 +000000541 000126857 000123472 D|054516319 067296374 +000000541 000132489 000193070 D|032424803 086583668 +000000541 000165079 000198133 D|025358177 011012280 +000000541 000178298 000209692 D|034603979 012081344 +000000541 000196931 000223342 D|098092926 079621836 +000000541 000204724 000261408 D|038692278 061902471 +000000541 000209704 000352258 D|093827048 073358431 +000000541 000252255 000371590 D|052245057 082413679 +000000541 000252730 000384660 D|070268917 035801253 +000000541 000257853 000396633 D|040119181 048140280 +000000541 000270853 000402210 D|050643185 087486103 +000000541 000288645 000407595 D|073355221 045113849 +000000541 000314644 000423106 D|012129548 072406823 +000000541 000341800 000428748 D|034681303 058034546 +000000541 000381797 000428939 D|035852557 074573970 +000000541 000386131 000429327 D|072307405 082990149 +000000541 000459678 000451191 D|055092420 089533522 +000000541 000467457 000505280 D|018511583 079716706 +000000541 000476443 000533912 D|026969617 014772110 +000000541 000496379 000547252 D|048570193 085223009 +000000541 000509286 000548881 D|067832876 020786837 +000000541 000536336 000554961 D|090981476 080666196 +000000541 000547413 000558504 D|041749590 014870047 +000000541 000572234 000590290 D|067422043 001908713 +000000541 000574057 000592289 D|015175781 026506038 +000000541 000608017 000594304 D|071224264 053082030 +000000541 000613975 000636020 D|061954401 021193641 +000000541 000616321 000663264 D|026032209 064447524 +000000541 000710772 000678848 D|006385848 015829073 +000000541 000715196 000681316 D|042392100 056795932 +000000541 000737650 000683446 D|008000574 064301034 +000000541 000751288 000715499 D|038765967 068819480 +000000541 000797807 000720338 D|068902749 035279396 +000000541 000806898 000731990 D|051021578 030243941 +000000541 000813211 000740651 D|092247595 096130575 +000000541 000822128 000749088 D|086826239 025393255 +000000541 000824104 000750113 D|012966099 099952733 +000000541 000830643 000845078 D|076809848 078671418 +000000541 000855239 000871794 D|092884309 063182133 +000000541 000857932 000877721 D|031937384 049252106 +000000541 000858370 000899397 D|086080327 015623286 +000000541 000862360 000912005 D|038328977 035209535 +000000541 000886546 000916416 D|098771630 091814432 +000000541 000894878 000943859 D|073171472 040719020 +000000541 000944294 000949348 D|068792480 081786791 +000000541 000952626 000979015 D|010161993 034418461 +000000541 000979530 000996137 D|074341200 071717701 +000000542 000012807 000006764 D|010634020 084725845 +000000542 000026896 000023004 D|046938307 059689921 +000000542 000050666 000031241 D|063828840 065633483 +000000542 000073570 000033320 D|051065733 006463938 +000000542 000075418 000043855 D|090378934 015363565 +000000542 000088594 000102021 D|025703317 070981671 +000000542 000109034 000104998 D|076135405 025430282 +000000542 000114405 000120949 D|089642049 034399549 +000000542 000185776 000145252 D|097943686 053960186 +000000542 000190343 000148404 D|051866415 074201509 +000000542 000198619 000149465 D|036774391 092084027 +000000542 000214039 000171191 D|056826621 054846990 +000000542 000228688 000209200 D|005298985 038627399 +000000542 000247060 000214403 D|082207587 076212590 +000000542 000292202 000215114 D|038552725 017470780 +000000542 000302331 000235462 D|015840312 088337771 +000000542 000353842 000246349 D|045540562 012064669 +000000542 000379987 000267585 D|076891687 077088065 +000000542 000395402 000269882 D|040881227 087966633 +000000542 000395927 000277422 D|063070083 049202812 +000000542 000414257 000289119 D|045147266 064483000 +000000542 000415942 000298325 D|063165535 064686451 +000000542 000417235 000339690 D|082275220 007587649 +000000542 000420942 000430269 D|021867393 038449326 +000000542 000458275 000450489 D|088045746 086616644 +000000542 000458808 000478001 D|066520678 084334731 +000000542 000465881 000481103 D|067197708 001969097 +000000542 000580408 000481308 D|054962454 038284595 +000000542 000582801 000482713 D|068976458 021169382 +000000542 000620221 000496127 D|085524286 064021727 +000000542 000660874 000506440 D|025837400 034767366 +000000542 000683338 000530235 D|057909791 089336039 +000000542 000714825 000550940 D|020106478 050220238 +000000542 000731616 000571597 D|075009322 087086252 +000000542 000743577 000588146 D|070321113 031364276 +000000542 000744766 000607046 D|077285123 070610561 +000000542 000771111 000643499 D|088042558 011999425 +000000542 000784862 000648513 D|030194237 022359526 +000000542 000821411 000687875 D|058616365 061156276 +000000542 000827248 000781195 D|055200330 005447150 +000000542 000840245 000793760 D|094443778 009912626 +000000542 000846839 000802010 D|012203825 027882136 +000000542 000848158 000806217 D|012852766 019962707 +000000542 000858027 000815646 D|029028363 078410159 +000000542 000878661 000837394 D|058618276 069638618 +000000542 000887542 000841984 D|076575728 041648458 +000000542 000887829 000876994 D|019144721 031940511 +000000542 000924592 000963712 D|032251370 055955570 +000000542 000940420 000967727 D|043099251 045215072 +000000542 000943986 000968594 D|036434916 001424818 +000000543 000007766 000009325 D|073011702 054101419 +000000543 000011565 000009815 D|089663353 017368045 +000000543 000027666 000057235 D|049759183 089640948 +000000543 000055645 000058745 D|079531364 011452834 +000000543 000074595 000083032 D|036691962 058624978 +000000543 000086465 000100137 D|005564631 042383879 +000000543 000088880 000135760 D|064603381 041567952 +000000543 000092441 000165664 D|028419357 064431960 +000000543 000098573 000179404 D|016688560 034608641 +000000543 000106648 000185459 D|029000633 045296751 +000000543 000116392 000195567 D|037243392 066620001 +000000543 000147775 000212447 D|017917561 078186903 +000000543 000187572 000242631 D|010167996 063325770 +000000543 000299118 000246884 D|023601994 082346593 +000000543 000301182 000275748 D|051808370 045053567 +000000543 000303376 000314056 D|089927270 083396945 +000000543 000316830 000326860 D|070408266 072587382 +000000543 000362050 000342908 D|061287012 089605955 +000000543 000432149 000372971 D|062543188 008724059 +000000543 000476977 000388710 D|085090049 007157354 +000000543 000484169 000450160 D|046976775 099337089 +000000543 000485948 000455844 D|011127467 068979890 +000000543 000510907 000460712 D|054673970 090733156 +000000543 000514844 000466345 D|010139758 068816044 +000000543 000522053 000472885 D|019389723 062348702 +000000543 000530067 000513243 D|001471077 084482845 +000000543 000534496 000542919 D|097548637 027846029 +000000543 000538417 000549497 D|033679311 004237633 +000000543 000542160 000552299 D|051620325 082672451 +000000543 000555199 000586908 D|004203528 064895261 +000000543 000563693 000592160 D|002856873 000193125 +000000543 000576595 000628990 D|026582884 058995074 +000000543 000611827 000660767 D|046693952 087157142 +000000543 000674191 000761068 D|024278738 024192123 +000000543 000677079 000761458 D|038635774 087491580 +000000543 000687854 000776092 D|043884671 044396029 +000000543 000702096 000777242 D|039261390 040868329 +000000543 000772935 000778645 D|028853767 049005907 +000000543 000817212 000790057 D|050976717 016760203 +000000543 000834142 000790810 D|069853550 025757165 +000000543 000845599 000796029 D|003609377 073368299 +000000543 000849934 000801621 D|076535829 005069378 +000000543 000850314 000804073 D|081418543 020531803 +000000543 000864346 000848643 D|058468189 070188177 +000000543 000878969 000864891 D|050759569 091022837 +000000543 000900891 000874804 D|058460131 011678703 +000000543 000901965 000940392 D|036569532 018854754 +000000543 000919543 000945337 D|010473365 021761787 +000000543 000939652 000960958 D|079144959 062897387 +000000543 000973960 000994592 D|038149465 049148784 +000000544 000021415 000001687 D|008263200 090002890 +000000544 000035280 000042035 D|054875669 001950748 +000000544 000063132 000043547 D|003203266 072752796 +000000544 000067474 000090207 D|075743894 040220330 +000000544 000068093 000096917 D|082072279 045468796 +000000544 000103143 000114711 D|013140180 097375025 +000000544 000103531 000133284 D|051257128 025714733 +000000544 000123344 000140483 D|073123665 087321545 +000000544 000144211 000149013 D|002910730 013086315 +000000544 000166898 000174352 D|046745044 069118696 +000000544 000173915 000183370 D|024401548 078302170 +000000544 000180672 000183398 D|086264700 014842781 +000000544 000210379 000228205 D|044915252 029632604 +000000544 000243099 000231697 D|040607110 092793932 +000000544 000264532 000271362 D|046132696 094152146 +000000544 000271760 000288483 D|068091805 069085196 +000000544 000284721 000320452 D|072431114 034346090 +000000544 000311783 000380786 D|086524661 000523185 +000000544 000352996 000418465 D|015006858 096761516 +000000544 000369400 000425435 D|041157504 074387618 +000000544 000381168 000428925 D|068897570 074261442 +000000544 000411234 000441319 D|019570706 088000066 +000000544 000420692 000455379 D|097470253 091182085 +000000544 000447202 000459916 D|041184088 026747340 +000000544 000463877 000476145 D|033089932 050195331 +000000544 000476448 000477144 D|005014033 019949283 +000000544 000482766 000520975 D|086336598 004944362 +000000544 000495277 000562749 D|051840928 087216004 +000000544 000520182 000581380 D|082520231 082612200 +000000544 000564848 000617256 D|010905386 020826170 +000000544 000599820 000634870 D|093638983 072136545 +000000544 000649115 000651965 D|039210613 091365594 +000000544 000659131 000675585 D|050259308 061143504 +000000544 000679700 000683424 D|018240417 020067908 +000000544 000694140 000717944 D|032096178 029243777 +000000544 000702820 000718488 D|025424813 031137133 +000000544 000739170 000742585 D|051636472 012781984 +000000544 000751764 000746852 D|094690292 051507110 +000000544 000760192 000787849 D|027358889 064829136 +000000544 000780349 000790452 D|056645321 036121392 +000000544 000784018 000794761 D|007110645 073661209 +000000544 000835803 000810056 D|028081176 008983411 +000000544 000843186 000849511 D|091568383 037540011 +000000544 000851720 000858551 D|009441974 020436557 +000000544 000896502 000889967 D|019697343 007578698 +000000544 000914799 000909994 D|086700884 017746250 +000000544 000916414 000912916 D|025986350 039886118 +000000544 000925419 000958430 D|011790864 014549737 +000000544 000985399 000983437 D|057331420 079877533 +000000544 000992924 000991218 D|046874267 030152851 +000000545 000018066 000034369 D|069410401 003870893 +000000545 000029401 000056091 D|004584860 074196906 +000000545 000049395 000057589 D|074386296 019131699 +000000545 000053738 000125779 D|027770332 070686960 +000000545 000122010 000153148 D|080408802 002516801 +000000545 000123373 000182682 D|094080839 020883220 +000000545 000136473 000191684 D|029816206 028607508 +000000545 000161116 000193497 D|063291965 073202024 +000000545 000198233 000195554 D|069651386 083296929 +000000545 000214344 000235047 D|032797265 017330948 +000000545 000241533 000267706 D|054370802 069662816 +000000545 000272317 000275214 D|098284672 072188250 +000000545 000311885 000276691 D|023811038 006089790 +000000545 000345313 000288864 D|015269135 056236561 +000000545 000355698 000296542 D|035482848 038662333 +000000545 000360774 000320053 D|024618661 043880235 +000000545 000377447 000345987 D|030378762 093910912 +000000545 000408467 000351820 D|028993646 065713120 +000000545 000430642 000358757 D|098941907 015806428 +000000545 000441382 000366120 D|030489196 021042748 +000000545 000496283 000369970 D|079397034 083858258 +000000545 000507019 000393922 D|094435028 090095811 +000000545 000528165 000395475 D|092879731 083083167 +000000545 000549259 000408148 D|093518397 008671410 +000000545 000551272 000429546 D|003633791 012607579 +000000545 000569756 000441442 D|050255983 032410815 +000000545 000587294 000471128 D|058023482 024613220 +000000545 000626865 000472633 D|013515560 005617147 +000000545 000632920 000477396 D|062898878 088319533 +000000545 000668589 000482837 D|014236884 068401424 +000000545 000716876 000554134 D|001179634 000491104 +000000545 000718277 000554484 D|062466572 005018473 +000000545 000735923 000583305 D|078003910 023799156 +000000545 000767496 000625848 D|081092966 071413610 +000000545 000785747 000630999 D|003133647 068969593 +000000545 000829397 000641579 D|067738733 041296908 +000000545 000835923 000688344 D|060719666 066332083 +000000545 000844248 000735707 D|069838645 087388027 +000000545 000849017 000738367 D|017288199 056222236 +000000545 000868128 000753078 D|037207716 084283411 +000000545 000901895 000800473 D|004065210 093616249 +000000545 000903076 000800722 D|020327436 000489669 +000000545 000928949 000817429 D|055015679 001976810 +000000545 000932815 000827557 D|050200714 006671200 +000000545 000943425 000835558 D|032346344 050196922 +000000545 000944349 000842943 D|024422514 022940413 +000000545 000949600 000869456 D|010632883 046527121 +000000545 000957790 000891419 D|052734588 027721396 +000000545 000964751 000893991 D|071386992 021265162 +000000545 000966605 000938004 D|096138325 043023670 +000000546 000013985 000011255 D|096632759 042975948 +000000546 000033439 000034160 D|032663409 030214199 +000000546 000036004 000047662 D|087391182 093232549 +000000546 000111596 000050084 D|039088123 029664920 +000000546 000117718 000080980 D|092882267 023862658 +000000546 000123912 000085929 D|022943355 041391217 +000000546 000163643 000105882 D|026636619 091740823 +000000546 000195205 000155623 D|005577229 077560394 +000000546 000196639 000179988 D|009313625 072567376 +000000546 000212802 000185646 D|025567954 056077180 +000000546 000240297 000187330 D|086514162 072963299 +000000546 000254281 000228749 D|060756567 035582979 +000000546 000278911 000247421 D|051463817 082100452 +000000546 000286158 000267217 D|054102277 072741475 +000000546 000313751 000271351 D|061692198 043558021 +000000546 000331308 000311244 D|099793745 071553106 +000000546 000365935 000376257 D|026039209 039054466 +000000546 000380112 000405364 D|087916732 071852834 +000000546 000387076 000416119 D|021915152 083710851 +000000546 000387533 000421126 D|063929314 041429778 +000000546 000391528 000456631 D|007622888 038706289 +000000546 000424765 000457278 D|044390479 071869700 +000000546 000446145 000473305 D|006942635 028029625 +000000546 000458952 000473466 D|035838158 064881791 +000000546 000462009 000533078 D|015141227 034531800 +000000546 000487735 000533493 D|071947455 006723938 +000000546 000514234 000557175 D|062090883 050052497 +000000546 000517915 000564900 D|065449671 098898315 +000000546 000518372 000614696 D|043411161 085053609 +000000546 000523323 000616897 D|073060096 089051692 +000000546 000540021 000623225 D|096526656 029435079 +000000546 000561577 000650083 D|073342652 010355612 +000000546 000564107 000653497 D|027321221 076306277 +000000546 000575799 000744377 D|007678615 028650665 +000000546 000594079 000745840 D|035680643 042438093 +000000546 000606600 000786695 D|029695924 029081569 +000000546 000617018 000819698 D|000088918 066712389 +000000546 000620427 000831296 D|026716029 062717649 +000000546 000623723 000841390 D|099635385 072899004 +000000546 000645581 000890759 D|012009015 055945158 +000000546 000647658 000909873 D|086442817 005394578 +000000546 000689566 000911597 D|083250345 022589106 +000000546 000759965 000913195 D|026333256 069345932 +000000546 000772058 000937796 D|054580573 080507005 +000000546 000879911 000952918 D|031475524 082571754 +000000546 000884432 000959938 D|096056012 037057352 +000000546 000905829 000975765 D|007472540 044624943 +000000546 000932920 000976756 D|000394466 019511946 +000000546 000957958 000978211 D|009033128 037191849 +000000546 000991844 000980379 D|058460118 027945762 +000000547 000021464 000018089 D|076623896 018819905 +000000547 000023819 000023029 D|035733808 015896202 +000000547 000049663 000054023 D|094469835 001898196 +000000547 000060221 000067635 D|075253356 092328776 +000000547 000065169 000082390 D|022160882 035045724 +000000547 000078422 000085965 D|036451961 056717709 +000000547 000081208 000093914 D|019425843 091754517 +000000547 000092066 000131852 D|064296195 000244257 +000000547 000095432 000132773 D|032143213 086884648 +000000547 000097073 000146707 D|052451684 045559305 +000000547 000119424 000147290 D|090297200 038177731 +000000547 000123414 000170387 D|063312869 035493905 +000000547 000134275 000185164 D|066654443 041923215 +000000547 000142261 000195616 D|058757310 004677307 +000000547 000169792 000261455 D|054500876 078108723 +000000547 000232377 000305857 D|023820408 027020547 +000000547 000252006 000321835 D|043876889 057733139 +000000547 000270145 000356241 D|083739661 017363750 +000000547 000281590 000368815 D|028385171 033648668 +000000547 000283185 000384736 D|082201065 025853160 +000000547 000427450 000385981 D|056347961 085573629 +000000547 000445680 000409437 D|020585352 087339239 +000000547 000483920 000413147 D|057260663 014917597 +000000547 000493063 000414570 D|095386329 068108538 +000000547 000507478 000423091 D|035365806 085935166 +000000547 000509267 000442749 D|091241746 046756629 +000000547 000520537 000443149 D|050219287 017406451 +000000547 000533947 000477736 D|021705361 099124832 +000000547 000585658 000487102 D|086961663 094898299 +000000547 000590888 000487132 D|069899500 032060205 +000000547 000596807 000511236 D|034642758 082772257 +000000547 000599344 000558246 D|074323323 068062138 +000000547 000623576 000593652 D|073110143 075029547 +000000547 000650855 000664882 D|065425150 011073003 +000000547 000669030 000670779 D|034115241 090185712 +000000547 000686576 000673473 D|038467393 006573162 +000000547 000705709 000735788 D|056959983 079527549 +000000547 000763057 000776588 D|002982619 088446345 +000000547 000783336 000794201 D|033064984 054897647 +000000547 000784954 000800776 D|087415067 085394425 +000000547 000809791 000803792 D|018325567 006798428 +000000547 000813558 000811441 D|085896120 094496709 +000000547 000840256 000818177 D|064841590 062737120 +000000547 000843559 000830931 D|021592339 094351793 +000000547 000865983 000831141 D|023983156 000052123 +000000547 000902250 000844495 D|088358655 023676121 +000000547 000912983 000850619 D|061848431 006650360 +000000547 000928983 000857020 D|087999533 076103855 +000000547 000937311 000901824 D|091663120 060524351 +000000547 000971717 000954600 D|009303239 070670871 +000000548 000051910 000034218 D|034308501 068876275 +000000548 000054597 000071361 D|048142207 042196846 +000000548 000064478 000072860 D|073272616 009457365 +000000548 000078658 000074178 D|073720591 061945413 +000000548 000118952 000101927 D|006194494 087303935 +000000548 000130098 000104120 D|089043417 091499326 +000000548 000156092 000132486 D|055466990 053136088 +000000548 000165309 000138658 D|007856060 018727105 +000000548 000168724 000146140 D|029444410 084255732 +000000548 000196619 000164899 D|057858173 016510145 +000000548 000203941 000169010 D|040423563 066045629 +000000548 000251497 000174593 D|087017906 053182371 +000000548 000257168 000205042 D|079433774 064123328 +000000548 000271015 000219687 D|045775108 020284970 +000000548 000289014 000227323 D|093641916 078650678 +000000548 000306095 000241680 D|075117930 083614455 +000000548 000317135 000243402 D|033782550 050929558 +000000548 000331543 000257390 D|068664294 031217038 +000000548 000345016 000300312 D|014456959 059911414 +000000548 000386144 000318779 D|020579860 096059434 +000000548 000396724 000325341 D|047944850 083510831 +000000548 000398727 000399833 D|057862520 060432433 +000000548 000413767 000423710 D|005073764 011356217 +000000548 000416903 000447189 D|066365491 052124424 +000000548 000463463 000473035 D|086994602 081081242 +000000548 000467618 000524052 D|023860621 077435289 +000000548 000480123 000543208 D|056354466 017851375 +000000548 000481533 000599180 D|088752971 037787230 +000000548 000484524 000628479 D|002158318 036611906 +000000548 000488348 000672241 D|063707313 046215376 +000000548 000497109 000718216 D|005058849 021432969 +000000548 000514714 000730959 D|011411372 041115134 +000000548 000526102 000745214 D|002475691 011991649 +000000548 000546963 000758095 D|004845044 080664857 +000000548 000629479 000766274 D|038752082 012755685 +000000548 000635179 000798742 D|048045006 063179770 +000000548 000638153 000823707 D|052109976 085987644 +000000548 000641560 000837392 D|058555453 049023691 +000000548 000668736 000848460 D|001717668 033194044 +000000548 000700985 000855758 D|078443232 011887120 +000000548 000722449 000860976 D|002401156 084438948 +000000548 000768050 000896737 D|073632394 070756362 +000000548 000806650 000909913 D|003771189 058724014 +000000548 000823315 000914361 D|014913819 092416007 +000000548 000843881 000928490 D|069255053 075708624 +000000548 000863142 000929738 D|034114236 064125235 +000000548 000894105 000936047 D|073030039 018662958 +000000548 000897739 000955876 D|052594324 014081879 +000000548 000954736 000968412 D|090088907 009863779 +000000548 000956290 000981893 D|079749074 001593481 +000000549 000039208 000004129 D|099772902 053996933 +000000549 000058895 000035716 D|041162991 033715787 +000000549 000077289 000050586 D|087532749 044807919 +000000549 000085118 000050839 D|056465366 087430455 +000000549 000116478 000054208 D|019037295 006127086 +000000549 000155674 000111887 D|043910765 028648212 +000000549 000177951 000113160 D|063034327 045031951 +000000549 000188702 000143644 D|007626858 094220479 +000000549 000201924 000152600 D|096657925 038497316 +000000549 000206244 000175532 D|041902080 045257531 +000000549 000223222 000189269 D|021155464 056111205 +000000549 000241917 000241640 D|008073066 050665098 +000000549 000305932 000263447 D|043457690 077973950 +000000549 000335174 000291999 D|003795939 085970864 +000000549 000355443 000314288 D|031136738 091615824 +000000549 000412650 000384758 D|022692181 098701236 +000000549 000443808 000454972 D|030245234 093980566 +000000549 000444312 000458342 D|099265240 009729309 +000000549 000453658 000475386 D|018356701 097279376 +000000549 000479373 000487334 D|029385738 034249547 +000000549 000480804 000505039 D|019241878 051770271 +000000549 000487691 000593077 D|060122637 017975956 +000000549 000491935 000604036 D|094799845 034183487 +000000549 000509123 000604460 D|022302702 019104644 +000000549 000524566 000620749 D|034100535 038338345 +000000549 000526026 000641600 D|067769456 056206155 +000000549 000560486 000661035 D|035139196 027344182 +000000549 000572193 000665498 D|033591030 088403634 +000000549 000658678 000677837 D|043963782 083209553 +000000549 000669297 000686449 D|033633337 014072104 +000000549 000683856 000708910 D|008315719 029619605 +000000549 000699649 000710265 D|027820720 054888250 +000000549 000703896 000735034 D|088029311 047404340 +000000549 000724404 000738820 D|037344641 059885602 +000000549 000742548 000751811 D|022434467 068582558 +000000549 000773722 000784205 D|025175800 032650067 +000000549 000828488 000793693 D|069282117 023270338 +000000549 000851056 000797689 D|037353227 083771592 +000000549 000854943 000800010 D|028595331 059548051 +000000549 000864080 000801942 D|081267687 051013611 +000000549 000886472 000803412 D|001961910 014677574 +000000549 000894824 000807330 D|082569258 077089492 +000000549 000914920 000810086 D|074840238 049882280 +000000549 000919154 000866391 D|077659222 027168674 +000000549 000970687 000885916 D|048407802 091081139 +000000549 000970710 000919216 D|045983028 057250343 +000000549 000974959 000919437 D|046151680 010045153 +000000549 000976064 000969528 D|034953648 004041264 +000000549 000993741 000974985 D|032036329 030449602 +000000549 000994444 000983820 D|035172347 080037675 +000000550 000006823 000027903 D|092564708 065354458 +000000550 000053803 000049879 D|035987246 014197345 +000000550 000107810 000070440 D|014720248 000483083 +000000550 000109437 000079863 D|073456264 053991099 +000000550 000167301 000086773 D|036993731 040254826 +000000550 000199304 000087853 D|063407542 026292096 +000000550 000205828 000096310 D|015371679 045055215 +000000550 000233626 000100181 D|005495380 023203649 +000000550 000235996 000104366 D|074139867 024262827 +000000550 000271470 000113129 D|008857403 062015032 +000000550 000272261 000139204 D|010148477 084826854 +000000550 000278613 000151397 D|076358832 001498072 +000000550 000335979 000205645 D|034322069 072626157 +000000550 000437926 000218535 D|076896081 062139721 +000000550 000502535 000251726 D|016605301 072355591 +000000550 000519705 000259103 D|006983296 009061393 +000000550 000542186 000283938 D|044157198 058411211 +000000550 000565279 000290551 D|056718893 053814518 +000000550 000619042 000300547 D|073517675 056383970 +000000550 000620246 000319722 D|020970361 032222346 +000000550 000633337 000356435 D|024460756 099941520 +000000550 000643679 000366428 D|096063424 031122792 +000000550 000645870 000375697 D|072884333 067938853 +000000550 000658133 000386245 D|014814990 022191094 +000000550 000664736 000389286 D|003940528 059808783 +000000550 000675025 000394130 D|034221471 014182605 +000000550 000689160 000406484 D|002037699 041350393 +000000550 000692391 000409568 D|031203223 059782508 +000000550 000696942 000438490 D|099785160 082709435 +000000550 000718974 000439705 D|046454963 027935269 +000000550 000723461 000473744 D|033034968 029516756 +000000550 000724795 000487963 D|091445075 040987363 +000000550 000762505 000493457 D|085916613 034036522 +000000550 000768222 000510531 D|020722471 036730412 +000000550 000775819 000514897 D|055769237 044135275 +000000550 000796581 000557085 D|020936226 016954858 +000000550 000818744 000596433 D|092903378 018665907 +000000550 000831314 000648298 D|044102645 023048695 +000000550 000850163 000651391 D|059877320 037598866 +000000550 000850817 000738493 D|011446607 096735705 +000000550 000852911 000756933 D|062302255 045563988 +000000550 000855323 000760615 D|064456526 095527098 +000000550 000876203 000763810 D|073373748 019133743 +000000550 000879806 000783185 D|089335288 034315455 +000000550 000892301 000854300 D|086193591 082392010 +000000550 000926336 000875054 D|071926483 062568732 +000000550 000932014 000928480 D|054881025 066373752 +000000550 000945539 000962387 D|019310308 072002103 +000000550 000972696 000973742 D|081990036 027761906 +000000550 000978336 000974080 D|030732953 088317730 +000000551 000042329 000002896 D|078324793 098944169 +000000551 000066106 000028944 D|085054806 077547886 +000000551 000072895 000029264 D|007012246 047076580 +000000551 000078201 000045409 D|011317083 087692828 +000000551 000099177 000063140 D|019122931 098940314 +000000551 000109961 000078850 D|074456470 035683798 +000000551 000143993 000078979 D|014213056 098636445 +000000551 000160769 000081365 D|060237002 024365736 +000000551 000196844 000084046 D|082136285 041940958 +000000551 000199855 000119913 D|007289486 079354578 +000000551 000254622 000152471 D|079860357 045549936 +000000551 000276239 000159683 D|049000341 093784845 +000000551 000279699 000191534 D|081397366 067778279 +000000551 000281759 000207319 D|044105804 064146764 +000000551 000300078 000255381 D|095657791 053465621 +000000551 000323663 000257725 D|032034630 015924922 +000000551 000336758 000281048 D|093270073 078770484 +000000551 000365357 000320139 D|056936451 094992114 +000000551 000380335 000330348 D|035990013 063215174 +000000551 000396768 000353905 D|034059132 092469601 +000000551 000410311 000361179 D|009279683 056653723 +000000551 000431583 000376385 D|009324474 022417302 +000000551 000442323 000376713 D|086426574 007386214 +000000551 000491734 000389055 D|021558717 001103060 +000000551 000505244 000390712 D|087566446 028353544 +000000551 000531819 000420610 D|051721491 002187652 +000000551 000537831 000446713 D|094068702 024082081 +000000551 000548352 000548283 D|028477145 063395724 +000000551 000587496 000569779 D|087907278 097394049 +000000551 000615461 000628480 D|062339200 056283495 +000000551 000623971 000632848 D|077611645 029917692 +000000551 000632494 000640468 D|019305409 044265298 +000000551 000674765 000647843 D|008532242 035170301 +000000551 000693751 000648978 D|010113890 093866884 +000000551 000697035 000652650 D|060571605 016328467 +000000551 000720259 000674569 D|044415523 067872209 +000000551 000783606 000688432 D|066253531 038497068 +000000551 000795886 000728870 D|085550844 061433049 +000000551 000806618 000734118 D|095597804 062042853 +000000551 000815792 000759353 D|028918285 017182847 +000000551 000837551 000789083 D|051131919 046707721 +000000551 000889184 000812499 D|025113142 016344049 +000000551 000893628 000875676 D|003313070 057563828 +000000551 000895826 000883531 D|000674982 014910358 +000000551 000938569 000892677 D|094073635 045476471 +000000551 000941452 000896509 D|095015391 087819437 +000000551 000962155 000908511 D|096901746 063124411 +000000551 000977625 000937559 D|052191401 072387492 +000000551 000999158 000940329 D|036493873 059034637 +000000551 000999822 000966388 D|059362975 070836715 +000000552 000009892 000003677 D|014941639 007045905 +000000552 000012712 000013068 D|029134171 081782534 +000000552 000027267 000038576 D|069023800 062846835 +000000552 000042828 000038626 D|075032925 067018961 +000000552 000051401 000048466 D|013822708 043267505 +000000552 000072274 000077477 D|094596041 042752497 +000000552 000089823 000080701 D|006809440 080888491 +000000552 000093556 000081981 D|098329449 095090868 +000000552 000107739 000132608 D|052543511 098941873 +000000552 000116581 000154807 D|086062068 026588847 +000000552 000117256 000159793 D|083960097 034391536 +000000552 000155340 000162253 D|042926416 086561335 +000000552 000177883 000186078 D|010968393 090967740 +000000552 000206490 000216090 D|045225367 023769334 +000000552 000307093 000219343 D|044141246 054803211 +000000552 000315375 000224094 D|011167831 026109121 +000000552 000341893 000230162 D|045986860 013177455 +000000552 000365089 000271254 D|048442811 025163281 +000000552 000399644 000305636 D|012760919 049914570 +000000552 000439362 000320165 D|062490431 013298509 +000000552 000445149 000322850 D|040372993 001826516 +000000552 000452179 000363229 D|096157928 062975528 +000000552 000534392 000396743 D|011300542 030162890 +000000552 000535037 000410849 D|059588884 028504257 +000000552 000557749 000418668 D|094104414 067553117 +000000552 000588326 000420263 D|014426725 003780692 +000000552 000617067 000448168 D|068730834 050781421 +000000552 000622991 000515641 D|013586585 006320029 +000000552 000631827 000516469 D|037023409 002649161 +000000552 000659989 000537311 D|081834039 070377481 +000000552 000671137 000565461 D|072603905 040971658 +000000552 000678215 000568319 D|094135215 034260136 +000000552 000689238 000583380 D|039002762 006891612 +000000552 000726786 000599214 D|007342842 016172735 +000000552 000764389 000628904 D|018522255 055112433 +000000552 000768391 000664013 D|016258257 069250169 +000000552 000770942 000698694 D|099753009 020510164 +000000552 000777662 000722157 D|018081562 023912572 +000000552 000824669 000775018 D|073954672 045945816 +000000552 000855559 000785745 D|082016361 011934146 +000000552 000857253 000805208 D|008810659 001241021 +000000552 000906402 000829898 D|095929563 087703285 +000000552 000927856 000841733 D|093569770 001337149 +000000552 000933883 000859949 D|036133198 095772285 +000000552 000934647 000870057 D|021064276 066701968 +000000552 000936772 000926646 D|083202626 085320355 +000000552 000950589 000934355 D|021627531 059126268 +000000552 000953413 000946240 D|042137855 053994339 +000000552 000979332 000947605 D|095600312 039195139 +000000552 000989608 000964856 D|029227726 015304781 +000000553 000003239 000024797 D|015336943 018728950 +000000553 000012480 000051910 D|017225381 057397123 +000000553 000025826 000072737 D|083300851 092897619 +000000553 000031649 000082280 D|036507924 080106129 +000000553 000035190 000085182 D|069524357 012225790 +000000553 000040279 000088641 D|070160720 025712895 +000000553 000072213 000092702 D|011076630 018755156 +000000553 000083620 000141356 D|094350167 015767317 +000000553 000087151 000165824 D|045742920 012578268 +000000553 000135938 000167545 D|054118805 070805722 +000000553 000174444 000169954 D|011760549 038701475 +000000553 000177021 000175664 D|098624738 001013026 +000000553 000226005 000232164 D|007122929 052192065 +000000553 000239490 000242207 D|075569101 094489466 +000000553 000244830 000260765 D|044907085 036742089 +000000553 000264267 000291173 D|029411398 002693523 +000000553 000270952 000343008 D|091231373 057441896 +000000553 000314695 000351920 D|023988274 045632240 +000000553 000335588 000361408 D|069227816 064883786 +000000553 000336009 000367205 D|067967538 095321468 +000000553 000336299 000385782 D|020914557 054054326 +000000553 000337476 000412246 D|077051866 056602805 +000000553 000369194 000434915 D|009073651 095507623 +000000553 000382642 000449123 D|068024033 001318242 +000000553 000418781 000483848 D|041086521 089278358 +000000553 000464002 000494887 D|017908284 010661976 +000000553 000464412 000503954 D|098471637 078722559 +000000553 000465003 000521170 D|032300104 046800377 +000000553 000473899 000608490 D|097540170 000519086 +000000553 000484841 000608926 D|010841516 030690224 +000000553 000484936 000612917 D|045714671 011536149 +000000553 000500022 000625999 D|079989087 080073941 +000000553 000509776 000665429 D|091459893 073958748 +000000553 000555793 000722330 D|068780648 062803235 +000000553 000559285 000738411 D|066121295 032708771 +000000553 000569829 000745574 D|024817205 050931867 +000000553 000600950 000760663 D|073570986 004642889 +000000553 000719785 000763525 D|045406308 007885859 +000000553 000730818 000768019 D|029632913 053477416 +000000553 000733522 000809207 D|095281959 071149617 +000000553 000779500 000829424 D|061284737 044160122 +000000553 000817525 000859569 D|088252884 046356725 +000000553 000822381 000860966 D|028431017 061330711 +000000553 000869687 000912526 D|061326217 073783350 +000000553 000873631 000919399 D|087295393 068136253 +000000553 000886738 000933498 D|006401672 055547777 +000000553 000929261 000972271 D|069755367 046975508 +000000553 000952595 000990441 D|011209541 071943850 +000000553 000957608 000990878 D|068168650 059133415 +000000553 000990012 000995875 D|046435342 050739086 +000000554 000003649 000016069 D|039817807 019804585 +000000554 000020781 000018657 D|037658603 087031429 +000000554 000050212 000048812 D|050216563 062923180 +000000554 000052418 000064698 D|026188840 030024052 +000000554 000079526 000076311 D|051961001 048671860 +000000554 000086099 000099642 D|005477702 055322792 +000000554 000128590 000113185 D|046167582 099293092 +000000554 000155867 000139842 D|017982289 083711084 +000000554 000159644 000153620 D|060003840 074309278 +000000554 000228142 000162211 D|058088395 098665859 +000000554 000234964 000209175 D|011288949 073147486 +000000554 000247774 000252755 D|037460382 067854119 +000000554 000270407 000271880 D|046131718 002025351 +000000554 000364841 000277339 D|005539087 036511316 +000000554 000376503 000299602 D|003537402 030449709 +000000554 000387284 000318794 D|005809532 012416582 +000000554 000396428 000337149 D|006063847 018409942 +000000554 000428403 000366530 D|047255294 084589263 +000000554 000429461 000368211 D|059225336 015766775 +000000554 000451844 000374876 D|059618770 020807307 +000000554 000492009 000426502 D|091175252 045706726 +000000554 000495283 000432624 D|067409192 010030053 +000000554 000505663 000458683 D|039062843 017317235 +000000554 000507111 000474996 D|089854566 029400628 +000000554 000514840 000497153 D|090467786 024758818 +000000554 000551693 000505571 D|083574667 079302236 +000000554 000566878 000506707 D|028788744 023612848 +000000554 000576553 000511476 D|050591798 032522461 +000000554 000582791 000512280 D|004131090 095238200 +000000554 000637726 000561933 D|047730168 056848616 +000000554 000652206 000569838 D|004137299 050198085 +000000554 000658365 000578740 D|018562223 066959082 +000000554 000674213 000591008 D|095049879 031117097 +000000554 000675548 000610467 D|004181291 097655485 +000000554 000689475 000616602 D|096518648 073565153 +000000554 000693892 000618978 D|000087879 035732248 +000000554 000772028 000624256 D|049152011 015565851 +000000554 000777745 000695838 D|063432937 050373568 +000000554 000790388 000700038 D|020244944 050662707 +000000554 000796110 000715998 D|019875670 012936021 +000000554 000824453 000728398 D|066670404 005633463 +000000554 000829227 000759466 D|017672573 085984609 +000000554 000835932 000798790 D|078742343 029614306 +000000554 000861720 000809026 D|018601429 070921119 +000000554 000864736 000819632 D|082387692 010913953 +000000554 000869151 000845732 D|060973724 070963495 +000000554 000889208 000920266 D|054140961 094746559 +000000554 000913796 000925745 D|007029982 025027769 +000000554 000935753 000942320 D|041382077 025737439 +000000554 000995363 000974971 D|009294941 046072166 +000000555 000005509 000047393 D|080736953 083634028 +000000555 000039235 000089859 D|061652138 077431326 +000000555 000081804 000097333 D|066766764 030236992 +000000555 000103800 000152387 D|027066093 044169736 +000000555 000121791 000165598 D|025049287 027123511 +000000555 000124446 000196109 D|072513026 044718886 +000000555 000141111 000211312 D|028323051 034890844 +000000555 000160554 000224528 D|009357933 002171592 +000000555 000169044 000226249 D|015796048 087416954 +000000555 000220928 000234771 D|022425566 085577107 +000000555 000225649 000262706 D|071360170 057944972 +000000555 000229882 000332086 D|049903317 008185603 +000000555 000305601 000353100 D|011228030 053728884 +000000555 000311319 000356987 D|092994581 066845435 +000000555 000331143 000360766 D|094547381 042680218 +000000555 000348171 000365413 D|098249529 006359496 +000000555 000358667 000371607 D|056754996 054203958 +000000555 000380711 000398415 D|010187245 047876158 +000000555 000407342 000433778 D|066080089 015073926 +000000555 000415159 000454141 D|041195131 024847888 +000000555 000420203 000466613 D|074209138 067362937 +000000555 000467769 000470893 D|046063402 066805691 +000000555 000491303 000473911 D|060040129 032116212 +000000555 000491417 000517226 D|034463079 057570556 +000000555 000507997 000518436 D|058466059 097143167 +000000555 000524433 000564531 D|007931474 006123974 +000000555 000544125 000573725 D|062137396 002425125 +000000555 000554879 000594453 D|036648431 084942052 +000000555 000569051 000624775 D|068579077 019881576 +000000555 000587989 000640619 D|094790016 057871316 +000000555 000602317 000649251 D|084052084 056336602 +000000555 000626824 000654306 D|052759543 063012505 +000000555 000644266 000657118 D|024591428 027593237 +000000555 000647099 000681484 D|020197178 060063625 +000000555 000689202 000687043 D|074955009 017708623 +000000555 000692495 000703452 D|090647044 008402591 +000000555 000694232 000709829 D|069482065 073647226 +000000555 000716782 000735602 D|085137228 078131211 +000000555 000718166 000772475 D|026876525 012102143 +000000555 000738633 000804000 D|070691805 048439801 +000000555 000751754 000804416 D|046532246 034258215 +000000555 000780641 000832835 D|014458144 027883924 +000000555 000795277 000874437 D|009407531 016495597 +000000555 000811923 000903334 D|020689838 074777704 +000000555 000823134 000925134 D|023006697 078972396 +000000555 000845726 000933332 D|070742825 027096792 +000000555 000859599 000936381 D|064184887 005757396 +000000555 000877441 000971909 D|028950996 034187511 +000000555 000882567 000994488 D|078410538 018327016 +000000555 000906460 000994574 D|048677286 082536344 +000000556 000002021 000016055 D|062587978 041766121 +000000556 000010935 000025558 D|089719148 061217064 +000000556 000028066 000049355 D|098158593 081930241 +000000556 000047407 000069188 D|042941004 005587649 +000000556 000049618 000107707 D|091449971 069830625 +000000556 000086782 000118034 D|093364375 004227501 +000000556 000088891 000128866 D|090661301 079700452 +000000556 000093653 000130806 D|018594183 080104821 +000000556 000138635 000171431 D|067719745 045168518 +000000556 000141261 000195653 D|098626012 027669606 +000000556 000190181 000206677 D|025188675 009875535 +000000556 000216274 000212168 D|083108083 084023435 +000000556 000225858 000219257 D|081255631 085466754 +000000556 000270932 000223984 D|095304303 095572279 +000000556 000273502 000276739 D|041518315 090480242 +000000556 000316403 000291919 D|054075213 073088059 +000000556 000318026 000300795 D|096189249 032645967 +000000556 000390252 000339712 D|012088396 021874017 +000000556 000403875 000342776 D|020113820 047758732 +000000556 000422518 000350487 D|031703634 015138398 +000000556 000426166 000472123 D|084575323 094953066 +000000556 000428969 000484723 D|088326296 001418534 +000000556 000450757 000487788 D|076902211 030892756 +000000556 000488467 000490075 D|028405845 071229714 +000000556 000529666 000495769 D|052644923 029415263 +000000556 000532304 000516133 D|039960152 037749972 +000000556 000562755 000544324 D|081777054 070635109 +000000556 000615897 000562572 D|013933656 014899265 +000000556 000623742 000585938 D|093260444 077454809 +000000556 000636702 000586292 D|008846414 001455105 +000000556 000643109 000606998 D|062871639 009529344 +000000556 000675784 000634457 D|023389304 060757924 +000000556 000696954 000640765 D|016042319 003716124 +000000556 000700659 000644263 D|031990174 031252275 +000000556 000724976 000656908 D|074244552 028138117 +000000556 000744998 000699838 D|014803407 048587915 +000000556 000746998 000710835 D|067589466 077873060 +000000556 000758324 000714310 D|099055688 072698861 +000000556 000763332 000724633 D|029308065 004921495 +000000556 000791978 000778454 D|029278952 057690946 +000000556 000815953 000779886 D|079690285 043913630 +000000556 000833762 000836222 D|015804684 077252681 +000000556 000885338 000845055 D|003148821 053544847 +000000556 000888396 000845943 D|097950933 037049712 +000000556 000893824 000855687 D|075828082 039311112 +000000556 000911997 000875131 D|013878038 014873030 +000000556 000954211 000921765 D|025621704 036200790 +000000556 000968044 000929561 D|048444915 014717600 +000000556 000981411 000960947 D|063000392 004734280 +000000556 000991016 000964785 D|037672686 013590193 +000000557 000056608 000001836 D|092274794 071280360 +000000557 000064803 000143066 D|047707138 054703972 +000000557 000102203 000145790 D|054150552 053399173 +000000557 000105797 000153442 D|020848714 007401311 +000000557 000121640 000164478 D|020336955 083250805 +000000557 000154405 000209368 D|050391244 012737501 +000000557 000156432 000212217 D|008976811 094864946 +000000557 000193950 000235606 D|015281408 081196255 +000000557 000221214 000237525 D|011787864 079291346 +000000557 000256650 000261234 D|058015800 001357339 +000000557 000258318 000291998 D|001075758 003184244 +000000557 000280023 000296548 D|026396300 084462924 +000000557 000300650 000299831 D|076309971 026773707 +000000557 000325173 000304189 D|077835110 063032486 +000000557 000381893 000305897 D|025177385 086402685 +000000557 000384624 000354989 D|043308212 020428650 +000000557 000394640 000371346 D|067427385 090298849 +000000557 000434535 000409881 D|050733343 061688013 +000000557 000452617 000415714 D|011847037 000764756 +000000557 000471158 000434210 D|015930666 060092030 +000000557 000488004 000458170 D|050053252 014290659 +000000557 000511578 000472253 D|077453424 084066126 +000000557 000524272 000479142 D|087887444 046333381 +000000557 000534269 000486773 D|005908472 026578509 +000000557 000535852 000510838 D|018362789 012092956 +000000557 000550342 000524076 D|015033808 066769121 +000000557 000553681 000536360 D|022567478 001601365 +000000557 000600836 000565331 D|020570588 008910310 +000000557 000603546 000573739 D|062130727 072738270 +000000557 000618098 000582701 D|067955846 041011955 +000000557 000660436 000608915 D|078682061 041318723 +000000557 000706028 000614581 D|006592306 072555908 +000000557 000711281 000637024 D|075643870 041832660 +000000557 000711868 000640133 D|080613024 061872963 +000000557 000725444 000668804 D|010262708 025891137 +000000557 000761084 000680791 D|072496356 070695735 +000000557 000766142 000707863 D|078553911 079962479 +000000557 000778440 000714982 D|043117665 016001542 +000000557 000838010 000728013 D|063323421 075647178 +000000557 000856610 000746938 D|020105583 016629992 +000000557 000864518 000773743 D|090524728 016622929 +000000557 000867880 000793737 D|009406670 006130123 +000000557 000927025 000821733 D|098740763 065170226 +000000557 000932439 000822740 D|056153343 094750828 +000000557 000945348 000842293 D|010702641 004608790 +000000557 000956862 000869487 D|055137291 022851020 +000000557 000972589 000882122 D|013569096 025275943 +000000557 000981698 000908345 D|048803377 089864622 +000000557 000989547 000940695 D|050315937 081263104 +000000557 000994875 000959316 D|026370375 025344319 +000000558 000015254 000011379 D|013402321 098647122 +000000558 000016198 000078860 D|020596117 046528073 +000000558 000051239 000103018 D|040995276 094787740 +000000558 000069572 000116678 D|074155930 029410370 +000000558 000073373 000127134 D|080764544 047258899 +000000558 000100416 000137518 D|037893433 045812055 +000000558 000118673 000170202 D|070448550 072387249 +000000558 000134185 000171131 D|037233105 075202915 +000000558 000165092 000192062 D|015657668 023333151 +000000558 000176177 000201048 D|063884019 006975831 +000000558 000214061 000211914 D|098799218 017334196 +000000558 000273324 000220402 D|032979117 023718754 +000000558 000307769 000251346 D|084312500 065598831 +000000558 000333947 000292331 D|018074090 051700598 +000000558 000347744 000295382 D|022785035 029386644 +000000558 000355444 000297896 D|090473318 095674700 +000000558 000415994 000322329 D|033957626 098745479 +000000558 000416530 000366915 D|026056606 025919263 +000000558 000446828 000407408 D|049063154 054409394 +000000558 000498855 000458180 D|062496730 041740224 +000000558 000503457 000459621 D|084778331 084824210 +000000558 000537258 000466041 D|021617357 092021258 +000000558 000559652 000491406 D|070270171 030263201 +000000558 000563588 000509370 D|014194891 097408541 +000000558 000565849 000560883 D|077723784 023264991 +000000558 000587684 000596957 D|030830234 014597298 +000000558 000599527 000641609 D|086865952 054718204 +000000558 000604767 000646585 D|000459538 029650890 +000000558 000642573 000674409 D|085024436 011366563 +000000558 000661900 000684791 D|025206215 008533713 +000000558 000670190 000691827 D|049869271 023928376 +000000558 000671837 000702431 D|091893187 063416487 +000000558 000692026 000703193 D|050886634 043669292 +000000558 000724219 000749871 D|067006107 058006712 +000000558 000731408 000758954 D|030445426 048393281 +000000558 000733685 000762500 D|081929646 055362348 +000000558 000758213 000775270 D|023168372 084650875 +000000558 000768439 000784700 D|073501347 082702790 +000000558 000792722 000847256 D|034280965 083188127 +000000558 000808313 000848762 D|075552350 078862584 +000000558 000855991 000858986 D|059667870 080137491 +000000558 000922345 000890370 D|048980416 063049148 +000000558 000923414 000893714 D|077256878 026934414 +000000558 000925353 000933708 D|078712343 059840331 +000000558 000934708 000975085 D|065961415 068025657 +000000558 000938002 000975093 D|081674501 072290872 +000000558 000949131 000976368 D|002189819 024444406 +000000558 000958418 000978886 D|064508615 012003944 +000000558 000962685 000986733 D|049537402 012199944 +000000558 000964044 000988903 D|084296529 054876927 +000000559 000004043 000004954 D|023206757 016445400 +000000559 000025542 000009341 D|079081570 022888961 +000000559 000041068 000011686 D|079877733 054490679 +000000559 000042986 000026343 D|036904061 082902705 +000000559 000090180 000070109 D|088591348 028186172 +000000559 000125253 000100924 D|024467602 040638703 +000000559 000125648 000148758 D|053167611 001495620 +000000559 000137249 000182706 D|059941419 066712923 +000000559 000155645 000192217 D|037725984 062647139 +000000559 000156409 000210527 D|097647279 064008200 +000000559 000163255 000253227 D|013762797 041323270 +000000559 000190809 000284145 D|021063411 025398096 +000000559 000236283 000293582 D|068004598 080079042 +000000559 000291088 000311886 D|007738051 014611378 +000000559 000319541 000355588 D|023043119 022631028 +000000559 000325889 000359624 D|047572196 008385964 +000000559 000342752 000362345 D|088330252 055351842 +000000559 000350655 000391787 D|052565948 006176414 +000000559 000362863 000397824 D|031042244 099052393 +000000559 000376159 000406587 D|078185335 074853490 +000000559 000398881 000424752 D|088149578 049392005 +000000559 000407409 000430336 D|024952393 084860206 +000000559 000455552 000540551 D|017122528 017949424 +000000559 000463721 000557157 D|056025739 054868372 +000000559 000467419 000605675 D|061861693 083318158 +000000559 000480660 000631247 D|022185919 074208793 +000000559 000505567 000632881 D|033406245 018486240 +000000559 000511108 000662570 D|087043985 069207254 +000000559 000542396 000679686 D|077520772 098838729 +000000559 000545801 000682458 D|079622655 093678732 +000000559 000555005 000690367 D|040104140 050236714 +000000559 000572163 000728590 D|070270090 064069057 +000000559 000610340 000733221 D|020311455 088751341 +000000559 000676763 000753250 D|090661373 055608826 +000000559 000711362 000756811 D|069893761 042795074 +000000559 000740515 000758069 D|049074767 011286983 +000000559 000745032 000760880 D|084452339 068993599 +000000559 000763649 000769270 D|026590725 027296617 +000000559 000768477 000789074 D|010668033 072230299 +000000559 000775279 000796162 D|002778110 088720821 +000000559 000778083 000799781 D|022918290 072595436 +000000559 000802383 000878007 D|025288004 050613402 +000000559 000831322 000891372 D|037182095 051193182 +000000559 000867422 000919020 D|042538189 006952841 +000000559 000874239 000937021 D|003429509 007651081 +000000559 000884613 000939754 D|079378258 063199966 +000000559 000906067 000959489 D|087582685 088334787 +000000559 000912409 000967695 D|043716314 094463134 +000000559 000935324 000979745 D|008462949 083590788 +000000559 000981217 000996034 D|053270719 061727644 +000000560 000000831 000006841 D|074875322 092678543 +000000560 000023310 000009810 D|066221058 040273430 +000000560 000040359 000010574 D|067333916 064549995 +000000560 000055762 000022488 D|025611852 011470408 +000000560 000072937 000038624 D|051437972 005183981 +000000560 000086608 000055924 D|057051336 031832178 +000000560 000172247 000079247 D|052058073 004026787 +000000560 000185622 000105132 D|062280443 085099358 +000000560 000189624 000120614 D|013436329 001478671 +000000560 000191007 000165695 D|017375864 027782538 +000000560 000212107 000170080 D|003847454 069555841 +000000560 000218677 000213882 D|088303529 039765967 +000000560 000247682 000255487 D|071678230 094085153 +000000560 000266619 000293077 D|033932621 072221377 +000000560 000276200 000321979 D|065568910 003797995 +000000560 000286719 000326776 D|078112211 086532887 +000000560 000293998 000345547 D|000338899 095020399 +000000560 000303581 000348489 D|035456075 016175202 +000000560 000363108 000384513 D|057146833 014615451 +000000560 000383745 000393825 D|098342314 043300396 +000000560 000422691 000406800 D|043762954 021344612 +000000560 000423014 000411469 D|067069544 064979445 +000000560 000437938 000470307 D|015264347 057091689 +000000560 000445023 000474504 D|072793506 083549410 +000000560 000509991 000483883 D|043755382 060360374 +000000560 000511955 000484183 D|044436322 078071937 +000000560 000517660 000504386 D|070998120 077880811 +000000560 000540484 000564044 D|006500249 095465494 +000000560 000556242 000573279 D|021004216 046094732 +000000560 000563929 000579494 D|060989588 075393823 +000000560 000585599 000613770 D|038767820 032815917 +000000560 000591635 000614207 D|010403709 043574130 +000000560 000648016 000616917 D|064965691 037099006 +000000560 000684434 000704611 D|069112574 051702709 +000000560 000716828 000740449 D|082753665 028948405 +000000560 000757638 000747464 D|079550928 026867847 +000000560 000780798 000758871 D|014391567 064226210 +000000560 000791107 000759531 D|092315630 031900656 +000000560 000797335 000799148 D|006039946 069602012 +000000560 000809826 000820732 D|077182223 096384521 +000000560 000829102 000854972 D|082253835 096154597 +000000560 000840383 000864084 D|020726270 081295784 +000000560 000855304 000893198 D|023992261 010011601 +000000560 000864745 000906283 D|037228185 098257093 +000000560 000892850 000907778 D|006343164 027792787 +000000560 000922877 000920233 D|004663835 024742468 +000000560 000948944 000934547 D|050100304 049341439 +000000560 000949763 000935352 D|081058399 024291344 +000000560 000951465 000975690 D|010878164 054328470 +000000560 000959565 000993042 D|098310573 008246379 +000000561 000006028 000000106 D|041039387 064302350 +000000561 000011430 000003822 D|001037085 095440060 +000000561 000014491 000010572 D|094970212 044669006 +000000561 000018784 000035049 D|031367146 011857048 +000000561 000028966 000037525 D|056606908 035060495 +000000561 000030632 000042284 D|087214888 033468333 +000000561 000035433 000069345 D|085026860 085600903 +000000561 000103941 000073925 D|012430331 065654721 +000000561 000106450 000077090 D|020720911 049537175 +000000561 000128581 000109829 D|022541803 093831672 +000000561 000283528 000115472 D|060877958 085710885 +000000561 000292863 000135514 D|097267324 062310497 +000000561 000314092 000156088 D|074990303 067974711 +000000561 000330374 000161121 D|023465581 014183703 +000000561 000347969 000178477 D|048800822 039432840 +000000561 000348493 000182912 D|023623029 070353860 +000000561 000364181 000208466 D|016149856 076805229 +000000561 000426714 000225702 D|057601911 049012951 +000000561 000451520 000225732 D|001102958 017069914 +000000561 000463862 000277345 D|093423797 039851635 +000000561 000482696 000295548 D|061062185 001614894 +000000561 000488583 000358560 D|031128900 086557118 +000000561 000536512 000375499 D|029913465 004748368 +000000561 000547115 000425404 D|071904064 085855421 +000000561 000602053 000435516 D|091770132 092664723 +000000561 000616542 000441650 D|080629598 007287189 +000000561 000621914 000450420 D|080203541 017159507 +000000561 000632080 000500663 D|037761715 015601325 +000000561 000649047 000537257 D|088965449 080434398 +000000561 000651995 000589184 D|019643898 006140246 +000000561 000660643 000596247 D|080315112 002513681 +000000561 000689443 000648622 D|097891917 085483284 +000000561 000689445 000649140 D|081262985 057723953 +000000561 000755578 000652999 D|061139858 017753073 +000000561 000774275 000660851 D|048026406 044554064 +000000561 000776807 000666711 D|075477337 073531957 +000000561 000801768 000686574 D|012019040 037700419 +000000561 000804235 000694770 D|016175342 096244183 +000000561 000818624 000774238 D|029598945 064495236 +000000561 000823896 000783219 D|039559692 048197219 +000000561 000827730 000825216 D|027196201 079130779 +000000561 000832588 000837957 D|076235434 003186152 +000000561 000849687 000838572 D|006202074 032669699 +000000561 000854517 000875006 D|041633673 084053302 +000000561 000854709 000888656 D|051958838 007734063 +000000561 000871002 000918701 D|084097719 006801508 +000000561 000919532 000959415 D|010012150 016702856 +000000561 000946650 000989301 D|040673464 075197111 +000000561 000954126 000995911 D|029284864 023708680 +000000561 000967854 000996429 D|041875253 078143442 +000000562 000000349 000016572 D|052839844 011608205 +000000562 000001270 000025145 D|078256988 033683061 +000000562 000003138 000034259 D|085698622 049447558 +000000562 000042804 000038873 D|032394484 010663722 +000000562 000049980 000124424 D|067958248 092065905 +000000562 000052611 000144581 D|011465555 083651914 +000000562 000092270 000170512 D|067126009 063829761 +000000562 000111326 000173159 D|042635660 020947133 +000000562 000119494 000175763 D|017137148 047004509 +000000562 000126397 000184254 D|091384070 003287547 +000000562 000150100 000235546 D|059332188 024330633 +000000562 000152883 000241057 D|036235485 034264043 +000000562 000226554 000246081 D|079487361 086248564 +000000562 000243623 000280217 D|008780622 087934697 +000000562 000253569 000296630 D|099457178 092434599 +000000562 000260138 000296828 D|021395011 027576815 +000000562 000264470 000324860 D|056296196 007906900 +000000562 000295480 000332022 D|078460503 064006684 +000000562 000297138 000343675 D|096524842 004922803 +000000562 000297297 000344812 D|044835657 022787917 +000000562 000335822 000347420 D|088929051 092243123 +000000562 000346090 000352916 D|029439731 056903951 +000000562 000389437 000357658 D|061926744 074092320 +000000562 000426654 000360577 D|057832638 085539122 +000000562 000449804 000375307 D|099076237 011300240 +000000562 000452385 000393767 D|006941110 074518353 +000000562 000464267 000406185 D|031366170 076238690 +000000562 000471488 000411393 D|038345840 030518581 +000000562 000476030 000440893 D|083982399 048682741 +000000562 000505177 000449208 D|066073475 056845311 +000000562 000520591 000464758 D|078585704 023369241 +000000562 000574464 000484704 D|027015632 098620744 +000000562 000635675 000488601 D|079964944 099140049 +000000562 000682630 000488950 D|058152698 094651697 +000000562 000691900 000537185 D|074870673 017762470 +000000562 000692119 000577853 D|001043722 039710837 +000000562 000699738 000615278 D|028042587 003760908 +000000562 000725144 000656103 D|097731791 050819527 +000000562 000737906 000683356 D|037118997 028390226 +000000562 000761057 000689886 D|089526542 026307405 +000000562 000792630 000732722 D|094888632 000103837 +000000562 000806506 000770947 D|009497430 090890292 +000000562 000840334 000830438 D|078297405 043886350 +000000562 000864717 000876956 D|024072188 017596594 +000000562 000930110 000881503 D|082280720 023548329 +000000562 000931159 000928265 D|038160372 041897218 +000000562 000940106 000934623 D|075975648 003293178 +000000562 000967350 000941923 D|013539785 027330320 +000000562 000969219 000977003 D|081456884 097056243 +000000562 000971532 000990305 D|068691448 030692631 +000000563 000005437 000018076 D|023163295 049788120 +000000563 000043153 000037434 D|095246060 061957879 +000000563 000082910 000064970 D|070268334 092343623 +000000563 000093321 000104312 D|005290085 066300683 +000000563 000173725 000152831 D|035616204 077465001 +000000563 000194160 000153777 D|017802647 085886050 +000000563 000247546 000170897 D|044651870 017287146 +000000563 000262520 000180984 D|000139007 033579351 +000000563 000283620 000182480 D|006455529 069964616 +000000563 000293167 000186517 D|008503717 043231118 +000000563 000299913 000197641 D|079773016 084152221 +000000563 000327850 000207717 D|090232529 085004954 +000000563 000329522 000237484 D|035878256 088196692 +000000563 000330208 000240954 D|028475155 013094052 +000000563 000339662 000275158 D|039987303 067800469 +000000563 000349314 000289354 D|009650145 062535344 +000000563 000366339 000319294 D|064066836 005062158 +000000563 000377808 000330426 D|089029277 016953945 +000000563 000404158 000336547 D|018090755 004861467 +000000563 000443695 000337279 D|090593730 046201206 +000000563 000449938 000384565 D|004306388 010935055 +000000563 000472465 000456214 D|026985351 076341162 +000000563 000481365 000463882 D|031027017 019399568 +000000563 000502685 000499980 D|002232849 021809283 +000000563 000506605 000526920 D|072535816 074644009 +000000563 000529484 000555533 D|067503240 070282660 +000000563 000532641 000558890 D|034477854 098150814 +000000563 000544471 000575836 D|058383711 009447656 +000000563 000555291 000604588 D|049307897 095067675 +000000563 000569348 000622889 D|041106538 025345253 +000000563 000584879 000631596 D|004552788 016807488 +000000563 000599092 000643419 D|068211497 019391285 +000000563 000615111 000690983 D|086891577 055394116 +000000563 000654896 000718614 D|027778551 053845691 +000000563 000693872 000793870 D|003934819 006394251 +000000563 000695374 000804123 D|084013212 080285955 +000000563 000724368 000810643 D|092981722 048714761 +000000563 000732947 000815595 D|082673886 037023929 +000000563 000761819 000826727 D|011368203 042397819 +000000563 000792452 000833339 D|038267476 018074910 +000000563 000799307 000866501 D|000754102 026121615 +000000563 000799546 000866543 D|002413969 013895221 +000000563 000811540 000893268 D|054419670 058289088 +000000563 000858806 000905644 D|017940852 049329394 +000000563 000889590 000910491 D|043022451 021950787 +000000563 000917068 000923264 D|030874528 092286919 +000000563 000932181 000934985 D|093556530 016427753 +000000563 000958247 000971852 D|062854640 086253712 +000000563 000960886 000975193 D|031593993 029492331 +000000563 000962692 000976881 D|001937927 028889432 +000000564 000008125 000012717 D|074658692 022930835 +000000564 000014948 000022564 D|009511503 051956915 +000000564 000019586 000046814 D|044553992 088572787 +000000564 000034323 000078440 D|039131708 070929654 +000000564 000039473 000099966 D|084155981 063340485 +000000564 000051456 000181133 D|072707228 057512508 +000000564 000060384 000229314 D|047730479 096852881 +000000564 000073276 000233284 D|000235168 068461775 +000000564 000144556 000242153 D|071049601 032524760 +000000564 000145205 000250973 D|054345958 084945181 +000000564 000155905 000271383 D|040306187 055768916 +000000564 000178372 000276202 D|093834360 048600984 +000000564 000202557 000316370 D|010907776 032047469 +000000564 000226871 000321789 D|039646728 026522189 +000000564 000235441 000347696 D|002420420 058353560 +000000564 000275998 000362265 D|058109882 093669496 +000000564 000277333 000379942 D|039829551 043907278 +000000564 000321016 000386514 D|098118852 059544007 +000000564 000380445 000428832 D|026231134 070566055 +000000564 000382940 000433344 D|024585655 058720804 +000000564 000408828 000438301 D|081191836 043301682 +000000564 000415446 000512519 D|016418626 031614598 +000000564 000437948 000518896 D|081413017 070198491 +000000564 000447294 000528070 D|078618996 098134552 +000000564 000453704 000536677 D|030876520 035972568 +000000564 000461558 000561254 D|025433946 003514479 +000000564 000468661 000567580 D|017900776 074208290 +000000564 000489707 000597109 D|019486414 045978210 +000000564 000496376 000601753 D|031583341 044285299 +000000564 000497577 000604574 D|025185314 085057046 +000000564 000580068 000615203 D|082762256 075264974 +000000564 000588639 000624920 D|029858118 077353067 +000000564 000596487 000630148 D|086906181 018173375 +000000564 000622011 000632599 D|036354963 050219298 +000000564 000667519 000685941 D|081939783 094926235 +000000564 000675428 000714102 D|090035721 080197489 +000000564 000676008 000714363 D|064501064 073427441 +000000564 000716404 000725503 D|052621867 058218517 +000000564 000721118 000778088 D|006996083 017119748 +000000564 000726322 000785823 D|089468465 066782753 +000000564 000727822 000805452 D|098571379 049006008 +000000564 000754972 000825827 D|014235235 029047190 +000000564 000811031 000881215 D|065421829 039595751 +000000564 000818942 000881470 D|054342027 099641252 +000000564 000832719 000894459 D|089561006 016150225 +000000564 000884325 000954779 D|066741664 000034664 +000000564 000917516 000967426 D|058613909 002382940 +000000564 000919833 000973085 D|027399467 097637844 +000000564 000962981 000992350 D|046347940 060575986 +000000564 000967806 000994677 D|062290328 086832347 +000000565 000011154 000033083 D|061551058 084302722 +000000565 000041367 000037429 D|044221849 005097160 +000000565 000052888 000052307 D|037438778 031570157 +000000565 000056834 000066404 D|059096753 020432254 +000000565 000073500 000086176 D|036337529 053362925 +000000565 000097179 000086589 D|051056704 060130030 +000000565 000102420 000121154 D|033638934 097170449 +000000565 000148348 000131102 D|015867862 035171855 +000000565 000164371 000139159 D|061776020 009752561 +000000565 000200071 000195819 D|095258231 090943589 +000000565 000213493 000202169 D|053807117 047771881 +000000565 000214824 000205636 D|059938883 060079144 +000000565 000250601 000208931 D|086019830 081701819 +000000565 000260690 000218872 D|045678087 054699951 +000000565 000261519 000222414 D|084949495 027651363 +000000565 000277481 000243705 D|075786143 015113362 +000000565 000294820 000255808 D|046343728 057940036 +000000565 000297370 000297326 D|090956802 041104663 +000000565 000332319 000326450 D|096810997 054467354 +000000565 000334520 000356447 D|041355850 004265265 +000000565 000357990 000423962 D|098505320 000690684 +000000565 000361749 000435144 D|072265723 035245060 +000000565 000379562 000466987 D|005554954 017380324 +000000565 000390094 000468163 D|095722206 074913647 +000000565 000551946 000480391 D|020505168 024195041 +000000565 000558770 000486130 D|011808730 013403415 +000000565 000563346 000495203 D|000722918 077814469 +000000565 000580679 000506419 D|091612473 027197534 +000000565 000630541 000509312 D|091743803 047382415 +000000565 000649700 000519049 D|080124649 046390483 +000000565 000653965 000524213 D|063973317 011615635 +000000565 000658255 000542486 D|069485167 093797912 +000000565 000679471 000598694 D|010201018 038902210 +000000565 000698048 000635490 D|074987027 061438065 +000000565 000703886 000640258 D|005390851 067756729 +000000565 000741365 000668002 D|087466803 080007117 +000000565 000785731 000677887 D|088002265 033788300 +000000565 000806774 000686099 D|012616935 058202256 +000000565 000842868 000696574 D|035468981 061639049 +000000565 000862834 000702125 D|055516841 084960509 +000000565 000889776 000711384 D|097467517 062020850 +000000565 000896164 000768666 D|033939902 047253788 +000000565 000897346 000785458 D|039831432 080384751 +000000565 000900620 000810917 D|010400633 001271782 +000000565 000902084 000821338 D|072363357 021761242 +000000565 000903458 000824138 D|008871815 045507759 +000000565 000923377 000828024 D|092125442 001805761 +000000565 000924667 000846726 D|073227221 018867115 +000000565 000957357 000863260 D|023584722 037828150 +000000565 000972121 000932382 D|068408250 019635030 +000000566 000023444 000028813 D|053970433 086465106 +000000566 000041813 000038425 D|035519358 053064139 +000000566 000070412 000059127 D|094549747 049163689 +000000566 000078591 000092234 D|010995607 080684243 +000000566 000099866 000095919 D|010423311 023574264 +000000566 000113981 000101664 D|068266151 072371391 +000000566 000114336 000124952 D|031640135 068663834 +000000566 000140917 000142712 D|055433415 040421182 +000000566 000145361 000150367 D|058122651 065859784 +000000566 000187536 000156945 D|009212490 085443823 +000000566 000221371 000160609 D|085940406 088287650 +000000566 000224370 000178828 D|064714462 059595942 +000000566 000288335 000190210 D|020157474 067429159 +000000566 000346173 000215312 D|093944795 067888494 +000000566 000384774 000217217 D|077747572 030753805 +000000566 000405696 000228920 D|056019383 081374234 +000000566 000462319 000262133 D|008383585 051364374 +000000566 000464953 000270171 D|039772773 040166616 +000000566 000487809 000304436 D|002151286 098925193 +000000566 000536762 000311931 D|035768131 017813279 +000000566 000567743 000360596 D|053631709 097851876 +000000566 000591489 000374684 D|003958399 030605315 +000000566 000618232 000384500 D|019150848 075758786 +000000566 000624106 000388827 D|052420410 036888889 +000000566 000660983 000409914 D|050820079 056971396 +000000566 000681154 000473408 D|009761216 052930051 +000000566 000684079 000489966 D|053163146 088056184 +000000566 000698817 000491487 D|021823851 098248154 +000000566 000701766 000560453 D|015959960 007800361 +000000566 000730067 000593555 D|070380203 056897810 +000000566 000736707 000603609 D|024135128 007545686 +000000566 000747780 000612206 D|057118219 077607027 +000000566 000780027 000631408 D|062270348 014670816 +000000566 000791779 000634865 D|076457291 031121553 +000000566 000811481 000661209 D|083103541 054243043 +000000566 000831190 000679931 D|012721755 006585929 +000000566 000871468 000681455 D|085188747 030509494 +000000566 000902942 000687512 D|009569816 075966803 +000000566 000910292 000711669 D|060280485 019879515 +000000566 000920332 000735355 D|010346741 029243352 +000000566 000937590 000742691 D|037510078 019454951 +000000566 000937754 000758806 D|092881188 020653711 +000000566 000949287 000817157 D|057726849 032574440 +000000566 000951533 000827794 D|027134635 067319855 +000000566 000959856 000890009 D|090342008 021296893 +000000566 000968128 000897898 D|043011072 027011963 +000000566 000975519 000973505 D|084858816 072606015 +000000566 000981039 000977607 D|056834157 007161677 +000000566 000993535 000984632 D|026113579 093438685 +000000566 000997315 000996751 D|052535187 013440435 +000000567 000000308 000022882 D|038255329 052015854 +000000567 000014000 000026122 D|040492329 027906554 +000000567 000066168 000031025 D|059792616 004374952 +000000567 000094330 000041947 D|028118831 057314829 +000000567 000095115 000043286 D|097284701 040898576 +000000567 000135290 000072903 D|034740682 008925111 +000000567 000135568 000133904 D|044722307 076630424 +000000567 000155051 000179728 D|045146948 005437055 +000000567 000218090 000213441 D|041124278 081986082 +000000567 000231478 000226377 D|015901264 007028402 +000000567 000232777 000226512 D|090407221 046850630 +000000567 000233479 000239378 D|012629384 030998373 +000000567 000235844 000251139 D|040617194 062963273 +000000567 000239205 000269258 D|056803591 081058216 +000000567 000251454 000324690 D|090391687 075261796 +000000567 000251723 000326590 D|088361243 019691378 +000000567 000266255 000337623 D|061709444 091973925 +000000567 000290796 000343539 D|051636108 005255902 +000000567 000299714 000345364 D|072199434 066009439 +000000567 000353905 000350677 D|077281863 005854191 +000000567 000378313 000352394 D|081647367 088114831 +000000567 000394703 000393286 D|011301610 039370586 +000000567 000413582 000402707 D|038275950 029096666 +000000567 000445084 000473476 D|036324267 062549945 +000000567 000470714 000473883 D|019372978 005570030 +000000567 000476041 000521737 D|028601106 095007618 +000000567 000506466 000550755 D|018385900 021968659 +000000567 000522202 000558226 D|048544069 055544741 +000000567 000597309 000561650 D|071009223 024563221 +000000567 000599941 000582425 D|032858557 069825615 +000000567 000610363 000586680 D|096351251 082120448 +000000567 000611220 000621539 D|096496127 070016794 +000000567 000616487 000655149 D|067245657 024670211 +000000567 000618755 000659744 D|020584294 045395262 +000000567 000627140 000687714 D|075871289 083622824 +000000567 000649213 000704659 D|027224733 033842873 +000000567 000674375 000719044 D|041087918 040966306 +000000567 000705367 000729218 D|064705690 055623190 +000000567 000750667 000736616 D|018177106 087636688 +000000567 000846521 000738978 D|039531155 009768206 +000000567 000868931 000752937 D|050837091 066425487 +000000567 000894612 000794652 D|025557756 075404841 +000000567 000937698 000848031 D|074864476 016404028 +000000567 000941064 000849052 D|034822901 030895822 +000000567 000944448 000883113 D|049963190 069739481 +000000567 000961040 000895167 D|046255571 034968208 +000000567 000970244 000905233 D|009204889 063132549 +000000567 000987796 000913061 D|003095073 007061455 +000000567 000988237 000940999 D|030650518 054727444 +000000567 000991549 000966771 D|041598261 089810004 +000000568 000002015 000003545 D|082818088 035279256 +000000568 000010643 000012652 D|017968992 052676281 +000000568 000014833 000023032 D|061325501 030070494 +000000568 000032765 000043964 D|097801823 013401819 +000000568 000050611 000060383 D|013180732 080298438 +000000568 000055840 000072496 D|094422085 019285527 +000000568 000057032 000076375 D|063703911 073004055 +000000568 000075667 000080858 D|017046743 028962727 +000000568 000101719 000088873 D|081744058 006751606 +000000568 000106916 000094639 D|003728877 074604880 +000000568 000111843 000112490 D|043023389 011054167 +000000568 000114128 000129189 D|026962349 010020618 +000000568 000125451 000142886 D|070739377 066903117 +000000568 000170304 000184325 D|037730049 089751528 +000000568 000217873 000220709 D|049576182 088752751 +000000568 000232627 000234759 D|078904145 055075210 +000000568 000235860 000248186 D|090287778 047197021 +000000568 000240453 000257859 D|073492311 097034051 +000000568 000243444 000271655 D|050988385 010019568 +000000568 000296556 000279305 D|045634416 046353559 +000000568 000300955 000299422 D|072779472 063490503 +000000568 000309391 000304848 D|097154634 017670295 +000000568 000372865 000378489 D|050526687 079718941 +000000568 000435974 000407205 D|050703204 016624206 +000000568 000441860 000424113 D|007154584 077350823 +000000568 000485801 000434415 D|081745508 094808010 +000000568 000499131 000458048 D|099944291 007978078 +000000568 000521576 000477398 D|013776128 010410390 +000000568 000527001 000486175 D|083669182 071172937 +000000568 000555137 000488236 D|089039886 042505188 +000000568 000594101 000531859 D|027271782 083279825 +000000568 000601343 000563207 D|056815116 071932005 +000000568 000615168 000574355 D|007017785 020190349 +000000568 000620134 000574699 D|032047557 080422618 +000000568 000673829 000578796 D|056007276 033900567 +000000568 000691368 000592127 D|050634695 075060730 +000000568 000796157 000655493 D|065866830 001863168 +000000568 000798771 000671558 D|028962702 080432713 +000000568 000841515 000675323 D|026674667 057185732 +000000568 000845919 000693830 D|012396072 004038514 +000000568 000848315 000714617 D|074330978 086675723 +000000568 000871341 000739748 D|015314856 031877128 +000000568 000877519 000768805 D|081556172 041635282 +000000568 000901300 000778090 D|000456100 027979785 +000000568 000921364 000800253 D|008200757 033317268 +000000568 000956077 000864630 D|011823725 038863274 +000000568 000958646 000867505 D|015439145 042959454 +000000568 000958828 000934645 D|072962436 045850391 +000000568 000965566 000964161 D|047333310 053374278 +000000568 000968573 000984677 D|083095622 096467934 +000000569 000016227 000023771 D|094913564 069736300 +000000569 000035667 000033206 D|070396007 015783143 +000000569 000065121 000037475 D|023124233 037209749 +000000569 000065485 000044964 D|032859068 007584933 +000000569 000065535 000065455 D|071422772 058933771 +000000569 000074686 000078112 D|079977713 061979621 +000000569 000087289 000138798 D|033959977 037758039 +000000569 000173198 000147357 D|068872948 092220041 +000000569 000194485 000160476 D|053797727 095816184 +000000569 000199052 000218697 D|042228775 009907099 +000000569 000224502 000254557 D|056840104 019064788 +000000569 000231519 000285622 D|096731716 043198383 +000000569 000254731 000290273 D|057022837 067245122 +000000569 000257456 000335671 D|094551597 000612557 +000000569 000265367 000383017 D|071934301 006169619 +000000569 000272334 000384238 D|091378896 058403116 +000000569 000294899 000404672 D|083794696 043475669 +000000569 000351000 000466936 D|002616263 045287822 +000000569 000398884 000469153 D|017206506 047672301 +000000569 000403098 000471974 D|072445797 009796309 +000000569 000403537 000486237 D|047595795 063112019 +000000569 000430522 000547443 D|023581925 068608047 +000000569 000432533 000559027 D|047659179 009082378 +000000569 000436904 000563115 D|021649700 005188790 +000000569 000439319 000569868 D|078426741 080688183 +000000569 000467778 000577768 D|050422868 035134904 +000000569 000474398 000619306 D|000131690 090372147 +000000569 000483192 000621740 D|031959182 076778106 +000000569 000509950 000639992 D|092147619 019218100 +000000569 000533631 000643573 D|012617549 066512154 +000000569 000555642 000653356 D|008059989 093482299 +000000569 000579262 000660110 D|009541370 066455667 +000000569 000587127 000662105 D|046835297 047399861 +000000569 000605748 000696465 D|042071717 097176557 +000000569 000607700 000710813 D|084935708 068383515 +000000569 000629532 000755997 D|018539827 026516045 +000000569 000653097 000768123 D|014789359 087502118 +000000569 000658859 000784078 D|087412958 008770634 +000000569 000659484 000810557 D|059442317 031345999 +000000569 000694296 000871211 D|097419486 078774647 +000000569 000742354 000884925 D|024268411 031953504 +000000569 000757880 000889355 D|047236743 068957804 +000000569 000769795 000903930 D|053215436 060749010 +000000569 000774108 000911521 D|020710398 098669973 +000000569 000794850 000928308 D|055211287 035863042 +000000569 000892481 000944450 D|043250563 012944677 +000000569 000893737 000957277 D|059723246 039386859 +000000569 000927642 000973320 D|070006210 017558686 +000000569 000985569 000981364 D|013277548 076170324 +000000569 000986432 000992209 D|069455427 068801982 +000000570 000025048 000007892 D|045987440 036923019 +000000570 000030817 000027110 D|027583520 076860747 +000000570 000031213 000087620 D|049316591 046938033 +000000570 000032459 000088252 D|063464555 041340665 +000000570 000035320 000092881 D|023163452 024032812 +000000570 000038194 000109152 D|018174755 042334410 +000000570 000077186 000147632 D|093924965 073024531 +000000570 000182028 000156151 D|017078907 007523210 +000000570 000186452 000178085 D|086886404 014541818 +000000570 000188055 000178772 D|011868095 070474149 +000000570 000194695 000240582 D|047601822 025210545 +000000570 000203151 000276715 D|080130863 052516685 +000000570 000238086 000295876 D|055019016 031815023 +000000570 000249926 000344795 D|034695905 017423081 +000000570 000251310 000355628 D|005892622 006788484 +000000570 000255023 000421433 D|047883758 086774410 +000000570 000256868 000435993 D|052694647 006219974 +000000570 000294993 000440322 D|019918762 079591542 +000000570 000303459 000455212 D|080623685 034680684 +000000570 000309932 000456402 D|023508110 063325295 +000000570 000392724 000504759 D|040032180 035420110 +000000570 000398175 000507423 D|012817790 095718886 +000000570 000511709 000544610 D|099338443 051448011 +000000570 000512380 000559697 D|088101936 006845903 +000000570 000519994 000565486 D|034424598 095813940 +000000570 000522303 000578825 D|009319990 001057375 +000000570 000566276 000581570 D|054615263 085387913 +000000570 000597195 000586610 D|077579758 091096809 +000000570 000603831 000588800 D|030715659 098997354 +000000570 000616501 000645731 D|099309205 066911871 +000000570 000631863 000657936 D|056520235 004797022 +000000570 000634712 000668063 D|033259199 092482631 +000000570 000643554 000673019 D|087790427 053935889 +000000570 000654845 000685167 D|076044525 071954391 +000000570 000664799 000689321 D|096776931 046633805 +000000570 000681680 000743289 D|074943923 097564013 +000000570 000709300 000749195 D|052034460 083533209 +000000570 000738196 000763652 D|022054333 078060458 +000000570 000742301 000769931 D|015454640 059134141 +000000570 000749873 000780523 D|087156814 017492536 +000000570 000754056 000782572 D|085341619 028450781 +000000570 000797962 000829907 D|010589550 004200170 +000000570 000798322 000853598 D|052289266 084686105 +000000570 000814529 000856069 D|046753054 032394994 +000000570 000862416 000856502 D|052731410 096207115 +000000570 000925150 000878243 D|051366067 002691926 +000000570 000945098 000938332 D|006045658 024857893 +000000570 000949502 000941245 D|003109306 091906362 +000000570 000957199 000950260 D|087806764 034184412 +000000570 000974157 000960242 D|049034263 039082467 +000000571 000003097 000005902 D|084674512 027174238 +000000571 000059579 000041487 D|064394160 095192011 +000000571 000063277 000058418 D|096497590 005065275 +000000571 000066826 000064895 D|050762995 069068825 +000000571 000073662 000072947 D|071578311 056154697 +000000571 000085769 000073540 D|008616246 058216989 +000000571 000108496 000102469 D|020470555 047003194 +000000571 000115631 000120769 D|024454301 004241575 +000000571 000123182 000130746 D|080623424 065873095 +000000571 000138036 000135881 D|053523554 044636600 +000000571 000151056 000137760 D|058430114 060201497 +000000571 000247794 000207009 D|019461637 028095237 +000000571 000260652 000231435 D|021223686 031996449 +000000571 000297356 000249013 D|078734414 050101519 +000000571 000310346 000251679 D|008353228 091286943 +000000571 000314284 000265203 D|001793010 075763241 +000000571 000319942 000267111 D|062655277 049693153 +000000571 000342708 000284095 D|035758653 016398413 +000000571 000393723 000288620 D|013171753 047699506 +000000571 000402779 000301514 D|007414027 005830460 +000000571 000416281 000313125 D|072884116 053183202 +000000571 000417323 000348563 D|080979458 039761668 +000000571 000439026 000376914 D|074881858 078231538 +000000571 000442400 000472797 D|091283248 092001014 +000000571 000453096 000482399 D|043560803 029311073 +000000571 000461888 000483802 D|076417830 054959318 +000000571 000483635 000491959 D|082514447 095675030 +000000571 000484492 000523033 D|013898344 063635745 +000000571 000494988 000523666 D|006373445 039143153 +000000571 000498130 000547819 D|017637039 006378751 +000000571 000505616 000548688 D|077981916 093054248 +000000571 000548782 000559494 D|041524828 031877493 +000000571 000569186 000561185 D|026542477 066093459 +000000571 000572597 000567576 D|027119358 068472619 +000000571 000612677 000595266 D|035062503 075819704 +000000571 000619589 000597416 D|013441472 096953020 +000000571 000642194 000597788 D|009854401 058798955 +000000571 000668648 000619014 D|098400094 003868046 +000000571 000671688 000619606 D|014914683 073463061 +000000571 000697749 000654968 D|004487679 032943096 +000000571 000726949 000687420 D|046965319 086227782 +000000571 000813537 000697792 D|079179034 042011864 +000000571 000813811 000743255 D|003584564 026099103 +000000571 000818610 000875563 D|054459421 088070890 +000000571 000867277 000880542 D|096241163 002025494 +000000571 000891726 000929214 D|089493486 059590685 +000000571 000912833 000950628 D|090089407 048705001 +000000571 000939495 000957894 D|089423615 052488841 +000000571 000944017 000966037 D|018035769 055156300 +000000571 000982462 000967394 D|036610448 052518456 +000000572 000022257 000014256 D|081564522 079613363 +000000572 000032345 000018406 D|076298562 077875714 +000000572 000054621 000026715 D|063845830 054029606 +000000572 000059329 000037507 D|096427484 081492382 +000000572 000070704 000045992 D|037498624 062914367 +000000572 000171974 000078554 D|026183622 048370380 +000000572 000182101 000093209 D|079283336 050069837 +000000572 000184683 000096802 D|005749159 028798464 +000000572 000199137 000105812 D|088633921 043745854 +000000572 000256050 000113078 D|069339641 021556348 +000000572 000257372 000124525 D|059294287 005271189 +000000572 000267953 000151361 D|090395318 074225695 +000000572 000279338 000179880 D|045871391 021787881 +000000572 000296848 000184977 D|075550873 055243464 +000000572 000307506 000191456 D|003731073 071787024 +000000572 000315646 000199280 D|010700271 081034998 +000000572 000337919 000302290 D|002426560 098397616 +000000572 000369816 000329476 D|014764840 065846666 +000000572 000390160 000341120 D|084319176 027869724 +000000572 000402128 000345757 D|092860395 002119444 +000000572 000424811 000363462 D|039735943 012857318 +000000572 000438151 000436805 D|007133207 024762764 +000000572 000505725 000448949 D|089208632 002670526 +000000572 000547884 000454796 D|034224485 075451138 +000000572 000579463 000500720 D|072522660 059278734 +000000572 000581831 000509700 D|093036404 061616164 +000000572 000588873 000544667 D|079393278 049064736 +000000572 000604074 000548588 D|028493319 048151538 +000000572 000620993 000575588 D|066280102 063841777 +000000572 000624339 000609977 D|030320798 058294316 +000000572 000636520 000636344 D|067685572 068362525 +000000572 000669498 000639498 D|056067673 059927588 +000000572 000672917 000656389 D|085677205 091499185 +000000572 000709722 000720118 D|019180684 072821111 +000000572 000714175 000721848 D|047612486 095767206 +000000572 000766703 000731001 D|042538122 060880014 +000000572 000788102 000740309 D|003086580 031006659 +000000572 000789947 000760605 D|070078654 053268296 +000000572 000792254 000766839 D|072239829 080853887 +000000572 000806558 000779377 D|007367679 046064191 +000000572 000828348 000852123 D|050241139 018407644 +000000572 000833161 000875306 D|034827246 096450634 +000000572 000841570 000876050 D|008726644 083683391 +000000572 000861612 000896340 D|082509119 015907328 +000000572 000874172 000902267 D|051689490 061881479 +000000572 000882428 000928549 D|041059273 073587758 +000000572 000958820 000943217 D|021341693 005776444 +000000572 000973355 000988181 D|053046187 035668761 +000000572 000979066 000993716 D|056142454 036160930 +000000572 000985478 000999296 D|086145297 038048353 +000000573 000005220 000001446 D|071351010 085216971 +000000573 000021991 000017582 D|063110464 059362657 +000000573 000026210 000039067 D|079990480 023490223 +000000573 000037036 000055250 D|075205938 053620897 +000000573 000039327 000081227 D|058753413 045400233 +000000573 000052523 000113327 D|018838111 090814683 +000000573 000052711 000119206 D|050243671 034539054 +000000573 000063988 000147783 D|079876019 001320124 +000000573 000079308 000160861 D|029980296 099603069 +000000573 000088456 000168790 D|011642785 001319352 +000000573 000089516 000183214 D|021217004 025941167 +000000573 000095509 000191876 D|040568631 075081995 +000000573 000105233 000201597 D|063686188 075372585 +000000573 000135370 000208278 D|023851376 076263514 +000000573 000154695 000217235 D|023022288 062651151 +000000573 000159174 000217600 D|053642060 052737973 +000000573 000208642 000242342 D|015697396 093619135 +000000573 000215984 000267595 D|028379583 064943579 +000000573 000220391 000288864 D|063816157 050592749 +000000573 000294318 000304679 D|051923517 044501172 +000000573 000294768 000319752 D|032161300 041677194 +000000573 000307523 000399125 D|042202849 096957479 +000000573 000339890 000410274 D|011847769 048602529 +000000573 000344036 000424107 D|079503604 033561256 +000000573 000362381 000436970 D|024893019 032969179 +000000573 000383853 000493028 D|023931207 078835133 +000000573 000392676 000526182 D|084813896 005084298 +000000573 000412508 000553374 D|048914903 069542677 +000000573 000474701 000568081 D|052391464 034223604 +000000573 000501745 000572626 D|054660888 028495025 +000000573 000513161 000590715 D|057615140 039197781 +000000573 000517544 000633880 D|042487839 076464144 +000000573 000521547 000639919 D|070883118 050955911 +000000573 000524353 000653244 D|057732946 020954034 +000000573 000545111 000663296 D|090902506 047248578 +000000573 000581462 000697621 D|024418795 016453132 +000000573 000600011 000701879 D|035836414 077794489 +000000573 000602286 000707030 D|072195091 010463289 +000000573 000634177 000711960 D|032912291 026094037 +000000573 000646476 000755507 D|007263521 011559267 +000000573 000660397 000756282 D|088808721 087340552 +000000573 000688446 000857886 D|024853289 003606103 +000000573 000719948 000858794 D|040014847 074037860 +000000573 000732109 000865804 D|057226541 024853754 +000000573 000739003 000866568 D|087856000 019022818 +000000573 000788142 000888892 D|061685471 013949417 +000000573 000922687 000960952 D|088840576 002138725 +000000573 000942846 000965666 D|063209821 073197493 +000000573 000963030 000981334 D|072855150 024825643 +000000573 000979413 000989996 D|055872783 058957638 +000000574 000016235 000010240 D|071405908 006535482 +000000574 000069492 000029134 D|081622101 014447047 +000000574 000089028 000047318 D|089057420 021584128 +000000574 000111138 000062165 D|024593626 080060127 +000000574 000123114 000085218 D|071376162 065504101 +000000574 000127241 000153365 D|050231805 069529064 +000000574 000140857 000162242 D|042168247 068333369 +000000574 000168389 000238394 D|041583866 060157777 +000000574 000211064 000243410 D|035220630 086015183 +000000574 000222989 000249153 D|091892342 034816255 +000000574 000227221 000264744 D|013560901 086923620 +000000574 000227475 000269288 D|046693853 085865209 +000000574 000228257 000274779 D|062081192 048124738 +000000574 000263714 000292369 D|048671379 080072669 +000000574 000282865 000292658 D|030298574 040956742 +000000574 000378034 000305513 D|034494005 016540137 +000000574 000401159 000308804 D|042893685 018381127 +000000574 000430033 000340522 D|042385154 034151576 +000000574 000471026 000407552 D|018527265 074487540 +000000574 000486531 000407571 D|015253866 032080118 +000000574 000491687 000417746 D|093716553 081155025 +000000574 000497147 000423478 D|006940204 055137695 +000000574 000506028 000447063 D|007267693 042205988 +000000574 000517014 000501703 D|096257120 070146000 +000000574 000548995 000517192 D|012116778 088919369 +000000574 000550677 000530412 D|058430437 033231004 +000000574 000560407 000548430 D|025788652 090969502 +000000574 000570267 000569037 D|024753805 052046860 +000000574 000574449 000578332 D|055933207 034101699 +000000574 000590298 000586733 D|036641733 090874717 +000000574 000622407 000592808 D|015376095 064374536 +000000574 000650689 000593429 D|080720562 032153149 +000000574 000718862 000645189 D|013113611 000227647 +000000574 000722299 000650274 D|060299842 074238781 +000000574 000740914 000690030 D|013342744 095509402 +000000574 000741034 000693904 D|089535041 030109858 +000000574 000749457 000694207 D|058755111 029689323 +000000574 000778960 000735927 D|003747603 027170086 +000000574 000850238 000788476 D|055261499 091074178 +000000574 000871672 000841623 D|068459412 077777664 +000000574 000878872 000844067 D|087347424 070914765 +000000574 000880502 000848395 D|049032563 091031825 +000000574 000916655 000859438 D|017447251 038076465 +000000574 000917886 000862813 D|098887926 041798124 +000000574 000923885 000868441 D|006527445 035518579 +000000574 000934686 000888424 D|073809533 080164104 +000000574 000935437 000894185 D|026707925 011696474 +000000574 000942819 000918168 D|075723739 004613741 +000000574 000953907 000924954 D|004123999 037237737 +000000574 000954480 000937304 D|091099830 027879422 +000000575 000017528 000014704 D|080958893 033756495 +000000575 000048334 000027082 D|059313180 038169340 +000000575 000058344 000042459 D|066810973 027605266 +000000575 000111683 000048172 D|025735211 095388382 +000000575 000112330 000061094 D|013114444 076964370 +000000575 000125743 000082118 D|018692026 042822487 +000000575 000137812 000141424 D|070759040 024241531 +000000575 000185630 000145261 D|046685632 019580338 +000000575 000215370 000147539 D|043500198 034049546 +000000575 000221823 000200092 D|096074319 077843228 +000000575 000236219 000201755 D|011671722 000002182 +000000575 000285112 000202973 D|024434197 032274654 +000000575 000303666 000205295 D|063424178 085851571 +000000575 000367900 000226333 D|072730191 048230457 +000000575 000381943 000242653 D|084749110 061640660 +000000575 000386058 000273840 D|007056111 083909766 +000000575 000405743 000304891 D|065468419 059606695 +000000575 000418693 000381706 D|071771786 092763777 +000000575 000437291 000437641 D|041836656 005040866 +000000575 000451974 000443269 D|079011141 009170793 +000000575 000453348 000477772 D|049244998 020428164 +000000575 000467980 000493022 D|081191350 001435161 +000000575 000470247 000502039 D|007006142 083874636 +000000575 000536205 000546980 D|004951361 075300915 +000000575 000546722 000547305 D|061578602 048203818 +000000575 000582174 000548671 D|002175260 043140641 +000000575 000588296 000577585 D|094805633 031436971 +000000575 000605225 000587867 D|016017559 079465020 +000000575 000628478 000626606 D|087382572 091911829 +000000575 000667663 000653411 D|034313240 080518529 +000000575 000674451 000660704 D|072829060 036642026 +000000575 000674701 000693377 D|016749627 023952203 +000000575 000687613 000730591 D|033720392 045552470 +000000575 000692909 000749910 D|093592341 084003806 +000000575 000695163 000756644 D|096522954 038471939 +000000575 000709710 000767773 D|029049823 027596803 +000000575 000724992 000782562 D|033291307 022116483 +000000575 000805104 000796994 D|040250380 092097364 +000000575 000812837 000840905 D|068752403 051008004 +000000575 000834150 000852086 D|016062219 052448055 +000000575 000846286 000856948 D|070943245 061930495 +000000575 000862574 000882278 D|020268863 032561399 +000000575 000878516 000886161 D|031956692 020941474 +000000575 000880228 000916166 D|035120004 086936245 +000000575 000882478 000973933 D|065955334 086780011 +000000575 000892839 000976166 D|041918479 006053655 +000000575 000908576 000976919 D|059804921 052957940 +000000575 000925630 000978742 D|005300905 021698301 +000000575 000964271 000999015 D|045211845 083931044 +000000575 000984291 000999385 D|020513688 087977602 +000000576 000038352 000007109 D|024237875 003768190 +000000576 000046108 000017932 D|056118115 093486417 +000000576 000092928 000092608 D|029168955 099614764 +000000576 000099404 000104397 D|026669437 057837290 +000000576 000125785 000128248 D|030437764 093379038 +000000576 000143657 000164864 D|080680040 086686887 +000000576 000145599 000165021 D|099760995 028143569 +000000576 000155356 000177882 D|052749301 028087247 +000000576 000195207 000200906 D|030250607 024267843 +000000576 000220659 000221248 D|086755080 080346301 +000000576 000243568 000223570 D|075586083 054726037 +000000576 000272246 000231100 D|055780987 075342823 +000000576 000344719 000247004 D|046573634 002694666 +000000576 000373593 000271441 D|017055710 005205529 +000000576 000380513 000365916 D|083027039 076724057 +000000576 000407459 000369521 D|006742107 043899166 +000000576 000414563 000378403 D|099961264 082378198 +000000576 000437450 000425145 D|039031432 020382595 +000000576 000454658 000443076 D|009505854 069210911 +000000576 000458850 000455598 D|050097085 069360174 +000000576 000468131 000472022 D|087281401 059437988 +000000576 000470977 000476381 D|091143026 063150114 +000000576 000494217 000506945 D|019455884 015099410 +000000576 000508742 000536821 D|053380274 030372488 +000000576 000514182 000539665 D|027908980 009050455 +000000576 000531277 000545138 D|095861527 060192872 +000000576 000535557 000549461 D|007728042 006010916 +000000576 000580868 000616053 D|013026960 026301886 +000000576 000583578 000618635 D|071860493 041148457 +000000576 000607596 000642903 D|037046126 031798964 +000000576 000609337 000672366 D|021397705 050410735 +000000576 000669352 000687515 D|051660435 039218031 +000000576 000673634 000710297 D|006257044 092503116 +000000576 000689666 000740247 D|059092703 063434882 +000000576 000704361 000746894 D|060484494 052572915 +000000576 000718820 000765030 D|043996451 078700854 +000000576 000725321 000806176 D|068640346 027132370 +000000576 000732083 000814914 D|054728656 011542526 +000000576 000735097 000829735 D|092730358 031844150 +000000576 000748587 000846399 D|048039855 049813513 +000000576 000755070 000846496 D|026375333 016759347 +000000576 000779886 000859689 D|089180391 095129172 +000000576 000815816 000863438 D|067296415 058898675 +000000576 000870219 000868934 D|094046659 079244764 +000000576 000881904 000881389 D|064231870 069018321 +000000576 000884683 000903940 D|050124483 084560511 +000000576 000899679 000927958 D|004268876 083345218 +000000576 000910289 000934446 D|099759635 011166022 +000000576 000933944 000955344 D|007388050 071853058 +000000576 000974284 000999904 D|017722492 002539982 +000000577 000035773 000013279 D|021281082 045854435 +000000577 000047756 000019268 D|017513816 046017995 +000000577 000068568 000059967 D|028963359 092478061 +000000577 000079225 000119125 D|030193053 054219827 +000000577 000096697 000149846 D|043768881 026211634 +000000577 000112944 000149848 D|023413833 070068061 +000000577 000165160 000150292 D|053650079 010120370 +000000577 000171144 000160748 D|012412545 024629811 +000000577 000173451 000186354 D|094728643 057084493 +000000577 000185455 000250117 D|016486889 005516487 +000000577 000194379 000270167 D|047144144 031172191 +000000577 000219007 000275842 D|017943203 019136113 +000000577 000235593 000287936 D|029657085 024600383 +000000577 000285586 000325805 D|000800576 008559684 +000000577 000292058 000333277 D|039320447 071696856 +000000577 000327143 000340443 D|098491305 087419571 +000000577 000340154 000342240 D|009776474 039007167 +000000577 000349113 000344088 D|032724538 011138741 +000000577 000362138 000354657 D|085819158 050681041 +000000577 000388308 000394638 D|081736120 006746141 +000000577 000411087 000402114 D|089674054 066798548 +000000577 000439192 000406334 D|018318457 040495040 +000000577 000480517 000415248 D|057374511 070197337 +000000577 000488824 000432171 D|081855344 051465515 +000000577 000491344 000451730 D|049489090 092693096 +000000577 000499481 000456318 D|026681433 075131272 +000000577 000511892 000471715 D|041351603 089271531 +000000577 000526914 000475134 D|052598191 004623968 +000000577 000527977 000480470 D|080532446 065599165 +000000577 000550907 000488958 D|077109063 019514145 +000000577 000569390 000503178 D|023870492 038258095 +000000577 000571926 000524274 D|000543659 011002043 +000000577 000657088 000572668 D|024368300 012662618 +000000577 000706333 000585492 D|075431955 006520465 +000000577 000708325 000608351 D|014010336 066625823 +000000577 000708912 000625272 D|075238411 020838894 +000000577 000718084 000637648 D|079980204 089973209 +000000577 000720458 000666151 D|015244754 023376380 +000000577 000720505 000698509 D|037702478 045249196 +000000577 000792401 000708144 D|016520650 048728278 +000000577 000816736 000718337 D|015431426 099481863 +000000577 000820494 000746579 D|057846167 095974926 +000000577 000828052 000781657 D|007061387 057298393 +000000577 000861809 000788961 D|017721523 081141637 +000000577 000888127 000821048 D|003579765 015013550 +000000577 000918013 000829460 D|074779754 078162298 +000000577 000959330 000841449 D|059466286 085789508 +000000577 000959648 000852314 D|070667928 049227024 +000000577 000986511 000905479 D|001859537 098639105 +000000577 000992209 000962938 D|005021366 083069919 +000000578 000012296 000023214 D|046608952 076372968 +000000578 000020773 000023431 D|023317269 036524196 +000000578 000038314 000033571 D|014482821 018938260 +000000578 000060236 000066105 D|034413084 056373643 +000000578 000079242 000077690 D|055020339 029223156 +000000578 000089615 000085043 D|087430454 089488810 +000000578 000122410 000091251 D|061765286 008067499 +000000578 000170138 000109249 D|027557935 079058283 +000000578 000173270 000140184 D|094112055 023216638 +000000578 000173823 000161684 D|001543942 080529627 +000000578 000187858 000180386 D|009023465 056404645 +000000578 000207616 000207386 D|084132443 012982991 +000000578 000210278 000247536 D|086189266 085213089 +000000578 000216066 000285600 D|088448212 034931263 +000000578 000224831 000288438 D|065442929 003698212 +000000578 000234852 000289510 D|008477887 088657434 +000000578 000244823 000321264 D|082792550 050881147 +000000578 000271435 000332278 D|096845860 000956260 +000000578 000289899 000347874 D|041306820 088821904 +000000578 000345243 000356136 D|017795844 011994604 +000000578 000346302 000406164 D|036817712 011753764 +000000578 000351278 000414810 D|066777842 040390951 +000000578 000375667 000500032 D|015948909 001828204 +000000578 000482352 000514994 D|028163598 038744522 +000000578 000512639 000615871 D|051892006 086036956 +000000578 000523103 000632344 D|090583316 074644279 +000000578 000529619 000642836 D|039422209 044589963 +000000578 000568807 000647108 D|002798293 012255917 +000000578 000607564 000708566 D|007176504 046324699 +000000578 000619718 000720903 D|083592179 001678379 +000000578 000627620 000721651 D|064166418 088137747 +000000578 000633166 000731417 D|075263028 055515274 +000000578 000634902 000741612 D|005823924 004661340 +000000578 000700821 000759812 D|095713171 051313200 +000000578 000721041 000759951 D|030395097 069726572 +000000578 000735721 000763291 D|054191138 079935086 +000000578 000759923 000780010 D|034582722 025467800 +000000578 000774065 000787821 D|018159848 015729577 +000000578 000799033 000806357 D|095499374 023366528 +000000578 000809091 000811301 D|092772466 005543811 +000000578 000833899 000811610 D|062267753 015384173 +000000578 000865154 000816792 D|053198569 088708834 +000000578 000905277 000820884 D|083682576 042743962 +000000578 000918846 000830835 D|011240548 026301790 +000000578 000938067 000858291 D|004795717 095849240 +000000578 000941133 000871299 D|072404281 028429801 +000000578 000946932 000965900 D|058979012 030701324 +000000578 000975748 000966324 D|007786181 095247347 +000000578 000977351 000991115 D|042611791 078482507 +000000578 000983553 000995685 D|077351961 004640360 +000000579 000042863 000033756 D|021303032 043026215 +000000579 000060449 000035804 D|092329654 087000405 +000000579 000061767 000046132 D|097255490 027728591 +000000579 000065169 000064308 D|071132026 051519779 +000000579 000071285 000092137 D|084886637 085313664 +000000579 000184533 000094894 D|056415419 012679748 +000000579 000188912 000128743 D|020183865 052372872 +000000579 000206124 000158940 D|065248469 015077644 +000000579 000208433 000190724 D|002532348 052936941 +000000579 000232326 000212362 D|039113896 062128582 +000000579 000240534 000223819 D|044918067 090000783 +000000579 000243088 000244450 D|072247262 000072285 +000000579 000270435 000271170 D|022910845 039296357 +000000579 000297567 000305880 D|095749522 091040121 +000000579 000378339 000311098 D|015125535 016384264 +000000579 000394992 000329722 D|056100649 040254648 +000000579 000432361 000347015 D|045213868 009523894 +000000579 000464926 000354407 D|086513360 041270033 +000000579 000465911 000387539 D|014118437 052334260 +000000579 000477510 000428241 D|092368298 081598439 +000000579 000506289 000434511 D|009243224 049491867 +000000579 000537578 000436581 D|014723909 088879801 +000000579 000544566 000439241 D|040230236 066878591 +000000579 000560425 000488587 D|075607786 069927372 +000000579 000577023 000503025 D|003931587 078253696 +000000579 000596764 000532854 D|035332436 013201810 +000000579 000682660 000537081 D|094614154 090679009 +000000579 000690780 000574949 D|022786956 054389938 +000000579 000700517 000582266 D|050764978 045018901 +000000579 000700950 000600866 D|095378038 027413214 +000000579 000727348 000612270 D|029523115 092769917 +000000579 000738809 000637662 D|061013022 064128914 +000000579 000765298 000640698 D|019700850 035977546 +000000579 000785335 000662150 D|054388704 042245854 +000000579 000790088 000664136 D|048869113 045846038 +000000579 000807435 000683806 D|070929634 059371090 +000000579 000822203 000690735 D|025727617 005124057 +000000579 000840524 000714636 D|095178797 081361577 +000000579 000842033 000715645 D|038267950 069991807 +000000579 000851241 000763815 D|009071292 018706335 +000000579 000858890 000791758 D|064293662 002052918 +000000579 000858960 000813462 D|033425753 007630581 +000000579 000867019 000838889 D|044371288 038553329 +000000579 000890035 000850292 D|029267969 066949836 +000000579 000898732 000854020 D|093993249 014975063 +000000579 000899173 000902382 D|000266863 013780006 +000000579 000907280 000917228 D|007415077 030116640 +000000579 000928228 000965649 D|049427043 044587987 +000000579 000968674 000985708 D|022326935 071674608 +000000579 000994210 000986925 D|098153916 077888333 +000000580 000037926 000002316 D|023121726 076629661 +000000580 000071065 000013345 D|021659678 051639848 +000000580 000086368 000076560 D|087141887 086992202 +000000580 000088886 000081820 D|056893407 057683907 +000000580 000091656 000086643 D|018331616 035346438 +000000580 000108445 000100005 D|095407567 064538228 +000000580 000127581 000120649 D|046964070 088553750 +000000580 000135052 000236894 D|084206729 094380090 +000000580 000147959 000247204 D|052727472 097207498 +000000580 000152018 000264809 D|029696403 031696590 +000000580 000163179 000288621 D|015961604 070140255 +000000580 000169549 000289866 D|086132896 033511267 +000000580 000261851 000311267 D|001690380 014085450 +000000580 000266100 000351373 D|069113713 068208186 +000000580 000376182 000362848 D|044224048 059024340 +000000580 000380454 000377718 D|007951226 039132501 +000000580 000380687 000378690 D|060805178 064842387 +000000580 000404014 000427657 D|037527902 017424954 +000000580 000404537 000428796 D|055388849 018530751 +000000580 000445395 000431591 D|054433025 076464165 +000000580 000452399 000447048 D|031714959 083616114 +000000580 000464978 000454593 D|028220036 024698495 +000000580 000480918 000457208 D|071718955 044582282 +000000580 000486717 000472301 D|091842822 032116486 +000000580 000514425 000505759 D|047133888 000102005 +000000580 000528123 000515486 D|036501320 032719220 +000000580 000557705 000525834 D|081820921 037740641 +000000580 000576730 000535716 D|068756055 017939992 +000000580 000630279 000553996 D|014538994 052729023 +000000580 000640691 000556769 D|052953456 093311761 +000000580 000648500 000565202 D|006729969 037071939 +000000580 000684837 000590236 D|099230352 004290974 +000000580 000696244 000593508 D|021877412 097615458 +000000580 000713938 000627662 D|030694768 019384109 +000000580 000732984 000637481 D|071186051 037248277 +000000580 000733254 000640322 D|097349256 004157849 +000000580 000755565 000645103 D|014425122 049482230 +000000580 000787212 000647936 D|057286591 018679902 +000000580 000830187 000648001 D|060419138 035067893 +000000580 000848912 000650171 D|043014164 059899320 +000000580 000920845 000754278 D|030603992 010850439 +000000580 000930428 000767636 D|052061391 044632002 +000000580 000931267 000809961 D|035033740 026835898 +000000580 000948142 000814977 D|055521596 017173748 +000000580 000954704 000845916 D|043379079 005587715 +000000580 000956091 000854223 D|084432855 016548756 +000000580 000960100 000858665 D|065412452 080788537 +000000580 000974557 000878040 D|022108257 067208478 +000000580 000987321 000957397 D|072774255 004057326 +000000580 000987364 000984029 D|076373879 018916500 +000000581 000005589 000012843 D|001470602 037063776 +000000581 000025064 000027557 D|006231138 091095354 +000000581 000064771 000059320 D|037473154 025690191 +000000581 000123942 000067640 D|020101440 054340012 +000000581 000134602 000076001 D|068836094 009529093 +000000581 000145164 000089119 D|016199081 068274195 +000000581 000160513 000116519 D|050427777 039379406 +000000581 000171002 000175983 D|067961556 075829554 +000000581 000172229 000213166 D|050888282 057045137 +000000581 000173962 000235996 D|058759265 031407189 +000000581 000189123 000282452 D|093087722 028844244 +000000581 000190585 000317369 D|061676587 064640706 +000000581 000249653 000318383 D|083997883 088707846 +000000581 000281097 000327165 D|079613114 050555349 +000000581 000290088 000342602 D|066523717 099314825 +000000581 000291842 000348056 D|051356430 010701355 +000000581 000345783 000373013 D|042503732 027391356 +000000581 000374250 000381507 D|006854879 004341619 +000000581 000393260 000454472 D|094371438 096036483 +000000581 000393860 000457513 D|063709837 064420580 +000000581 000394314 000458809 D|045093297 086189629 +000000581 000394682 000466445 D|093972982 086237054 +000000581 000403314 000487541 D|010613428 091943936 +000000581 000455310 000510738 D|032726708 085093634 +000000581 000490240 000512403 D|069121049 001378515 +000000581 000501467 000528329 D|043959810 036369998 +000000581 000516152 000539571 D|072812066 069603418 +000000581 000519927 000542304 D|031925948 042186778 +000000581 000530379 000581729 D|006549878 056981935 +000000581 000553859 000603535 D|092083535 073395487 +000000581 000585853 000616546 D|035881364 003458890 +000000581 000619465 000623155 D|044346539 086610649 +000000581 000639877 000647366 D|036166460 040931688 +000000581 000641525 000661955 D|047847947 053566533 +000000581 000653103 000673158 D|007360243 055995501 +000000581 000685331 000706139 D|007345445 054449634 +000000581 000687417 000709658 D|027595566 057267022 +000000581 000699110 000711469 D|031984877 035955096 +000000581 000785208 000742153 D|048178862 021804510 +000000581 000828570 000760219 D|007115056 070381585 +000000581 000867818 000762513 D|081341612 096734710 +000000581 000876232 000766341 D|010576816 037530094 +000000581 000888929 000802987 D|052754255 051078840 +000000581 000891092 000818632 D|081675345 041474425 +000000581 000928924 000833963 D|038532308 055666872 +000000581 000940110 000845385 D|078907136 005271724 +000000581 000982109 000892484 D|028887265 015502919 +000000581 000985933 000903190 D|075060491 022388359 +000000581 000988229 000967467 D|069511075 082930636 +000000581 000995335 000994924 D|020742822 080678830 +000000582 000001828 000041038 D|007762996 047364022 +000000582 000020577 000053639 D|076128594 044922368 +000000582 000023686 000064591 D|057335047 037684282 +000000582 000027690 000085784 D|013325995 063521997 +000000582 000056880 000097003 D|098952366 045879826 +000000582 000083113 000153001 D|087261279 002373816 +000000582 000109153 000199756 D|007798848 099727852 +000000582 000140138 000224321 D|043521446 055132999 +000000582 000188774 000232274 D|052458675 087324609 +000000582 000222915 000239994 D|058069602 090576991 +000000582 000235002 000249198 D|014790889 095116893 +000000582 000250342 000266693 D|001678985 004249983 +000000582 000267419 000319228 D|015179289 089739074 +000000582 000303475 000353244 D|049968620 081467869 +000000582 000316334 000373359 D|034136925 087137892 +000000582 000319737 000382286 D|072456137 007456860 +000000582 000336127 000399050 D|032823696 047873553 +000000582 000371716 000426414 D|079563330 089072427 +000000582 000380217 000426629 D|019749194 059939186 +000000582 000381391 000451227 D|048503769 049232404 +000000582 000394512 000481246 D|022480245 075648362 +000000582 000408956 000486978 D|069835762 070104146 +000000582 000450623 000492898 D|048991971 027108882 +000000582 000454772 000536838 D|061851494 029165588 +000000582 000466089 000545861 D|059581785 066513276 +000000582 000476159 000560401 D|086099928 073518756 +000000582 000506945 000591700 D|085334708 090428941 +000000582 000537279 000614165 D|094422511 076773822 +000000582 000556897 000625428 D|001949072 039425836 +000000582 000613851 000632051 D|085245856 069433559 +000000582 000626274 000637764 D|046842264 024205729 +000000582 000635388 000668581 D|089924254 003685416 +000000582 000681723 000674421 D|039163792 056068271 +000000582 000714981 000682540 D|017978590 092022531 +000000582 000716684 000714140 D|029529813 084107214 +000000582 000742027 000715128 D|098109212 000818869 +000000582 000760136 000721195 D|016149566 019197010 +000000582 000815298 000737629 D|020170874 093338151 +000000582 000833108 000743691 D|065005753 065083333 +000000582 000842678 000767989 D|054952614 058271263 +000000582 000857186 000780775 D|088900597 056879414 +000000582 000898733 000792976 D|061974212 035180762 +000000582 000900744 000798174 D|059217531 080560880 +000000582 000902522 000799381 D|008440328 089055462 +000000582 000910264 000859755 D|040372753 040823449 +000000582 000920824 000865510 D|035958390 016781637 +000000582 000928784 000914133 D|050168896 086416364 +000000582 000933424 000933960 D|089126409 097821644 +000000582 000937828 000942857 D|002356921 011595606 +000000582 000951208 000944346 D|056134930 062862886 +000000583 000017426 000023692 D|084909505 026776739 +000000583 000026408 000038588 D|074809581 090054039 +000000583 000044882 000051107 D|018146815 011247801 +000000583 000049508 000113216 D|046014161 042737483 +000000583 000052632 000130490 D|055573374 066614050 +000000583 000080714 000141555 D|063223153 054431285 +000000583 000094868 000156929 D|060626440 021341398 +000000583 000109900 000220846 D|003288734 058119275 +000000583 000135128 000223955 D|065290239 072211725 +000000583 000167885 000225458 D|067332267 056415451 +000000583 000196449 000275027 D|053187789 006300617 +000000583 000240815 000285454 D|046827551 054403971 +000000583 000272779 000289967 D|081877997 067966160 +000000583 000287976 000332351 D|014634458 080972764 +000000583 000322904 000338146 D|039667308 044427332 +000000583 000326243 000342085 D|080142795 040999367 +000000583 000366089 000355667 D|031967067 034971879 +000000583 000381395 000371394 D|054349668 058330866 +000000583 000396766 000391280 D|014756430 002455375 +000000583 000422451 000394811 D|046552225 013087414 +000000583 000446198 000405970 D|009796888 092462525 +000000583 000449262 000422147 D|044162116 002802432 +000000583 000452755 000432503 D|022936546 027203659 +000000583 000477410 000432548 D|003967435 085274842 +000000583 000481429 000438894 D|066390056 011086768 +000000583 000515437 000466920 D|055486029 033703341 +000000583 000517990 000469566 D|001617189 066517930 +000000583 000575383 000487663 D|040724009 069769700 +000000583 000606804 000503235 D|024068963 097526546 +000000583 000612681 000508833 D|059076527 085183419 +000000583 000643649 000527645 D|030164603 000273400 +000000583 000643672 000533999 D|046260541 019026620 +000000583 000652377 000540875 D|056052303 044381048 +000000583 000664189 000554873 D|066299088 037061519 +000000583 000683295 000561861 D|091932826 033261924 +000000583 000716237 000695660 D|028601948 085305945 +000000583 000752364 000696553 D|037730214 034468666 +000000583 000764087 000701625 D|088896355 025619828 +000000583 000766153 000722179 D|054205965 041844285 +000000583 000793824 000723559 D|024562680 008804619 +000000583 000799627 000751072 D|041920204 097787885 +000000583 000822837 000792766 D|018577976 044084240 +000000583 000824855 000796464 D|009160198 083601212 +000000583 000830587 000799334 D|017781067 060864608 +000000583 000853591 000833415 D|079431830 074146738 +000000583 000886765 000845751 D|047037040 063698757 +000000583 000964909 000854446 D|008640004 076589369 +000000583 000975100 000861786 D|029229803 029741996 +000000583 000980068 000902070 D|064799018 094919659 +000000583 000997251 000990138 D|036637863 022040220 +000000584 000001318 000023121 D|098978719 024834866 +000000584 000011441 000044126 D|082176938 062731099 +000000584 000102318 000067915 D|032245812 020278241 +000000584 000116910 000093836 D|047027009 068515055 +000000584 000171163 000094424 D|086260772 017873389 +000000584 000215241 000104457 D|082694810 097209591 +000000584 000223617 000126160 D|097714524 018097809 +000000584 000226369 000153475 D|082772486 063923562 +000000584 000227436 000170563 D|023105435 008534388 +000000584 000265246 000181230 D|031717392 032265145 +000000584 000297506 000194081 D|064714198 072662687 +000000584 000304559 000211489 D|049094553 001240376 +000000584 000305127 000245389 D|067506723 030236607 +000000584 000323613 000250071 D|079352075 028481699 +000000584 000332034 000261799 D|001778697 062684869 +000000584 000337429 000270121 D|097518957 087388318 +000000584 000380787 000276965 D|010655499 058926222 +000000584 000432189 000284665 D|022724923 002831815 +000000584 000435198 000285259 D|019227624 070673949 +000000584 000438730 000285334 D|046591380 009273373 +000000584 000458194 000299010 D|083380345 022291474 +000000584 000473118 000299014 D|024985502 086669229 +000000584 000492182 000308935 D|081811643 082442363 +000000584 000529225 000315351 D|061503835 013865117 +000000584 000544442 000339709 D|052260479 096902610 +000000584 000548238 000385026 D|013426197 013021677 +000000584 000571196 000408900 D|034926546 017064663 +000000584 000588752 000423122 D|064038909 092492728 +000000584 000611474 000480302 D|049313695 020032329 +000000584 000615990 000516747 D|089422563 033028522 +000000584 000627951 000529124 D|072924268 000698239 +000000584 000634607 000530952 D|036153396 069428648 +000000584 000654484 000538302 D|001420548 043967012 +000000584 000690896 000564903 D|066921315 063730279 +000000584 000712259 000566570 D|065806390 080822987 +000000584 000761348 000604833 D|000020077 011594231 +000000584 000775416 000635531 D|063669698 045922854 +000000584 000794988 000692263 D|083220516 072225861 +000000584 000807593 000782711 D|048778815 042226176 +000000584 000810160 000786186 D|070838237 007461547 +000000584 000819454 000797412 D|070081476 041111943 +000000584 000860925 000841480 D|093348749 012945963 +000000584 000864825 000849202 D|074664341 057733052 +000000584 000881522 000857589 D|059675616 062875061 +000000584 000890464 000861496 D|080975650 097458791 +000000584 000895715 000866561 D|062003836 057895753 +000000584 000898227 000889777 D|063911912 004170479 +000000584 000911429 000893954 D|033114172 065332075 +000000584 000939577 000894782 D|017387693 086687668 +000000584 000981038 000940938 D|097463862 051343480 +000000585 000002883 000045368 D|005572748 026234556 +000000585 000040002 000058462 D|098316069 024878553 +000000585 000041151 000067193 D|093868549 004759287 +000000585 000086364 000113329 D|075793879 049761470 +000000585 000096223 000139791 D|060470568 015087882 +000000585 000102626 000170138 D|087948399 035131108 +000000585 000109202 000196100 D|089468160 071174616 +000000585 000175583 000212458 D|074076492 050318250 +000000585 000179995 000218326 D|020895599 033494731 +000000585 000185018 000257840 D|053031882 098735384 +000000585 000210634 000266009 D|081008322 011064201 +000000585 000237802 000302041 D|017203844 050218469 +000000585 000245697 000311280 D|093421570 093703265 +000000585 000250190 000325528 D|034341109 086466141 +000000585 000257975 000328503 D|042883778 028591465 +000000585 000277676 000348742 D|038257388 050142414 +000000585 000298614 000417347 D|079181266 072304050 +000000585 000311995 000419752 D|073647040 093286585 +000000585 000338454 000439609 D|019235434 097937781 +000000585 000375337 000440657 D|037927692 013993516 +000000585 000386446 000450605 D|044721691 072514754 +000000585 000432734 000491583 D|023259267 054302444 +000000585 000465689 000500968 D|022776972 001206821 +000000585 000471320 000548665 D|027391233 064918360 +000000585 000496540 000566080 D|052319282 057132891 +000000585 000515860 000619873 D|020192590 060001577 +000000585 000518059 000632432 D|098708666 059124986 +000000585 000521332 000694315 D|054723728 018016787 +000000585 000523661 000696159 D|070536282 058055612 +000000585 000529486 000701644 D|087107380 098785729 +000000585 000544790 000758787 D|097074910 007444703 +000000585 000584521 000770540 D|089645891 051079394 +000000585 000595762 000781127 D|071335065 076316392 +000000585 000637922 000786334 D|019727277 056446367 +000000585 000638831 000803489 D|028160598 054253020 +000000585 000681670 000811158 D|084173442 072646169 +000000585 000698627 000844298 D|097199180 008048838 +000000585 000698868 000862841 D|038049995 096793922 +000000585 000698895 000877366 D|070108066 037572425 +000000585 000735596 000878407 D|079648005 098935483 +000000585 000739387 000905711 D|097447689 060298856 +000000585 000766171 000913943 D|017109447 066814442 +000000585 000781099 000929612 D|093903887 099967447 +000000585 000798518 000939179 D|087684741 086814530 +000000585 000804410 000944419 D|076269246 093575656 +000000585 000925266 000966749 D|014425159 060088328 +000000585 000931529 000969438 D|093091067 005355877 +000000585 000936096 000974017 D|088004042 082179682 +000000585 000960487 000976397 D|062460100 051240519 +000000585 000961968 000993144 D|072656885 062740750 +000000586 000014078 000039658 D|029180155 038093212 +000000586 000048825 000092765 D|069272844 005519722 +000000586 000088034 000098969 D|089556997 023425700 +000000586 000096015 000101744 D|023896265 050602194 +000000586 000096464 000116969 D|055547561 038184454 +000000586 000097528 000128175 D|077566873 004650276 +000000586 000140650 000192010 D|052367406 042161977 +000000586 000239406 000200952 D|087724270 048045983 +000000586 000267423 000227118 D|037817557 095053896 +000000586 000288400 000258976 D|096316774 049612738 +000000586 000289626 000291099 D|079867093 007631802 +000000586 000308737 000355676 D|006296316 083016390 +000000586 000323416 000366020 D|005190807 024642797 +000000586 000338689 000366360 D|059949392 090797076 +000000586 000354464 000404141 D|082865259 059957477 +000000586 000363201 000416575 D|054875979 071356841 +000000586 000364498 000418273 D|003002283 050589183 +000000586 000365366 000425964 D|088588358 021448161 +000000586 000378059 000450644 D|073409007 085460856 +000000586 000392441 000456077 D|038357184 050359670 +000000586 000430965 000460835 D|055308261 005372383 +000000586 000436439 000474688 D|028510744 071609014 +000000586 000443322 000515201 D|022683408 023833658 +000000586 000485348 000570209 D|038046887 063048293 +000000586 000543949 000613486 D|011976338 081602818 +000000586 000544092 000639621 D|071708728 025593564 +000000586 000549293 000701468 D|012297715 020146310 +000000586 000576770 000712407 D|029764597 007471940 +000000586 000604603 000725909 D|092107377 027606601 +000000586 000608788 000735545 D|049460516 012307916 +000000586 000614260 000749196 D|070347558 002794828 +000000586 000625814 000764429 D|046303012 021731599 +000000586 000629045 000772410 D|070606532 089007436 +000000586 000653281 000773679 D|090079351 046820373 +000000586 000657897 000781730 D|093307228 053809424 +000000586 000662638 000787398 D|015308471 033151333 +000000586 000750422 000787977 D|093447613 061401766 +000000586 000756592 000823264 D|072244374 036620178 +000000586 000771746 000835504 D|053004885 057061142 +000000586 000826453 000847179 D|098258106 020706847 +000000586 000832266 000854276 D|031293643 061636128 +000000586 000839020 000862398 D|082297926 067562997 +000000586 000846474 000865405 D|036245993 061171448 +000000586 000858562 000898533 D|006004974 004309240 +000000586 000865375 000901688 D|084949896 058370280 +000000586 000872581 000908048 D|019825436 089811758 +000000586 000883899 000917603 D|064279724 094735925 +000000586 000919527 000974723 D|085492479 058434819 +000000586 000930899 000984461 D|082398980 098501558 +000000586 000981313 000993374 D|053809215 069770763 +000000587 000048166 000066138 D|024970697 015735924 +000000587 000050516 000068263 D|011378354 003305705 +000000587 000052187 000103836 D|029026477 061992342 +000000587 000070438 000121918 D|019573679 037091607 +000000587 000070998 000148141 D|005078157 024668243 +000000587 000095289 000156299 D|066274345 050535822 +000000587 000095892 000167535 D|044112054 027936383 +000000587 000113918 000211068 D|019736930 048906737 +000000587 000119224 000240235 D|046137193 044474345 +000000587 000148733 000289169 D|070596686 081379225 +000000587 000163538 000296353 D|038015250 067208680 +000000587 000195528 000317692 D|011573371 077785876 +000000587 000247677 000345900 D|062901558 023708131 +000000587 000266037 000358475 D|026980231 073337035 +000000587 000266774 000360465 D|056592626 066886000 +000000587 000291569 000385226 D|008355403 011477685 +000000587 000295435 000399935 D|059569406 003402786 +000000587 000345387 000413861 D|035388688 016114799 +000000587 000354274 000420306 D|005937460 060053247 +000000587 000354876 000436795 D|048503392 025473026 +000000587 000384228 000439020 D|071502258 008119577 +000000587 000403142 000464777 D|027197796 025437823 +000000587 000405365 000478218 D|040723495 007522882 +000000587 000427401 000497919 D|004920720 031770497 +000000587 000432367 000526658 D|040636885 091708860 +000000587 000436762 000529893 D|050694161 028255013 +000000587 000449718 000535853 D|020745134 046609634 +000000587 000460409 000537654 D|065390182 028007006 +000000587 000493794 000600422 D|078373549 028985385 +000000587 000508048 000630165 D|003675080 034050127 +000000587 000514458 000640163 D|043925109 078027895 +000000587 000559240 000650716 D|061647379 037805874 +000000587 000568236 000654912 D|059440901 003971011 +000000587 000592933 000663419 D|054663553 042402658 +000000587 000651354 000666743 D|057460283 074184344 +000000587 000683341 000670503 D|067211681 020850641 +000000587 000760600 000735777 D|055998402 072766780 +000000587 000780474 000765347 D|064665612 055345738 +000000587 000787125 000775601 D|014080920 024353134 +000000587 000800714 000827500 D|084927428 013766777 +000000587 000801838 000841862 D|052992548 021446183 +000000587 000820142 000842591 D|076273346 095571208 +000000587 000821292 000849230 D|049517143 077155454 +000000587 000854813 000912807 D|060261029 040807221 +000000587 000943751 000916861 D|009086733 082268403 +000000587 000944737 000946117 D|041759261 011262997 +000000587 000961336 000954414 D|049541022 041731864 +000000587 000988353 000956463 D|043909241 038830322 +000000587 000988370 000956896 D|067705055 061254545 +000000587 000989435 000990866 D|028612118 068424628 +000000588 000052969 000004819 D|032398058 018435561 +000000588 000084694 000005250 D|004646880 081398997 +000000588 000092455 000055238 D|005011713 054206415 +000000588 000109944 000077061 D|008994275 007780517 +000000588 000132061 000077420 D|078617973 097272921 +000000588 000158602 000120468 D|097262884 067320328 +000000588 000161661 000130930 D|053223666 089919873 +000000588 000178357 000137378 D|005308550 081757598 +000000588 000211416 000149046 D|053883249 071441198 +000000588 000327750 000149384 D|029195967 038126444 +000000588 000362611 000157760 D|041315049 046222908 +000000588 000376803 000161323 D|092836200 033954990 +000000588 000389352 000229586 D|014671013 006846625 +000000588 000389977 000250532 D|086880688 073640061 +000000588 000411946 000251582 D|089521801 036041022 +000000588 000412383 000258148 D|013464471 078583080 +000000588 000430837 000262911 D|046545253 004692350 +000000588 000431539 000286269 D|007632152 084329154 +000000588 000437310 000308493 D|063384676 015039497 +000000588 000448082 000313486 D|009633387 027987928 +000000588 000483612 000320100 D|088514277 031186765 +000000588 000508925 000329740 D|040169342 036973486 +000000588 000534796 000337988 D|035180174 077165816 +000000588 000538041 000342295 D|093333323 048111879 +000000588 000585583 000408125 D|052937849 054123685 +000000588 000589094 000437113 D|044227763 051256273 +000000588 000604264 000494614 D|012177891 013011192 +000000588 000613321 000507151 D|027525395 016663784 +000000588 000614807 000559937 D|088478807 033779686 +000000588 000633054 000605703 D|047051827 028015694 +000000588 000640061 000616072 D|085731078 036217430 +000000588 000709179 000645676 D|091504772 000052684 +000000588 000729429 000663847 D|043269530 093924778 +000000588 000752150 000666066 D|073050931 028136677 +000000588 000772798 000676137 D|067158890 001504309 +000000588 000791208 000685687 D|048838859 013959436 +000000588 000803693 000710849 D|070167758 066391253 +000000588 000803845 000744159 D|035063341 022730735 +000000588 000806754 000758958 D|047495785 034634971 +000000588 000821723 000767357 D|051558683 079273119 +000000588 000827808 000785372 D|083165667 089409707 +000000588 000847994 000807412 D|010691169 089537977 +000000588 000866036 000870671 D|077685735 004863562 +000000588 000872516 000880174 D|064233450 084730556 +000000588 000872550 000896197 D|049002414 067301219 +000000588 000876423 000915421 D|008945293 012151839 +000000588 000930540 000928983 D|074412427 072395063 +000000588 000953423 000957428 D|009371325 024960161 +000000588 000976445 000960453 D|011304475 076797545 +000000588 000999351 000969546 D|073970821 009347984 +000000589 000007562 000007726 D|062479500 092883367 +000000589 000008033 000048824 D|017767495 025870756 +000000589 000035308 000056864 D|063345345 055005902 +000000589 000037269 000069912 D|073594412 081731858 +000000589 000059747 000082315 D|046429765 014701287 +000000589 000062383 000089124 D|099694277 027478075 +000000589 000064154 000106426 D|030085965 076928525 +000000589 000068978 000133782 D|011923986 028704092 +000000589 000075378 000137037 D|080078100 090142546 +000000589 000097469 000180190 D|007174322 048051925 +000000589 000151479 000201847 D|078231945 049752072 +000000589 000160681 000204512 D|020094997 058337077 +000000589 000198304 000221730 D|082122042 076234478 +000000589 000217169 000233206 D|024037932 053705311 +000000589 000217407 000237194 D|070041884 025613052 +000000589 000225126 000251952 D|074855985 006478280 +000000589 000231432 000257681 D|029699392 049939220 +000000589 000251287 000288500 D|047060048 093117276 +000000589 000262417 000298640 D|022188839 031343349 +000000589 000268657 000331705 D|034900256 074835085 +000000589 000282865 000378158 D|070941759 013062874 +000000589 000299974 000384616 D|093868899 085043702 +000000589 000354534 000387475 D|021139887 029447440 +000000589 000366739 000405485 D|036213439 064097601 +000000589 000400155 000406812 D|036888722 083585559 +000000589 000422695 000415334 D|074569122 086086597 +000000589 000423319 000443498 D|016668097 071617969 +000000589 000461750 000448335 D|003237494 020338634 +000000589 000476226 000467535 D|042248544 078901179 +000000589 000491361 000482502 D|098111819 016548047 +000000589 000530533 000559068 D|089026138 084063131 +000000589 000534743 000582952 D|022521146 089528720 +000000589 000545427 000591261 D|082119989 063120548 +000000589 000552859 000622166 D|020450765 023843936 +000000589 000636666 000633901 D|028709751 044060652 +000000589 000678498 000639439 D|001303163 041992341 +000000589 000706575 000641236 D|036921479 057015185 +000000589 000712686 000677083 D|024356492 031578069 +000000589 000729348 000691821 D|077000005 037551284 +000000589 000757480 000728561 D|028629414 020269465 +000000589 000784413 000815218 D|073663819 098768376 +000000589 000794113 000837855 D|097440716 060037506 +000000589 000796948 000842423 D|080196035 006852641 +000000589 000806417 000870245 D|059377367 003923454 +000000589 000836679 000949682 D|019051820 091952055 +000000589 000841169 000969497 D|035520553 005291485 +000000589 000842560 000970431 D|027430037 035657731 +000000589 000901356 000971356 D|031131071 039569295 +000000589 000934903 000980619 D|020894756 040669647 +000000589 000974277 000991051 D|090298748 097118937 +000000590 000011284 000055181 D|069412793 084624398 +000000590 000016979 000056313 D|046672918 042976544 +000000590 000036446 000070316 D|052679382 047481443 +000000590 000036736 000088739 D|053307365 027363685 +000000590 000093296 000122220 D|016472376 096612607 +000000590 000096176 000174799 D|024901444 052393609 +000000590 000140531 000190260 D|041931356 014429518 +000000590 000160881 000199736 D|008366651 020325471 +000000590 000188896 000220916 D|060966386 086606245 +000000590 000212817 000242457 D|087460019 043701252 +000000590 000227953 000267161 D|024267692 063259166 +000000590 000232470 000276849 D|007808793 000109252 +000000590 000254168 000283276 D|002896627 062827944 +000000590 000254775 000283419 D|000921928 040392045 +000000590 000290009 000286868 D|055201610 036504037 +000000590 000322900 000289347 D|034175085 039050036 +000000590 000326556 000296326 D|015235559 034647739 +000000590 000326603 000305109 D|077044325 070794219 +000000590 000372841 000324830 D|063014952 074944820 +000000590 000375671 000337222 D|030552331 061477655 +000000590 000402823 000400442 D|070464813 090422391 +000000590 000427960 000420094 D|040800767 087039651 +000000590 000448077 000433141 D|032271803 069415818 +000000590 000454431 000585908 D|081473725 012628319 +000000590 000457929 000599012 D|031038308 024993966 +000000590 000498350 000600981 D|041715031 027054472 +000000590 000519243 000603651 D|006128755 051262894 +000000590 000583255 000604583 D|067746596 021234917 +000000590 000586488 000604730 D|063375264 025763205 +000000590 000588110 000636231 D|092609533 001793738 +000000590 000590093 000638014 D|016933771 092979182 +000000590 000593346 000667672 D|031688669 085898854 +000000590 000614788 000671199 D|066557284 032540620 +000000590 000649219 000706135 D|014129348 081597137 +000000590 000662548 000738779 D|027869113 029104786 +000000590 000698126 000756321 D|062312570 082459772 +000000590 000722535 000766752 D|083453489 026514455 +000000590 000726366 000768964 D|072390274 096700205 +000000590 000747081 000771344 D|087827054 051639661 +000000590 000764279 000772965 D|018748024 036690621 +000000590 000777748 000777118 D|012595639 035119318 +000000590 000782281 000788295 D|030756133 007837099 +000000590 000819114 000806632 D|030621082 064152341 +000000590 000902235 000821694 D|023198426 025883116 +000000590 000909953 000883887 D|068957463 011432690 +000000590 000942571 000898375 D|098994109 039977681 +000000590 000972804 000924599 D|028470365 000126816 +000000590 000976344 000941535 D|007801107 045760646 +000000590 000988634 000961453 D|080252637 033387994 +000000590 000992939 000967674 D|016809399 078478884 +000000591 000033368 000004111 D|022144051 024574563 +000000591 000052491 000007028 D|048887172 094420976 +000000591 000054822 000014823 D|037801011 001432012 +000000591 000062189 000062705 D|010478888 084300441 +000000591 000085293 000066227 D|014503821 054024115 +000000591 000122078 000109835 D|080483862 070209413 +000000591 000145923 000129219 D|056782815 011906834 +000000591 000164586 000133662 D|070321115 031444792 +000000591 000172117 000143127 D|071422043 086397814 +000000591 000173087 000145672 D|065089656 067383099 +000000591 000205187 000169874 D|044293322 049397563 +000000591 000218596 000170974 D|087818759 004682576 +000000591 000223217 000179905 D|054128290 030986043 +000000591 000237905 000224495 D|063330312 051339497 +000000591 000237963 000266081 D|085579714 004086404 +000000591 000337556 000310091 D|060839675 064135431 +000000591 000343859 000311019 D|064902114 031235776 +000000591 000352010 000326626 D|060480492 098528903 +000000591 000361165 000338345 D|019690782 072892066 +000000591 000368733 000341359 D|051797824 057780422 +000000591 000370550 000366895 D|004850022 057729741 +000000591 000437158 000385890 D|001529906 080285587 +000000591 000445299 000401302 D|069175938 098432097 +000000591 000483602 000410361 D|011038273 020371618 +000000591 000491901 000430725 D|030933084 037717901 +000000591 000528552 000452374 D|052981610 032154944 +000000591 000546940 000516583 D|045337238 008974695 +000000591 000556881 000546614 D|008512123 013225026 +000000591 000604932 000552824 D|088360210 098178293 +000000591 000608765 000576324 D|043823334 007590607 +000000591 000668926 000576788 D|028976490 015987613 +000000591 000674204 000588776 D|088509281 087790555 +000000591 000691668 000595675 D|009315594 095839711 +000000591 000696882 000640983 D|082566150 024295168 +000000591 000745367 000655257 D|031223853 010437030 +000000591 000776637 000682082 D|093678030 006048700 +000000591 000799189 000748099 D|099705172 053167990 +000000591 000804089 000777565 D|024727521 016430016 +000000591 000804588 000823637 D|091198962 095424419 +000000591 000822727 000825504 D|007164928 097356877 +000000591 000837227 000837175 D|067903106 052184597 +000000591 000877589 000857297 D|082046598 073026247 +000000591 000877899 000881167 D|088747964 056748579 +000000591 000909946 000889365 D|067690654 089508487 +000000591 000919966 000910232 D|049600524 062178227 +000000591 000920087 000911553 D|000553462 051122678 +000000591 000930881 000938610 D|056993048 068251071 +000000591 000989482 000948803 D|095778151 056717536 +000000591 000996523 000968894 D|074741348 045654853 +000000591 000997265 000994078 D|056428849 008161265 +000000592 000001620 000067195 D|091867556 046292558 +000000592 000010604 000070564 D|015820335 049304261 +000000592 000049388 000124489 D|060648053 003404300 +000000592 000074566 000127965 D|065567992 091945809 +000000592 000102627 000128954 D|089626567 031616480 +000000592 000111961 000129130 D|075926298 096386238 +000000592 000144324 000130718 D|043225755 070051944 +000000592 000151917 000142273 D|081976033 000776677 +000000592 000173477 000146927 D|070226846 069639377 +000000592 000190040 000151809 D|045235663 008771115 +000000592 000191355 000192785 D|038296393 011007263 +000000592 000203023 000198582 D|019654002 020589612 +000000592 000218782 000250770 D|016005667 009387240 +000000592 000219012 000285453 D|019797825 026347929 +000000592 000219147 000286321 D|065473968 060292880 +000000592 000236066 000293261 D|071461705 058050336 +000000592 000240570 000298246 D|062086848 049069287 +000000592 000248802 000345073 D|024059928 096226019 +000000592 000257033 000361323 D|079067273 092969237 +000000592 000269468 000367858 D|073844478 086051648 +000000592 000283579 000481777 D|025465478 039155778 +000000592 000301590 000509948 D|075010471 065892350 +000000592 000355857 000522695 D|090778346 013875091 +000000592 000360011 000530471 D|079023508 057955027 +000000592 000383769 000535997 D|011771094 040871685 +000000592 000413852 000539778 D|052071546 074585329 +000000592 000419022 000550445 D|063109788 019247167 +000000592 000443312 000614160 D|080354653 070754023 +000000592 000465180 000620548 D|073836103 057838501 +000000592 000468775 000630608 D|046947134 038564565 +000000592 000471439 000643212 D|008631754 095102246 +000000592 000480673 000731845 D|017509015 098499049 +000000592 000488777 000732275 D|047089302 078325523 +000000592 000531960 000737025 D|093537785 035600714 +000000592 000600559 000747811 D|013607505 030908657 +000000592 000605626 000772785 D|037671365 000982661 +000000592 000648940 000775683 D|099342446 080163050 +000000592 000683919 000782512 D|040438536 010244843 +000000592 000689730 000783703 D|018991916 013113594 +000000592 000697590 000850289 D|015805556 010963342 +000000592 000730275 000857993 D|087961099 074141793 +000000592 000740125 000878010 D|073556889 020210397 +000000592 000777932 000886873 D|023535382 014370087 +000000592 000785662 000928758 D|049770102 094820918 +000000592 000803836 000933370 D|085619255 077910607 +000000592 000810552 000934355 D|013251961 028030334 +000000592 000839291 000941856 D|069608368 026028562 +000000592 000921047 000980838 D|067829522 036331167 +000000592 000937382 000990180 D|032186482 035044728 +000000592 000938595 000997654 D|034913449 013258399 +000000593 000003393 000051746 D|046352207 014115087 +000000593 000034405 000071953 D|040883984 057865346 +000000593 000042009 000092589 D|019016263 099360173 +000000593 000050651 000105486 D|060202777 073758673 +000000593 000058738 000120245 D|022027157 095085231 +000000593 000069140 000124088 D|030295781 063999546 +000000593 000071841 000133359 D|079093970 033417984 +000000593 000096181 000151187 D|069874779 030613451 +000000593 000142025 000172214 D|063580016 097184884 +000000593 000157451 000186040 D|040064839 012421075 +000000593 000162376 000227503 D|059178352 027806862 +000000593 000202712 000231369 D|087572584 021387982 +000000593 000206294 000260233 D|016452061 049266332 +000000593 000240533 000262978 D|095378517 009722470 +000000593 000241921 000273132 D|018630119 045504058 +000000593 000243491 000276864 D|066727124 004377908 +000000593 000264568 000290439 D|032575679 007408802 +000000593 000271142 000307895 D|005087281 034813101 +000000593 000272823 000308885 D|075046939 096365822 +000000593 000301946 000344782 D|022940320 032568647 +000000593 000352029 000374384 D|007948305 004490371 +000000593 000391552 000409482 D|030994420 092589855 +000000593 000393434 000472796 D|094702456 014324936 +000000593 000410321 000541261 D|024815051 085678654 +000000593 000466314 000564470 D|052035947 057274334 +000000593 000490098 000591347 D|025632793 041179407 +000000593 000499318 000633712 D|032820290 063011291 +000000593 000511509 000668390 D|078062853 047050198 +000000593 000540866 000670479 D|075687478 059565280 +000000593 000578862 000685180 D|018916533 046332855 +000000593 000619235 000699481 D|089647448 028343413 +000000593 000628054 000717078 D|010321583 088732801 +000000593 000635460 000726414 D|006338010 086646163 +000000593 000707616 000737259 D|062213628 099582902 +000000593 000754053 000737903 D|082005859 009215373 +000000593 000767979 000739859 D|017849468 068904182 +000000593 000808313 000749204 D|025402310 093732984 +000000593 000821608 000758138 D|022293162 087310117 +000000593 000829270 000761224 D|002921901 084682374 +000000593 000835386 000764011 D|068602009 060301915 +000000593 000849771 000813248 D|053529864 061653879 +000000593 000867507 000817331 D|069615718 029839008 +000000593 000878668 000818787 D|073395585 042684585 +000000593 000896441 000857027 D|068267284 014938362 +000000593 000899483 000897126 D|015770644 026700245 +000000593 000922458 000915761 D|090593043 028703134 +000000593 000926654 000918732 D|036665056 095972089 +000000593 000935519 000948696 D|015646928 018906853 +000000593 000942079 000987034 D|040404256 000665979 +000000593 000990686 000994153 D|022634323 005837867 +000000594 000035444 000010027 D|095153768 019939673 +000000594 000041286 000029330 D|051327194 027403845 +000000594 000092969 000034818 D|022514941 088531806 +000000594 000093912 000082309 D|084259996 066859258 +000000594 000106612 000104244 D|004164290 027125519 +000000594 000121572 000128427 D|048458549 012733318 +000000594 000122629 000142450 D|083318037 020520726 +000000594 000145202 000153267 D|009165650 096677628 +000000594 000147172 000156406 D|050972648 084858107 +000000594 000177889 000163955 D|003377364 050979396 +000000594 000188559 000203212 D|093001840 004850401 +000000594 000196173 000205365 D|017901928 046816739 +000000594 000199075 000207761 D|046053562 078618350 +000000594 000267989 000336570 D|083406438 033929827 +000000594 000290768 000352024 D|009940504 021938860 +000000594 000311107 000371060 D|019132324 038565826 +000000594 000317851 000394860 D|077379863 005072314 +000000594 000359460 000403500 D|019491202 091147565 +000000594 000362165 000404723 D|081375983 044896752 +000000594 000383646 000406916 D|043022159 074533051 +000000594 000438453 000408301 D|090440875 082248183 +000000594 000438481 000446782 D|071143286 062798565 +000000594 000467981 000447009 D|033556224 076023228 +000000594 000537322 000458464 D|059954419 033176157 +000000594 000562065 000493988 D|080791100 049257960 +000000594 000576902 000526986 D|059829492 004221280 +000000594 000580744 000535324 D|060759499 040488913 +000000594 000590716 000538292 D|018105879 092205953 +000000594 000592517 000541870 D|055677962 074431134 +000000594 000621243 000585051 D|096781065 074433069 +000000594 000640333 000636432 D|067294746 045104676 +000000594 000652463 000640695 D|020264884 085026183 +000000594 000688966 000669639 D|025038280 070915679 +000000594 000690681 000716768 D|003615982 063879459 +000000594 000704230 000730708 D|074092540 043487328 +000000594 000717706 000731332 D|080274247 019474023 +000000594 000724441 000803976 D|041895045 093500186 +000000594 000730228 000817392 D|011969469 054715006 +000000594 000752545 000836526 D|095614549 008626668 +000000594 000759871 000882447 D|095808242 022175775 +000000594 000798501 000896144 D|037443972 028329546 +000000594 000812690 000896775 D|041410095 057120866 +000000594 000822818 000914898 D|086716447 038209368 +000000594 000828076 000916598 D|091910956 091515750 +000000594 000900756 000926088 D|074306810 037545542 +000000594 000902548 000930481 D|042213597 099964000 +000000594 000908349 000967574 D|002699984 007258369 +000000594 000921512 000980707 D|003635879 096993287 +000000594 000938695 000980940 D|011076727 075152967 +000000594 000985774 000987696 D|061687598 096289289 +000000595 000005602 000012370 D|044562978 012054073 +000000595 000019600 000024433 D|075298763 026905091 +000000595 000034560 000104756 D|037344946 072211047 +000000595 000038376 000139140 D|076253860 034446896 +000000595 000042156 000143894 D|047788543 099888910 +000000595 000074516 000150571 D|087047979 008519490 +000000595 000101441 000152111 D|030168814 080632049 +000000595 000114469 000204512 D|073912982 033366836 +000000595 000120234 000222548 D|009661773 092423726 +000000595 000135235 000222645 D|035264497 017651442 +000000595 000138585 000245688 D|073750368 082633657 +000000595 000154923 000262618 D|083458680 055474289 +000000595 000158202 000273426 D|090321277 041634856 +000000595 000173865 000284097 D|076627673 031143247 +000000595 000218904 000312895 D|016666497 001146594 +000000595 000230122 000317013 D|049779878 078492784 +000000595 000248941 000318188 D|090732651 071157436 +000000595 000250495 000351042 D|049208220 037178530 +000000595 000253539 000369521 D|018169691 016130745 +000000595 000276355 000372641 D|030923552 095155212 +000000595 000317334 000386024 D|010706708 098340060 +000000595 000343287 000411471 D|018605861 012426534 +000000595 000349733 000416297 D|087484553 030883040 +000000595 000367899 000417184 D|063589479 051821258 +000000595 000443740 000446176 D|098907186 040254414 +000000595 000488307 000464129 D|007008400 011519675 +000000595 000501481 000467305 D|002812876 025818018 +000000595 000503299 000495033 D|016672450 029370667 +000000595 000509616 000516891 D|045293566 028923873 +000000595 000534624 000556787 D|081904703 028458568 +000000595 000536505 000582718 D|052095729 072697789 +000000595 000539248 000587549 D|091889322 025071116 +000000595 000553059 000590702 D|097030129 048131636 +000000595 000561100 000646738 D|092048955 045202608 +000000595 000607629 000679669 D|022023122 095931512 +000000595 000624042 000698062 D|020458797 091341537 +000000595 000624543 000699269 D|008193100 063820698 +000000595 000650254 000747997 D|054009051 008598366 +000000595 000693446 000750064 D|091461384 077290279 +000000595 000701406 000752310 D|078895545 072298845 +000000595 000790453 000797984 D|030680821 086117607 +000000595 000809131 000804789 D|070456362 069493173 +000000595 000815500 000813372 D|000429548 034195696 +000000595 000869166 000821577 D|038755399 081191360 +000000595 000870978 000829938 D|086486169 052841754 +000000595 000876130 000851458 D|092663713 055915384 +000000595 000920914 000859531 D|055262183 039057677 +000000595 000922828 000911569 D|072024338 008924272 +000000595 000952462 000941670 D|055107171 000293111 +000000595 000979781 000971575 D|008195845 091414470 +000000596 000032727 000020100 D|036400621 051938378 +000000596 000066699 000043188 D|031260649 010617774 +000000596 000095021 000066813 D|027187815 087886604 +000000596 000105789 000079525 D|064001565 065828164 +000000596 000120434 000082770 D|061331327 072366011 +000000596 000139151 000084777 D|095686615 035591604 +000000596 000148934 000088685 D|050709369 043006487 +000000596 000158604 000093338 D|071444358 091138114 +000000596 000179701 000143387 D|060329099 019758606 +000000596 000192116 000174433 D|075581899 006397161 +000000596 000202266 000198464 D|052843153 071742803 +000000596 000210055 000211331 D|079371969 055654790 +000000596 000216128 000211855 D|066534082 095917572 +000000596 000216362 000223637 D|054983091 029124278 +000000596 000231001 000226135 D|024504250 076310675 +000000596 000272450 000270999 D|087226618 024628635 +000000596 000273897 000275947 D|040772791 019135135 +000000596 000277330 000290862 D|021828386 069887817 +000000596 000294543 000292452 D|095500635 041321702 +000000596 000301554 000336028 D|076597006 030165155 +000000596 000303875 000352944 D|091859468 058004714 +000000596 000327944 000373328 D|011044655 083556739 +000000596 000330881 000382242 D|002450137 046896535 +000000596 000373405 000389932 D|037367328 077126429 +000000596 000385607 000391337 D|076934038 005408790 +000000596 000394408 000417253 D|016178748 009195982 +000000596 000402561 000438888 D|087942754 006585321 +000000596 000421965 000465212 D|062327547 072516613 +000000596 000440802 000487571 D|019067450 017749524 +000000596 000454225 000493087 D|051530161 035217883 +000000596 000482283 000529116 D|040956502 077058038 +000000596 000497298 000531914 D|061699552 026134946 +000000596 000499063 000536553 D|070933194 039929278 +000000596 000508343 000573361 D|038032106 050717291 +000000596 000534461 000606132 D|039334475 005784672 +000000596 000626075 000626783 D|063296452 079481052 +000000596 000634125 000638448 D|007580358 029166746 +000000596 000647957 000642292 D|081821622 073692526 +000000596 000661097 000660681 D|000554446 022801997 +000000596 000669960 000688337 D|094416227 040425160 +000000596 000684694 000708123 D|012436503 059430137 +000000596 000728449 000724439 D|095178228 085965004 +000000596 000730752 000735120 D|009663528 031786042 +000000596 000756739 000736732 D|055670516 086814222 +000000596 000804446 000771236 D|070236210 016571431 +000000596 000862704 000813240 D|087104104 099594385 +000000596 000865431 000817168 D|078568188 050987188 +000000596 000899751 000848207 D|000419971 059607809 +000000596 000916131 000854806 D|044373908 034841683 +000000596 000921464 000979363 D|061528878 024210556 +000000597 000021937 000017399 D|083863292 018488228 +000000597 000038498 000039384 D|014721330 099402779 +000000597 000063787 000046275 D|026879023 077753055 +000000597 000113294 000065709 D|081356661 005590354 +000000597 000115528 000068007 D|043209780 035328268 +000000597 000116538 000074452 D|008253873 003109487 +000000597 000125251 000088643 D|063538388 046143021 +000000597 000159933 000102314 D|058600884 034215825 +000000597 000173292 000106011 D|059262975 031577238 +000000597 000228792 000137295 D|057909349 002330281 +000000597 000231131 000137672 D|003860907 087015958 +000000597 000243043 000150088 D|038785622 057282155 +000000597 000266642 000160745 D|025367579 031786744 +000000597 000303452 000163790 D|077133092 070982816 +000000597 000307995 000188314 D|007838974 060834944 +000000597 000319014 000226457 D|038625581 093442235 +000000597 000332671 000237265 D|001993990 099460060 +000000597 000350271 000283933 D|019829614 055775103 +000000597 000378851 000295274 D|088495028 033822466 +000000597 000406084 000346009 D|015584484 026674941 +000000597 000423061 000360117 D|084629129 069760625 +000000597 000450343 000363266 D|081681943 071803808 +000000597 000459479 000365834 D|035767383 042551839 +000000597 000487382 000371760 D|019727551 064621504 +000000597 000493172 000415468 D|025945666 036605459 +000000597 000546253 000457297 D|005687620 064718709 +000000597 000549437 000483282 D|088214446 077346471 +000000597 000566729 000511930 D|089889267 005075311 +000000597 000572421 000515435 D|051676740 085375369 +000000597 000595522 000531356 D|030197773 085493758 +000000597 000622695 000535613 D|062920192 063063768 +000000597 000631940 000549180 D|048214829 061285405 +000000597 000635710 000555665 D|056429929 065828080 +000000597 000671891 000596317 D|012700437 067598087 +000000597 000687840 000630957 D|073655281 007303018 +000000597 000695397 000638054 D|056291272 030008722 +000000597 000717618 000691010 D|072577404 002472130 +000000597 000722004 000723399 D|024692728 018717087 +000000597 000754212 000728331 D|097557463 033264281 +000000597 000763369 000747938 D|011206325 060419315 +000000597 000788309 000789159 D|090944174 025262678 +000000597 000810958 000810001 D|096537173 076982391 +000000597 000872385 000827197 D|034116836 047337779 +000000597 000877883 000830462 D|072504064 037605018 +000000597 000903115 000890848 D|077393552 049743711 +000000597 000953023 000905952 D|054384739 005337786 +000000597 000959035 000907376 D|096611465 025864713 +000000597 000969915 000916641 D|030074839 018520766 +000000597 000970904 000977519 D|060359262 070285568 +000000597 000993384 000990695 D|053779075 019177942 +000000598 000021523 000021037 D|009987699 065661014 +000000598 000031567 000033752 D|097685699 064543223 +000000598 000047133 000034588 D|071720789 049846645 +000000598 000051071 000072133 D|012079744 053123920 +000000598 000104832 000078801 D|006256262 023748752 +000000598 000110572 000113224 D|013185808 035656020 +000000598 000111492 000150257 D|094679050 082719754 +000000598 000113052 000157800 D|080506123 084124900 +000000598 000119701 000169184 D|087179830 003030577 +000000598 000174649 000183564 D|043457063 084892499 +000000598 000194267 000189301 D|097174473 029896850 +000000598 000207384 000190667 D|022832634 098178377 +000000598 000214394 000329648 D|063945098 025209864 +000000598 000221869 000333335 D|035883765 024081206 +000000598 000248073 000350814 D|071016529 046800484 +000000598 000248611 000358921 D|086745244 000915182 +000000598 000252523 000369862 D|014999537 065956364 +000000598 000289094 000375239 D|053151666 079369578 +000000598 000301302 000394788 D|055286019 007566753 +000000598 000316161 000398614 D|038486905 068089535 +000000598 000336702 000408151 D|013371453 059712705 +000000598 000343293 000438562 D|028798584 042265656 +000000598 000375029 000444433 D|051317943 021572154 +000000598 000382892 000457143 D|013650106 062144414 +000000598 000392530 000493643 D|070969528 014188729 +000000598 000395452 000494917 D|091949774 009454321 +000000598 000436286 000497760 D|059789703 064517435 +000000598 000440183 000528594 D|095207282 013140108 +000000598 000451831 000539634 D|056980895 056970871 +000000598 000475301 000546805 D|058451002 052522639 +000000598 000495715 000588333 D|025031026 058047304 +000000598 000574177 000590743 D|036748725 048658130 +000000598 000611160 000599123 D|008896316 068929056 +000000598 000662224 000608474 D|072057715 060527388 +000000598 000694421 000655125 D|083949625 008936112 +000000598 000717149 000693453 D|010639616 067417312 +000000598 000737298 000740095 D|062706889 012270664 +000000598 000766672 000769957 D|080509280 003029917 +000000598 000769449 000770906 D|045046925 009753746 +000000598 000779657 000794870 D|039427267 079677036 +000000598 000782544 000818941 D|020691044 081682863 +000000598 000793140 000829234 D|018202561 089802325 +000000598 000800185 000833772 D|058464899 039140306 +000000598 000800959 000857054 D|087054516 045390607 +000000598 000812109 000862188 D|040953982 016576657 +000000598 000817943 000912711 D|033791397 027736015 +000000598 000897817 000923355 D|059856267 095708807 +000000598 000897951 000959940 D|050006153 063513031 +000000598 000957880 000980513 D|084776163 039551723 +000000598 000961091 000997551 D|071013732 088336217 +000000599 000005368 000021804 D|053520207 080398518 +000000599 000048252 000053566 D|001306236 086923532 +000000599 000078489 000075387 D|090172087 075547021 +000000599 000084183 000108531 D|006472309 078201269 +000000599 000103450 000127437 D|032049332 003651825 +000000599 000112874 000155476 D|040842606 081777659 +000000599 000144310 000165834 D|084067304 078665575 +000000599 000210559 000182275 D|062254891 081935504 +000000599 000243406 000188697 D|092976269 001239500 +000000599 000264436 000192337 D|085995552 012009982 +000000599 000289051 000201202 D|086698254 009525070 +000000599 000299560 000232376 D|023708502 072805691 +000000599 000346533 000285808 D|078814171 056857133 +000000599 000346844 000301512 D|013282973 054510834 +000000599 000352339 000318766 D|076229270 035741580 +000000599 000361685 000323264 D|045826370 035912487 +000000599 000425272 000354021 D|046511439 036676060 +000000599 000450250 000355295 D|000969303 028389258 +000000599 000509906 000393159 D|005186582 008197243 +000000599 000513781 000397880 D|061745504 062453386 +000000599 000515907 000399742 D|016846006 057615649 +000000599 000517210 000407907 D|047461048 022009581 +000000599 000554281 000407921 D|030932199 009351025 +000000599 000574104 000409746 D|090293234 064094026 +000000599 000574637 000438581 D|094008717 066018116 +000000599 000591679 000442005 D|030459057 020458119 +000000599 000625089 000470266 D|006075222 012169791 +000000599 000651531 000534337 D|041423450 001889810 +000000599 000659259 000535562 D|003150698 064374908 +000000599 000665803 000551380 D|058734629 034317970 +000000599 000690327 000556793 D|066755692 064531377 +000000599 000701851 000557785 D|026035896 084174620 +000000599 000719168 000615573 D|029671184 031841348 +000000599 000721352 000674415 D|065691626 071623051 +000000599 000737526 000682725 D|043984454 056039814 +000000599 000742370 000683854 D|044309478 094188725 +000000599 000751378 000696415 D|090351122 073634659 +000000599 000808617 000729578 D|097501591 046883453 +000000599 000814082 000730486 D|004735562 082940526 +000000599 000853870 000779036 D|097050972 015560104 +000000599 000872730 000846012 D|082656225 049484802 +000000599 000878009 000851608 D|009802379 086481495 +000000599 000890033 000887960 D|000631751 037338982 +000000599 000893725 000905618 D|017398133 079582582 +000000599 000924213 000929054 D|090443942 038344501 +000000599 000932228 000938876 D|001847815 032677115 +000000599 000934447 000939983 D|022261629 082147544 +000000599 000942059 000953923 D|064017395 098565543 +000000599 000963565 000979068 D|024934415 079720420 +000000599 000987849 000979972 D|066963789 004956789 +000000600 000033252 000005121 D|092353259 092101769 +000000600 000049865 000070092 D|095133939 016681965 +000000600 000087842 000077488 D|053322402 055173467 +000000600 000122702 000094288 D|083423717 079035038 +000000600 000162623 000098114 D|028209020 022955334 +000000600 000189446 000136044 D|044848975 052927588 +000000600 000191093 000156625 D|099064313 052806698 +000000600 000201401 000157857 D|043555293 050305468 +000000600 000210643 000196947 D|013532861 047382514 +000000600 000211975 000219917 D|090531491 077385769 +000000600 000217502 000227097 D|009503864 094398423 +000000600 000230125 000232074 D|018650132 015039197 +000000600 000230621 000238518 D|028533275 039504567 +000000600 000272903 000240418 D|001549736 070246317 +000000600 000287831 000262115 D|081520755 020705039 +000000600 000291846 000290253 D|030731316 029109218 +000000600 000298651 000290793 D|061002432 068422884 +000000600 000300086 000388280 D|072039405 021434928 +000000600 000312680 000398975 D|060097651 092814805 +000000600 000327760 000437894 D|080317491 001362838 +000000600 000330369 000465521 D|095670435 020026016 +000000600 000347964 000467800 D|043797647 044091487 +000000600 000361730 000475236 D|043086937 019023761 +000000600 000404140 000489961 D|026635594 054674357 +000000600 000406046 000570442 D|046542870 097834842 +000000600 000412791 000591868 D|068888140 014554752 +000000600 000484422 000600126 D|069027268 033126955 +000000600 000500787 000600395 D|063506264 022767549 +000000600 000514958 000604732 D|051705665 041855611 +000000600 000519590 000617282 D|007001308 021798828 +000000600 000549563 000698501 D|004623778 009810330 +000000600 000551039 000710306 D|076072113 098218219 +000000600 000560300 000742691 D|016582986 008570853 +000000600 000568971 000745889 D|014648943 047012065 +000000600 000575812 000750946 D|062028503 002488678 +000000600 000590352 000777020 D|058519436 024393653 +000000600 000593849 000791772 D|018443094 009551443 +000000600 000606695 000821716 D|012888239 082297631 +000000600 000632613 000834675 D|087971605 084189579 +000000600 000657298 000865920 D|047401252 029004057 +000000600 000706026 000868410 D|013521496 034666819 +000000600 000748830 000872290 D|039650216 007754803 +000000600 000812586 000895096 D|035694582 037773734 +000000600 000823619 000914323 D|033662105 076111184 +000000600 000837224 000935975 D|071176279 007958241 +000000600 000885352 000957640 D|010999698 010156165 +000000600 000896253 000965660 D|086168137 051262463 +000000600 000939195 000981776 D|052356244 025754299 +000000600 000954885 000988798 D|073706960 023325657 +000000600 000965196 000994634 D|067252823 067414785 +000000601 000015245 000010834 D|082854236 099925705 +000000601 000033102 000016857 D|085930115 045508250 +000000601 000034193 000033508 D|098289939 068110415 +000000601 000042809 000049385 D|010384944 088929988 +000000601 000047719 000056320 D|097921619 097893113 +000000601 000053031 000058123 D|000519112 021735636 +000000601 000085666 000091698 D|081398818 020097348 +000000601 000092942 000114431 D|051367831 082928385 +000000601 000112283 000140961 D|005603863 014924502 +000000601 000139607 000142574 D|054427127 005085467 +000000601 000144378 000143291 D|010249807 097126044 +000000601 000162764 000170206 D|037885756 030175863 +000000601 000172144 000233922 D|002591773 058894691 +000000601 000209197 000256754 D|064492028 055989897 +000000601 000230033 000258533 D|015683789 062078158 +000000601 000246814 000283758 D|006374688 052961392 +000000601 000247571 000307666 D|012027987 031733883 +000000601 000261869 000315904 D|056054232 085708533 +000000601 000288250 000344820 D|067374494 040625137 +000000601 000332185 000366467 D|019415992 031668809 +000000601 000428155 000369475 D|070392378 013597443 +000000601 000444419 000374699 D|090079816 055721541 +000000601 000446466 000397070 D|061625318 036938956 +000000601 000475173 000418329 D|040574908 060717087 +000000601 000492844 000424307 D|000633042 041163022 +000000601 000505516 000441692 D|078910787 023884771 +000000601 000525143 000445844 D|074034813 096558458 +000000601 000532970 000453095 D|024778450 090580138 +000000601 000538149 000462278 D|094335182 039927076 +000000601 000552701 000473006 D|060102591 063890293 +000000601 000600538 000498797 D|091068022 069080628 +000000601 000605853 000507677 D|053655009 092547911 +000000601 000610802 000542504 D|058119290 074367011 +000000601 000659468 000583299 D|065385889 009750931 +000000601 000676607 000609488 D|058504873 032026904 +000000601 000708163 000619880 D|074517482 033626009 +000000601 000726367 000634245 D|073227312 015997225 +000000601 000781657 000639653 D|055380728 024843788 +000000601 000788851 000649113 D|044239930 027826954 +000000601 000803947 000714257 D|083911213 062980046 +000000601 000821460 000808029 D|085209446 042850301 +000000601 000835521 000826658 D|091237552 057261016 +000000601 000846306 000828151 D|035229912 036238217 +000000601 000865268 000846171 D|047006607 079477362 +000000601 000874633 000903238 D|044832323 021787712 +000000601 000919685 000920617 D|058717745 034146386 +000000601 000932296 000931913 D|099950131 021762738 +000000601 000940467 000940043 D|086576680 078984112 +000000601 000957477 000959751 D|035504473 067182381 +000000601 000987720 000990382 D|085289574 068672021 +000000602 000034085 000005765 D|077379389 024524595 +000000602 000060290 000033487 D|036350350 051256164 +000000602 000115592 000035577 D|075651407 033913116 +000000602 000120206 000070180 D|056790447 011367984 +000000602 000123753 000086174 D|077751766 034808210 +000000602 000124562 000091176 D|065660379 086378706 +000000602 000132230 000099397 D|050622620 047322068 +000000602 000134804 000104510 D|098975978 032992054 +000000602 000139597 000135026 D|023087636 077380986 +000000602 000204944 000154592 D|084455635 005160682 +000000602 000205749 000160250 D|003244698 070331079 +000000602 000228278 000173342 D|017786986 085382204 +000000602 000236191 000176490 D|070109028 038263279 +000000602 000240585 000200999 D|028917816 020716678 +000000602 000257234 000270051 D|050140512 073258634 +000000602 000265422 000287198 D|037129975 013336990 +000000602 000293278 000301110 D|066436000 054878812 +000000602 000314309 000303061 D|067190361 080965806 +000000602 000321698 000309593 D|091391289 098792273 +000000602 000394081 000312150 D|086566482 016032824 +000000602 000395116 000360013 D|003873994 099137900 +000000602 000422409 000370654 D|096021947 031792421 +000000602 000448893 000386514 D|042922347 006048969 +000000602 000475955 000390577 D|070752884 039399300 +000000602 000508869 000392423 D|075372933 054684258 +000000602 000518317 000404030 D|045692162 099489817 +000000602 000538821 000494869 D|040624254 061903865 +000000602 000549194 000521254 D|070444068 047876982 +000000602 000559463 000538935 D|010134137 073265864 +000000602 000563999 000645327 D|006724017 060229849 +000000602 000594357 000659170 D|013164141 093540030 +000000602 000613759 000675786 D|083714248 043616719 +000000602 000632570 000716421 D|074633104 066504168 +000000602 000632572 000734328 D|093067695 028150610 +000000602 000634744 000780058 D|029824970 085500497 +000000602 000677599 000821998 D|033964974 039150885 +000000602 000679720 000830708 D|047366313 051072714 +000000602 000683641 000837389 D|027063138 094509828 +000000602 000690268 000871170 D|053581660 064173556 +000000602 000713882 000875537 D|050216825 079700358 +000000602 000714830 000902672 D|000786837 044330317 +000000602 000720717 000909064 D|016315792 097514243 +000000602 000734029 000918179 D|021343543 054572514 +000000602 000749397 000942570 D|008614739 034574183 +000000602 000772257 000955609 D|024885892 080248048 +000000602 000798712 000975072 D|053142461 054346448 +000000602 000819501 000976943 D|003012916 040130022 +000000602 000885797 000988571 D|035793157 035568829 +000000602 000949416 000992766 D|013515040 098373687 +000000602 000957250 000994595 D|094521300 080567054 +000000603 000007743 000006411 D|086357734 009642648 +000000603 000081517 000049076 D|089755549 077447240 +000000603 000090652 000070218 D|081551367 026622737 +000000603 000116418 000070884 D|004656225 055616530 +000000603 000121111 000078187 D|079485765 063743154 +000000603 000126431 000078496 D|038721839 037715447 +000000603 000183715 000142868 D|083784472 045778970 +000000603 000185844 000179777 D|079610769 053164993 +000000603 000200697 000191685 D|037297663 080626588 +000000603 000205550 000243670 D|097479737 080120628 +000000603 000238229 000267000 D|051067354 014120257 +000000603 000243357 000271809 D|055279644 097026026 +000000603 000247945 000274592 D|027373535 051120890 +000000603 000254630 000290099 D|003530614 088438878 +000000603 000278471 000316331 D|082293626 082333914 +000000603 000298856 000317877 D|025585026 029121499 +000000603 000343258 000325173 D|026695513 020089246 +000000603 000382376 000340363 D|009449366 017080434 +000000603 000384645 000366089 D|077649026 012415394 +000000603 000442309 000376527 D|047470602 066507760 +000000603 000444220 000395135 D|070948748 023749164 +000000603 000455271 000397317 D|010895191 056831009 +000000603 000492042 000402321 D|011146524 050674104 +000000603 000503360 000417876 D|058791405 001357122 +000000603 000503511 000433083 D|036662724 082399580 +000000603 000545631 000467113 D|052237300 010583071 +000000603 000548411 000486302 D|048008590 009322186 +000000603 000593952 000502239 D|067365712 056084332 +000000603 000626626 000558696 D|013553714 075356171 +000000603 000630259 000583234 D|081994827 008982042 +000000603 000650082 000626628 D|072586233 032645751 +000000603 000652105 000646733 D|016151721 053218138 +000000603 000656963 000651918 D|076684716 065598834 +000000603 000657357 000736930 D|067827378 000147385 +000000603 000659427 000773884 D|097905021 070778000 +000000603 000660664 000781758 D|050055846 076614324 +000000603 000664109 000789825 D|084911912 041514929 +000000603 000697618 000803452 D|047984810 007792662 +000000603 000735444 000874024 D|039858947 089449021 +000000603 000735998 000888254 D|052262031 073123177 +000000603 000742012 000896624 D|015952463 098409266 +000000603 000798224 000901718 D|010754736 037334476 +000000603 000839096 000902243 D|009322647 054570454 +000000603 000845825 000917404 D|086235088 067467682 +000000603 000857043 000940078 D|019177229 050777006 +000000603 000864689 000950859 D|049852032 028759487 +000000603 000869657 000962474 D|022005039 001788259 +000000603 000871228 000964148 D|035108501 037679168 +000000603 000983850 000973864 D|050923654 023343451 +000000603 000992818 000997285 D|043343948 015899773 +000000604 000020554 000005165 D|060249745 050904449 +000000604 000043431 000007992 D|085172280 006711340 +000000604 000063013 000013677 D|012256108 014009210 +000000604 000106368 000014155 D|060372043 061971960 +000000604 000121758 000038607 D|033987506 088142254 +000000604 000126079 000046864 D|064338114 076034510 +000000604 000146104 000062136 D|047049318 017299811 +000000604 000181690 000088675 D|010784416 020860690 +000000604 000189831 000091409 D|068044508 032020208 +000000604 000192065 000161656 D|076993018 022342067 +000000604 000240230 000198806 D|026695484 069535144 +000000604 000240302 000252758 D|051954991 014621335 +000000604 000265190 000260980 D|038248459 061992920 +000000604 000271849 000265974 D|081737475 041175221 +000000604 000294059 000281784 D|001760179 043924237 +000000604 000316368 000293597 D|045129623 030412925 +000000604 000334717 000300998 D|061929226 030932221 +000000604 000356151 000313965 D|057833740 001722846 +000000604 000396395 000337813 D|013815313 025616994 +000000604 000417796 000449496 D|041702217 019449698 +000000604 000429233 000461699 D|043858224 098857125 +000000604 000435278 000476725 D|031914304 002756336 +000000604 000465506 000509777 D|094636566 088620594 +000000604 000477543 000541298 D|048883248 001459947 +000000604 000484622 000547495 D|026373316 011156606 +000000604 000505130 000548284 D|087292123 053960468 +000000604 000512253 000559009 D|071519070 094553254 +000000604 000522291 000574793 D|015375346 088563291 +000000604 000528842 000590563 D|086314733 094673226 +000000604 000548814 000593111 D|074449580 025593108 +000000604 000584723 000632292 D|062636480 085968335 +000000604 000587518 000670334 D|014570816 038682442 +000000604 000590939 000701042 D|063750719 005547812 +000000604 000624502 000725533 D|037806573 045034168 +000000604 000634746 000725865 D|048407408 097715665 +000000604 000686429 000745018 D|092995789 063273655 +000000604 000698452 000775794 D|058849440 052915470 +000000604 000702389 000779019 D|057370127 013576002 +000000604 000741539 000790516 D|065679858 071696967 +000000604 000742807 000792081 D|073002935 062200186 +000000604 000748254 000803889 D|009776941 036330986 +000000604 000781602 000847365 D|023881851 028543271 +000000604 000798300 000854098 D|040437368 046432797 +000000604 000851816 000855190 D|053407590 091008775 +000000604 000882976 000857243 D|024853672 001458821 +000000604 000918208 000894366 D|003009182 039129592 +000000604 000934154 000929558 D|032016264 021907724 +000000604 000935186 000939884 D|002731141 066861715 +000000604 000953936 000978638 D|015980548 036690427 +000000604 000989222 000986347 D|057486392 086811886 +000000605 000038522 000003691 D|092067214 053405417 +000000605 000046173 000033591 D|056300165 058326500 +000000605 000053857 000078683 D|013184384 045194658 +000000605 000063738 000098108 D|049375859 032229743 +000000605 000098995 000101505 D|096755238 027960794 +000000605 000141708 000118321 D|078556614 016039102 +000000605 000153405 000131207 D|066971276 043444759 +000000605 000165355 000155106 D|081418322 000056228 +000000605 000165925 000195331 D|012262583 082744921 +000000605 000167875 000220171 D|086336768 029212934 +000000605 000172007 000225260 D|022783014 070354050 +000000605 000193504 000243276 D|062929406 049085297 +000000605 000208080 000247469 D|073713938 083732553 +000000605 000211863 000283055 D|055852632 082407585 +000000605 000237909 000290125 D|051809718 076015043 +000000605 000262210 000316261 D|069360717 091485291 +000000605 000264477 000317932 D|070987128 079854085 +000000605 000264504 000331490 D|002666446 033497743 +000000605 000268451 000350425 D|069981048 046220615 +000000605 000297999 000361891 D|057155165 018735747 +000000605 000362359 000382912 D|063040109 085944563 +000000605 000364429 000421044 D|050652508 050755340 +000000605 000372747 000422317 D|044128457 013668430 +000000605 000377087 000428700 D|051422935 084242755 +000000605 000382592 000436627 D|067173785 055178725 +000000605 000427406 000452088 D|008281678 033575885 +000000605 000439231 000456016 D|069791861 064729222 +000000605 000525841 000470459 D|048540536 015161614 +000000605 000531167 000477829 D|054820911 085495152 +000000605 000548283 000514996 D|084494210 087403459 +000000605 000569384 000579818 D|074489231 016463294 +000000605 000581899 000589164 D|042532973 066264857 +000000605 000591301 000634580 D|055279180 049090328 +000000605 000597430 000643439 D|071783566 093907845 +000000605 000602039 000644309 D|055563247 082847460 +000000605 000633036 000650930 D|036681134 027406634 +000000605 000638193 000663707 D|040192178 025711687 +000000605 000681752 000664619 D|018482378 080865989 +000000605 000711769 000683183 D|046944026 033575597 +000000605 000725883 000689027 D|032514256 078042391 +000000605 000747199 000773161 D|029169315 006464323 +000000605 000766039 000788367 D|080986103 065272766 +000000605 000790186 000794550 D|067146349 062637013 +000000605 000803098 000794862 D|000028369 056840324 +000000605 000838001 000840688 D|002645082 059936232 +000000605 000840313 000847300 D|063871369 034369787 +000000605 000879181 000855893 D|039291798 028820302 +000000605 000886666 000876143 D|035092001 084551972 +000000605 000972219 000880198 D|085720249 091094138 +000000605 000994391 000942637 D|096474568 025258863 +000000606 000121163 000005868 D|050398480 091820013 +000000606 000123625 000017048 D|038432936 017588917 +000000606 000138647 000030531 D|010908570 094715183 +000000606 000146598 000034197 D|003857088 056108276 +000000606 000165014 000046878 D|058198679 014505754 +000000606 000196893 000054430 D|034194387 097340307 +000000606 000202204 000105203 D|026655382 031997503 +000000606 000204259 000134625 D|056748832 086928923 +000000606 000240032 000138590 D|024306514 012086080 +000000606 000248054 000143898 D|023044632 054192477 +000000606 000265932 000165160 D|073492503 010709066 +000000606 000280693 000194187 D|008634634 035932546 +000000606 000297554 000198825 D|027637070 013938235 +000000606 000298084 000202251 D|016498878 008120147 +000000606 000299803 000248290 D|027157701 036891926 +000000606 000341069 000249418 D|085311566 042710456 +000000606 000381195 000270117 D|076145934 096658443 +000000606 000394891 000297351 D|034602714 058607456 +000000606 000397961 000363898 D|076067316 090780746 +000000606 000402156 000371882 D|044511440 085974622 +000000606 000413221 000376532 D|013066637 011213002 +000000606 000413981 000398758 D|098192244 093149200 +000000606 000419378 000400771 D|048868210 088377991 +000000606 000432577 000466844 D|064208325 037219282 +000000606 000447658 000499898 D|006584286 087230334 +000000606 000463836 000563144 D|069083094 057305588 +000000606 000471989 000571614 D|007286355 098957919 +000000606 000481469 000577046 D|099092522 028988064 +000000606 000489485 000611207 D|054058888 091339945 +000000606 000507821 000646095 D|025138623 064828495 +000000606 000534695 000661767 D|022743786 098040156 +000000606 000538623 000664358 D|045259703 024794722 +000000606 000544554 000670410 D|083017920 047304589 +000000606 000570139 000696623 D|037520127 039836950 +000000606 000595022 000703065 D|077852677 098766064 +000000606 000596018 000721059 D|071470896 044108273 +000000606 000604648 000747727 D|016256205 085818453 +000000606 000605452 000791505 D|002915851 028957665 +000000606 000632062 000795169 D|089174850 023545275 +000000606 000636900 000870876 D|057537630 037697893 +000000606 000668391 000874757 D|098261573 085069686 +000000606 000678824 000875331 D|000256993 056241377 +000000606 000693788 000884360 D|008824867 025913157 +000000606 000755441 000890965 D|068861940 086731941 +000000606 000777810 000892484 D|040459835 015087110 +000000606 000789773 000908376 D|014807598 032798666 +000000606 000794872 000934003 D|047453027 050896079 +000000606 000831725 000944723 D|017086868 051934980 +000000606 000902346 000945868 D|065285775 008155197 +000000606 000991725 000966024 D|003070372 001316780 +000000607 000021096 000014452 D|074934837 032915369 +000000607 000023257 000037203 D|085688070 059398730 +000000607 000028733 000047016 D|016546555 095733893 +000000607 000057444 000078080 D|047376756 033382701 +000000607 000058013 000085656 D|073191948 068389926 +000000607 000092878 000098568 D|028760416 031533575 +000000607 000094553 000140646 D|017993867 064926711 +000000607 000097534 000162889 D|049589256 073323100 +000000607 000124013 000172570 D|076128471 009245171 +000000607 000138583 000214626 D|041425987 063571513 +000000607 000156689 000226745 D|094708650 006596562 +000000607 000184792 000249142 D|044220270 031597634 +000000607 000261306 000278894 D|050801730 010612065 +000000607 000268425 000286558 D|042478231 001996225 +000000607 000305361 000335545 D|051647306 054010552 +000000607 000321694 000353737 D|021527841 093044631 +000000607 000330110 000355558 D|090659935 053038648 +000000607 000330323 000403350 D|044708050 077385362 +000000607 000340758 000423553 D|022787167 011516149 +000000607 000345675 000433670 D|050871592 061606009 +000000607 000379635 000469514 D|012977895 021783551 +000000607 000390137 000477533 D|007525726 088127026 +000000607 000455317 000479012 D|032142854 034388745 +000000607 000463530 000496660 D|006592021 030398917 +000000607 000489853 000513067 D|063391468 010161837 +000000607 000521372 000534421 D|017606313 071397465 +000000607 000574389 000543735 D|097936597 097198497 +000000607 000613528 000581951 D|045325903 048105272 +000000607 000616073 000635722 D|026687240 021084483 +000000607 000623974 000657766 D|057956105 007762597 +000000607 000636344 000702057 D|016937810 033961086 +000000607 000657899 000704148 D|057748653 072078504 +000000607 000676289 000735467 D|036636696 025069845 +000000607 000681422 000739442 D|002551109 085895989 +000000607 000704089 000756149 D|089700497 095505946 +000000607 000726671 000771176 D|074251525 040204542 +000000607 000788477 000779420 D|064329301 059142880 +000000607 000881284 000811582 D|030531735 048152207 +000000607 000884372 000818894 D|038099171 036077591 +000000607 000890954 000877523 D|096863277 027292422 +000000607 000901215 000879338 D|007045632 089785492 +000000607 000905340 000895613 D|065460780 059218510 +000000607 000922573 000905943 D|042375300 071864360 +000000607 000925544 000908532 D|010506827 012503313 +000000607 000943659 000911819 D|025953501 048379966 +000000607 000955454 000917036 D|009339133 035698812 +000000607 000966306 000933250 D|060016558 006242307 +000000607 000986091 000939491 D|072333268 022290522 +000000607 000990710 000965273 D|042811303 045630208 +000000607 000991534 000974411 D|022297825 079546157 +000000608 000002991 000008328 D|060928199 096862514 +000000608 000008854 000013446 D|046648136 085180644 +000000608 000022905 000031918 D|007597685 078548761 +000000608 000031700 000035967 D|038321062 037478085 +000000608 000127551 000054159 D|079674019 095105293 +000000608 000159499 000072371 D|099990341 080513697 +000000608 000216376 000083574 D|077581175 007151653 +000000608 000236647 000088780 D|092650536 056551599 +000000608 000256057 000091999 D|055266839 024860497 +000000608 000262824 000099010 D|026935924 098548736 +000000608 000281001 000105840 D|063642858 091483349 +000000608 000309639 000126409 D|028412527 096404987 +000000608 000326179 000132181 D|062922056 002743832 +000000608 000383120 000160420 D|093182971 093352665 +000000608 000384800 000164415 D|070206320 055987128 +000000608 000400870 000178903 D|028508712 053759340 +000000608 000438714 000238647 D|095828801 003367835 +000000608 000450744 000247342 D|016282903 065435125 +000000608 000461288 000255482 D|039474112 058321430 +000000608 000474638 000275407 D|022455922 024492140 +000000608 000490303 000275533 D|061207928 071728729 +000000608 000520007 000278096 D|019884854 093305697 +000000608 000521786 000283634 D|066351952 039702839 +000000608 000539188 000302976 D|054276723 052270060 +000000608 000557599 000337032 D|047637210 035591020 +000000608 000573554 000409917 D|084600366 044877768 +000000608 000613282 000478141 D|043395015 024101614 +000000608 000630508 000478535 D|038660891 083721371 +000000608 000646207 000544063 D|010133112 069416240 +000000608 000655036 000544392 D|049190870 029921747 +000000608 000665415 000579643 D|047985416 075079512 +000000608 000686192 000591498 D|083839988 022346661 +000000608 000716452 000603071 D|088305491 040367551 +000000608 000719664 000642025 D|064150290 046384295 +000000608 000753382 000647856 D|078750199 085688618 +000000608 000784134 000650255 D|037870351 074729197 +000000608 000787308 000652808 D|064495996 052054231 +000000608 000790738 000727416 D|019048733 054103835 +000000608 000797275 000748130 D|062649230 093283244 +000000608 000830886 000753047 D|088257079 067765095 +000000608 000882275 000769572 D|058402176 091302825 +000000608 000883468 000808231 D|004276472 080368112 +000000608 000928926 000838581 D|066352072 063996397 +000000608 000935965 000862454 D|049708771 053564733 +000000608 000956947 000886710 D|098291578 086217046 +000000608 000959446 000903798 D|028320289 077688173 +000000608 000984170 000911707 D|061802599 031061504 +000000608 000985977 000912687 D|026812006 001174545 +000000608 000996243 000984234 D|046544422 085384339 +000000608 000996321 000997283 D|019722094 080801577 +000000609 000028784 000004623 D|095668592 059112533 +000000609 000034750 000013917 D|053229871 044973045 +000000609 000043586 000020836 D|059206296 066669152 +000000609 000101438 000030285 D|035540606 028380928 +000000609 000123341 000031578 D|039339859 065977814 +000000609 000131796 000034940 D|049915975 080920136 +000000609 000157547 000046210 D|083078697 063043432 +000000609 000171418 000048698 D|026484006 018075305 +000000609 000188829 000074899 D|001873779 087047509 +000000609 000208542 000123660 D|061745500 072133905 +000000609 000209264 000132137 D|016112057 021314243 +000000609 000230057 000165507 D|061157459 078046846 +000000609 000244405 000169832 D|025200858 010287789 +000000609 000245863 000188662 D|051639324 038261489 +000000609 000273107 000213059 D|025295962 082297595 +000000609 000304764 000224559 D|000921069 021982915 +000000609 000317993 000235862 D|007917858 098559687 +000000609 000331637 000253933 D|066063007 023823432 +000000609 000339914 000284030 D|098677556 003954668 +000000609 000342373 000305476 D|037822758 008072664 +000000609 000356466 000311722 D|097448141 051984283 +000000609 000402915 000328284 D|068828047 008919060 +000000609 000433523 000360911 D|046904154 049881466 +000000609 000447456 000374754 D|057706558 029791846 +000000609 000452096 000378620 D|072168027 062792344 +000000609 000499736 000441910 D|083689687 051205818 +000000609 000525722 000527894 D|071533233 022287272 +000000609 000541045 000560156 D|045257298 030089682 +000000609 000543266 000592392 D|071286146 030967987 +000000609 000547269 000625583 D|007498355 085842917 +000000609 000584444 000629222 D|025241150 096160682 +000000609 000593417 000645699 D|071133496 028484002 +000000609 000598903 000646107 D|070125524 045469784 +000000609 000608680 000656445 D|057227904 006103578 +000000609 000629217 000679507 D|099429905 097709214 +000000609 000646533 000682532 D|016162034 037710513 +000000609 000698568 000704050 D|091057561 035925975 +000000609 000747584 000722049 D|051330623 030959687 +000000609 000760249 000728932 D|004501406 044241774 +000000609 000766002 000788949 D|023822882 040743684 +000000609 000788732 000793361 D|035405323 003289538 +000000609 000888934 000854368 D|075963608 056865524 +000000609 000919665 000854840 D|045661875 049697965 +000000609 000927019 000869268 D|099593905 095640151 +000000609 000932556 000871686 D|070900845 068413661 +000000609 000937263 000911357 D|016251017 033411873 +000000609 000938573 000913750 D|057802654 055267505 +000000609 000941741 000938476 D|065728051 025317041 +000000609 000943648 000947353 D|001155057 065752928 +000000609 000967871 000953919 D|053029705 028142553 +000000610 000012921 000038074 D|075406753 039457801 +000000610 000013338 000054039 D|012706155 046105505 +000000610 000030131 000063409 D|069034659 036786070 +000000610 000100197 000080008 D|022839565 090132839 +000000610 000136791 000089918 D|063626018 006432984 +000000610 000150804 000091032 D|099656901 013353104 +000000610 000153036 000106294 D|019873045 071057885 +000000610 000174049 000140995 D|070066898 083217445 +000000610 000180121 000143749 D|096607791 073124352 +000000610 000205167 000148390 D|060999951 061222241 +000000610 000229992 000166175 D|088076195 061399918 +000000610 000245010 000171601 D|064615964 045255691 +000000610 000249520 000189471 D|075151913 003600904 +000000610 000263703 000193121 D|055530718 093517096 +000000610 000297226 000262749 D|075422503 081035631 +000000610 000306135 000294302 D|029438477 065771854 +000000610 000312854 000294763 D|053927866 004898053 +000000610 000332226 000326522 D|030601512 067241372 +000000610 000335412 000341119 D|068887966 046649559 +000000610 000338963 000343924 D|016151940 028382679 +000000610 000373177 000387295 D|005641927 085111188 +000000610 000394484 000390477 D|072943914 046873705 +000000610 000409261 000408585 D|056471885 013039070 +000000610 000435080 000434294 D|001653944 001355573 +000000610 000513658 000449992 D|088821499 020747770 +000000610 000551509 000492598 D|084026355 012485770 +000000610 000587155 000505010 D|029735184 024403791 +000000610 000590023 000508680 D|080899624 017900342 +000000610 000602442 000518394 D|051204262 076361278 +000000610 000627072 000521531 D|092474118 010105563 +000000610 000630620 000553505 D|091727834 095970538 +000000610 000633097 000560895 D|031105665 091439573 +000000610 000651276 000565583 D|016482539 061168491 +000000610 000661236 000595193 D|059199060 063315135 +000000610 000674026 000597078 D|023216682 081162034 +000000610 000675273 000612385 D|068410263 062925131 +000000610 000764402 000623975 D|089314607 059004137 +000000610 000788640 000653718 D|027273286 041227805 +000000610 000789765 000654649 D|077476389 004365902 +000000610 000793310 000682211 D|036817016 087746954 +000000610 000797190 000702960 D|035918068 058734059 +000000610 000820928 000729330 D|007774094 052788467 +000000610 000829639 000738899 D|040327050 079893774 +000000610 000834932 000821759 D|037889965 008812384 +000000610 000845369 000831106 D|032794047 010503536 +000000610 000911498 000835785 D|043210871 089356152 +000000610 000920209 000844493 D|033420230 065336959 +000000610 000943499 000872465 D|018935011 022104903 +000000610 000957513 000960240 D|058037585 046100519 +000000610 000991835 000988060 D|051190459 012705418 +000000611 000012763 000012121 D|094816806 041978956 +000000611 000014473 000030443 D|042400030 002687724 +000000611 000020396 000043168 D|041669709 009838974 +000000611 000033150 000045994 D|013103863 036024298 +000000611 000036370 000108012 D|059880027 079734618 +000000611 000039722 000142442 D|046586189 018000350 +000000611 000067656 000145064 D|012951677 036991556 +000000611 000069799 000209414 D|073787747 020293339 +000000611 000078227 000217786 D|006982506 086463386 +000000611 000100624 000231182 D|022635874 078643073 +000000611 000110126 000245366 D|021591736 023267356 +000000611 000127650 000266911 D|069370495 060261551 +000000611 000131775 000279859 D|058818562 037710814 +000000611 000170960 000289020 D|005535399 086417862 +000000611 000207800 000319823 D|026391846 078238511 +000000611 000226511 000327918 D|089561940 027974988 +000000611 000239645 000383308 D|059688951 021355293 +000000611 000250835 000384789 D|038037588 067773917 +000000611 000256289 000385306 D|053183416 066620800 +000000611 000277961 000408337 D|099268930 030134483 +000000611 000360279 000470002 D|075809651 075392562 +000000611 000373091 000486018 D|022482661 095111083 +000000611 000399232 000501285 D|098632196 052030404 +000000611 000406634 000526103 D|027622266 042856744 +000000611 000494509 000538379 D|073975531 074188794 +000000611 000498448 000541437 D|025618044 001676427 +000000611 000531105 000543510 D|031051591 080306538 +000000611 000544650 000558126 D|063055976 055583447 +000000611 000584222 000583661 D|013703670 019314919 +000000611 000593973 000613300 D|066162992 077291525 +000000611 000620643 000653549 D|051441484 084282547 +000000611 000626248 000662783 D|013587009 067421644 +000000611 000634367 000709356 D|079665678 065491181 +000000611 000647428 000719974 D|008471604 001066977 +000000611 000654724 000753207 D|046890724 037147429 +000000611 000660652 000761129 D|023170682 049947940 +000000611 000671141 000768476 D|010502998 026122814 +000000611 000759484 000784993 D|050736146 006226705 +000000611 000760392 000790159 D|063880357 036034523 +000000611 000776281 000802929 D|095443207 065727498 +000000611 000784327 000809445 D|001054811 043396278 +000000611 000800930 000833035 D|057125242 044632956 +000000611 000814330 000838660 D|043097315 026436046 +000000611 000826957 000840008 D|050456815 093468280 +000000611 000852379 000844905 D|001763117 073569945 +000000611 000906862 000903393 D|075974275 069798478 +000000611 000930346 000924429 D|018854279 058092631 +000000611 000934381 000937403 D|063888692 028357653 +000000611 000977349 000960549 D|098334221 051203755 +000000611 000992684 000993838 D|019146500 033172072 +000000612 000047834 000002115 D|075085742 048764965 +000000612 000067237 000018098 D|074750554 089233691 +000000612 000091291 000021885 D|079748737 009002343 +000000612 000124122 000058358 D|068552209 018104930 +000000612 000131887 000064649 D|058317096 008066400 +000000612 000140911 000075760 D|090641669 075491140 +000000612 000157855 000125481 D|072634825 082351265 +000000612 000163432 000126764 D|007822486 007750642 +000000612 000191857 000146087 D|031717126 071880195 +000000612 000228304 000174382 D|040771266 027131320 +000000612 000238742 000183265 D|010988172 097241082 +000000612 000248712 000184180 D|007145198 098188964 +000000612 000249105 000188326 D|058586509 088984389 +000000612 000274543 000197732 D|085618104 011164333 +000000612 000297812 000215381 D|039807760 051556668 +000000612 000314852 000230922 D|078407139 002015657 +000000612 000320157 000254771 D|062286691 001364002 +000000612 000343834 000259140 D|070234684 063247630 +000000612 000349390 000284641 D|069342751 000585162 +000000612 000352585 000290844 D|081763381 058972342 +000000612 000382081 000291353 D|057797561 069625446 +000000612 000389405 000372046 D|014205064 007105418 +000000612 000393295 000381802 D|055176895 027588522 +000000612 000425061 000440734 D|021209984 073386523 +000000612 000430193 000453431 D|058333416 057999324 +000000612 000434810 000455389 D|016919095 077558122 +000000612 000449997 000464637 D|035540934 054618538 +000000612 000457178 000469216 D|039455428 017956773 +000000612 000478367 000473552 D|058153729 068053572 +000000612 000525242 000505545 D|016526129 020472446 +000000612 000594996 000525282 D|012022433 082377623 +000000612 000596531 000526850 D|088791547 085265930 +000000612 000619773 000531164 D|031799942 026279541 +000000612 000634768 000544616 D|065752888 022183310 +000000612 000640448 000550172 D|019674093 078772011 +000000612 000705185 000567220 D|051790487 063906464 +000000612 000709343 000592058 D|038686637 094378032 +000000612 000764421 000615718 D|060052749 079635608 +000000612 000765502 000633604 D|005967986 050137780 +000000612 000779462 000653955 D|039546957 095187837 +000000612 000802581 000745202 D|024156687 085662968 +000000612 000817395 000779831 D|042328689 090335859 +000000612 000820766 000847357 D|081124782 013172491 +000000612 000830095 000878292 D|089534421 069087286 +000000612 000845115 000884138 D|046462399 033811977 +000000612 000872295 000948367 D|057913106 055285808 +000000612 000944444 000964818 D|091723140 005925550 +000000612 000946488 000976903 D|074166226 007217997 +000000612 000953634 000980613 D|088939014 073759457 +000000612 000983111 000989894 D|061449702 035033231 +000000613 000019265 000002889 D|068216739 097708545 +000000613 000106850 000007102 D|001527794 077634136 +000000613 000179115 000013463 D|000059367 010316142 +000000613 000182660 000021173 D|057240928 067546966 +000000613 000187310 000028557 D|006166713 014111775 +000000613 000200374 000031277 D|078464623 093114083 +000000613 000209383 000090712 D|006967828 082579596 +000000613 000225491 000106400 D|092697768 057376373 +000000613 000228368 000133904 D|032343666 030281164 +000000613 000236584 000140791 D|079202188 092165262 +000000613 000369063 000160647 D|051417305 053056368 +000000613 000380491 000171966 D|057866881 077038388 +000000613 000430560 000190417 D|075458840 023184576 +000000613 000454233 000231963 D|060130343 012537079 +000000613 000491042 000240826 D|073410656 082307567 +000000613 000515316 000256914 D|092765559 011230564 +000000613 000519857 000266070 D|088448985 061866894 +000000613 000525472 000291334 D|022647278 026781644 +000000613 000546678 000336785 D|047171828 046153426 +000000613 000555506 000344958 D|043983244 045002059 +000000613 000560289 000349648 D|059441315 088601851 +000000613 000564109 000396359 D|038938405 071240598 +000000613 000615333 000412835 D|083445113 011371030 +000000613 000616385 000424557 D|081694843 022296613 +000000613 000636514 000451498 D|096903925 052663864 +000000613 000636852 000478941 D|056546011 017446695 +000000613 000670198 000517800 D|032273369 047674669 +000000613 000706939 000529630 D|082684919 083517089 +000000613 000711152 000554468 D|058982416 058677345 +000000613 000717531 000583480 D|049633526 016121146 +000000613 000726977 000588839 D|017671747 098830823 +000000613 000729673 000597745 D|002396842 046924932 +000000613 000732472 000607438 D|019402023 055028864 +000000613 000738964 000611274 D|004832741 001827378 +000000613 000754453 000613268 D|041537482 074880095 +000000613 000760215 000630016 D|039554992 022051549 +000000613 000767130 000692161 D|069710483 049655351 +000000613 000776780 000710562 D|084626188 047754366 +000000613 000777954 000732704 D|007696913 076068899 +000000613 000786818 000759010 D|014491341 041000006 +000000613 000801224 000759884 D|099500215 069519911 +000000613 000825926 000768137 D|053531043 088721284 +000000613 000829410 000821444 D|067920697 061609172 +000000613 000885449 000846051 D|029058482 094304872 +000000613 000907872 000852175 D|014414464 025491560 +000000613 000909017 000881113 D|026415332 045297199 +000000613 000916265 000887185 D|022282380 086202804 +000000613 000930383 000934735 D|008697704 056268830 +000000613 000943511 000946407 D|017811554 027324969 +000000613 000973989 000975482 D|027631743 095217650 +000000614 000006270 000010447 D|042352144 053437691 +000000614 000014668 000034368 D|021650321 098465738 +000000614 000031330 000035576 D|030964983 011901598 +000000614 000077343 000074720 D|069203307 095373910 +000000614 000082453 000080837 D|058642812 059464873 +000000614 000088139 000111911 D|021572982 020136858 +000000614 000094515 000128931 D|062360866 049410684 +000000614 000116588 000138662 D|086053577 059713930 +000000614 000124091 000148042 D|058037459 099873398 +000000614 000131137 000153380 D|097607394 009439243 +000000614 000133591 000161554 D|011905854 052444198 +000000614 000199458 000169361 D|064170250 023912816 +000000614 000220866 000185594 D|020016446 083720035 +000000614 000266352 000229015 D|057835110 001965837 +000000614 000286675 000234234 D|078719285 040869245 +000000614 000291523 000271310 D|048478870 047087543 +000000614 000315968 000300507 D|095828178 053737224 +000000614 000318552 000309367 D|002418445 068480287 +000000614 000349651 000330251 D|085841070 031892934 +000000614 000399621 000347957 D|062758678 021631579 +000000614 000409701 000405136 D|047829454 014288255 +000000614 000441089 000410392 D|037534523 077709502 +000000614 000447665 000421561 D|053257579 027708091 +000000614 000457027 000432282 D|013821850 053481966 +000000614 000461526 000435305 D|090530555 089076984 +000000614 000489313 000435782 D|049637363 072450759 +000000614 000494152 000440081 D|020340083 008784777 +000000614 000507940 000454434 D|014903473 082926548 +000000614 000517362 000455853 D|027204707 066129649 +000000614 000528900 000470038 D|072662445 055958929 +000000614 000533239 000502222 D|030851172 062218791 +000000614 000540192 000512577 D|023303894 099649344 +000000614 000547563 000555684 D|004318829 085194399 +000000614 000560586 000613915 D|056594838 034994489 +000000614 000561969 000649610 D|083164512 049631420 +000000614 000571009 000729622 D|098430384 085139570 +000000614 000589518 000751755 D|060487733 061331699 +000000614 000595149 000753939 D|070476366 034220615 +000000614 000635761 000763690 D|067933549 051667828 +000000614 000638319 000772269 D|091993996 070385474 +000000614 000644550 000775794 D|043495460 093068474 +000000614 000647806 000788853 D|092517096 082501598 +000000614 000680341 000794737 D|074553136 014318202 +000000614 000733614 000805267 D|071134214 076169819 +000000614 000767989 000878962 D|032469614 084035740 +000000614 000802031 000909147 D|014318576 045126042 +000000614 000817542 000915239 D|071857522 063419923 +000000614 000871392 000927854 D|002259950 053937592 +000000614 000883464 000962337 D|035329255 052852397 +000000614 000971220 000972790 D|018199495 035570485 +000000615 000000705 000021189 D|024628065 004906495 +000000615 000027663 000038483 D|081113087 060138307 +000000615 000092129 000041182 D|028217850 007287298 +000000615 000116081 000055499 D|092115289 045769494 +000000615 000124112 000058385 D|052175330 024632524 +000000615 000129934 000066457 D|097436767 066134548 +000000615 000146001 000077327 D|064774351 010558304 +000000615 000152769 000098710 D|033601700 002497113 +000000615 000190934 000121178 D|017955606 042802489 +000000615 000198234 000136442 D|027880501 078650333 +000000615 000201112 000153046 D|006462039 028248731 +000000615 000214330 000183420 D|021852250 042000791 +000000615 000270992 000208880 D|057687316 097497568 +000000615 000278405 000231919 D|040018100 042989482 +000000615 000279048 000245349 D|003277054 052515512 +000000615 000289220 000269582 D|071965774 087100236 +000000615 000334819 000306335 D|080840331 077157160 +000000615 000378684 000355990 D|013549483 085524920 +000000615 000383007 000356296 D|064086726 062865900 +000000615 000408228 000399287 D|070885333 063364692 +000000615 000410606 000399868 D|027788941 076261598 +000000615 000414699 000406329 D|029934263 068179102 +000000615 000421968 000409617 D|042180749 075154808 +000000615 000463099 000464145 D|015217180 075119695 +000000615 000492484 000468274 D|078435444 053456616 +000000615 000504537 000490807 D|055595394 045246329 +000000615 000515332 000518840 D|063070704 017079374 +000000615 000529101 000527192 D|057533443 080422544 +000000615 000536102 000540085 D|003554605 025909298 +000000615 000557766 000595012 D|051883527 076412512 +000000615 000573229 000596693 D|095097586 080261187 +000000615 000576555 000599266 D|054361985 023108539 +000000615 000592711 000636208 D|070204396 031446132 +000000615 000600296 000664666 D|019422783 003412823 +000000615 000609283 000675883 D|060720612 055646368 +000000615 000615968 000685158 D|038026824 035902408 +000000615 000627625 000715587 D|017764655 066372412 +000000615 000634403 000715872 D|053295828 069182035 +000000615 000635020 000761921 D|092794118 004259312 +000000615 000668346 000766880 D|063465843 064458822 +000000615 000684612 000796404 D|062387433 084473207 +000000615 000716571 000813157 D|042583747 045672786 +000000615 000732113 000849699 D|096982500 040933279 +000000615 000816707 000864388 D|098264403 072798108 +000000615 000905599 000890198 D|019664394 099889212 +000000615 000933714 000892481 D|034891399 013488090 +000000615 000965104 000938341 D|068168834 092910669 +000000615 000974973 000945798 D|018389616 038314506 +000000615 000989761 000965047 D|071809449 027015402 +000000615 000990587 000981699 D|007569030 049228702 +000000616 000015958 000010037 D|009680589 070824419 +000000616 000067435 000042376 D|033533896 065644178 +000000616 000074484 000044619 D|037907682 043709181 +000000616 000102536 000086903 D|002826633 000152375 +000000616 000116665 000132636 D|087046032 025173692 +000000616 000131319 000147354 D|012290918 073277181 +000000616 000145376 000210972 D|013381486 011877497 +000000616 000175723 000246067 D|082124961 002096449 +000000616 000184835 000276070 D|006812392 001804369 +000000616 000206711 000293148 D|036131144 079681377 +000000616 000213030 000298093 D|021188938 099257651 +000000616 000217359 000318104 D|024245867 084019794 +000000616 000221747 000326233 D|096352511 092900823 +000000616 000308465 000339592 D|000143166 045623646 +000000616 000325668 000353333 D|014967252 091987152 +000000616 000344312 000357785 D|055505158 052265478 +000000616 000353088 000371013 D|030460379 080586657 +000000616 000373408 000390871 D|031467532 050508376 +000000616 000392454 000399461 D|080646204 021529287 +000000616 000400256 000413921 D|011956178 097143916 +000000616 000417159 000416716 D|054075949 047508757 +000000616 000421363 000472113 D|011787574 049011765 +000000616 000463504 000506821 D|012955313 099854756 +000000616 000470001 000523896 D|033550087 054902674 +000000616 000472708 000567615 D|038887518 002001933 +000000616 000481711 000568282 D|085432379 086590584 +000000616 000503188 000569465 D|062177598 044366838 +000000616 000551134 000588613 D|052408292 053767119 +000000616 000565099 000616079 D|067308715 052619075 +000000616 000600838 000624728 D|033155789 058014429 +000000616 000613381 000628788 D|097289075 040593887 +000000616 000641939 000645702 D|007741453 038114435 +000000616 000685725 000646264 D|056210889 025883762 +000000616 000703076 000648302 D|085837489 036245665 +000000616 000780211 000662170 D|092180858 055808566 +000000616 000781344 000682443 D|068936479 090523155 +000000616 000800792 000710016 D|004386879 054970118 +000000616 000810378 000712623 D|017497261 054120746 +000000616 000814128 000716579 D|015797161 077543898 +000000616 000826168 000735410 D|050657278 027275133 +000000616 000840085 000767488 D|072474494 097834445 +000000616 000843168 000781660 D|003464516 094085535 +000000616 000866205 000789079 D|052248162 030593907 +000000616 000895796 000826354 D|048124201 047799705 +000000616 000921265 000830114 D|084570086 069180645 +000000616 000939959 000875360 D|024343473 016975020 +000000616 000942972 000880071 D|042401363 056844638 +000000616 000950120 000910248 D|089036206 018897036 +000000616 000971186 000916934 D|004590798 052833014 +000000616 000987120 000922899 D|009151362 048213417 +000000617 000046332 000014589 D|022394412 057681270 +000000617 000071760 000022073 D|049732654 089006218 +000000617 000082620 000059882 D|030261361 095490197 +000000617 000097131 000100921 D|042574533 058618904 +000000617 000135739 000139235 D|088638092 062172474 +000000617 000153437 000190276 D|061705927 082503022 +000000617 000177888 000203774 D|000460456 021267046 +000000617 000177906 000263764 D|024724067 085190683 +000000617 000183284 000264910 D|049332662 070399688 +000000617 000186636 000273370 D|050662507 092204066 +000000617 000230000 000276435 D|006072828 081834534 +000000617 000251193 000304682 D|033756242 069326364 +000000617 000263139 000344249 D|094181365 005696607 +000000617 000267873 000359179 D|012460418 067479474 +000000617 000271133 000365649 D|046204430 041314399 +000000617 000278389 000365754 D|044108556 081661325 +000000617 000294880 000367401 D|015785797 006256666 +000000617 000337359 000408817 D|079562392 059457310 +000000617 000360843 000418951 D|070733234 053572215 +000000617 000370213 000430005 D|021973919 048863648 +000000617 000396472 000434638 D|023972808 088811084 +000000617 000421631 000435349 D|080281252 088478488 +000000617 000476001 000464961 D|097107704 084820762 +000000617 000495108 000489788 D|062977776 088252281 +000000617 000502654 000495515 D|022874811 089135086 +000000617 000525895 000540311 D|062511962 093216951 +000000617 000527001 000545741 D|032950526 037884453 +000000617 000581557 000580977 D|094477372 061356835 +000000617 000586389 000590195 D|083380732 020250909 +000000617 000587774 000591623 D|032422170 025819751 +000000617 000616640 000644580 D|023653393 075465857 +000000617 000638625 000644596 D|027174716 074674488 +000000617 000667459 000656076 D|002605633 036525781 +000000617 000691607 000661054 D|027314436 083660447 +000000617 000703804 000685323 D|066898951 002410236 +000000617 000734263 000690045 D|040844402 037342638 +000000617 000742889 000698873 D|054039830 067426135 +000000617 000774725 000710748 D|015695555 071913716 +000000617 000776517 000741232 D|008399436 078528259 +000000617 000809493 000744282 D|054626914 048987588 +000000617 000844714 000809850 D|065598190 043045619 +000000617 000852665 000837168 D|015805648 047523966 +000000617 000855841 000855645 D|001264259 036541428 +000000617 000886287 000870482 D|067648636 097870702 +000000617 000889309 000896577 D|095131899 048280559 +000000617 000916501 000922459 D|053253585 087176428 +000000617 000918549 000942802 D|015776858 021933332 +000000617 000919535 000952135 D|005157276 089572863 +000000617 000975308 000969043 D|012331346 059114707 +000000617 000993993 000987596 D|003169385 006332408 +000000618 000002589 000041906 D|052087310 005756673 +000000618 000008077 000081400 D|080369280 024718110 +000000618 000013184 000087423 D|049615485 001357742 +000000618 000034946 000157441 D|025881352 058819750 +000000618 000116545 000158685 D|058275674 047458146 +000000618 000141272 000165726 D|010468883 097250398 +000000618 000151695 000166929 D|090279244 036101821 +000000618 000155744 000196165 D|030926039 085380710 +000000618 000167302 000218076 D|016783776 022018661 +000000618 000180657 000227050 D|078150482 072070784 +000000618 000249017 000229884 D|083110815 034647094 +000000618 000272854 000245968 D|022622806 012727575 +000000618 000296554 000247534 D|003703717 040134890 +000000618 000323774 000267292 D|045627168 081410451 +000000618 000324626 000318261 D|004814917 071402806 +000000618 000421463 000335726 D|038413073 045602149 +000000618 000443000 000349001 D|072160902 012018032 +000000618 000453209 000353316 D|020246105 004243768 +000000618 000459352 000360166 D|018591851 020762060 +000000618 000487675 000361932 D|066317684 054712248 +000000618 000507846 000365871 D|012787768 075045508 +000000618 000516869 000377492 D|082278858 095386799 +000000618 000532827 000410901 D|046955958 061556125 +000000618 000537766 000422704 D|075450710 005737432 +000000618 000587992 000427239 D|013541174 059741502 +000000618 000590790 000429314 D|028953356 021342919 +000000618 000602221 000438792 D|092807576 067335658 +000000618 000632994 000506689 D|063557215 011165843 +000000618 000636982 000553347 D|008001107 064127951 +000000618 000668689 000553427 D|046892570 032752035 +000000618 000683438 000583240 D|035635902 066027614 +000000618 000699925 000599359 D|018217516 045943534 +000000618 000706446 000639240 D|071629776 098498198 +000000618 000709897 000654671 D|027048467 057704955 +000000618 000725784 000672635 D|010474045 097136756 +000000618 000738421 000677468 D|013597351 041668333 +000000618 000767185 000746888 D|028815174 072224562 +000000618 000792894 000752769 D|000113360 000276214 +000000618 000828186 000755280 D|027622306 086171452 +000000618 000835064 000770785 D|029981150 069563112 +000000618 000860809 000808845 D|048748645 069207118 +000000618 000882809 000820831 D|085068113 064996189 +000000618 000935083 000848077 D|032829456 063634305 +000000618 000939443 000857179 D|004123863 005561508 +000000618 000958862 000866339 D|051772571 025699654 +000000618 000974487 000947300 D|097867094 003284468 +000000618 000982698 000959195 D|031373019 065286809 +000000618 000984838 000964909 D|013144859 065832907 +000000618 000990182 000966826 D|005815439 058202478 +000000618 000993935 000983050 D|083144766 085384554 +000000619 000000743 000023928 D|067624740 099299915 +000000619 000010816 000062656 D|080492624 035886819 +000000619 000018407 000068815 D|063121118 038755786 +000000619 000022769 000101447 D|039803725 068099630 +000000619 000032373 000133756 D|077735485 063907239 +000000619 000039176 000144287 D|017328811 002062558 +000000619 000048006 000174955 D|060525150 036310005 +000000619 000110983 000186044 D|055637026 083278079 +000000619 000207572 000204538 D|004597160 021675356 +000000619 000242565 000263266 D|082785584 062744063 +000000619 000260700 000266309 D|090361067 012137406 +000000619 000271656 000267866 D|091520642 040769695 +000000619 000287843 000323046 D|010856229 082863873 +000000619 000289792 000328028 D|089637548 014492806 +000000619 000294029 000352811 D|073141864 079950232 +000000619 000296988 000370372 D|084144277 070083877 +000000619 000314214 000406776 D|086158293 075875381 +000000619 000329093 000424975 D|075800363 075175032 +000000619 000429470 000476320 D|018522675 006546713 +000000619 000479011 000477150 D|068112123 064893494 +000000619 000492231 000482995 D|018494524 035319612 +000000619 000497980 000491930 D|057755736 052023731 +000000619 000516273 000527539 D|053708077 014299959 +000000619 000550249 000542245 D|096574304 043956110 +000000619 000591751 000553955 D|082379449 032840630 +000000619 000594371 000638072 D|047928899 043188740 +000000619 000598317 000638587 D|074816825 075824649 +000000619 000605690 000678674 D|010743953 021315857 +000000619 000629933 000705568 D|080203273 033931580 +000000619 000637542 000734260 D|060485688 099841924 +000000619 000652056 000778524 D|067137141 096509095 +000000619 000674793 000780907 D|026402775 059040937 +000000619 000685495 000806236 D|075753229 088334460 +000000619 000695732 000813698 D|058839729 066730269 +000000619 000702076 000817051 D|084133892 054390448 +000000619 000705939 000837028 D|019607754 050864906 +000000619 000711626 000841708 D|082544104 013499580 +000000619 000714873 000849209 D|056649548 084047242 +000000619 000720557 000857154 D|045429947 092880540 +000000619 000738736 000866641 D|082111458 078294863 +000000619 000775884 000867924 D|066868096 097883832 +000000619 000832532 000871932 D|040722268 089693686 +000000619 000850323 000872945 D|003568536 048089618 +000000619 000851797 000890208 D|033913927 052055223 +000000619 000907160 000891675 D|017841863 007419856 +000000619 000942848 000899484 D|015818954 033056481 +000000619 000952509 000959246 D|093787003 040593778 +000000619 000963364 000976949 D|076482268 052185380 +000000619 000974749 000981710 D|049782097 061233016 +000000619 000992629 000991888 D|027379706 074437376 +000000620 000043533 000003794 D|037480342 075773024 +000000620 000054275 000039430 D|061269450 074808291 +000000620 000062661 000040909 D|001698236 038185929 +000000620 000129583 000051531 D|098562318 076635385 +000000620 000142501 000083481 D|072656952 040431436 +000000620 000157315 000119298 D|027544230 026256398 +000000620 000165193 000204699 D|048943908 063890180 +000000620 000188142 000221654 D|093733660 023888200 +000000620 000194248 000228876 D|027036068 062623842 +000000620 000248679 000240520 D|028267838 006088043 +000000620 000265037 000250561 D|046300675 072134839 +000000620 000325670 000261503 D|083465407 030010197 +000000620 000329087 000314276 D|056917348 098127851 +000000620 000343307 000337055 D|090586622 087117521 +000000620 000375014 000356113 D|056832820 035546557 +000000620 000384779 000360879 D|073709406 098878410 +000000620 000386092 000368778 D|022021387 050798023 +000000620 000401221 000383493 D|038399882 061982506 +000000620 000405534 000402779 D|010890449 067720079 +000000620 000424370 000418464 D|041151526 019709593 +000000620 000448929 000428519 D|002445472 095517327 +000000620 000458776 000445396 D|087116814 003186818 +000000620 000467628 000449468 D|097378982 050029564 +000000620 000477015 000451866 D|012791321 096098981 +000000620 000478554 000474194 D|065389310 059479799 +000000620 000506857 000508355 D|019109050 087716309 +000000620 000517141 000513343 D|018284767 015636001 +000000620 000530807 000539896 D|022193237 079229240 +000000620 000546682 000562700 D|029043381 035641536 +000000620 000552004 000578855 D|060729305 017649365 +000000620 000560774 000585080 D|084126110 060390038 +000000620 000564339 000585904 D|027406681 013814457 +000000620 000627272 000610353 D|004276416 097347347 +000000620 000657171 000640969 D|050130716 064275040 +000000620 000681024 000662813 D|094188310 028621171 +000000620 000682599 000720172 D|087513746 012245877 +000000620 000700941 000733943 D|077616253 010114828 +000000620 000714205 000767975 D|081604061 056744583 +000000620 000718527 000786525 D|047659944 084022547 +000000620 000738022 000829506 D|086681362 080991365 +000000620 000745540 000876421 D|008877542 074128809 +000000620 000756216 000888752 D|055277518 084981221 +000000620 000804465 000891002 D|099005427 066764397 +000000620 000814616 000901159 D|070697463 067226525 +000000620 000860206 000920536 D|092176576 058026373 +000000620 000877610 000942280 D|061959641 029573644 +000000620 000879275 000954489 D|099534226 035349468 +000000620 000907483 000955153 D|022098247 028158713 +000000620 000931125 000978926 D|095155154 002700223 +000000620 000953668 000990822 D|035074845 083313107 +000000621 000020904 000043114 D|022913025 049151130 +000000621 000029388 000100716 D|075026042 007692467 +000000621 000031810 000124131 D|043120178 086287787 +000000621 000038580 000141741 D|005107897 098355906 +000000621 000038814 000152394 D|084973131 058271356 +000000621 000057498 000182615 D|075387139 003838707 +000000621 000068974 000183808 D|089067732 028186395 +000000621 000078753 000198154 D|037246149 002392843 +000000621 000120422 000211807 D|067078910 081626237 +000000621 000158268 000216828 D|093622826 010175498 +000000621 000203660 000260031 D|009960648 048435330 +000000621 000242136 000310004 D|092419919 092200235 +000000621 000312334 000310064 D|016252957 088313412 +000000621 000330141 000342433 D|018925433 084778546 +000000621 000364972 000347521 D|088815449 029706128 +000000621 000372598 000350012 D|061079818 016410391 +000000621 000438361 000365265 D|098517343 096157125 +000000621 000439658 000430458 D|078080789 041896504 +000000621 000450922 000433805 D|031081332 095414313 +000000621 000456084 000434388 D|099699585 040804937 +000000621 000456713 000465274 D|005380179 047150484 +000000621 000459545 000465700 D|028594098 068749454 +000000621 000481988 000469568 D|084730388 051995055 +000000621 000496893 000486896 D|028669236 016430187 +000000621 000511419 000495965 D|057243920 031917061 +000000621 000526547 000519236 D|057641813 007099255 +000000621 000528336 000520358 D|058165972 028431181 +000000621 000528967 000526684 D|012746298 032137885 +000000621 000568841 000534503 D|086054830 036522956 +000000621 000595589 000564747 D|091181376 012827985 +000000621 000614521 000568102 D|060277914 096541019 +000000621 000624447 000578719 D|040329102 049249361 +000000621 000640931 000605665 D|080967522 098604957 +000000621 000663046 000622355 D|035663198 061620809 +000000621 000664044 000624643 D|061553201 014803138 +000000621 000737418 000644206 D|016113987 014872687 +000000621 000802397 000673537 D|049739982 014907369 +000000621 000803990 000701270 D|094803323 078555517 +000000621 000816389 000746225 D|046187100 028104688 +000000621 000818988 000764057 D|061692857 008266516 +000000621 000822655 000785452 D|068890239 097754201 +000000621 000835322 000795180 D|077318509 025743091 +000000621 000924500 000801242 D|044500509 040949835 +000000621 000926819 000850204 D|094886008 088809344 +000000621 000932277 000883062 D|030742493 097216339 +000000621 000935850 000930652 D|072319546 010357265 +000000621 000941562 000930679 D|067972389 031895779 +000000621 000950585 000938872 D|095868495 030373690 +000000621 000969791 000994978 D|057163489 052088066 +000000621 000984178 000999052 D|073541650 022396328 +000000622 000007869 000033280 D|000026166 052673220 +000000622 000025368 000040967 D|056692755 008055824 +000000622 000027057 000044372 D|074541071 048177788 +000000622 000042197 000050055 D|065953640 072105984 +000000622 000103823 000055887 D|036258738 042358404 +000000622 000150059 000073965 D|038528595 054009714 +000000622 000173566 000097817 D|063955892 098920665 +000000622 000193847 000116748 D|079302385 083090612 +000000622 000209132 000131607 D|096682417 037703550 +000000622 000223961 000150565 D|030392513 084714419 +000000622 000229078 000234191 D|087610255 080904569 +000000622 000247123 000239891 D|006078037 000299358 +000000622 000247774 000272255 D|021977457 067057204 +000000622 000247914 000274993 D|012506755 094201263 +000000622 000267263 000285129 D|058708979 083645989 +000000622 000288485 000298925 D|033760263 083501087 +000000622 000405885 000299499 D|046871363 016491061 +000000622 000420638 000302394 D|054730823 029508070 +000000622 000423633 000348296 D|097413886 036646826 +000000622 000423928 000375721 D|033751374 044508608 +000000622 000445104 000375924 D|062802994 094261608 +000000622 000455318 000390196 D|019646396 009736797 +000000622 000511788 000395252 D|069522926 066773836 +000000622 000513706 000407062 D|038138317 086515746 +000000622 000517840 000441645 D|066019008 071461613 +000000622 000532590 000446463 D|048847005 099469644 +000000622 000565419 000492583 D|051935747 015979771 +000000622 000567403 000537400 D|050874744 091868161 +000000622 000590744 000559433 D|021508012 048631980 +000000622 000606649 000569965 D|007140765 048036522 +000000622 000612131 000588361 D|097724758 055715260 +000000622 000644129 000601383 D|070580393 004105075 +000000622 000658271 000626611 D|031614436 074993193 +000000622 000659000 000635916 D|082404090 018048880 +000000622 000718767 000656443 D|015108723 015865541 +000000622 000719739 000670384 D|095833562 001007029 +000000622 000720605 000671815 D|009486231 041682647 +000000622 000789536 000707914 D|038677550 011485770 +000000622 000806236 000708125 D|081847588 080393356 +000000622 000808727 000716518 D|034785616 002671528 +000000622 000822565 000751896 D|062365584 011638344 +000000622 000826016 000765202 D|099278201 066897768 +000000622 000868244 000786957 D|034700596 078241080 +000000622 000872005 000791209 D|064779394 026138565 +000000622 000893407 000801161 D|094775972 077657654 +000000622 000913860 000819835 D|063043425 092090491 +000000622 000944386 000840726 D|023443818 038499852 +000000622 000958369 000893705 D|070858811 095512825 +000000622 000963601 000896817 D|019689160 047879282 +000000622 000963619 000994687 D|012435262 050554047 +000000623 000013981 000029255 D|086567773 020545166 +000000623 000041604 000033663 D|010115677 066079024 +000000623 000067204 000051653 D|097312022 099791901 +000000623 000084660 000059721 D|031865944 024325993 +000000623 000096682 000070609 D|083687638 039284227 +000000623 000112040 000099026 D|084261909 046419376 +000000623 000119273 000150036 D|072893448 058574774 +000000623 000132823 000160076 D|038673645 000273253 +000000623 000154774 000163316 D|065615532 065799471 +000000623 000157006 000180935 D|087074051 073551699 +000000623 000168302 000183993 D|085327236 096758859 +000000623 000190215 000190875 D|008237437 029976067 +000000623 000207270 000238254 D|031997179 014597267 +000000623 000210352 000243048 D|028062261 098380158 +000000623 000212283 000254064 D|020082603 023593015 +000000623 000232684 000269779 D|063930362 035497063 +000000623 000250807 000280156 D|014901808 003554749 +000000623 000280946 000304489 D|034644703 027563160 +000000623 000289585 000382913 D|016691296 047039926 +000000623 000298142 000385012 D|055790982 001628599 +000000623 000310251 000387877 D|039058360 019592083 +000000623 000317931 000388437 D|062824556 063077183 +000000623 000376083 000406356 D|065547882 049386706 +000000623 000383323 000408811 D|038882147 071009876 +000000623 000399557 000413633 D|001859025 074737745 +000000623 000416315 000431481 D|013368163 021098025 +000000623 000424697 000432038 D|053275472 078513802 +000000623 000435365 000440021 D|056370303 000785073 +000000623 000460555 000495421 D|060472046 047804956 +000000623 000498284 000531841 D|087728430 016888930 +000000623 000596349 000570958 D|024412674 004609623 +000000623 000602350 000584702 D|032518301 039996502 +000000623 000602859 000588046 D|000365025 098421815 +000000623 000612221 000642456 D|096811229 093141865 +000000623 000626911 000671508 D|043169429 008142135 +000000623 000640302 000674176 D|063544834 083267942 +000000623 000641757 000676688 D|048579300 093819920 +000000623 000647878 000689070 D|010862983 081766803 +000000623 000681983 000707234 D|071510289 035234228 +000000623 000685347 000761442 D|054166582 081739830 +000000623 000705990 000790022 D|047841862 078402856 +000000623 000734884 000791116 D|064552249 010758431 +000000623 000744366 000843471 D|091255493 098014882 +000000623 000760511 000916282 D|089205269 051843774 +000000623 000792049 000917186 D|065588036 021373234 +000000623 000800293 000925288 D|071339397 097681400 +000000623 000850026 000927335 D|039459507 050909100 +000000623 000875547 000963084 D|011775805 020201053 +000000623 000891803 000971268 D|015151017 075737703 +000000623 000947270 000975925 D|001371199 013162876 +000000624 000002389 000003432 D|007426270 059292509 +000000624 000007190 000017282 D|007660217 076221149 +000000624 000019575 000019970 D|006442822 068941959 +000000624 000087224 000090438 D|053781449 052264067 +000000624 000088045 000126735 D|068443994 012977222 +000000624 000123952 000149184 D|064360022 021635999 +000000624 000144854 000163061 D|097193613 016952518 +000000624 000172141 000216610 D|052855603 074449710 +000000624 000190675 000218842 D|001861663 015149211 +000000624 000212964 000267347 D|002622310 067070184 +000000624 000218288 000291291 D|058430884 002239762 +000000624 000267252 000320470 D|027102752 014821398 +000000624 000303751 000331675 D|086989181 065390692 +000000624 000318755 000334186 D|011720234 002985633 +000000624 000319948 000391510 D|098074561 070046056 +000000624 000332076 000399396 D|019808864 015491122 +000000624 000367207 000409036 D|031292350 083778626 +000000624 000376422 000440130 D|094952250 020112943 +000000624 000382093 000451442 D|060272895 048219034 +000000624 000406199 000461905 D|023257333 081384996 +000000624 000415949 000466708 D|027662951 089614884 +000000624 000478870 000473966 D|038769611 060974379 +000000624 000494345 000543661 D|049463392 038031029 +000000624 000504948 000567693 D|075107631 042917676 +000000624 000505492 000584064 D|011955514 097681661 +000000624 000514761 000595264 D|083103454 036241663 +000000624 000519525 000617746 D|012805569 020474227 +000000624 000551350 000633103 D|066426004 032854593 +000000624 000574271 000639347 D|065747718 085257737 +000000624 000609888 000640237 D|056623768 006187799 +000000624 000615005 000664423 D|015791476 013788001 +000000624 000690304 000682075 D|001417404 018355603 +000000624 000693246 000688478 D|023624072 096666300 +000000624 000698395 000689856 D|056513316 017910665 +000000624 000719939 000704522 D|079467877 090054542 +000000624 000741770 000712881 D|084953743 077351864 +000000624 000749568 000718920 D|067569714 069027781 +000000624 000781071 000724510 D|010038576 096893924 +000000624 000796800 000725144 D|046004777 010210203 +000000624 000804581 000735336 D|056649139 019394974 +000000624 000821150 000787444 D|090556600 009308860 +000000624 000845068 000813722 D|045357364 040798583 +000000624 000847120 000814739 D|022430670 014238597 +000000624 000848406 000834069 D|042868146 097921868 +000000624 000878317 000842511 D|063360165 070087591 +000000624 000892751 000851835 D|008487651 036918429 +000000624 000910397 000876486 D|022142101 075853276 +000000624 000976083 000908162 D|089186124 053699672 +000000624 000987016 000925279 D|095502292 031784790 +000000624 000990051 000994755 D|082649071 089676240 +000000625 000067654 000001403 D|014175667 097370639 +000000625 000110959 000015901 D|033793541 045163305 +000000625 000112409 000021251 D|034138341 024674995 +000000625 000124525 000051338 D|066356818 089478315 +000000625 000141553 000068656 D|059155514 029268455 +000000625 000166830 000069019 D|089576377 012531710 +000000625 000170960 000094772 D|098113864 022653956 +000000625 000178873 000103222 D|031561067 079470184 +000000625 000204233 000122191 D|065638946 089363139 +000000625 000211352 000130932 D|077809930 071694064 +000000625 000231867 000165184 D|029448665 042300323 +000000625 000276756 000182252 D|071702592 021772879 +000000625 000286844 000189253 D|001658155 042930391 +000000625 000301893 000189899 D|065473291 015847954 +000000625 000338117 000204318 D|022299151 089827495 +000000625 000339212 000213370 D|069139012 043677585 +000000625 000353886 000237262 D|042299800 029422383 +000000625 000357794 000263381 D|083719670 030916962 +000000625 000375526 000281491 D|051761588 095164399 +000000625 000378393 000298505 D|077672322 038894741 +000000625 000393294 000304033 D|056875204 025665730 +000000625 000409289 000315249 D|015810390 039760354 +000000625 000429016 000337733 D|066225792 052067541 +000000625 000443868 000343388 D|026446404 023145721 +000000625 000461001 000373336 D|054360178 000109517 +000000625 000482071 000376469 D|031142298 092647115 +000000625 000488870 000382551 D|093810085 040599134 +000000625 000494402 000393518 D|079774458 006600468 +000000625 000514055 000424257 D|061621791 093275551 +000000625 000535607 000454836 D|058825765 081052265 +000000625 000563931 000478721 D|062661374 080371880 +000000625 000632800 000521725 D|014755246 020049884 +000000625 000633977 000544550 D|085264288 020390975 +000000625 000634029 000551871 D|035171320 092868647 +000000625 000679450 000557614 D|069528133 026190643 +000000625 000690254 000736641 D|055113687 094875764 +000000625 000693705 000740346 D|078545835 033065753 +000000625 000727954 000742557 D|012198570 090186380 +000000625 000731073 000759825 D|002215146 052153287 +000000625 000767855 000768397 D|072329478 062505227 +000000625 000775207 000815908 D|036884295 046625654 +000000625 000790672 000817283 D|004952140 068520108 +000000625 000803035 000834138 D|086084273 079778260 +000000625 000806196 000889775 D|078842969 067042171 +000000625 000821464 000909245 D|083235347 050258450 +000000625 000851812 000915798 D|010310799 035184836 +000000625 000880744 000932361 D|091998459 085969117 +000000625 000903252 000958843 D|091675089 029470273 +000000625 000955293 000965330 D|069284275 085712092 +000000625 000993508 000976393 D|071583168 027654707 +000000626 000001583 000016602 D|019763377 040210078 +000000626 000036934 000038253 D|077807499 037288773 +000000626 000038164 000049154 D|072204516 034100288 +000000626 000075337 000062270 D|079264561 068584340 +000000626 000089718 000063778 D|056024068 039565100 +000000626 000098272 000131293 D|071242345 091086360 +000000626 000098808 000159241 D|039941600 009835140 +000000626 000100839 000168040 D|049266159 058790756 +000000626 000103608 000172299 D|092151915 096525643 +000000626 000155507 000193980 D|037471138 010434417 +000000626 000191478 000219032 D|046637662 041879682 +000000626 000209941 000233256 D|059521757 098489952 +000000626 000211197 000237000 D|035449991 060202791 +000000626 000260280 000250895 D|051562572 077700795 +000000626 000267629 000262774 D|090881051 063119588 +000000626 000282365 000277395 D|048416604 079738751 +000000626 000293960 000343397 D|082878325 026840945 +000000626 000315588 000356439 D|075683395 022414609 +000000626 000332673 000388565 D|098850708 044697756 +000000626 000339256 000392238 D|003479620 011727962 +000000626 000360133 000400222 D|061456844 046790982 +000000626 000365705 000420663 D|080401294 002179171 +000000626 000411852 000463229 D|065669977 062852376 +000000626 000413030 000465985 D|077647685 020842938 +000000626 000471064 000476746 D|043661208 014704695 +000000626 000473824 000515172 D|014941594 020757005 +000000626 000484207 000535094 D|059947446 014942103 +000000626 000511108 000580785 D|043198924 048671247 +000000626 000514280 000583560 D|068785018 097038074 +000000626 000593257 000583801 D|050123874 024507117 +000000626 000595119 000617679 D|095757082 061528058 +000000626 000599361 000654373 D|090578358 085770437 +000000626 000618045 000659896 D|092220462 051095926 +000000626 000637259 000677926 D|092156787 052396850 +000000626 000663299 000682487 D|048235682 008603897 +000000626 000682859 000690055 D|046422165 061664985 +000000626 000712475 000721663 D|008485030 074750664 +000000626 000746780 000728254 D|053461476 013723633 +000000626 000749694 000744821 D|098750841 008813015 +000000626 000762104 000756979 D|023641568 034004939 +000000626 000777136 000833555 D|035958749 051326971 +000000626 000802229 000838245 D|001451693 093148858 +000000626 000817205 000855391 D|025091552 089978249 +000000626 000832240 000911215 D|082041721 052050788 +000000626 000835171 000920303 D|090153277 052038410 +000000626 000843639 000932032 D|090670001 070660370 +000000626 000852882 000936193 D|086046062 095775974 +000000626 000881394 000939637 D|080856578 024749483 +000000626 000901724 000955659 D|062716868 016882957 +000000626 000968962 000994105 D|039973088 011306366 +000000627 000004000 000000605 D|015006964 055622825 +000000627 000044521 000039841 D|016067895 069681531 +000000627 000075336 000113010 D|035524244 060298007 +000000627 000076767 000116276 D|014815739 043797507 +000000627 000120084 000177189 D|021149722 068036560 +000000627 000129526 000205297 D|020251715 067259322 +000000627 000154021 000222025 D|078850343 062652334 +000000627 000154899 000247662 D|092933193 098734088 +000000627 000160373 000269053 D|067541830 053891232 +000000627 000173869 000279639 D|086677909 005418094 +000000627 000191569 000287769 D|033336952 041249283 +000000627 000200850 000317741 D|095721133 036019344 +000000627 000200982 000324892 D|074025100 015555533 +000000627 000206266 000328730 D|085797431 010780979 +000000627 000220308 000331667 D|082577134 084757118 +000000627 000254570 000360485 D|087145396 036389744 +000000627 000256018 000366585 D|051901229 087358061 +000000627 000278362 000402495 D|024652539 095908908 +000000627 000302360 000410526 D|028212131 053565898 +000000627 000319649 000424821 D|063663130 088662766 +000000627 000357398 000430076 D|035186471 026264108 +000000627 000437668 000503359 D|007439365 070084358 +000000627 000507636 000508372 D|079037950 071159932 +000000627 000545326 000510607 D|010095733 081574781 +000000627 000551328 000521919 D|064868254 000427910 +000000627 000553704 000538642 D|023817758 015960831 +000000627 000556008 000547286 D|000062882 067686189 +000000627 000629179 000556040 D|084297130 054008612 +000000627 000659145 000563588 D|001186909 000668179 +000000627 000672591 000583995 D|096593915 095476918 +000000627 000672767 000590453 D|003363986 008022111 +000000627 000673712 000604707 D|039171509 016655995 +000000627 000674315 000627878 D|002798599 031814000 +000000627 000679684 000651204 D|085699156 005728112 +000000627 000680723 000674950 D|003217449 086345594 +000000627 000699089 000736971 D|094893207 047092250 +000000627 000704635 000744848 D|005478848 074635168 +000000627 000723568 000770887 D|019933955 016823224 +000000627 000741283 000785417 D|052728244 031381020 +000000627 000754506 000803938 D|031776451 089672735 +000000627 000758630 000834285 D|086122203 021082955 +000000627 000795515 000839490 D|007605943 057867953 +000000627 000798853 000881455 D|086834256 077303399 +000000627 000805467 000885251 D|082404735 072665233 +000000627 000832683 000892242 D|053036633 023248728 +000000627 000833745 000913459 D|026744828 007469945 +000000627 000839114 000935465 D|014166902 076529738 +000000627 000878488 000935803 D|024779145 098364419 +000000627 000902225 000974014 D|084525764 051281532 +000000627 000989170 000979754 D|057110786 082591750 +000000628 000031964 000034918 D|003911476 084643365 +000000628 000043186 000040146 D|068317162 077600260 +000000628 000051281 000066639 D|065739560 071862319 +000000628 000058761 000068743 D|099259166 016258638 +000000628 000123341 000077095 D|068202769 082904007 +000000628 000129386 000085253 D|025382925 083057056 +000000628 000142463 000110686 D|041206154 015908523 +000000628 000188385 000137512 D|036825024 035673276 +000000628 000194551 000144202 D|055219262 070290835 +000000628 000210497 000164730 D|086431113 058721429 +000000628 000221662 000187960 D|003257608 019978293 +000000628 000230022 000199901 D|084950353 074473174 +000000628 000251330 000226180 D|015929864 073906305 +000000628 000298936 000260310 D|004694089 045669716 +000000628 000308904 000279255 D|025984940 052209464 +000000628 000336247 000284625 D|044901139 068721784 +000000628 000341255 000328331 D|071016479 093464549 +000000628 000345782 000368715 D|015938273 089016368 +000000628 000418022 000404911 D|031122061 046252833 +000000628 000418977 000459217 D|013366472 085428815 +000000628 000438081 000491683 D|082292339 055800051 +000000628 000507856 000497085 D|071688873 098110718 +000000628 000536529 000505172 D|008526895 012224758 +000000628 000580790 000517351 D|048206790 056298080 +000000628 000620054 000592498 D|075341660 029574595 +000000628 000649245 000595960 D|081429226 094446378 +000000628 000649773 000611472 D|009799659 010119381 +000000628 000653953 000617789 D|036862083 020492206 +000000628 000686666 000678894 D|060046910 046944921 +000000628 000704419 000682900 D|061880977 095967705 +000000628 000713164 000683433 D|057839538 044825372 +000000628 000758785 000697377 D|025880913 040628317 +000000628 000763887 000727067 D|062688836 025467910 +000000628 000772765 000774624 D|049762411 088833926 +000000628 000774818 000775066 D|045749626 056613419 +000000628 000792679 000785177 D|074495079 018770624 +000000628 000809288 000806651 D|040500452 025376992 +000000628 000813122 000807625 D|083680765 016019321 +000000628 000850877 000832924 D|038172315 097900297 +000000628 000862620 000835418 D|009016036 094597773 +000000628 000880713 000860879 D|062819704 019793790 +000000628 000884504 000864582 D|045826958 073621574 +000000628 000890505 000870360 D|048494329 019730341 +000000628 000896896 000901370 D|033864275 082798324 +000000628 000913620 000916569 D|011528386 097783979 +000000628 000954274 000931309 D|075711888 016784098 +000000628 000957124 000954350 D|049883851 070444806 +000000628 000970044 000962469 D|072915736 005611036 +000000628 000976388 000980699 D|016975595 065030291 +000000628 000983684 000982838 D|074849822 030004776 +000000629 000013968 000065041 D|071551758 071565413 +000000629 000016216 000091308 D|049092240 066777805 +000000629 000034648 000124936 D|098029805 089956460 +000000629 000044595 000140476 D|014502424 027960780 +000000629 000055487 000155256 D|060596636 098906232 +000000629 000079628 000166323 D|057918381 059814026 +000000629 000149359 000172335 D|038726925 027168483 +000000629 000160102 000174180 D|001675551 034312896 +000000629 000166836 000256601 D|080768281 032276560 +000000629 000174483 000292680 D|055250564 069769220 +000000629 000187834 000308799 D|016094331 033113714 +000000629 000214100 000325405 D|088911338 029737814 +000000629 000224606 000363092 D|051801081 054725723 +000000629 000256490 000381202 D|005484072 016917951 +000000629 000271124 000381491 D|095809678 026534324 +000000629 000303697 000389920 D|041764106 047212740 +000000629 000374915 000390861 D|073302813 062500729 +000000629 000423453 000426926 D|080788346 024991870 +000000629 000427369 000463654 D|015317067 089219176 +000000629 000451285 000489314 D|026415879 027179495 +000000629 000454714 000501586 D|099273020 029929598 +000000629 000461305 000506195 D|063110592 091602491 +000000629 000470886 000535892 D|045546904 090038034 +000000629 000473246 000541318 D|046814538 092168702 +000000629 000477570 000541488 D|018307527 077216516 +000000629 000494058 000564531 D|013651563 050133653 +000000629 000543927 000567450 D|027724974 043720750 +000000629 000573590 000582666 D|095447956 067407495 +000000629 000599718 000606351 D|047419828 098605810 +000000629 000613923 000621961 D|034154092 013551578 +000000629 000614269 000628520 D|043515389 076666352 +000000629 000659449 000630548 D|047979713 078504882 +000000629 000672577 000666170 D|000122175 026363169 +000000629 000686676 000666324 D|054688948 008590543 +000000629 000714987 000709307 D|026042867 008981743 +000000629 000739146 000717881 D|022501819 092228116 +000000629 000754486 000719476 D|013309494 078156778 +000000629 000774854 000728390 D|043255522 088244156 +000000629 000777557 000751136 D|041426360 097271893 +000000629 000790654 000758904 D|048811652 008267761 +000000629 000845014 000760720 D|055865803 039510595 +000000629 000865526 000778922 D|068779165 013917775 +000000629 000886526 000797135 D|075234421 021057210 +000000629 000900178 000805856 D|046802531 023379175 +000000629 000907600 000813113 D|029629357 013540587 +000000629 000911876 000821180 D|015122958 040849885 +000000629 000915222 000824679 D|050304743 092724825 +000000629 000924672 000893427 D|000830292 097524048 +000000629 000968292 000982579 D|084409337 092104309 +000000629 000989015 000990394 D|088968602 023584874 +000000630 000038806 000019050 D|052876733 038332205 +000000630 000084675 000069712 D|080807629 011160551 +000000630 000132332 000098627 D|041862989 030246318 +000000630 000158026 000105693 D|006003005 011265489 +000000630 000186827 000111415 D|068144308 026090541 +000000630 000200898 000114958 D|055664742 024473999 +000000630 000225810 000130148 D|069046580 074974684 +000000630 000241451 000138057 D|003661620 044707518 +000000630 000254021 000149486 D|081901365 028294081 +000000630 000265564 000151660 D|087939787 094283599 +000000630 000266115 000181159 D|014715515 062823150 +000000630 000293024 000188269 D|096497044 090192201 +000000630 000303219 000217132 D|045252787 023818271 +000000630 000334424 000240686 D|004179453 076644661 +000000630 000370494 000251784 D|041919029 029408277 +000000630 000388495 000266530 D|016557009 020048749 +000000630 000426079 000273152 D|059251524 082092654 +000000630 000442208 000286473 D|097702040 060900943 +000000630 000443564 000371665 D|035113255 036956427 +000000630 000446307 000377760 D|000795376 017983490 +000000630 000467179 000386865 D|025782121 021375653 +000000630 000468074 000418840 D|077686717 011459920 +000000630 000487138 000423232 D|073331604 087179240 +000000630 000517333 000435559 D|077977540 071195510 +000000630 000545630 000443382 D|015610985 073171180 +000000630 000552782 000485294 D|082528962 081560646 +000000630 000555245 000513963 D|020771353 006489972 +000000630 000557271 000519864 D|092362840 083723112 +000000630 000573959 000525303 D|069104961 015932942 +000000630 000583801 000533639 D|084878816 001688855 +000000630 000587109 000543061 D|079994960 004130767 +000000630 000599836 000608718 D|095217032 023606635 +000000630 000645362 000647440 D|047162583 077032208 +000000630 000647839 000668258 D|058402903 066120206 +000000630 000677756 000693431 D|086983610 019813675 +000000630 000722383 000711950 D|058196266 052540352 +000000630 000747419 000720269 D|073351980 022602141 +000000630 000759963 000782534 D|033932938 036404790 +000000630 000766677 000786455 D|016094933 018856269 +000000630 000775232 000804020 D|003643544 010018535 +000000630 000811292 000830582 D|082347656 038962381 +000000630 000828026 000839672 D|080250028 033094253 +000000630 000846333 000861377 D|062180267 096149625 +000000630 000859122 000886367 D|021902024 025013256 +000000630 000889386 000890848 D|035010410 046499713 +000000630 000891822 000911873 D|064152495 040873243 +000000630 000943523 000925918 D|008461047 021734837 +000000630 000964137 000931238 D|077907733 007076209 +000000630 000975159 000936209 D|011647907 031330174 +000000630 000981242 000960714 D|070006308 094947496 +000000631 000001193 000047040 D|028795272 030381141 +000000631 000004133 000067679 D|001937488 018406163 +000000631 000015709 000078762 D|003605570 045318948 +000000631 000022456 000089955 D|080341366 094804206 +000000631 000049356 000100002 D|096543878 054130426 +000000631 000089759 000113065 D|092862461 028945461 +000000631 000100503 000115407 D|014229000 074260648 +000000631 000142559 000116475 D|099590939 091836940 +000000631 000197729 000125331 D|021500320 006539478 +000000631 000204789 000169840 D|088969474 015345126 +000000631 000216065 000174617 D|024199328 044764543 +000000631 000219161 000180387 D|055736114 016209546 +000000631 000220152 000194731 D|085143148 025366068 +000000631 000222565 000221891 D|012400627 024845567 +000000631 000254314 000230435 D|067497099 000783097 +000000631 000259924 000245881 D|056879014 063252597 +000000631 000268392 000270948 D|031481923 026616264 +000000631 000302556 000300515 D|040896545 077796222 +000000631 000333515 000301405 D|070343674 016214100 +000000631 000335101 000307553 D|077005240 092095146 +000000631 000388839 000360307 D|080866556 071147384 +000000631 000407528 000407065 D|093345746 094325536 +000000631 000411161 000450734 D|070798121 058899530 +000000631 000422884 000489064 D|001872952 025472174 +000000631 000428197 000556120 D|085609914 043550106 +000000631 000446961 000559878 D|056883958 092427858 +000000631 000452432 000566518 D|009582416 051862181 +000000631 000494726 000568082 D|011586898 057306183 +000000631 000514789 000573209 D|064463504 008106185 +000000631 000518067 000597206 D|058720392 036932013 +000000631 000518732 000597911 D|057585116 008144552 +000000631 000531210 000617956 D|050403545 008634581 +000000631 000545907 000650896 D|008090663 033028529 +000000631 000550848 000724185 D|036914224 070382216 +000000631 000558243 000729063 D|004171770 087649860 +000000631 000584420 000734113 D|012063958 084153204 +000000631 000601134 000736298 D|055548443 099730318 +000000631 000623159 000741926 D|018135360 020354516 +000000631 000629081 000774031 D|061387861 093459361 +000000631 000646041 000807068 D|017699222 077916352 +000000631 000659459 000815189 D|013964844 071086429 +000000631 000707672 000846190 D|093054880 064379216 +000000631 000751388 000866231 D|021536938 088041700 +000000631 000787424 000891879 D|098155123 013657106 +000000631 000789369 000901572 D|044191427 018966982 +000000631 000799261 000916227 D|045865242 076666457 +000000631 000821741 000937631 D|066983402 098164148 +000000631 000840519 000958997 D|011277905 053822122 +000000631 000880219 000967851 D|048488058 076004762 +000000631 000885871 000982750 D|006952968 014646662 +000000632 000013507 000007100 D|073731387 097932864 +000000632 000041105 000019143 D|038124556 033587338 +000000632 000065819 000083429 D|034855230 004131896 +000000632 000070709 000100671 D|006797501 001560768 +000000632 000093408 000104725 D|022317850 070918835 +000000632 000109594 000108094 D|049052575 003876464 +000000632 000119840 000120912 D|060181887 068737847 +000000632 000137384 000127848 D|039684190 038894032 +000000632 000154257 000175073 D|027089936 076823504 +000000632 000169514 000260680 D|053010774 010067205 +000000632 000171786 000262702 D|065383303 096270599 +000000632 000178822 000266159 D|087223099 017456562 +000000632 000182438 000266983 D|010239726 024240445 +000000632 000204625 000306237 D|033018105 030497866 +000000632 000213440 000306884 D|037627688 089710158 +000000632 000239541 000327117 D|015932836 007865132 +000000632 000247799 000339611 D|070313471 059059830 +000000632 000252771 000347198 D|049578330 038119001 +000000632 000281025 000349241 D|082834568 039042761 +000000632 000284054 000351186 D|001395584 023609349 +000000632 000298310 000388871 D|058644852 051197960 +000000632 000351459 000412399 D|087142137 092423811 +000000632 000371485 000421282 D|046735175 099112046 +000000632 000400471 000430975 D|005704845 066767682 +000000632 000423125 000457193 D|082596861 033188462 +000000632 000428226 000460350 D|067918554 040228638 +000000632 000465758 000486394 D|000019935 076642761 +000000632 000505827 000495512 D|027923211 093820915 +000000632 000510230 000524916 D|027120923 099858811 +000000632 000530929 000556380 D|069783658 030900543 +000000632 000539410 000559939 D|024514479 073945626 +000000632 000579635 000571886 D|038706960 020606660 +000000632 000601340 000608224 D|078984366 064244561 +000000632 000639609 000647057 D|085773866 096548006 +000000632 000657822 000654122 D|040844242 084859749 +000000632 000681137 000675063 D|091722696 084745559 +000000632 000716596 000711975 D|024114434 083252945 +000000632 000729833 000719510 D|007233820 030814690 +000000632 000736256 000748432 D|052419210 019543487 +000000632 000742757 000754871 D|029848091 012824088 +000000632 000749161 000772255 D|008065527 067400993 +000000632 000781363 000834056 D|051421895 070615438 +000000632 000815038 000843973 D|087470716 019778448 +000000632 000847444 000844298 D|068793954 021038023 +000000632 000849371 000887904 D|055120751 035770318 +000000632 000854261 000895803 D|068005396 057591839 +000000632 000904621 000896515 D|067499215 096621642 +000000632 000918445 000912808 D|010330280 097120103 +000000632 000923080 000934977 D|019856415 041145263 +000000632 000988009 000982385 D|055793353 001603081 +000000633 000006153 000037702 D|005366059 062580947 +000000633 000027090 000063733 D|022524568 084216858 +000000633 000062300 000069894 D|061926967 003885060 +000000633 000069374 000079368 D|070523319 099888574 +000000633 000110640 000081314 D|011445152 021011660 +000000633 000112444 000088164 D|044977230 081658709 +000000633 000129561 000100289 D|003994645 052149983 +000000633 000177811 000103466 D|088333082 092696792 +000000633 000230930 000105098 D|088104310 016298080 +000000633 000248676 000106350 D|025951008 086318308 +000000633 000248777 000184869 D|097371018 045599403 +000000633 000262362 000188626 D|017272293 007942887 +000000633 000268879 000203966 D|082326641 033433998 +000000633 000269399 000309033 D|070083581 038243239 +000000633 000278022 000312434 D|068363633 025904252 +000000633 000296258 000317881 D|041254202 064160595 +000000633 000297693 000358780 D|005163412 034985943 +000000633 000371757 000376898 D|033794103 096415761 +000000633 000402679 000399413 D|085762860 086500833 +000000633 000433519 000418373 D|075369924 001725756 +000000633 000438840 000435383 D|086530656 045494005 +000000633 000440699 000455222 D|095932584 018954123 +000000633 000448260 000523479 D|052859609 073065347 +000000633 000454357 000538581 D|097184793 013081852 +000000633 000465555 000589081 D|013893121 054758715 +000000633 000466683 000593198 D|003426839 035544255 +000000633 000479419 000595659 D|099276852 032747177 +000000633 000489469 000600275 D|034180834 021247358 +000000633 000568799 000601493 D|078558507 071988840 +000000633 000625733 000607274 D|007539947 058698526 +000000633 000633504 000620185 D|092655063 059784185 +000000633 000656563 000650212 D|045104850 099038966 +000000633 000669672 000658128 D|065522274 030037763 +000000633 000704419 000692089 D|004482607 014599500 +000000633 000729014 000737212 D|058706041 020468814 +000000633 000731148 000792557 D|035949690 097948631 +000000633 000762232 000803455 D|095556616 051386597 +000000633 000768743 000832764 D|034242869 036961000 +000000633 000776789 000912156 D|044433866 067995926 +000000633 000782935 000913112 D|055482300 055546245 +000000633 000834684 000931466 D|096373813 057814982 +000000633 000891709 000933191 D|076210290 065278180 +000000633 000912293 000939982 D|085070770 035292317 +000000633 000924771 000943827 D|060484263 016884916 +000000633 000936665 000946006 D|047132947 067480890 +000000633 000946255 000957964 D|027878542 031058781 +000000633 000950656 000966698 D|053368860 016171640 +000000633 000952721 000977627 D|011107135 045085344 +000000633 000954177 000982479 D|032123187 064818981 +000000633 000989874 000989097 D|096353715 060728361 +000000634 000005538 000000122 D|053880473 009275023 +000000634 000038301 000008833 D|076449209 004463531 +000000634 000040969 000047901 D|039588051 079523890 +000000634 000047597 000048858 D|003605833 076647520 +000000634 000054050 000084785 D|057585020 038690892 +000000634 000085063 000104774 D|097534540 085873664 +000000634 000126895 000111024 D|007356701 010152465 +000000634 000160400 000125747 D|096338252 053299992 +000000634 000162882 000142539 D|022053068 069950303 +000000634 000195303 000153989 D|013708381 047315551 +000000634 000207626 000164569 D|087603694 030041723 +000000634 000234210 000167120 D|086144007 040042834 +000000634 000251289 000198013 D|013274817 002243907 +000000634 000254034 000200073 D|067440484 055670120 +000000634 000262169 000204547 D|068425901 050859377 +000000634 000270926 000254418 D|071840925 064303328 +000000634 000287994 000265424 D|023206754 041165237 +000000634 000320881 000279442 D|048402842 045114843 +000000634 000328625 000312478 D|011711393 090004690 +000000634 000358459 000325869 D|017401089 066105906 +000000634 000381613 000391751 D|018858703 098927091 +000000634 000420593 000397528 D|091232423 093321675 +000000634 000424629 000481556 D|038076666 002025936 +000000634 000444734 000493556 D|024217520 059123121 +000000634 000453423 000533104 D|048507546 044773268 +000000634 000458396 000544658 D|023974450 008141222 +000000634 000467739 000556774 D|037748943 059222579 +000000634 000470151 000580460 D|063351899 054426501 +000000634 000471771 000659261 D|058158701 021553910 +000000634 000473570 000676345 D|063312577 014336276 +000000634 000485037 000685010 D|021535194 022623016 +000000634 000501699 000695950 D|021073397 043938684 +000000634 000536259 000714988 D|003346685 081493810 +000000634 000552579 000748391 D|090939811 035894504 +000000634 000584357 000751719 D|041223090 083040702 +000000634 000614818 000759861 D|093862993 098515252 +000000634 000618578 000768144 D|057414150 055317670 +000000634 000625148 000793037 D|089725925 029524248 +000000634 000631047 000797197 D|035033052 055335026 +000000634 000634793 000801120 D|008483315 019237576 +000000634 000645114 000835687 D|065909885 073524950 +000000634 000756978 000879265 D|056662221 030947705 +000000634 000759480 000882062 D|081118590 051745692 +000000634 000771751 000897794 D|078682808 005898738 +000000634 000792034 000918138 D|005078482 061657858 +000000634 000831704 000932126 D|084623060 093128630 +000000634 000865711 000946122 D|030032811 094639045 +000000634 000883195 000967674 D|040131755 008952678 +000000634 000897452 000986851 D|035234190 011912570 +000000634 000898444 000998846 D|072157853 085738089 +000000635 000017798 000007920 D|099918433 059026926 +000000635 000023693 000047953 D|078919222 081139213 +000000635 000050812 000054210 D|023507287 059278602 +000000635 000084400 000063663 D|076439051 085637028 +000000635 000096925 000098090 D|055665886 019741762 +000000635 000117565 000107763 D|078480119 000419899 +000000635 000127671 000128710 D|007947321 048503561 +000000635 000128462 000140039 D|088928743 032730056 +000000635 000131245 000165497 D|058187639 028224365 +000000635 000149848 000179924 D|068943466 082469168 +000000635 000175482 000188372 D|014350763 010895252 +000000635 000177654 000204876 D|033524389 070928121 +000000635 000192517 000207935 D|000449674 016742547 +000000635 000229438 000210195 D|041493997 067801492 +000000635 000318667 000238628 D|063609180 026088965 +000000635 000324358 000261951 D|022949495 046494873 +000000635 000329470 000264040 D|024341491 067362155 +000000635 000329926 000280101 D|032560800 070957948 +000000635 000385502 000296940 D|077349946 044871929 +000000635 000390098 000303594 D|070026838 067578672 +000000635 000422743 000328784 D|060706758 030949045 +000000635 000426995 000329624 D|031380056 020172157 +000000635 000436623 000358513 D|038517642 009207362 +000000635 000438772 000399689 D|011846735 037038409 +000000635 000459843 000432355 D|035329815 035795273 +000000635 000488341 000486746 D|021747679 053847473 +000000635 000499670 000527156 D|079378811 099658661 +000000635 000533089 000569074 D|031356039 065060218 +000000635 000546305 000576268 D|055956706 034349039 +000000635 000567686 000589202 D|029290807 011203560 +000000635 000588507 000598121 D|044807710 027756175 +000000635 000598952 000630730 D|020577911 069162134 +000000635 000600782 000645601 D|077079263 013294847 +000000635 000610017 000663970 D|005283949 088448208 +000000635 000623580 000678728 D|040834643 065337302 +000000635 000634854 000692627 D|093900294 054892621 +000000635 000669221 000711746 D|003683762 032429690 +000000635 000669366 000725482 D|058715764 016961135 +000000635 000679936 000750281 D|069578867 091770990 +000000635 000699127 000770943 D|079022817 078033115 +000000635 000725384 000835989 D|090836785 024649880 +000000635 000749431 000864124 D|047120575 045806812 +000000635 000762380 000885461 D|030810728 099318567 +000000635 000770386 000898453 D|043018206 064980378 +000000635 000781013 000912000 D|039644005 038849490 +000000635 000781105 000912299 D|007024060 049272163 +000000635 000782549 000913633 D|004920035 004984167 +000000635 000886235 000930434 D|024180957 089509752 +000000635 000945625 000958510 D|040715416 051757863 +000000635 000953649 000985106 D|094633794 070820809 +000000636 000032023 000009878 D|049586550 097140450 +000000636 000051709 000067318 D|089221188 061469740 +000000636 000073886 000096736 D|046652628 080745837 +000000636 000074763 000100464 D|090907715 077576402 +000000636 000105785 000101276 D|067410092 032039090 +000000636 000204268 000133143 D|093207180 024652352 +000000636 000265923 000137935 D|097807883 040306149 +000000636 000292754 000146280 D|064458076 014602778 +000000636 000318018 000243600 D|084270059 055195644 +000000636 000320150 000254637 D|089255662 035284344 +000000636 000342428 000263001 D|069423466 070608814 +000000636 000358151 000282804 D|068448832 059183706 +000000636 000406555 000300012 D|030540568 056632323 +000000636 000434640 000300319 D|059426420 041398885 +000000636 000464681 000321433 D|022597085 091465018 +000000636 000479050 000322194 D|051381881 054807734 +000000636 000493909 000329057 D|068499401 077014225 +000000636 000505153 000334179 D|021415637 041441776 +000000636 000505802 000350937 D|071595485 097863193 +000000636 000520987 000381600 D|038042521 099814928 +000000636 000521881 000391182 D|093118343 067836482 +000000636 000524658 000452613 D|099809099 052899475 +000000636 000537947 000476399 D|080823001 055276004 +000000636 000544581 000488595 D|084111003 012610952 +000000636 000556927 000526265 D|037666236 028774229 +000000636 000579652 000538990 D|049896529 027218981 +000000636 000637974 000552115 D|013641501 035003397 +000000636 000659443 000576967 D|003406014 095189464 +000000636 000662780 000614774 D|025169643 005964234 +000000636 000695588 000638571 D|002984262 009002972 +000000636 000703038 000649712 D|001830457 005812919 +000000636 000752204 000684435 D|058464937 020620398 +000000636 000755225 000722320 D|079462195 044946830 +000000636 000762901 000730288 D|026779332 013589314 +000000636 000783081 000730464 D|081667865 024748957 +000000636 000802537 000731674 D|029851648 002295536 +000000636 000812674 000780521 D|083560075 025039470 +000000636 000834897 000782569 D|037871946 073766143 +000000636 000841225 000823852 D|065537002 091162751 +000000636 000866592 000835559 D|060329769 015320451 +000000636 000870637 000864408 D|017108048 022433478 +000000636 000870738 000869341 D|070140139 041618764 +000000636 000886053 000872458 D|004167664 065313503 +000000636 000900659 000907522 D|038183771 057996848 +000000636 000924651 000920581 D|006346140 005680644 +000000636 000924866 000932177 D|014728763 053186131 +000000636 000963818 000954333 D|042223201 060638478 +000000636 000972117 000963306 D|047550961 099229532 +000000636 000991896 000970316 D|067658424 068612983 +000000636 000993509 000990148 D|021037692 087830813 +000000637 000039936 000000076 D|031125339 027297427 +000000637 000049116 000008957 D|072896657 021563847 +000000637 000122869 000031588 D|015233304 084919776 +000000637 000138038 000058556 D|084253616 066982313 +000000637 000154128 000072162 D|004133508 088961559 +000000637 000158671 000084276 D|050542024 031280597 +000000637 000163991 000158062 D|002076001 036218400 +000000637 000181102 000177911 D|021332977 003457570 +000000637 000223005 000228353 D|079226216 044037305 +000000637 000238149 000232930 D|030156995 040752141 +000000637 000274939 000247213 D|075136700 096207665 +000000637 000305586 000256175 D|032585538 039821723 +000000637 000318436 000283466 D|020157660 067409294 +000000637 000346312 000310026 D|047094858 074052451 +000000637 000384394 000313631 D|006084919 088714339 +000000637 000388150 000343326 D|006120774 017946476 +000000637 000448225 000351933 D|007433165 054974598 +000000637 000448278 000354573 D|047891921 077766956 +000000637 000469069 000360969 D|082817451 023057514 +000000637 000480017 000408683 D|061286094 034282136 +000000637 000485025 000412837 D|031534025 016636948 +000000637 000486936 000413183 D|055719613 070344899 +000000637 000493553 000413534 D|073098814 067683036 +000000637 000510433 000428915 D|022612471 018313454 +000000637 000535513 000440372 D|099702012 036239182 +000000637 000545759 000441679 D|056220313 030235016 +000000637 000566311 000488095 D|075073539 043563513 +000000637 000595727 000501792 D|072353363 044944691 +000000637 000610888 000559896 D|071795286 002895274 +000000637 000611401 000597087 D|088780349 096538411 +000000637 000651968 000602531 D|062192517 054240570 +000000637 000658388 000650281 D|057835538 029155058 +000000637 000665162 000656568 D|037426167 069278109 +000000637 000677249 000666057 D|024387689 018775987 +000000637 000700946 000667179 D|003425207 052755289 +000000637 000702833 000671694 D|019505748 054204488 +000000637 000706543 000676122 D|099291711 016967422 +000000637 000734161 000683318 D|019810971 084866433 +000000637 000750058 000701838 D|061710921 075202612 +000000637 000774862 000718333 D|085111512 054724988 +000000637 000776105 000723930 D|096398822 067690732 +000000637 000798553 000737595 D|062777132 068388412 +000000637 000838913 000747476 D|010484618 067920397 +000000637 000847588 000750021 D|012987217 076888822 +000000637 000858915 000751633 D|005542667 095974947 +000000637 000891429 000807100 D|050382694 005454276 +000000637 000900092 000811522 D|019923533 017107629 +000000637 000906492 000832882 D|064060909 064334270 +000000637 000925281 000883402 D|012932521 046439385 +000000637 000954574 000913464 D|009799059 041324447 +000000638 000007818 000016112 D|004337961 030699303 +000000638 000028199 000064513 D|018926363 075581422 +000000638 000029441 000120270 D|008010079 002824221 +000000638 000043095 000188872 D|022560408 097873607 +000000638 000058755 000190153 D|056373452 047782383 +000000638 000115009 000207969 D|047263847 064009934 +000000638 000115979 000236147 D|036814758 056143203 +000000638 000133858 000255764 D|005480894 000584331 +000000638 000134161 000276536 D|077211354 066614461 +000000638 000157834 000347459 D|052824026 024124231 +000000638 000158474 000354377 D|016130772 075332515 +000000638 000171410 000354698 D|093812208 074153874 +000000638 000173372 000362113 D|036223621 054586305 +000000638 000188531 000402983 D|091249187 081412431 +000000638 000206236 000410945 D|047495528 082988137 +000000638 000207399 000413212 D|089730044 048497377 +000000638 000241170 000428456 D|048782482 028761474 +000000638 000267846 000463109 D|087545525 052276493 +000000638 000269404 000472989 D|095807883 006887297 +000000638 000290006 000479391 D|073169253 022549719 +000000638 000305753 000505146 D|039864962 073498304 +000000638 000308960 000539999 D|002734375 095679058 +000000638 000316742 000554265 D|005090217 091056821 +000000638 000322617 000562768 D|021514033 040300658 +000000638 000344089 000567886 D|085136219 000781450 +000000638 000347419 000576577 D|060958422 081925610 +000000638 000351600 000577377 D|052392573 044565535 +000000638 000398048 000597685 D|045093642 003815374 +000000638 000444597 000603093 D|069001155 038038078 +000000638 000454847 000626043 D|079768722 022707090 +000000638 000475003 000647708 D|027074299 009027693 +000000638 000482934 000648217 D|099948049 010156520 +000000638 000483948 000684038 D|063824392 020799685 +000000638 000513900 000690399 D|093137721 085021162 +000000638 000515627 000696461 D|073899735 022733171 +000000638 000563916 000703924 D|023754017 067088462 +000000638 000564414 000717106 D|011784291 026980513 +000000638 000583326 000727038 D|071702209 004011386 +000000638 000644254 000731711 D|048035238 066434739 +000000638 000730922 000759586 D|011821228 084829367 +000000638 000755794 000776536 D|053862952 018865888 +000000638 000788932 000795222 D|078094827 095082517 +000000638 000815635 000817619 D|019900450 096436634 +000000638 000854075 000819912 D|018247890 066364515 +000000638 000919594 000882555 D|042088119 077461995 +000000638 000931154 000900202 D|046687818 022353689 +000000638 000931972 000906199 D|079575852 099739856 +000000638 000943117 000912465 D|040159264 023020092 +000000638 000984850 000914510 D|025212183 003767983 +000000638 000994654 000952277 D|078138566 046520051 +000000639 000046068 000017037 D|000879453 022403745 +000000639 000054153 000022499 D|082614039 066403302 +000000639 000068721 000022666 D|072379249 041361517 +000000639 000081588 000024048 D|000168282 037226620 +000000639 000119145 000026694 D|027984974 005760639 +000000639 000149421 000086536 D|050745625 049397937 +000000639 000165355 000095961 D|036926476 054952295 +000000639 000213604 000115036 D|015172351 005829411 +000000639 000233179 000136426 D|053340868 086127301 +000000639 000237427 000178160 D|083339150 060555352 +000000639 000251917 000187504 D|021251688 096778481 +000000639 000259824 000188769 D|052186006 038632703 +000000639 000283418 000200647 D|000688158 025334641 +000000639 000300347 000239158 D|092837945 095686838 +000000639 000306126 000239890 D|074274927 053682801 +000000639 000325252 000244335 D|041348643 089987947 +000000639 000347698 000269627 D|024360758 068962169 +000000639 000379141 000269905 D|046420931 020179012 +000000639 000388206 000286649 D|028210646 016731934 +000000639 000394631 000296395 D|071533686 011601984 +000000639 000398609 000363944 D|046899485 087370331 +000000639 000421633 000365088 D|063918555 075350799 +000000639 000463063 000402522 D|061554088 069798282 +000000639 000465170 000420548 D|003681554 013185000 +000000639 000469199 000426128 D|093658930 072304140 +000000639 000480466 000435957 D|058333991 094872792 +000000639 000503873 000440541 D|009271678 049466347 +000000639 000529269 000454039 D|074411971 024779192 +000000639 000539138 000459928 D|097185687 075390352 +000000639 000543955 000498961 D|008659051 028385329 +000000639 000557071 000527070 D|095376874 066444642 +000000639 000573114 000528101 D|060338237 017394932 +000000639 000605559 000540410 D|061203733 073857085 +000000639 000631978 000555720 D|059029404 078829435 +000000639 000639371 000580831 D|068742894 075486220 +000000639 000648180 000603546 D|000740825 028413470 +000000639 000648361 000633733 D|043124282 061891740 +000000639 000725604 000636093 D|055722805 009665417 +000000639 000726307 000686082 D|005830184 032635980 +000000639 000741452 000719251 D|043978508 084102964 +000000639 000763911 000763896 D|080887732 018826202 +000000639 000783037 000793386 D|064739293 057171667 +000000639 000792359 000841326 D|021217409 070698121 +000000639 000796154 000851102 D|092781430 070267829 +000000639 000799929 000875085 D|071667430 099707873 +000000639 000841017 000905162 D|035160416 072993965 +000000639 000952768 000934206 D|001731935 004189452 +000000639 000964774 000958888 D|029723785 018750976 +000000639 000989545 000986252 D|012171984 011952666 +000000639 000990828 000987241 D|021443446 043603091 +000000640 000014665 000006141 D|013711490 018359344 +000000640 000017141 000033625 D|033878155 016563707 +000000640 000019925 000040709 D|030548862 010993600 +000000640 000047078 000084705 D|072857928 076505990 +000000640 000065535 000093349 D|059517525 053875144 +000000640 000072684 000105409 D|096327527 056441873 +000000640 000134340 000189341 D|078777506 071942134 +000000640 000142489 000197221 D|073289421 032699044 +000000640 000177648 000235098 D|046852031 076341942 +000000640 000218227 000244132 D|031838560 067208377 +000000640 000261719 000257705 D|042922743 097583141 +000000640 000340105 000301416 D|001211294 093811596 +000000640 000355409 000369477 D|022128568 048041108 +000000640 000359005 000383007 D|024882393 093699938 +000000640 000360126 000391103 D|044276457 028013053 +000000640 000376125 000396706 D|058358718 021894834 +000000640 000386508 000399029 D|039609506 037824531 +000000640 000407099 000407633 D|081923198 050593892 +000000640 000408242 000423439 D|090029279 061025503 +000000640 000410502 000443828 D|006602089 093034042 +000000640 000420033 000474540 D|049750743 082263506 +000000640 000457769 000476766 D|052583225 089102649 +000000640 000489616 000485493 D|079594566 014454921 +000000640 000497010 000488605 D|032690339 079938336 +000000640 000513628 000497417 D|056407054 014243621 +000000640 000521956 000514257 D|096059191 013931942 +000000640 000592323 000515718 D|039390274 075003213 +000000640 000597443 000529808 D|045229865 058268671 +000000640 000603895 000535712 D|064217464 015470245 +000000640 000613315 000623331 D|069550711 035758484 +000000640 000641358 000627518 D|009317869 075020922 +000000640 000686794 000654277 D|074928276 030231573 +000000640 000693244 000663950 D|028954029 064628766 +000000640 000726650 000670494 D|099628446 025838921 +000000640 000736477 000684570 D|039320898 014939356 +000000640 000757206 000684579 D|086014007 067908243 +000000640 000766438 000713066 D|036454214 097353615 +000000640 000790964 000717035 D|094055899 045527817 +000000640 000846211 000728260 D|067568631 033165828 +000000640 000869405 000734217 D|038743483 077642204 +000000640 000877671 000810864 D|096017129 013356534 +000000640 000882876 000814900 D|008531665 044525510 +000000640 000900592 000822867 D|021046498 035225182 +000000640 000952913 000844619 D|049247224 092802576 +000000640 000953332 000862100 D|059678253 041329510 +000000640 000958419 000927270 D|047506850 044317995 +000000640 000959373 000933837 D|001477630 068743274 +000000640 000967404 000942351 D|032259435 032651202 +000000640 000973994 000958225 D|067334511 098944141 +000000640 000980997 000959973 D|030789118 003251390 +000000641 000025906 000001725 D|014529650 035216906 +000000641 000056128 000006563 D|033806916 033777445 +000000641 000059647 000029137 D|016409517 027118570 +000000641 000097332 000034599 D|074076791 089642824 +000000641 000102194 000038374 D|025111031 069184354 +000000641 000130003 000158650 D|034182187 022714190 +000000641 000132331 000178965 D|079509659 089512144 +000000641 000133195 000192636 D|066084359 026175343 +000000641 000157370 000211195 D|056069482 079888617 +000000641 000167378 000223723 D|043153189 038366036 +000000641 000207983 000240258 D|059911313 059496757 +000000641 000288702 000240522 D|042804536 045923883 +000000641 000296826 000248778 D|063506462 073067245 +000000641 000307225 000287125 D|035794147 082743981 +000000641 000333286 000310902 D|024406034 045168109 +000000641 000334393 000319017 D|090812984 006823781 +000000641 000338867 000357857 D|098065318 017838501 +000000641 000351195 000377858 D|080135274 083890190 +000000641 000357203 000386396 D|013363985 078720222 +000000641 000375266 000397433 D|063607351 062903989 +000000641 000378613 000411828 D|039443735 003771355 +000000641 000382782 000428915 D|043018936 039169344 +000000641 000396842 000438571 D|093888109 073893203 +000000641 000415355 000450477 D|038265512 092827132 +000000641 000471043 000456281 D|093511715 008413527 +000000641 000472507 000504027 D|007450618 092723873 +000000641 000474209 000523336 D|033979810 095047309 +000000641 000484868 000535284 D|007416228 021061060 +000000641 000500922 000536791 D|005794080 007597561 +000000641 000553052 000541029 D|010147497 073385730 +000000641 000572604 000571344 D|068811968 000414770 +000000641 000578814 000574879 D|095653960 057487928 +000000641 000593822 000586027 D|058338120 094351531 +000000641 000611028 000626933 D|039953348 090899816 +000000641 000647683 000669908 D|085454201 007306191 +000000641 000661222 000717410 D|038829202 067567146 +000000641 000707633 000744294 D|068781423 040492503 +000000641 000714895 000748756 D|048972652 064376619 +000000641 000719758 000756194 D|023058020 010895120 +000000641 000762402 000808318 D|089724499 022027121 +000000641 000783067 000848404 D|014659726 067080770 +000000641 000808279 000853407 D|009270306 045730011 +000000641 000810010 000899233 D|033438938 019016575 +000000641 000855404 000901456 D|074550954 055374813 +000000641 000864692 000917954 D|057502593 051987782 +000000641 000889894 000938621 D|092014088 032327138 +000000641 000930080 000970666 D|026942291 056801842 +000000641 000937336 000982044 D|049683506 034562884 +000000641 000981967 000987456 D|082590508 081997429 +000000641 000985817 000994548 D|048223678 063797777 +000000642 000025798 000008455 D|073705767 099174777 +000000642 000031963 000012842 D|042617680 093113167 +000000642 000067765 000034485 D|016560837 080008464 +000000642 000092765 000042308 D|034563477 080769949 +000000642 000095189 000056632 D|052061447 005138146 +000000642 000124548 000087979 D|078980749 041166418 +000000642 000125168 000089726 D|067919669 005122358 +000000642 000132839 000095025 D|073449854 002040179 +000000642 000164385 000099952 D|040641944 040470882 +000000642 000174843 000157243 D|069750060 018972242 +000000642 000213176 000209041 D|008865778 029552929 +000000642 000232864 000210067 D|091774328 090142244 +000000642 000284869 000229528 D|016948433 014559083 +000000642 000292777 000240747 D|098992038 086306728 +000000642 000322276 000319193 D|007534870 078276177 +000000642 000348911 000347196 D|095847688 008088798 +000000642 000417930 000365276 D|012592295 035502114 +000000642 000435201 000386883 D|038904510 013631654 +000000642 000438446 000415581 D|060248450 009406665 +000000642 000442776 000431361 D|028833222 049112567 +000000642 000446617 000433231 D|001929883 081042624 +000000642 000491018 000438301 D|001197398 056332460 +000000642 000512925 000467755 D|055954250 086493265 +000000642 000515221 000494083 D|042278476 034460655 +000000642 000541103 000499248 D|040913611 005873905 +000000642 000546845 000547088 D|092474507 012795937 +000000642 000580886 000579265 D|073502613 090440711 +000000642 000592938 000602035 D|067272248 090103274 +000000642 000598122 000611748 D|022088272 091468889 +000000642 000616562 000620060 D|056806616 006862277 +000000642 000632053 000639433 D|005790345 008748105 +000000642 000639652 000647573 D|033899522 002730711 +000000642 000702039 000651913 D|083406667 017884168 +000000642 000709347 000656107 D|041987764 070166781 +000000642 000743783 000668065 D|047318991 003903395 +000000642 000751179 000685915 D|098404269 036890084 +000000642 000788022 000691862 D|066376795 056930124 +000000642 000816449 000707072 D|051745950 069393346 +000000642 000837450 000716808 D|054320137 096775872 +000000642 000846871 000717551 D|007447487 094565256 +000000642 000855574 000743557 D|091263529 030196880 +000000642 000867396 000799073 D|079722762 020748275 +000000642 000889852 000802192 D|073010233 000320806 +000000642 000946573 000817957 D|060510613 008146133 +000000642 000967736 000828641 D|020295292 014894193 +000000642 000972966 000866625 D|023377645 033549312 +000000642 000975709 000900268 D|081214715 054809111 +000000642 000979410 000907360 D|055235876 041212950 +000000642 000980266 000938656 D|079894151 044689083 +000000642 000984889 000941282 D|068511450 097548999 +000000643 000002932 000015220 D|030202978 092838799 +000000643 000014393 000063884 D|059134046 031430811 +000000643 000051498 000075636 D|092754712 082254164 +000000643 000053072 000077838 D|025966680 045014299 +000000643 000074860 000085893 D|088082645 062296258 +000000643 000086588 000088185 D|075771616 081117337 +000000643 000096069 000095190 D|031635319 017339223 +000000643 000117822 000097665 D|017675691 069725480 +000000643 000141422 000113376 D|095479393 079428005 +000000643 000172238 000131380 D|037364527 012049572 +000000643 000185718 000141562 D|003372561 094987357 +000000643 000210958 000153945 D|056881641 046891150 +000000643 000264077 000172242 D|082453871 011499796 +000000643 000272992 000179186 D|063358725 007496792 +000000643 000278279 000185346 D|099737832 067571884 +000000643 000286711 000209606 D|062011683 074574010 +000000643 000292889 000225389 D|082006890 062670952 +000000643 000301529 000246066 D|027055228 046994697 +000000643 000318589 000262892 D|079740607 055420174 +000000643 000349560 000295951 D|069998647 095090669 +000000643 000355109 000319305 D|029895349 098575187 +000000643 000417125 000319686 D|012245530 011801342 +000000643 000421480 000327752 D|043888785 041687145 +000000643 000447051 000328773 D|035105413 037873686 +000000643 000454583 000334791 D|007803165 068305161 +000000643 000465321 000370150 D|062554509 037807329 +000000643 000469907 000403460 D|013162197 040625413 +000000643 000473157 000460614 D|051273305 079073483 +000000643 000501198 000472339 D|043908887 024331924 +000000643 000539597 000524540 D|030330116 011893005 +000000643 000542005 000532782 D|047748795 047888551 +000000643 000549199 000542645 D|081885767 024905239 +000000643 000549995 000627040 D|001056746 089678884 +000000643 000556432 000635766 D|008045155 097692110 +000000643 000602581 000691000 D|036048326 039291068 +000000643 000622782 000705812 D|074464298 050454012 +000000643 000662212 000706886 D|089835845 045998556 +000000643 000666100 000707276 D|044695588 025141830 +000000643 000735988 000758489 D|078599345 041055949 +000000643 000736969 000781089 D|005057946 093231026 +000000643 000750636 000820366 D|045600865 020884393 +000000643 000806715 000822414 D|004437562 000619464 +000000643 000824964 000841426 D|036819604 051511442 +000000643 000825198 000842443 D|089002677 063496293 +000000643 000827137 000869662 D|053495694 014271451 +000000643 000834883 000883880 D|087921404 053744596 +000000643 000848835 000930804 D|057485482 052155869 +000000643 000875383 000931893 D|091935680 060901233 +000000643 000924023 000934330 D|083177980 045292093 +000000643 000927732 000951894 D|093995837 037298445 +000000644 000070890 000014993 D|009079463 060806351 +000000644 000075531 000034954 D|000188048 003840448 +000000644 000094523 000046202 D|028514030 038099852 +000000644 000102583 000065234 D|013232503 050285810 +000000644 000118998 000081130 D|054423298 025253685 +000000644 000120300 000084915 D|084524034 063212326 +000000644 000121723 000101509 D|057297720 084716028 +000000644 000152069 000110698 D|038376539 093551811 +000000644 000169632 000111130 D|006863496 068562881 +000000644 000188942 000153524 D|054455540 052417848 +000000644 000194394 000211732 D|014664827 080286823 +000000644 000204458 000277993 D|004083153 060993795 +000000644 000211894 000292230 D|071562049 025423120 +000000644 000231521 000299865 D|078338431 023775646 +000000644 000259602 000325535 D|089303067 016876357 +000000644 000261055 000352782 D|045544647 070396030 +000000644 000266070 000470229 D|032549385 058780342 +000000644 000282654 000470605 D|047386419 061858473 +000000644 000284976 000514032 D|096837111 059202380 +000000644 000295014 000530299 D|099063046 083962155 +000000644 000299115 000533072 D|074924729 051386849 +000000644 000339774 000548655 D|074635844 008284019 +000000644 000402187 000560854 D|019418227 067355344 +000000644 000427523 000564411 D|095284249 020066421 +000000644 000433809 000572508 D|057158689 027368772 +000000644 000434743 000580028 D|013296381 056306696 +000000644 000440988 000587425 D|074949647 076131348 +000000644 000484992 000618330 D|091324705 051272554 +000000644 000527498 000633654 D|002049155 005616181 +000000644 000538770 000643884 D|033630905 044649128 +000000644 000553213 000680941 D|091694832 065167876 +000000644 000622119 000687698 D|032250937 082263825 +000000644 000622839 000692804 D|061580878 071111646 +000000644 000627338 000694273 D|072747258 024430734 +000000644 000645930 000743878 D|020416461 071440327 +000000644 000672792 000776728 D|077584865 071970009 +000000644 000728554 000805505 D|062297882 044248384 +000000644 000751570 000811478 D|034748632 015792932 +000000644 000757860 000814980 D|017184699 030982329 +000000644 000779248 000823184 D|002505605 094112474 +000000644 000801923 000832226 D|048467723 044033291 +000000644 000804388 000854619 D|025112169 054567504 +000000644 000843392 000877064 D|059093500 086646034 +000000644 000878532 000900023 D|012891058 082589158 +000000644 000894835 000907265 D|091076900 092257339 +000000644 000895528 000925157 D|093404695 067092503 +000000644 000899581 000925572 D|066063278 023606983 +000000644 000963703 000937286 D|002495230 042006285 +000000644 000972806 000963153 D|076271962 035250172 +000000644 000973966 000968902 D|053791630 006246057 +000000645 000006789 000017601 D|086888004 097577646 +000000645 000075593 000023862 D|056600402 081328128 +000000645 000168236 000112637 D|077793162 069181183 +000000645 000175853 000113004 D|070237632 005044928 +000000645 000189381 000120345 D|088745445 082087465 +000000645 000195568 000131618 D|088047357 052960914 +000000645 000217232 000143535 D|006216409 030044734 +000000645 000223641 000238759 D|095893037 030840268 +000000645 000263357 000276857 D|055949487 062390958 +000000645 000263579 000287909 D|076753592 033164357 +000000645 000294389 000293761 D|078780934 076086521 +000000645 000302735 000359488 D|040658781 056248063 +000000645 000352900 000381468 D|019895512 016490549 +000000645 000363222 000389172 D|020866168 039147238 +000000645 000372688 000401967 D|076659629 004283358 +000000645 000393279 000410308 D|060013023 060288105 +000000645 000404406 000427871 D|053615276 008767851 +000000645 000416319 000439706 D|074785955 026202640 +000000645 000422465 000443212 D|035967870 041564872 +000000645 000424511 000478241 D|096032098 042949857 +000000645 000447540 000497461 D|051038895 034818242 +000000645 000511673 000500121 D|089182541 018735715 +000000645 000534437 000525524 D|047337484 077303109 +000000645 000594142 000534419 D|000436523 046359336 +000000645 000599662 000560142 D|027177803 093666903 +000000645 000612401 000562408 D|088590347 000879675 +000000645 000631976 000567878 D|010629393 068290811 +000000645 000639886 000569709 D|086759277 072338131 +000000645 000644222 000600828 D|033819846 078266262 +000000645 000667560 000602909 D|066628852 048905213 +000000645 000678322 000609577 D|027047300 067449105 +000000645 000707252 000635310 D|007077944 092456863 +000000645 000708873 000640651 D|096432761 066324524 +000000645 000732863 000645773 D|005235186 090642029 +000000645 000746375 000691685 D|046761741 056803030 +000000645 000750318 000700302 D|074507578 031437323 +000000645 000757441 000752887 D|039595842 053914053 +000000645 000764737 000783630 D|022080036 072192774 +000000645 000766136 000789128 D|091211740 008399876 +000000645 000785582 000813696 D|040024489 013930696 +000000645 000788723 000825110 D|095420446 050176681 +000000645 000799186 000870371 D|077362401 096704550 +000000645 000804567 000906615 D|073052783 025605156 +000000645 000830425 000909148 D|037856973 009464156 +000000645 000838346 000913664 D|007526988 087247039 +000000645 000849311 000918543 D|066014293 098626597 +000000645 000898067 000948451 D|098986854 026441240 +000000645 000935757 000948956 D|026153329 000296412 +000000645 000960407 000970076 D|059554907 080620654 +000000645 000988121 000981749 D|025231175 012007054 +000000646 000008788 000019555 D|042080896 034624371 +000000646 000008860 000054195 D|000657395 096900586 +000000646 000023400 000073570 D|045958356 084349478 +000000646 000047706 000087232 D|005571335 015769761 +000000646 000105842 000121902 D|017384574 093871206 +000000646 000111236 000151525 D|095476907 058425481 +000000646 000138500 000157744 D|009398609 076192938 +000000646 000142202 000164148 D|098738294 080471659 +000000646 000147263 000177731 D|038272344 023246983 +000000646 000148903 000195455 D|060760818 015186775 +000000646 000149581 000200759 D|004105414 025239433 +000000646 000177772 000225759 D|068023126 012981751 +000000646 000226431 000252567 D|022404373 084665742 +000000646 000269915 000254385 D|018897818 018699748 +000000646 000288798 000260831 D|013067757 040722394 +000000646 000349616 000264785 D|009748406 011910958 +000000646 000350033 000291588 D|098129867 081776041 +000000646 000360939 000329684 D|065439061 053630352 +000000646 000373668 000334978 D|083687867 060141966 +000000646 000385119 000360003 D|051187008 063129024 +000000646 000425715 000363853 D|024388876 082160429 +000000646 000447645 000382299 D|092065078 062306665 +000000646 000500722 000410868 D|064985159 059728976 +000000646 000513210 000413241 D|083408925 066504224 +000000646 000515751 000427427 D|048178771 083353604 +000000646 000555743 000472422 D|075962956 062642398 +000000646 000596643 000484314 D|080252201 004794524 +000000646 000602612 000504625 D|049137348 002162145 +000000646 000606685 000537393 D|041769876 026004374 +000000646 000632573 000545442 D|071047211 021279750 +000000646 000639906 000565176 D|051239165 075484136 +000000646 000656077 000574882 D|078024484 007486749 +000000646 000696809 000590765 D|038480461 053139824 +000000646 000710821 000630794 D|006255344 082432419 +000000646 000715664 000637331 D|098512140 013566446 +000000646 000720740 000644799 D|018014858 006536361 +000000646 000728211 000647837 D|070960461 041960764 +000000646 000758776 000680511 D|018589238 092840911 +000000646 000811860 000713491 D|033683470 086197719 +000000646 000828925 000740872 D|070703316 076951964 +000000646 000885562 000812854 D|056184660 097609578 +000000646 000890308 000818118 D|001186850 063251117 +000000646 000897239 000828475 D|069355152 073353424 +000000646 000899387 000836712 D|030965774 073663476 +000000646 000901041 000866589 D|036940416 025366944 +000000646 000904912 000880790 D|028244349 019079598 +000000646 000924520 000906097 D|098639323 092029175 +000000646 000935013 000931357 D|069768450 023037087 +000000646 000956557 000959372 D|072373536 037906336 +000000646 000986466 000971314 D|014369512 029225599 +000000647 000036661 000020888 D|009017363 015846377 +000000647 000054188 000024717 D|033389837 079603366 +000000647 000079360 000112061 D|047495006 000366078 +000000647 000080933 000117882 D|093664058 040944780 +000000647 000091250 000118065 D|081234479 085852885 +000000647 000200637 000118777 D|051287359 027922529 +000000647 000286889 000133595 D|008062508 090638259 +000000647 000294133 000134759 D|084324358 054528189 +000000647 000298616 000171456 D|091349066 076036565 +000000647 000300040 000175209 D|000254148 002761971 +000000647 000301130 000179744 D|009906651 022706707 +000000647 000309049 000195138 D|000839648 024512510 +000000647 000339568 000220841 D|088962367 088638445 +000000647 000377726 000229721 D|071547020 063591843 +000000647 000390152 000234784 D|067116856 037542441 +000000647 000400805 000239962 D|091847900 030631770 +000000647 000401248 000276062 D|026528266 099657986 +000000647 000402210 000284833 D|014917708 054257237 +000000647 000406385 000286433 D|046660171 076371424 +000000647 000406569 000301154 D|076555555 083659630 +000000647 000428437 000309145 D|030222908 085748674 +000000647 000439617 000315599 D|002269398 034998056 +000000647 000444269 000327011 D|064966400 027319050 +000000647 000476547 000327333 D|014853626 083051679 +000000647 000485069 000382491 D|068158932 056114108 +000000647 000513615 000467870 D|039377756 016495333 +000000647 000520654 000541380 D|027345199 025124955 +000000647 000521587 000645955 D|006552069 001128666 +000000647 000521792 000684571 D|034692380 026286721 +000000647 000602305 000711229 D|048179994 016828706 +000000647 000610646 000716303 D|002361308 018805078 +000000647 000637030 000724924 D|084135524 091821219 +000000647 000652452 000735748 D|006862956 056953993 +000000647 000688717 000742248 D|046376793 071137077 +000000647 000712352 000744198 D|001320305 031213439 +000000647 000717525 000748319 D|027871247 029553605 +000000647 000754952 000754752 D|001952439 065742184 +000000647 000798141 000755496 D|044817958 003950521 +000000647 000806270 000784959 D|068843873 073602718 +000000647 000843990 000785047 D|064733501 036976450 +000000647 000859909 000797739 D|029050816 088473466 +000000647 000897446 000806476 D|067493367 072407502 +000000647 000909827 000901181 D|094433105 095767824 +000000647 000914529 000905281 D|002706932 014377126 +000000647 000938814 000907416 D|049730213 056616294 +000000647 000970009 000914042 D|041991950 081768776 +000000647 000971746 000919286 D|005574169 004847168 +000000647 000980818 000921069 D|009611196 056184869 +000000647 000980927 000925893 D|008111020 049395226 +000000647 000998243 000935276 D|054189347 009681224 +000000648 000002983 000005523 D|059940581 006495208 +000000648 000030890 000041191 D|016881205 073161745 +000000648 000034806 000047077 D|018062700 041063505 +000000648 000042837 000054648 D|099258723 092399709 +000000648 000079877 000058196 D|098898996 093429317 +000000648 000134629 000068109 D|064720763 048147467 +000000648 000139816 000070818 D|014018341 041057372 +000000648 000149715 000096771 D|042463215 003102843 +000000648 000150334 000117490 D|055532004 024465789 +000000648 000191238 000132677 D|093085351 026929038 +000000648 000205043 000138000 D|007411830 033216479 +000000648 000210084 000173194 D|077591901 087171441 +000000648 000242601 000192082 D|032541788 069258162 +000000648 000244601 000219533 D|063717259 005666108 +000000648 000299096 000247693 D|024862910 080580155 +000000648 000308058 000280573 D|060358281 010382281 +000000648 000345283 000310628 D|058695909 077609813 +000000648 000350290 000313734 D|049987085 006275534 +000000648 000446516 000339864 D|014781924 064642469 +000000648 000496821 000365950 D|074611067 001585961 +000000648 000508321 000399329 D|023398189 091677765 +000000648 000516851 000405450 D|007589634 027491564 +000000648 000521178 000407820 D|096035082 040686896 +000000648 000528644 000414797 D|008867977 037679581 +000000648 000564904 000420248 D|068522485 003010683 +000000648 000567899 000422380 D|085881122 031412583 +000000648 000570418 000439849 D|096879444 080237742 +000000648 000575611 000464299 D|032861471 041220171 +000000648 000589463 000532580 D|003075471 085993954 +000000648 000595130 000594767 D|014681251 087464076 +000000648 000649803 000617802 D|078739709 077643619 +000000648 000688071 000651050 D|023253781 016523270 +000000648 000689391 000666839 D|065118800 016388072 +000000648 000705224 000714541 D|038948932 053999263 +000000648 000731807 000717619 D|030870118 048961210 +000000648 000757733 000742576 D|013493935 023812560 +000000648 000792627 000786147 D|096867106 029683015 +000000648 000822677 000820164 D|079162956 085337476 +000000648 000826462 000823649 D|098364231 061870658 +000000648 000841739 000832552 D|094425265 048394532 +000000648 000845187 000850922 D|067156719 056307853 +000000648 000853710 000877982 D|057303997 030199831 +000000648 000878895 000908652 D|098088225 078442667 +000000648 000894643 000911382 D|007137624 095821252 +000000648 000903686 000918723 D|009809821 090851098 +000000648 000931419 000956216 D|022499333 078152983 +000000648 000952235 000958136 D|073346849 033027098 +000000648 000982026 000959120 D|016440195 071396655 +000000648 000990488 000983234 D|037230239 041822031 +000000648 000991953 000983440 D|027160758 000457253 +000000649 000037757 000007062 D|028052981 000114765 +000000649 000041675 000042497 D|001445248 016933291 +000000649 000041915 000044959 D|083392221 019675949 +000000649 000053050 000085289 D|059253356 026508913 +000000649 000074501 000091187 D|084772702 054275242 +000000649 000093123 000156742 D|000431637 045720724 +000000649 000104131 000196867 D|050140742 086596029 +000000649 000118126 000261928 D|001019966 072507981 +000000649 000133255 000269975 D|038324198 098340449 +000000649 000189507 000277995 D|018255600 055657406 +000000649 000221012 000298895 D|002914397 089387112 +000000649 000229426 000333947 D|055869155 048136743 +000000649 000239382 000359196 D|043182808 078980211 +000000649 000258008 000394902 D|037803034 023735138 +000000649 000259290 000422196 D|074559430 083668631 +000000649 000263624 000423942 D|001397766 028148805 +000000649 000265921 000476672 D|056428854 087021703 +000000649 000306962 000497640 D|091856073 011175262 +000000649 000309615 000508702 D|060830839 082118396 +000000649 000319709 000535115 D|019251907 051606151 +000000649 000367587 000540074 D|028596841 088490151 +000000649 000370427 000556217 D|066029528 013404238 +000000649 000396430 000556874 D|052695568 082374785 +000000649 000412862 000557679 D|001465155 082319611 +000000649 000443410 000559916 D|056926099 089457814 +000000649 000454273 000566097 D|003650697 043675375 +000000649 000456119 000577579 D|081309715 013042802 +000000649 000482012 000580804 D|001509773 037240742 +000000649 000505423 000594187 D|020070676 098734926 +000000649 000529428 000605658 D|089050741 076852012 +000000649 000529954 000620871 D|065648674 054193557 +000000649 000562149 000625355 D|097357443 019672046 +000000649 000615268 000639920 D|043326251 037994985 +000000649 000645041 000667413 D|085019151 028652190 +000000649 000651639 000681874 D|095402320 088270761 +000000649 000660499 000711775 D|040147194 053695428 +000000649 000670617 000751472 D|010415178 088947557 +000000649 000672371 000800112 D|045849612 067329899 +000000649 000690501 000803988 D|025491810 079223800 +000000649 000746830 000814577 D|025795753 046383748 +000000649 000751937 000819544 D|011991963 099702233 +000000649 000758738 000828585 D|034296517 035003034 +000000649 000784059 000837470 D|070322608 071876768 +000000649 000789871 000848542 D|030029632 059553476 +000000649 000822514 000872446 D|062391481 056688473 +000000649 000830255 000899970 D|023833995 040448791 +000000649 000857565 000944434 D|007501646 021280556 +000000649 000904612 000949807 D|018302700 042453152 +000000649 000933706 000977778 D|032027262 022020672 +000000649 000954199 000986805 D|011105404 062998048 +000000650 000003508 000039678 D|033703245 089715306 +000000650 000004343 000048534 D|000665028 082233953 +000000650 000041301 000049386 D|080903656 036538268 +000000650 000048117 000071014 D|008126294 063332850 +000000650 000050542 000077283 D|029612067 098498101 +000000650 000068841 000113359 D|030916791 040099607 +000000650 000097964 000140616 D|083528154 042183527 +000000650 000121619 000181239 D|043338285 063280325 +000000650 000192319 000195879 D|085820234 046537251 +000000650 000216059 000197311 D|013936137 069406547 +000000650 000244092 000264195 D|071557556 008250907 +000000650 000249908 000274712 D|060967532 074562163 +000000650 000255387 000285205 D|036556058 030774741 +000000650 000255996 000299745 D|047519516 022864482 +000000650 000272625 000390996 D|045439289 084249745 +000000650 000284621 000401153 D|031798902 056781707 +000000650 000291302 000405071 D|030268656 065542402 +000000650 000318761 000405375 D|014493373 048393138 +000000650 000327263 000429908 D|038197436 071443027 +000000650 000329449 000446786 D|000757718 000544491 +000000650 000379251 000462808 D|042725045 070991186 +000000650 000386028 000481735 D|034260502 007162766 +000000650 000423993 000501116 D|029568518 017793970 +000000650 000453632 000537672 D|044581467 076131282 +000000650 000512057 000547211 D|068179957 038819011 +000000650 000518837 000573794 D|059620548 043728076 +000000650 000551490 000598779 D|067463290 082094557 +000000650 000581791 000623051 D|094401105 021955805 +000000650 000589352 000643857 D|068026654 027348640 +000000650 000594763 000653699 D|085376037 001989710 +000000650 000622423 000670128 D|098444917 089785724 +000000650 000630496 000692269 D|084785403 024409970 +000000650 000633825 000697487 D|007780031 002123478 +000000650 000651943 000761606 D|063002220 006130972 +000000650 000667284 000775199 D|003688798 042482066 +000000650 000679768 000806772 D|003432047 066226813 +000000650 000702507 000806866 D|067761755 082811344 +000000650 000760636 000820888 D|084949172 047726006 +000000650 000772309 000823610 D|003887533 003395721 +000000650 000778184 000852327 D|087980551 004616728 +000000650 000818004 000856078 D|027412174 038998110 +000000650 000818952 000880490 D|016608172 007712304 +000000650 000819847 000887746 D|084371145 019044020 +000000650 000828985 000890026 D|055825185 076098144 +000000650 000832849 000907114 D|002237078 023390917 +000000650 000898794 000924146 D|002099598 004212914 +000000650 000901899 000956336 D|036081451 036756833 +000000650 000959433 000963039 D|020400726 077126631 +000000650 000969607 000994138 D|055624494 081530138 +000000650 000977835 000994251 D|039149376 008597142 +000000651 000022829 000005109 D|084500371 092427904 +000000651 000071102 000013784 D|046652223 034262443 +000000651 000077085 000034041 D|088808959 056114070 +000000651 000105948 000079912 D|063186387 048604165 +000000651 000130894 000080555 D|042728045 035147301 +000000651 000166924 000122512 D|009767619 048051580 +000000651 000191837 000124370 D|083291456 019773375 +000000651 000202867 000128728 D|086706438 003780079 +000000651 000209154 000130537 D|092840551 076816578 +000000651 000261096 000133900 D|015635930 004409682 +000000651 000271834 000156110 D|005625227 089341909 +000000651 000274277 000160201 D|080877275 052804492 +000000651 000321258 000228544 D|086746220 022406254 +000000651 000326545 000249167 D|070150842 057625142 +000000651 000361644 000261583 D|009938184 080794710 +000000651 000380963 000271676 D|088990234 093460340 +000000651 000386678 000277534 D|040208043 047437877 +000000651 000395569 000323950 D|061844322 067479346 +000000651 000406837 000382895 D|052970533 000739930 +000000651 000416061 000421725 D|052625752 031520565 +000000651 000438194 000425171 D|059543552 022944235 +000000651 000438712 000428549 D|015788323 074724138 +000000651 000439981 000435780 D|093681405 026864358 +000000651 000448392 000437056 D|030713764 005912016 +000000651 000460615 000485508 D|099217800 016198256 +000000651 000460636 000559411 D|089512203 054215988 +000000651 000500549 000577478 D|016544232 083845428 +000000651 000508224 000591879 D|024038460 080093793 +000000651 000511735 000626701 D|036793640 039753420 +000000651 000577306 000633736 D|026413038 082474679 +000000651 000578061 000638605 D|006572735 028681687 +000000651 000582809 000641671 D|072953228 000047699 +000000651 000587626 000643203 D|011512847 031177033 +000000651 000591888 000666653 D|097943867 094307205 +000000651 000592986 000694453 D|073937087 015191239 +000000651 000606929 000694814 D|017779644 023122607 +000000651 000610617 000706544 D|044114557 025245830 +000000651 000633680 000711811 D|082979448 053408679 +000000651 000731623 000734220 D|098777286 001189425 +000000651 000744302 000775038 D|070902993 000083333 +000000651 000784836 000789980 D|070327162 081747721 +000000651 000794680 000793682 D|000754156 093889257 +000000651 000821142 000829446 D|027245844 059301361 +000000651 000822267 000883142 D|048454603 085733468 +000000651 000830486 000892969 D|044104965 041380471 +000000651 000853964 000905545 D|028050528 023066113 +000000651 000930949 000931620 D|069536711 028596057 +000000651 000938249 000937834 D|084360750 065234803 +000000651 000954000 000938047 D|009112580 041680276 +000000651 000961164 000946890 D|000717817 051158298 +000000652 000020874 000018215 D|092596305 044616068 +000000652 000045252 000036626 D|009503448 072937768 +000000652 000073343 000072390 D|001131795 097739728 +000000652 000076827 000079210 D|085168245 007943778 +000000652 000115573 000111231 D|033988996 018136246 +000000652 000120357 000128393 D|046024946 090680877 +000000652 000125301 000136340 D|060472979 083977791 +000000652 000135782 000142158 D|023193872 028001975 +000000652 000157542 000198438 D|026326938 000500012 +000000652 000183806 000209653 D|056951639 077476192 +000000652 000197936 000244847 D|086843973 078200132 +000000652 000207664 000272462 D|098788398 015744630 +000000652 000254255 000278388 D|046193674 039682793 +000000652 000254668 000289375 D|039084471 092884426 +000000652 000260421 000326671 D|041829590 086785091 +000000652 000273759 000386011 D|056218578 021341549 +000000652 000287964 000398973 D|056983924 047034537 +000000652 000296722 000451807 D|044373127 036673091 +000000652 000349085 000452659 D|009226721 079237336 +000000652 000355516 000463866 D|089962468 036197790 +000000652 000356025 000540092 D|020971028 045217885 +000000652 000356324 000544814 D|051508614 021967811 +000000652 000413741 000562155 D|058710567 012877785 +000000652 000432171 000566609 D|020918718 059668332 +000000652 000466050 000582618 D|013339692 019832895 +000000652 000497958 000588419 D|099400503 006710507 +000000652 000506637 000591525 D|086920854 081685648 +000000652 000534148 000609140 D|023011265 085620408 +000000652 000538317 000610980 D|084387354 008779752 +000000652 000548601 000618062 D|053381127 038154509 +000000652 000558513 000641993 D|055640289 043468238 +000000652 000570438 000660974 D|065421624 045767949 +000000652 000580430 000677953 D|059730608 043544943 +000000652 000584939 000693343 D|091404183 000489247 +000000652 000612165 000698577 D|093093088 082290022 +000000652 000624124 000704217 D|071218128 052078466 +000000652 000633396 000737968 D|043733432 076628668 +000000652 000633565 000770935 D|039990654 055169255 +000000652 000679014 000794516 D|014035739 046794242 +000000652 000708610 000812343 D|050372923 044884934 +000000652 000795179 000895523 D|057294719 007899849 +000000652 000862572 000912879 D|091850228 012763971 +000000652 000890242 000919906 D|060299093 020931912 +000000652 000920125 000920698 D|061685755 019375596 +000000652 000933296 000927193 D|008019031 093854856 +000000652 000940638 000934939 D|087421795 010299916 +000000652 000952487 000935789 D|018888364 070120862 +000000652 000954183 000942784 D|099938891 024057537 +000000652 000967885 000955892 D|054891697 030782394 +000000652 000990957 000972287 D|039162533 050724616 +000000653 000028146 000013883 D|068629687 086154124 +000000653 000053602 000027810 D|059691670 078431258 +000000653 000060686 000029723 D|028695440 076191413 +000000653 000073152 000046898 D|083911066 050482521 +000000653 000075932 000054497 D|043811927 079456562 +000000653 000097058 000056964 D|001202338 051498348 +000000653 000099937 000078284 D|035212613 054347929 +000000653 000143551 000087843 D|007996632 085570198 +000000653 000168178 000111630 D|079860245 039361028 +000000653 000176400 000120814 D|032315604 009759543 +000000653 000214436 000125329 D|024992700 065636401 +000000653 000225132 000150579 D|091657872 037350844 +000000653 000248334 000157751 D|046908360 097028848 +000000653 000267014 000178073 D|010986142 089477241 +000000653 000284589 000179143 D|018820883 092044812 +000000653 000290746 000201219 D|093090134 058573812 +000000653 000295410 000211593 D|041046056 041223917 +000000653 000329091 000234590 D|048093604 079916581 +000000653 000400535 000274661 D|095051058 075769792 +000000653 000435693 000287498 D|073410738 064199589 +000000653 000436052 000294614 D|022736096 086818802 +000000653 000445786 000301222 D|067433719 009649758 +000000653 000457878 000325342 D|097489974 057853042 +000000653 000466341 000329416 D|048183100 044410813 +000000653 000467698 000345366 D|066611427 056659917 +000000653 000468180 000392037 D|080621204 025724242 +000000653 000479100 000399735 D|063386585 080928225 +000000653 000505432 000404016 D|081049855 039669328 +000000653 000520298 000407226 D|057187569 008581321 +000000653 000550305 000422037 D|064895389 051698892 +000000653 000570122 000422715 D|021268274 000338759 +000000653 000573921 000503456 D|046196055 049594725 +000000653 000594024 000546609 D|011806799 099922896 +000000653 000630160 000584288 D|032737443 067771170 +000000653 000644870 000599839 D|051866088 057825373 +000000653 000647964 000628743 D|027823717 070982449 +000000653 000665008 000631967 D|070366493 042604532 +000000653 000667889 000639320 D|048919459 071438981 +000000653 000696270 000672932 D|048018098 004222402 +000000653 000720588 000755283 D|043247257 054327180 +000000653 000762404 000831709 D|016878423 020465556 +000000653 000765722 000847804 D|031509457 065899099 +000000653 000771799 000862198 D|069384974 086743951 +000000653 000821695 000866154 D|072060892 005005529 +000000653 000862986 000889985 D|036992767 033896859 +000000653 000869147 000898099 D|033563206 076803790 +000000653 000869686 000900759 D|000453434 025439059 +000000653 000885219 000923424 D|030417843 053335540 +000000653 000888599 000925123 D|080840608 067650548 +000000653 000995621 000997641 D|002407489 043451692 +000000654 000023473 000007176 D|021476729 033000346 +000000654 000033090 000024002 D|080037257 014650333 +000000654 000058713 000070924 D|037797253 073108227 +000000654 000062994 000072099 D|077146743 051189323 +000000654 000110682 000090551 D|095843467 063682547 +000000654 000111746 000092085 D|067006053 059987635 +000000654 000133164 000099176 D|073575099 000055411 +000000654 000157292 000119937 D|015242988 063466235 +000000654 000171525 000143894 D|056698498 013256138 +000000654 000174077 000157586 D|098570788 086933921 +000000654 000184529 000168748 D|046316226 041555561 +000000654 000221592 000190206 D|002117569 035625210 +000000654 000225149 000221686 D|084764494 060226353 +000000654 000241995 000234205 D|081599065 067391853 +000000654 000252211 000250712 D|065509060 001340258 +000000654 000261991 000267482 D|044431207 002124936 +000000654 000264858 000282564 D|002726374 083593371 +000000654 000304148 000300346 D|054133461 056546020 +000000654 000308078 000346335 D|080985329 004594539 +000000654 000376630 000356081 D|049306547 043889396 +000000654 000386228 000371932 D|012486186 034601099 +000000654 000426973 000385913 D|024382293 041064572 +000000654 000447168 000422168 D|076015020 009657044 +000000654 000481958 000430918 D|059457204 046194035 +000000654 000489151 000440028 D|082127526 003640706 +000000654 000525611 000443557 D|004430275 042696679 +000000654 000531175 000469305 D|039812516 058189654 +000000654 000543076 000469399 D|094553006 068989855 +000000654 000571237 000509744 D|010192936 065804026 +000000654 000626231 000512750 D|064594590 019646967 +000000654 000631450 000527713 D|013608570 011685371 +000000654 000649577 000600881 D|043539863 079194396 +000000654 000653997 000612069 D|013683377 039699686 +000000654 000672239 000620412 D|003839046 076401765 +000000654 000698463 000662661 D|067629018 072107731 +000000654 000727099 000693430 D|061314054 014946072 +000000654 000727562 000706531 D|046427640 041549407 +000000654 000737998 000707960 D|047149961 056938794 +000000654 000739880 000734251 D|083783984 051779151 +000000654 000765666 000736311 D|068932249 024379282 +000000654 000773578 000750562 D|052587396 095303304 +000000654 000814805 000815083 D|045209339 047874210 +000000654 000840670 000868378 D|038630895 079777706 +000000654 000863301 000889744 D|034353495 080353474 +000000654 000893694 000899355 D|001060062 008089663 +000000654 000917998 000904485 D|075995520 003051479 +000000654 000960312 000906198 D|060301473 037633878 +000000654 000964711 000944098 D|021039152 078458509 +000000654 000977227 000958411 D|031055099 065671261 +000000654 000988221 000994828 D|059101030 031584575 +000000655 000002698 000036880 D|027298426 075871223 +000000655 000026110 000046207 D|082855943 034049024 +000000655 000032647 000056736 D|084789800 075221557 +000000655 000034453 000063668 D|028514797 078887868 +000000655 000076753 000094284 D|063900016 044145933 +000000655 000110152 000112371 D|074242287 053499184 +000000655 000116016 000127374 D|060066705 022729406 +000000655 000116327 000146849 D|081567782 010023425 +000000655 000120668 000153233 D|066225666 031441352 +000000655 000134642 000157730 D|008032933 080945385 +000000655 000144406 000163859 D|040721943 001302350 +000000655 000166085 000178014 D|087285140 060379975 +000000655 000177198 000186742 D|060344536 082399630 +000000655 000177361 000198659 D|021231821 094475026 +000000655 000187516 000213532 D|019303339 096506418 +000000655 000205717 000243508 D|041409831 078160506 +000000655 000300212 000287670 D|012853671 070761891 +000000655 000320095 000287899 D|094390782 048609154 +000000655 000327139 000293669 D|082176332 082605742 +000000655 000339085 000299875 D|060093835 041470719 +000000655 000361796 000305164 D|095496505 032157786 +000000655 000422170 000318543 D|035525786 098359054 +000000655 000451674 000337772 D|008183174 077875719 +000000655 000473929 000338233 D|001849954 022314099 +000000655 000530301 000348020 D|016511958 088780382 +000000655 000555851 000391378 D|064633180 044284581 +000000655 000556861 000410497 D|058851798 031070157 +000000655 000560126 000428350 D|016907858 007178526 +000000655 000564049 000467736 D|021268254 050476292 +000000655 000581452 000481582 D|092449151 005756874 +000000655 000584803 000520297 D|018240841 045342909 +000000655 000604802 000521548 D|097697641 030005220 +000000655 000655275 000550251 D|025785100 000648100 +000000655 000664704 000610495 D|063669999 030435476 +000000655 000692204 000613918 D|075193206 069882721 +000000655 000722411 000634700 D|046684835 079322569 +000000655 000724717 000636248 D|094089367 012588682 +000000655 000739404 000643880 D|025561735 048664380 +000000655 000739952 000654217 D|071382252 064271092 +000000655 000752568 000711050 D|070888215 013667231 +000000655 000769657 000719118 D|014767675 024815368 +000000655 000797808 000732836 D|025727759 096200027 +000000655 000851589 000761679 D|092252202 026591473 +000000655 000851976 000809256 D|043515705 074829365 +000000655 000855506 000848639 D|094764280 089639771 +000000655 000903951 000914479 D|091417818 070926241 +000000655 000904446 000979483 D|058713814 020840752 +000000655 000923599 000982453 D|040199425 081412949 +000000655 000925053 000988469 D|076877515 093319651 +000000655 000986562 000999892 D|080132277 033800840 +000000656 000008053 000015340 D|077657688 005421680 +000000656 000013783 000076020 D|016968478 029395086 +000000656 000023564 000105465 D|024513857 075680583 +000000656 000031136 000114717 D|048952180 054444146 +000000656 000032526 000120682 D|018584975 038376805 +000000656 000043358 000129044 D|095333707 017917528 +000000656 000054267 000145816 D|056113703 050561731 +000000656 000060676 000181472 D|054450671 033315522 +000000656 000103469 000188970 D|048783709 012178734 +000000656 000108490 000201332 D|034869143 044509981 +000000656 000115964 000202416 D|072657848 066906316 +000000656 000120666 000241680 D|047061906 095587403 +000000656 000126934 000246068 D|048595184 045634317 +000000656 000144790 000250208 D|096761567 004898180 +000000656 000154056 000307294 D|016518541 049432608 +000000656 000183417 000407975 D|027598786 019470023 +000000656 000189127 000411137 D|057477197 092672538 +000000656 000209148 000449044 D|061221610 031729737 +000000656 000211864 000478377 D|076456036 064821737 +000000656 000229510 000491496 D|029502751 069841458 +000000656 000249734 000505834 D|024094667 089468389 +000000656 000267424 000510619 D|093141715 052918826 +000000656 000275701 000519552 D|048380462 034280671 +000000656 000284757 000546873 D|024523949 085033818 +000000656 000322238 000550032 D|051949364 044166377 +000000656 000396247 000555016 D|088371784 082334990 +000000656 000430478 000573606 D|086577205 010412935 +000000656 000451305 000578180 D|033772427 032132916 +000000656 000471400 000588473 D|013002693 022581753 +000000656 000547109 000590073 D|049461953 012237061 +000000656 000552096 000605840 D|000450272 087296442 +000000656 000563127 000620869 D|062344114 053439733 +000000656 000566348 000629453 D|047722245 028208790 +000000656 000574566 000656529 D|031218506 059004195 +000000656 000574884 000683872 D|025211166 053134972 +000000656 000596477 000685701 D|099691420 070718902 +000000656 000609838 000716575 D|044473846 084040009 +000000656 000625030 000748184 D|052436386 026588204 +000000656 000632299 000749180 D|014247011 078220457 +000000656 000642966 000765501 D|003604618 076379880 +000000656 000662775 000804823 D|050431174 020946513 +000000656 000675815 000807710 D|053562926 029103857 +000000656 000742153 000862742 D|024771168 044416061 +000000656 000800981 000889024 D|062714072 084905694 +000000656 000804786 000904286 D|037005448 032588485 +000000656 000864326 000921440 D|096048509 007830496 +000000656 000867172 000942443 D|083527730 024786985 +000000656 000917823 000944952 D|071053861 010978214 +000000656 000998263 000961783 D|043659139 082871368 +000000656 000999732 000966151 D|035550568 090955363 +000000657 000000712 000026022 D|071124377 023998315 +000000657 000003940 000027307 D|074870761 043036567 +000000657 000038171 000102203 D|082548895 086887420 +000000657 000113431 000108940 D|086581082 057983146 +000000657 000125181 000116635 D|073945884 029833587 +000000657 000190100 000126273 D|025839454 023518369 +000000657 000234535 000133135 D|095160494 048860136 +000000657 000244085 000136176 D|012301976 065762184 +000000657 000264206 000148330 D|028242950 095005681 +000000657 000264239 000150677 D|021117347 038378594 +000000657 000276418 000175647 D|015487793 013079052 +000000657 000315232 000182203 D|073442593 013425084 +000000657 000360315 000193244 D|022952384 043087516 +000000657 000363073 000226819 D|036145098 022067642 +000000657 000376187 000237266 D|007217248 033135615 +000000657 000376366 000250011 D|028897398 037295878 +000000657 000378083 000272771 D|047388356 006741942 +000000657 000391110 000285289 D|078558931 075826603 +000000657 000406509 000297442 D|079363361 029291877 +000000657 000416514 000306515 D|034855962 018214672 +000000657 000422430 000332624 D|069729923 058306701 +000000657 000427138 000378975 D|039394883 018728281 +000000657 000443570 000424190 D|016734752 078692496 +000000657 000457118 000431328 D|026067054 088819392 +000000657 000472344 000464363 D|082605928 004673286 +000000657 000500723 000469949 D|018117550 020422686 +000000657 000539124 000471064 D|016662058 038072327 +000000657 000544673 000488678 D|017670064 098133163 +000000657 000561366 000489174 D|080071144 084470839 +000000657 000589882 000489941 D|085034173 089698094 +000000657 000590539 000490689 D|039602882 038025313 +000000657 000597885 000494794 D|000009066 071679021 +000000657 000602981 000575803 D|098678082 012489397 +000000657 000647612 000592769 D|087482021 081752973 +000000657 000661189 000601861 D|082206423 057113528 +000000657 000665711 000603967 D|087833117 063117418 +000000657 000681743 000613347 D|057679682 088261399 +000000657 000693697 000622853 D|066895132 022765878 +000000657 000718711 000670210 D|087199326 030282349 +000000657 000746487 000728131 D|046060283 022949283 +000000657 000764356 000760788 D|092366754 083560019 +000000657 000789382 000777386 D|008784968 078198592 +000000657 000793504 000819812 D|007817724 062117724 +000000657 000827592 000837291 D|026449265 031131661 +000000657 000836538 000847890 D|022341682 082367758 +000000657 000921102 000868278 D|062030675 036315049 +000000657 000923832 000893749 D|091392518 060788487 +000000657 000960276 000909842 D|028142245 011358496 +000000657 000982282 000942374 D|060926194 020289347 +000000657 000998316 000977300 D|047359492 098735857 +000000658 000016122 000005503 D|045658028 023484134 +000000658 000070293 000013916 D|033963934 079768932 +000000658 000076545 000022648 D|034206562 054336647 +000000658 000100730 000024391 D|021230859 094102336 +000000658 000120882 000037141 D|034170684 085782758 +000000658 000133581 000073260 D|091777411 056785634 +000000658 000142406 000081651 D|070271557 037818906 +000000658 000145202 000089329 D|098460729 056284067 +000000658 000157612 000094798 D|045678688 085517469 +000000658 000159658 000096694 D|096133008 066178829 +000000658 000168595 000100306 D|057024273 072501956 +000000658 000198698 000156292 D|065052620 013596127 +000000658 000212823 000164012 D|074955219 029095358 +000000658 000217133 000179667 D|033887805 081343412 +000000658 000220321 000187306 D|053518585 063860139 +000000658 000224224 000201980 D|028232481 007958706 +000000658 000245222 000232570 D|052728798 089784862 +000000658 000247168 000234189 D|060700335 046902561 +000000658 000252801 000238906 D|079948094 004795716 +000000658 000275986 000252382 D|063989982 001585169 +000000658 000309792 000265613 D|023099062 099944831 +000000658 000338982 000270387 D|000246144 044587666 +000000658 000354398 000316933 D|039016421 080722328 +000000658 000366772 000349752 D|037154283 053930563 +000000658 000385051 000350550 D|011158891 034328550 +000000658 000399856 000367897 D|075768813 092644884 +000000658 000458793 000395422 D|081327023 073687620 +000000658 000469688 000405073 D|064054004 067087376 +000000658 000524298 000431475 D|072250328 040633743 +000000658 000535652 000501853 D|085319397 035932162 +000000658 000558679 000518384 D|069030382 087445348 +000000658 000568100 000584365 D|063600401 025549960 +000000658 000577715 000588232 D|080702687 021873165 +000000658 000667204 000619557 D|076764046 071799428 +000000658 000690712 000634562 D|049650285 026831837 +000000658 000755435 000652221 D|063092032 083144700 +000000658 000756956 000655658 D|097729187 071146382 +000000658 000765745 000710301 D|045264959 005622811 +000000658 000771732 000733967 D|058205544 006690329 +000000658 000795124 000769997 D|004441373 034398157 +000000658 000813355 000778548 D|068578593 097253556 +000000658 000845329 000782105 D|039144694 064368914 +000000658 000855793 000783393 D|050602061 088728103 +000000658 000857398 000799756 D|092610772 088629412 +000000658 000885397 000819648 D|066683820 083903466 +000000658 000910646 000844615 D|096015429 000774574 +000000658 000917134 000917360 D|029977875 061133159 +000000658 000973160 000932479 D|039641303 018642344 +000000658 000976983 000957623 D|041094542 078656637 +000000658 000982718 000978819 D|003122306 061008232 +000000659 000009899 000060568 D|066696471 082375501 +000000659 000044703 000088796 D|083439393 082468463 +000000659 000049666 000101914 D|054423607 056066201 +000000659 000084358 000146016 D|058337290 031783177 +000000659 000103706 000146936 D|010010769 002971813 +000000659 000123723 000182062 D|057773378 082151435 +000000659 000142547 000192233 D|004916740 011159889 +000000659 000151634 000192638 D|091104483 059739047 +000000659 000174695 000199247 D|053590707 069501697 +000000659 000176660 000233520 D|056083747 060232759 +000000659 000185317 000272433 D|001780805 041304327 +000000659 000207632 000274054 D|011719841 057487140 +000000659 000208756 000302745 D|015817270 087569075 +000000659 000228651 000323336 D|012124628 057194609 +000000659 000235297 000336749 D|011704554 014818557 +000000659 000240378 000357981 D|065110480 094150374 +000000659 000254392 000358153 D|034418534 006699420 +000000659 000274323 000386856 D|098918344 047149397 +000000659 000325629 000387299 D|057803076 032168357 +000000659 000358128 000404841 D|034604540 082580272 +000000659 000384914 000414112 D|014275728 026056820 +000000659 000394887 000466940 D|068140031 082463824 +000000659 000418771 000471022 D|063468514 046074894 +000000659 000465083 000485453 D|022455205 052031051 +000000659 000466061 000518087 D|057895793 083237472 +000000659 000466228 000553948 D|031402380 067737389 +000000659 000467051 000578587 D|099533100 011509159 +000000659 000481906 000581349 D|050867108 024703080 +000000659 000529445 000583097 D|012457007 082022659 +000000659 000572036 000586494 D|094764794 095442081 +000000659 000574356 000589119 D|017113510 071151606 +000000659 000590736 000602833 D|010981804 038465617 +000000659 000600523 000606802 D|004045483 099820842 +000000659 000613893 000638467 D|011466085 012077003 +000000659 000646704 000643813 D|015655481 051563593 +000000659 000668610 000653973 D|020536586 076708960 +000000659 000677235 000668859 D|017417172 093086592 +000000659 000744821 000681533 D|048435541 022961866 +000000659 000751869 000711184 D|058865666 094542127 +000000659 000753851 000738847 D|011501586 072258171 +000000659 000757992 000763368 D|027424406 097144125 +000000659 000805048 000784101 D|072547173 034823170 +000000659 000808625 000832161 D|057203637 032690456 +000000659 000834271 000863116 D|006524350 057617037 +000000659 000853189 000889118 D|087732230 058866135 +000000659 000881685 000899252 D|010510994 069394400 +000000659 000887621 000902231 D|072149202 018584076 +000000659 000937312 000907615 D|040795300 034933788 +000000659 000983200 000930010 D|017491362 076966674 +000000659 000984273 000998420 D|002244180 044574187 +000000660 000009554 000006906 D|043498797 027550738 +000000660 000017434 000018474 D|050894300 084969675 +000000660 000030037 000023569 D|013280949 040534158 +000000660 000030816 000026867 D|045341708 014727279 +000000660 000047738 000048239 D|068364779 098290189 +000000660 000055811 000056810 D|044515786 095908904 +000000660 000069016 000106187 D|089393489 005841034 +000000660 000070977 000146076 D|086683254 013619656 +000000660 000092496 000165033 D|052214300 090269476 +000000660 000123417 000177924 D|043416973 073957434 +000000660 000124652 000188724 D|090526982 066489757 +000000660 000136489 000205925 D|035497443 078524069 +000000660 000170716 000240924 D|013189523 066175113 +000000660 000181460 000247290 D|029249924 003550643 +000000660 000199267 000282102 D|063928131 026918470 +000000660 000235700 000282236 D|034207354 041962086 +000000660 000256179 000362487 D|098446351 068329029 +000000660 000297845 000380883 D|029926705 000145110 +000000660 000366774 000407848 D|054787533 033465151 +000000660 000430955 000422722 D|019430437 058555438 +000000660 000555591 000449459 D|066833676 073441582 +000000660 000558224 000474680 D|001438524 084510854 +000000660 000569169 000487301 D|070662518 051695764 +000000660 000580751 000520346 D|027458265 001183381 +000000660 000618619 000521712 D|080337659 028312183 +000000660 000626006 000535689 D|070040907 065426729 +000000660 000654570 000545945 D|067986075 055638227 +000000660 000662988 000556744 D|050267537 016505955 +000000660 000704709 000567432 D|036604771 035116021 +000000660 000708728 000584760 D|044279786 091616301 +000000660 000724757 000590740 D|089442109 066256697 +000000660 000755991 000669093 D|087754712 037498898 +000000660 000768159 000688101 D|000801079 051540911 +000000660 000776585 000734684 D|004452757 083030444 +000000660 000782806 000749860 D|079524450 080080920 +000000660 000784316 000754906 D|040158323 062078612 +000000660 000797189 000758372 D|081812652 062994154 +000000660 000805907 000761674 D|089509854 055371633 +000000660 000821817 000770203 D|091391849 051246060 +000000660 000840887 000774046 D|006350512 056794816 +000000660 000909458 000812447 D|046544722 071020033 +000000660 000922728 000819690 D|094001540 017644375 +000000660 000930533 000828154 D|073762903 043285307 +000000660 000934076 000844954 D|047212960 021032757 +000000660 000950051 000874065 D|037998459 094693209 +000000660 000955642 000883952 D|076522362 017672841 +000000660 000973018 000910215 D|010979077 087625898 +000000660 000974570 000938922 D|053039151 034394574 +000000660 000978345 000959507 D|002706269 028511655 +000000660 000993152 000976881 D|077006174 028830542 +000000661 000007970 000013505 D|081968926 008894613 +000000661 000051279 000014727 D|033015296 086338380 +000000661 000071190 000031486 D|004997471 023192789 +000000661 000090472 000070865 D|022569745 064602594 +000000661 000136901 000074608 D|024887335 077673065 +000000661 000151813 000117347 D|058847406 062561268 +000000661 000159322 000117473 D|031240546 078417298 +000000661 000172352 000148445 D|010626642 072704108 +000000661 000203805 000153467 D|006112394 024838008 +000000661 000205688 000189573 D|069061621 076517886 +000000661 000205921 000205155 D|019321446 061049715 +000000661 000221814 000212194 D|018161563 090550766 +000000661 000237407 000214548 D|050801600 098428226 +000000661 000268022 000240610 D|004526364 049833800 +000000661 000300324 000249149 D|045858589 001324831 +000000661 000305480 000251094 D|070579636 083871638 +000000661 000310630 000258589 D|000857607 048196638 +000000661 000311066 000259451 D|097057514 012292944 +000000661 000339488 000276237 D|012376822 054834501 +000000661 000382435 000298398 D|091464158 076678010 +000000661 000385317 000308775 D|084221111 056060656 +000000661 000396117 000317016 D|010479332 040158976 +000000661 000403083 000325054 D|051064156 057837004 +000000661 000428840 000410471 D|005793818 030978097 +000000661 000431962 000412029 D|070265095 008406444 +000000661 000435250 000441429 D|081933497 059504000 +000000661 000457731 000514832 D|050042848 034461909 +000000661 000468299 000533603 D|096459774 010381159 +000000661 000473213 000565995 D|070826664 056126491 +000000661 000513241 000572082 D|066482631 036504789 +000000661 000561083 000585275 D|067325105 054827384 +000000661 000632815 000587719 D|066588297 011480073 +000000661 000637684 000596162 D|064326826 063153923 +000000661 000692457 000608873 D|097130073 080902279 +000000661 000747091 000620962 D|004376720 001099135 +000000661 000751013 000635684 D|052521597 055886929 +000000661 000777772 000639947 D|031175323 062303795 +000000661 000800467 000689822 D|052335055 021552191 +000000661 000803498 000715181 D|076964478 025931660 +000000661 000817379 000730397 D|035891052 069105222 +000000661 000820593 000782242 D|054968375 074119041 +000000661 000860601 000795947 D|086895225 061039088 +000000661 000870582 000811515 D|030671950 015791747 +000000661 000893650 000832060 D|053503765 008168393 +000000661 000895689 000871926 D|057672849 002748772 +000000661 000911644 000877357 D|075204122 056901532 +000000661 000927016 000884668 D|090358199 031117110 +000000661 000930228 000913619 D|018486055 004318553 +000000661 000939627 000933291 D|059085166 011012404 +000000661 000995513 000999075 D|010447503 035412175 +000000662 000017419 000002381 D|092156019 027568567 +000000662 000055991 000030637 D|061143862 001446541 +000000662 000090168 000031196 D|027666543 072939256 +000000662 000121084 000073970 D|016157435 007659431 +000000662 000165642 000110558 D|050650748 029944104 +000000662 000168601 000115999 D|027083287 011083023 +000000662 000190463 000150227 D|027009536 009577509 +000000662 000229219 000181213 D|023888349 052777578 +000000662 000248813 000186587 D|074788252 032736935 +000000662 000352739 000220313 D|046868033 095595788 +000000662 000368669 000222697 D|016687494 075372395 +000000662 000382549 000246457 D|084701397 068151905 +000000662 000397374 000246672 D|080805707 046156362 +000000662 000424277 000254672 D|064664980 069029604 +000000662 000443069 000262029 D|025797917 033937137 +000000662 000444621 000350768 D|042259578 067385477 +000000662 000444946 000384357 D|042595967 087519706 +000000662 000452378 000396800 D|054052901 053824357 +000000662 000457105 000446067 D|066945865 026802549 +000000662 000469336 000452666 D|062405912 059956646 +000000662 000472488 000466610 D|033027675 029832152 +000000662 000504056 000478954 D|050892977 035074725 +000000662 000544682 000488881 D|086512551 082715191 +000000662 000547654 000506463 D|010247668 019157483 +000000662 000566359 000522475 D|063646635 083746979 +000000662 000573394 000529482 D|099854756 049378363 +000000662 000576045 000539944 D|056621475 094289856 +000000662 000588371 000567511 D|035299046 006365986 +000000662 000614495 000573118 D|002570178 063993029 +000000662 000642687 000587667 D|022951377 077701537 +000000662 000652417 000624099 D|019879457 007287912 +000000662 000670388 000632195 D|075789639 007959189 +000000662 000677134 000632287 D|097196622 085635339 +000000662 000683802 000641343 D|002006051 036685881 +000000662 000720301 000654465 D|073019731 032288280 +000000662 000728214 000685482 D|039690876 067763426 +000000662 000736579 000703356 D|063954170 039247316 +000000662 000800001 000738784 D|089496552 028930677 +000000662 000824950 000751818 D|019524168 061891634 +000000662 000835833 000797613 D|089303760 014758829 +000000662 000852943 000803664 D|093342413 022157901 +000000662 000862514 000843067 D|065756872 063034908 +000000662 000868715 000853436 D|072224979 062549887 +000000662 000889102 000857192 D|086658181 073631419 +000000662 000901021 000877784 D|060890762 065987870 +000000662 000925570 000880056 D|056290936 044148141 +000000662 000926198 000915121 D|042317307 051398501 +000000662 000965798 000918792 D|057756328 000863740 +000000662 000971684 000975644 D|087430238 054526634 +000000662 000978655 000983033 D|081126104 055089063 +000000663 000020983 000024842 D|037842098 088161018 +000000663 000034340 000027111 D|084860217 027013067 +000000663 000051266 000027927 D|018677692 073791871 +000000663 000058541 000033778 D|049888966 022643144 +000000663 000059843 000034485 D|099121969 079360163 +000000663 000106157 000069162 D|011515288 003217103 +000000663 000150082 000082846 D|041655629 087965228 +000000663 000165592 000085732 D|022847350 088363002 +000000663 000182324 000106974 D|012031196 016882148 +000000663 000187353 000123745 D|016670646 059192884 +000000663 000200912 000162036 D|032388286 065525435 +000000663 000213228 000190298 D|088855106 091716110 +000000663 000230635 000225539 D|068654221 018632090 +000000663 000250342 000257465 D|050159239 076287655 +000000663 000255386 000272359 D|039185512 064642823 +000000663 000284825 000292870 D|079336854 073540609 +000000663 000289230 000314267 D|013348661 060689384 +000000663 000343139 000371055 D|076742827 003314872 +000000663 000381035 000380801 D|007156625 058178857 +000000663 000402815 000434723 D|071701269 051877657 +000000663 000409668 000435409 D|059888033 060599729 +000000663 000424919 000438735 D|015768888 072737933 +000000663 000435570 000497900 D|089059836 037155660 +000000663 000483112 000530098 D|018868716 055576993 +000000663 000513252 000552882 D|054742231 032407486 +000000663 000523587 000555751 D|029628225 050267918 +000000663 000537514 000564185 D|016741737 049458891 +000000663 000538394 000571144 D|045373597 038724423 +000000663 000539507 000582267 D|038821428 042788731 +000000663 000633078 000666029 D|039167630 096899865 +000000663 000650432 000678215 D|050073335 071454409 +000000663 000665330 000685367 D|075622076 041521962 +000000663 000691695 000687541 D|073987371 022800728 +000000663 000700523 000710317 D|062803067 005817821 +000000663 000726174 000728877 D|018942661 037999876 +000000663 000730494 000732647 D|083970227 062450979 +000000663 000756799 000759366 D|045837986 002064904 +000000663 000787814 000768647 D|047764393 092547071 +000000663 000798434 000770315 D|047192001 059286259 +000000663 000800724 000778851 D|039732870 091405532 +000000663 000822505 000832206 D|030440340 038247228 +000000663 000850526 000858342 D|003545787 001026276 +000000663 000875083 000891487 D|082299209 038275485 +000000663 000913927 000894948 D|002632823 030454923 +000000663 000926984 000938492 D|029483691 004826549 +000000663 000948753 000941045 D|094759016 065555987 +000000663 000955917 000943690 D|069340602 086609927 +000000663 000960533 000946492 D|030589947 021985449 +000000663 000968808 000960418 D|003560141 022169978 +000000663 000990910 000961877 D|065094868 086128784 +000000664 000013116 000029868 D|006548127 083728306 +000000664 000013825 000046696 D|085790918 034214860 +000000664 000029690 000058022 D|008373174 068847418 +000000664 000058616 000087812 D|049345863 083015844 +000000664 000059506 000090253 D|089402057 020389504 +000000664 000060435 000097341 D|093600948 028944821 +000000664 000070953 000118961 D|001037702 023976024 +000000664 000080723 000122348 D|095077396 006031570 +000000664 000165884 000139537 D|072577384 007624087 +000000664 000202087 000142959 D|007386012 095750017 +000000664 000221421 000154790 D|092462843 022434502 +000000664 000245484 000182809 D|089275313 031118338 +000000664 000254111 000199756 D|032074984 062816106 +000000664 000259824 000235756 D|049425053 008040129 +000000664 000281019 000243100 D|042525742 041933164 +000000664 000283776 000257249 D|034024502 010685376 +000000664 000307304 000261967 D|078488508 068159207 +000000664 000312857 000283978 D|090414187 034691219 +000000664 000362234 000284928 D|003134539 016704137 +000000664 000401449 000289461 D|053073523 095928770 +000000664 000426967 000365797 D|055783116 017010129 +000000664 000427707 000377396 D|074289794 031453496 +000000664 000438802 000380634 D|065536886 070235036 +000000664 000441003 000392465 D|079216992 031834546 +000000664 000451554 000401461 D|002220442 019268928 +000000664 000458869 000424956 D|001574708 027249622 +000000664 000479292 000428744 D|065418724 006612121 +000000664 000495674 000492224 D|089668686 063988567 +000000664 000534014 000549270 D|052051404 056608057 +000000664 000540030 000614700 D|097584254 003721950 +000000664 000549661 000620414 D|057315502 078909395 +000000664 000551989 000645609 D|001028130 013426991 +000000664 000567428 000674322 D|068888792 047946799 +000000664 000574635 000678493 D|085111549 066478016 +000000664 000587132 000678877 D|065720739 084208045 +000000664 000590748 000704304 D|063476474 052580127 +000000664 000610698 000713432 D|090050534 004400939 +000000664 000612575 000721335 D|080610960 034279186 +000000664 000624499 000742513 D|096119372 095175844 +000000664 000669545 000769409 D|004759731 017269015 +000000664 000673364 000790822 D|003934505 029615773 +000000664 000700918 000805123 D|042186940 095993502 +000000664 000702026 000836037 D|095236012 091508470 +000000664 000716180 000851232 D|053445261 055489147 +000000664 000762335 000910104 D|064205535 046820149 +000000664 000771309 000914335 D|050044482 073312250 +000000664 000801692 000916318 D|068238944 032505060 +000000664 000818697 000921332 D|069828048 007660328 +000000664 000901015 000925164 D|025999736 065090896 +000000664 000943438 000985303 D|037429778 054423997 +000000665 000035924 000010795 D|058651124 064676061 +000000665 000059687 000023052 D|006737323 027845865 +000000665 000079551 000111659 D|083022341 089847279 +000000665 000094010 000129788 D|099353734 073656980 +000000665 000108197 000135129 D|087017723 022280788 +000000665 000111723 000147738 D|017723158 097548289 +000000665 000144037 000151588 D|045624828 096280360 +000000665 000145743 000162264 D|014563818 080942587 +000000665 000148561 000174631 D|029822250 085378051 +000000665 000150599 000201099 D|016241617 086338008 +000000665 000186733 000204008 D|014808752 039511984 +000000665 000223599 000208243 D|048653052 025146060 +000000665 000235749 000249690 D|069087557 047838302 +000000665 000300247 000254028 D|035996515 099564742 +000000665 000359416 000257595 D|029375045 006678919 +000000665 000431335 000270258 D|098853131 005012828 +000000665 000450067 000295008 D|083787479 080970936 +000000665 000451078 000296473 D|047299095 043147950 +000000665 000455331 000301944 D|081714708 038337280 +000000665 000456327 000309932 D|057064323 076858889 +000000665 000478387 000331280 D|033477483 067834418 +000000665 000480306 000339676 D|000879824 095542640 +000000665 000482950 000347989 D|053013837 076133482 +000000665 000493014 000349064 D|062396482 080242508 +000000665 000509094 000379193 D|019765685 088593888 +000000665 000511449 000379311 D|021640062 061388335 +000000665 000528714 000407003 D|079800789 028761500 +000000665 000573336 000409713 D|004182450 022088830 +000000665 000585444 000433070 D|089734034 007124500 +000000665 000610436 000450931 D|028287532 068301741 +000000665 000621300 000461537 D|088893761 072353699 +000000665 000629818 000469211 D|042674159 086963859 +000000665 000664796 000471652 D|036544334 033204354 +000000665 000736793 000515096 D|052365237 067249906 +000000665 000741396 000524844 D|075954649 094341363 +000000665 000761805 000535810 D|052898950 078009995 +000000665 000782639 000564859 D|054776307 018127660 +000000665 000817847 000571841 D|027886716 049422034 +000000665 000821029 000704543 D|014428942 023592662 +000000665 000835838 000756928 D|096255260 062835848 +000000665 000889777 000786187 D|060874222 097933158 +000000665 000910932 000798425 D|084924805 010467135 +000000665 000915518 000818070 D|011983263 011954118 +000000665 000920150 000826548 D|075907684 043524514 +000000665 000931625 000887978 D|085240983 097729102 +000000665 000957311 000900857 D|075317404 001977152 +000000665 000960042 000948113 D|019505502 089797367 +000000665 000960630 000978567 D|085796123 056294866 +000000665 000976836 000986488 D|013262992 056525049 +000000665 000977097 000996372 D|042566666 070384768 +000000666 000001319 000015415 D|050349975 005410068 +000000666 000009076 000034004 D|037319377 004495537 +000000666 000009716 000039353 D|093392532 059465220 +000000666 000031667 000077690 D|023555785 035829377 +000000666 000041334 000245936 D|092374327 037343967 +000000666 000051759 000266521 D|061430652 018861909 +000000666 000081288 000321500 D|037611352 027244013 +000000666 000090287 000348916 D|006639681 045623967 +000000666 000097988 000365580 D|007445150 074852555 +000000666 000099428 000372321 D|080526547 045690910 +000000666 000107163 000439680 D|045057348 004511578 +000000666 000177912 000451997 D|005712179 087885841 +000000666 000240490 000494413 D|030508217 011380493 +000000666 000254431 000501089 D|004423117 071720151 +000000666 000259555 000530962 D|015321260 068442320 +000000666 000278620 000547642 D|072502886 000760657 +000000666 000352982 000550515 D|097898792 030950863 +000000666 000361152 000571481 D|068391075 053384252 +000000666 000373228 000574390 D|053708422 085770744 +000000666 000383377 000594669 D|036971389 037832711 +000000666 000428288 000596014 D|071448740 078845050 +000000666 000466160 000622681 D|025183141 023615895 +000000666 000477090 000628516 D|041164974 039585619 +000000666 000488510 000631883 D|090045927 025039765 +000000666 000505403 000632477 D|063151460 037523208 +000000666 000518311 000635421 D|044595563 072402285 +000000666 000543516 000695166 D|032922993 014784346 +000000666 000546086 000707197 D|080093452 042173433 +000000666 000609471 000737309 D|020123095 050918502 +000000666 000614792 000741143 D|015453535 015156401 +000000666 000663724 000753228 D|006570157 023631281 +000000666 000666266 000766784 D|047480710 009392798 +000000666 000683010 000821366 D|035270493 056524780 +000000666 000697720 000832876 D|023701822 098385585 +000000666 000700106 000836783 D|064709026 085615459 +000000666 000762652 000841504 D|077836304 057573209 +000000666 000763093 000854923 D|043215563 004757042 +000000666 000769770 000861517 D|073859801 076558734 +000000666 000780725 000880777 D|008064014 030188639 +000000666 000790566 000884174 D|067473328 061603809 +000000666 000801426 000885942 D|088393328 006160617 +000000666 000813058 000900699 D|022599705 099562608 +000000666 000821301 000901154 D|056878730 015123327 +000000666 000863130 000909804 D|009251441 082224728 +000000666 000864658 000913499 D|047645053 042683342 +000000666 000866720 000945633 D|041160485 045463890 +000000666 000902206 000949006 D|078071412 015483316 +000000666 000934000 000949812 D|001968417 057918903 +000000666 000942624 000950116 D|092648044 039353316 +000000666 000998716 000960024 D|014577384 044518698 +000000667 000057293 000003476 D|001520595 025529031 +000000667 000077418 000018469 D|076624657 056056614 +000000667 000111966 000018750 D|031739860 056746844 +000000667 000138815 000037917 D|023377004 052652474 +000000667 000139376 000117584 D|095078838 008677643 +000000667 000142324 000156195 D|033235866 076098360 +000000667 000192419 000157645 D|046398772 037483068 +000000667 000218359 000182144 D|079749162 099754931 +000000667 000220316 000225651 D|069131530 046615492 +000000667 000231578 000231090 D|082485073 024428581 +000000667 000236008 000268040 D|029838730 063037506 +000000667 000236962 000275190 D|087102605 053486491 +000000667 000240414 000282426 D|018506181 079653439 +000000667 000258930 000284123 D|089495209 018137476 +000000667 000270442 000335726 D|039410885 064942660 +000000667 000275722 000364200 D|091332019 032576888 +000000667 000282660 000473022 D|067988752 000453314 +000000667 000304505 000473314 D|015612109 067566113 +000000667 000309393 000486512 D|050408543 031235701 +000000667 000382129 000500177 D|050401286 089691143 +000000667 000399267 000501664 D|023141817 097971980 +000000667 000403310 000526299 D|019219011 007798982 +000000667 000426277 000547207 D|023979539 059298216 +000000667 000436288 000583094 D|027872851 043333784 +000000667 000488037 000602861 D|028338820 046797119 +000000667 000535094 000606833 D|063058771 060722155 +000000667 000541155 000627683 D|041916678 061770867 +000000667 000586764 000660740 D|076728947 085310365 +000000667 000593893 000674861 D|074111294 062433088 +000000667 000611706 000685936 D|052640374 077577857 +000000667 000665344 000695267 D|069662961 059790234 +000000667 000680561 000706735 D|006908107 079621865 +000000667 000700205 000714513 D|040407507 083531490 +000000667 000711040 000717298 D|060937442 072040692 +000000667 000727339 000749023 D|066149168 081725861 +000000667 000742236 000771676 D|094684839 008635613 +000000667 000748508 000843043 D|088225969 083704864 +000000667 000752146 000847653 D|012228424 020099241 +000000667 000779080 000851202 D|086228470 014606485 +000000667 000805195 000858155 D|057533653 085694552 +000000667 000809691 000859324 D|055406520 039211345 +000000667 000831797 000865501 D|058951611 006068331 +000000667 000892107 000886745 D|044539169 023734002 +000000667 000904409 000886776 D|091791163 013515914 +000000667 000913082 000907697 D|039837687 099186287 +000000667 000955945 000914025 D|044639422 073662402 +000000667 000958771 000938010 D|013472770 055502257 +000000667 000964776 000948922 D|092400544 073550837 +000000667 000966916 000965515 D|023802261 068838369 +000000667 000987964 000995528 D|086963757 053911847 +000000668 000028021 000023502 D|002280024 035610954 +000000668 000063626 000028462 D|079891669 096536372 +000000668 000084333 000131370 D|066863065 089579541 +000000668 000113816 000149450 D|061337657 079132578 +000000668 000141730 000163093 D|059188452 095704927 +000000668 000145448 000192395 D|012616472 037584034 +000000668 000222724 000235550 D|006301015 004167364 +000000668 000302369 000258044 D|073366373 043099275 +000000668 000330413 000306643 D|002933017 033422356 +000000668 000361388 000326673 D|051246664 015321447 +000000668 000375165 000356505 D|033976244 032728012 +000000668 000378202 000393995 D|025829999 060078098 +000000668 000383647 000420398 D|041704285 080303033 +000000668 000386237 000435788 D|065481067 028011818 +000000668 000397931 000459168 D|088206732 083293869 +000000668 000407964 000494516 D|028162232 034516411 +000000668 000423029 000495375 D|041287240 007456771 +000000668 000434582 000518421 D|039592124 020606779 +000000668 000463221 000530219 D|071956842 036791804 +000000668 000468635 000537090 D|015166971 032898880 +000000668 000494465 000549636 D|066520352 068314141 +000000668 000557281 000557393 D|085690119 001358478 +000000668 000572267 000562498 D|049154876 002238878 +000000668 000575355 000568374 D|000433272 094832527 +000000668 000595060 000575253 D|038046946 094416519 +000000668 000630843 000590364 D|000065645 005160776 +000000668 000641802 000606430 D|091195210 099503026 +000000668 000669544 000611137 D|044792050 019740479 +000000668 000682468 000651140 D|010824983 098598826 +000000668 000686435 000652524 D|009902245 029007199 +000000668 000703004 000669130 D|097110451 048631134 +000000668 000708220 000689072 D|098134399 028408389 +000000668 000719278 000721459 D|032601211 000950626 +000000668 000752011 000733351 D|046848526 077030400 +000000668 000801115 000750501 D|055278430 003630660 +000000668 000820041 000766119 D|093499663 003690422 +000000668 000841673 000791979 D|083350407 049332213 +000000668 000853021 000793541 D|051584504 028564113 +000000668 000885103 000806141 D|016055496 033370425 +000000668 000900415 000811104 D|010048869 067345462 +000000668 000927347 000870492 D|076828862 065755499 +000000668 000932705 000876106 D|014103886 001530116 +000000668 000934874 000878259 D|045073854 015905393 +000000668 000935890 000916170 D|006484392 010961222 +000000668 000964044 000919518 D|090628288 054049300 +000000668 000967018 000924064 D|045810321 082160222 +000000668 000971461 000927296 D|085456218 079631039 +000000668 000978126 000943509 D|093701057 016923327 +000000668 000981701 000969138 D|062947143 039176892 +000000668 000995288 000991460 D|056338253 004566733 +000000669 000022402 000001441 D|045237498 072741282 +000000669 000026595 000007967 D|063771678 028419203 +000000669 000050634 000081605 D|026490394 065266183 +000000669 000054509 000101879 D|060789217 012966704 +000000669 000075215 000128554 D|038362760 057540677 +000000669 000083809 000180371 D|076363957 001138050 +000000669 000099974 000192616 D|066668625 062305629 +000000669 000129930 000211600 D|013719521 018217627 +000000669 000152941 000217601 D|057427903 043106577 +000000669 000158463 000226709 D|025365520 039175273 +000000669 000181905 000257220 D|089594639 013983614 +000000669 000204921 000285309 D|040347598 061174590 +000000669 000206260 000292089 D|080552287 077817175 +000000669 000221583 000313569 D|021562226 072893312 +000000669 000235493 000325880 D|035420598 064079260 +000000669 000266293 000331050 D|088168276 041451773 +000000669 000297256 000333443 D|098572389 030358541 +000000669 000317096 000338515 D|023811526 072621907 +000000669 000328835 000347893 D|019505876 044215540 +000000669 000339378 000363420 D|086719945 040459289 +000000669 000361794 000370438 D|091882403 094762550 +000000669 000405175 000400635 D|049442276 012462371 +000000669 000409341 000410241 D|077024709 086776330 +000000669 000410663 000428857 D|032937059 033735476 +000000669 000455763 000445784 D|001901647 083152297 +000000669 000480755 000466576 D|044233797 028936609 +000000669 000482599 000471998 D|000254908 081040639 +000000669 000491470 000495601 D|015931468 015929760 +000000669 000502002 000495684 D|019885067 040132374 +000000669 000504454 000517150 D|001669765 004406548 +000000669 000553956 000553156 D|000965714 047745588 +000000669 000559727 000624358 D|051609717 005031568 +000000669 000574221 000650773 D|071775975 094254684 +000000669 000586069 000662313 D|010169802 062238271 +000000669 000620649 000707797 D|048815731 060261522 +000000669 000656055 000754934 D|075964729 061488002 +000000669 000679391 000765358 D|038898508 077603206 +000000669 000687931 000766838 D|010810035 071226730 +000000669 000719619 000770950 D|024862297 079242576 +000000669 000723853 000778601 D|054011439 086811430 +000000669 000753319 000790944 D|011137238 009773719 +000000669 000755855 000798164 D|062688613 081481489 +000000669 000852589 000834879 D|094003164 069709806 +000000669 000865175 000854100 D|016903219 000812336 +000000669 000866922 000922532 D|039421345 097196221 +000000669 000873711 000926907 D|012389926 038366514 +000000669 000875770 000948749 D|011925059 043430301 +000000669 000923364 000952607 D|021208317 007012323 +000000669 000979943 000987897 D|052684983 011280573 +000000669 000988519 000989366 D|027725551 060777100 +000000670 000014090 000013114 D|024692346 054099057 +000000670 000034534 000014355 D|087529796 063623983 +000000670 000046049 000024692 D|033453196 015578670 +000000670 000075174 000079853 D|075888700 099339468 +000000670 000092788 000092891 D|000246576 054462824 +000000670 000114809 000107509 D|065677983 038466612 +000000670 000136484 000124581 D|031909658 085615454 +000000670 000140277 000168980 D|030514108 013478795 +000000670 000146356 000205764 D|092775032 058651926 +000000670 000173031 000234143 D|067109183 023091011 +000000670 000173564 000241420 D|022950915 070788132 +000000670 000220328 000329898 D|034792380 018116274 +000000670 000233160 000339995 D|091383582 093590297 +000000670 000241485 000358783 D|081852076 097423461 +000000670 000258116 000368119 D|001412386 043048031 +000000670 000268777 000401779 D|007145005 099104187 +000000670 000305930 000412283 D|043744221 094304187 +000000670 000331479 000416011 D|074454741 076692990 +000000670 000368494 000447560 D|093372525 047918648 +000000670 000408624 000465652 D|001146337 041908555 +000000670 000414861 000467720 D|042120442 091300476 +000000670 000419769 000477850 D|039958893 023429782 +000000670 000429039 000490352 D|083642418 058569203 +000000670 000440463 000534551 D|007467625 005004012 +000000670 000441642 000565675 D|014598505 034344757 +000000670 000526047 000570125 D|092333315 091200060 +000000670 000543646 000576906 D|036044887 080200330 +000000670 000555556 000599465 D|018759663 096278104 +000000670 000560459 000650605 D|019727665 098254807 +000000670 000586230 000651497 D|061108435 092944482 +000000670 000629119 000658064 D|092703821 074772390 +000000670 000629689 000660006 D|050761103 037494068 +000000670 000637040 000667927 D|006867061 005842865 +000000670 000684816 000720528 D|083148592 086714040 +000000670 000691227 000766457 D|039465542 079724967 +000000670 000723750 000776090 D|056828778 052800019 +000000670 000739582 000785059 D|092850479 023116872 +000000670 000742014 000804574 D|013259866 093321347 +000000670 000756494 000834429 D|026262932 049153139 +000000670 000757802 000842000 D|075639733 032056504 +000000670 000767252 000855381 D|036387912 038389288 +000000670 000775074 000883613 D|080069481 007067166 +000000670 000789349 000892488 D|085847812 087851821 +000000670 000808524 000899096 D|074014048 077077756 +000000670 000816155 000906866 D|039484596 015971849 +000000670 000839515 000913309 D|013774965 079216002 +000000670 000857110 000923741 D|035197386 076637975 +000000670 000860700 000951680 D|049345963 098602610 +000000670 000865776 000957934 D|053518920 070558621 +000000670 000948141 000966932 D|015388908 035326445 +000000671 000008932 000017228 D|089160051 031100799 +000000671 000009205 000069759 D|069401405 083767193 +000000671 000019741 000070046 D|013619780 064921609 +000000671 000027585 000071156 D|034806571 003032436 +000000671 000061418 000120461 D|034078838 001113644 +000000671 000070347 000120709 D|066569638 035121146 +000000671 000072882 000142061 D|092381787 077087027 +000000671 000082074 000153352 D|068781208 047839896 +000000671 000118046 000176937 D|003482969 081352741 +000000671 000123591 000191253 D|032150449 055064816 +000000671 000136118 000208454 D|045134041 012512183 +000000671 000141464 000252508 D|084423460 028272035 +000000671 000175527 000274900 D|031064471 049672080 +000000671 000207098 000287398 D|008558388 025602150 +000000671 000228440 000305401 D|004414140 068093165 +000000671 000260500 000314019 D|034032334 066266431 +000000671 000299552 000323578 D|035587845 091666449 +000000671 000301478 000328552 D|083928431 097034197 +000000671 000323284 000370793 D|040460958 005735479 +000000671 000325343 000383498 D|000515633 026693291 +000000671 000336274 000405801 D|085660199 096334561 +000000671 000349232 000469204 D|047925663 021380362 +000000671 000407984 000469389 D|006491831 031435914 +000000671 000449231 000490492 D|039549978 057469986 +000000671 000458582 000492695 D|037713168 058570618 +000000671 000479663 000499965 D|047812228 076830647 +000000671 000488813 000514879 D|029140311 020210999 +000000671 000489607 000530033 D|015907140 068801645 +000000671 000494771 000540317 D|072459008 018327210 +000000671 000533362 000576192 D|068040603 009169761 +000000671 000545880 000579283 D|055828910 076487471 +000000671 000567408 000598210 D|087095612 058381952 +000000671 000568973 000629936 D|045792713 097619933 +000000671 000618395 000684422 D|060358074 087089021 +000000671 000675343 000717149 D|071834459 000397602 +000000671 000721462 000727119 D|059893819 011659426 +000000671 000721974 000744296 D|028005910 058576982 +000000671 000737123 000794290 D|006676006 026600744 +000000671 000777483 000812554 D|094436850 001782614 +000000671 000781459 000813065 D|085038901 002407856 +000000671 000799916 000824739 D|023521646 041475572 +000000671 000814349 000856078 D|040724060 046931162 +000000671 000841714 000875576 D|008248530 019363499 +000000671 000854973 000884912 D|088392306 076619558 +000000671 000858680 000898438 D|031542046 001327054 +000000671 000877400 000924726 D|037883119 088457773 +000000671 000922639 000948561 D|057407536 037139131 +000000671 000933434 000980169 D|040408632 005023827 +000000671 000953153 000985494 D|069729445 073895900 +000000671 000974318 000986168 D|077259820 002585602 +000000672 000013814 000046722 D|034255848 023098991 +000000672 000028156 000085069 D|061498589 011898817 +000000672 000030980 000093612 D|085161324 094339055 +000000672 000043865 000095816 D|093673486 062583407 +000000672 000061601 000121945 D|050172702 083920126 +000000672 000117221 000141382 D|013813409 039299975 +000000672 000125326 000163783 D|059624899 042632541 +000000672 000132144 000209745 D|085118001 070286776 +000000672 000153351 000218714 D|043038515 052505268 +000000672 000162781 000259463 D|040255669 031066748 +000000672 000222468 000268057 D|007071335 065557000 +000000672 000237550 000298386 D|090634454 044612899 +000000672 000245993 000302081 D|039652565 063587880 +000000672 000246904 000304527 D|072495364 078718337 +000000672 000261593 000307981 D|085631161 077628079 +000000672 000261802 000316674 D|037808060 096411254 +000000672 000272825 000319415 D|019545747 009542408 +000000672 000275590 000331852 D|054865743 040033518 +000000672 000286666 000352928 D|073129948 096068119 +000000672 000301627 000395199 D|030130286 092802198 +000000672 000301658 000399274 D|055657020 014612206 +000000672 000332062 000401882 D|034704776 068727969 +000000672 000344717 000404006 D|026830627 074295439 +000000672 000478908 000416821 D|014174763 020898115 +000000672 000479611 000438039 D|083517968 070321365 +000000672 000486205 000440996 D|097914039 040128831 +000000672 000487754 000525584 D|032587597 050349829 +000000672 000490462 000525684 D|079123488 010244261 +000000672 000495845 000565885 D|037269797 091333489 +000000672 000509316 000571322 D|098648671 098017752 +000000672 000614265 000575865 D|079565025 037370670 +000000672 000628675 000582684 D|042711036 061594818 +000000672 000631007 000586682 D|030334827 029222393 +000000672 000633457 000597751 D|033338474 052181199 +000000672 000654478 000602221 D|077108389 033667135 +000000672 000688555 000657365 D|064305094 025605883 +000000672 000690171 000685514 D|019724626 064597607 +000000672 000699313 000689561 D|002099723 004124559 +000000672 000703590 000752096 D|053024197 099036783 +000000672 000725615 000759551 D|049970285 033684719 +000000672 000731750 000775071 D|021120218 054875430 +000000672 000793887 000808392 D|017097416 029724937 +000000672 000828139 000821564 D|034881052 001391767 +000000672 000872509 000847813 D|056869324 094364957 +000000672 000891172 000871192 D|095131734 015714066 +000000672 000892741 000895961 D|015241386 074792497 +000000672 000899145 000915539 D|023111604 081905676 +000000672 000907674 000937300 D|076121875 053185562 +000000672 000964233 000963714 D|033246645 028793844 +000000672 000984069 000967355 D|037022550 046831787 +000000673 000032843 000010723 D|071180661 096853346 +000000673 000037773 000014952 D|000413168 049721983 +000000673 000044997 000030447 D|015403903 001261672 +000000673 000086169 000038547 D|047245400 026580429 +000000673 000126397 000054134 D|079433973 037220120 +000000673 000128266 000082491 D|094881320 023528741 +000000673 000150927 000090849 D|085696232 095537864 +000000673 000153875 000100040 D|048094617 092035660 +000000673 000156938 000105190 D|033218146 020342830 +000000673 000165263 000136137 D|061195016 024630964 +000000673 000213894 000211667 D|000478696 066967707 +000000673 000232555 000218574 D|060363526 030076484 +000000673 000318549 000224852 D|042032880 064343183 +000000673 000328943 000226019 D|040139888 098536995 +000000673 000332050 000253773 D|067856067 053397196 +000000673 000333919 000256710 D|015106086 055368770 +000000673 000337994 000309812 D|062163151 095486917 +000000673 000397718 000314308 D|095689688 000093761 +000000673 000463089 000319826 D|077451551 074410520 +000000673 000465062 000358694 D|014818750 052203730 +000000673 000473227 000388929 D|098211858 051812612 +000000673 000508180 000399154 D|001413463 002689623 +000000673 000559587 000405789 D|033354854 013701131 +000000673 000578432 000425791 D|091029204 043282253 +000000673 000588936 000468349 D|025877133 060604313 +000000673 000590297 000479548 D|080351175 063140363 +000000673 000623617 000506050 D|005307229 056362960 +000000673 000641563 000542004 D|036392075 012314780 +000000673 000669620 000554289 D|013632036 031897579 +000000673 000693315 000566445 D|030858825 063390969 +000000673 000714095 000632642 D|079057391 062694831 +000000673 000767864 000647876 D|024524921 086144848 +000000673 000781644 000652580 D|067499823 068627099 +000000673 000828940 000680524 D|071947930 066756688 +000000673 000848757 000693870 D|052607634 027697095 +000000673 000856566 000708976 D|042417237 071978425 +000000673 000871779 000754292 D|000130604 009743176 +000000673 000872914 000766879 D|093021067 077879421 +000000673 000880091 000771227 D|058895930 059646139 +000000673 000885435 000778254 D|069800332 010159562 +000000673 000900630 000793099 D|086716689 079860324 +000000673 000930549 000805683 D|054728680 011063733 +000000673 000943634 000850270 D|027230739 030349873 +000000673 000948472 000867656 D|004737407 056608866 +000000673 000964333 000885442 D|096771609 097197086 +000000673 000966406 000923368 D|002588527 041038148 +000000673 000967488 000952567 D|020600969 019228508 +000000673 000970925 000953472 D|085361429 079905617 +000000673 000982657 000975548 D|089581931 014482061 +000000673 000997111 000981678 D|017742600 018385812 +000000674 000017842 000022738 D|017206302 084299584 +000000674 000056135 000052101 D|036036818 082755857 +000000674 000060605 000055344 D|061500721 026917544 +000000674 000068346 000075366 D|011712005 097688409 +000000674 000120051 000104976 D|005250351 046235667 +000000674 000140344 000106610 D|027471759 028799501 +000000674 000153036 000149218 D|083552968 049595520 +000000674 000164818 000160769 D|098898690 011604276 +000000674 000180437 000181120 D|039223918 017938128 +000000674 000181325 000192874 D|008243980 099247924 +000000674 000203679 000201167 D|060733686 026437081 +000000674 000233732 000218191 D|088335063 001304913 +000000674 000245625 000254244 D|017481455 032941527 +000000674 000249296 000268958 D|034338685 007579098 +000000674 000253381 000288881 D|043257764 085448897 +000000674 000253998 000346882 D|086749193 036854262 +000000674 000261144 000349544 D|031494513 000556915 +000000674 000286606 000355421 D|057920794 049621971 +000000674 000293237 000375207 D|001150476 043617060 +000000674 000299308 000384840 D|061507013 064894372 +000000674 000434749 000388161 D|055412313 046158917 +000000674 000440546 000391383 D|016949810 009457786 +000000674 000447776 000393769 D|018531023 032683331 +000000674 000497990 000400754 D|083592685 003878549 +000000674 000517682 000407112 D|014642457 052605390 +000000674 000526147 000442787 D|012018273 006546710 +000000674 000558624 000447994 D|044956056 032236900 +000000674 000561840 000494112 D|050500433 066140194 +000000674 000582892 000521119 D|038827362 041563420 +000000674 000602189 000530449 D|032559773 045889571 +000000674 000615730 000531548 D|023846021 005020425 +000000674 000621084 000564116 D|001165393 091888636 +000000674 000640472 000602427 D|088711828 070038973 +000000674 000656669 000612314 D|072622853 068986816 +000000674 000683201 000618691 D|070544747 057487366 +000000674 000688334 000669131 D|030313879 086590706 +000000674 000751294 000693017 D|035007327 012436590 +000000674 000759515 000696668 D|094693171 002969103 +000000674 000773109 000745529 D|094181586 039606261 +000000674 000773913 000766089 D|018230419 084268441 +000000674 000791906 000811480 D|042090842 043595855 +000000674 000848857 000837719 D|053462545 013100856 +000000674 000861939 000856231 D|063884441 025895157 +000000674 000872922 000873674 D|095107471 023246483 +000000674 000881771 000883860 D|074668392 041585103 +000000674 000906420 000899260 D|018241966 033956786 +000000674 000911127 000900896 D|086989715 075108488 +000000674 000960599 000952883 D|087552904 092155159 +000000674 000978968 000965788 D|025698249 016382514 +000000674 000994436 000998225 D|059721865 069296581 +000000675 000005366 000022072 D|079060958 099724331 +000000675 000024310 000038777 D|039642749 089866187 +000000675 000024458 000053621 D|048743254 087706744 +000000675 000025480 000077167 D|084196396 092022184 +000000675 000031779 000090050 D|046712016 001195008 +000000675 000038075 000093562 D|070570274 076837596 +000000675 000079264 000096253 D|010712925 026754344 +000000675 000086925 000141434 D|087206246 029842712 +000000675 000134691 000143604 D|001448085 057614750 +000000675 000144866 000145879 D|003425940 048837009 +000000675 000179994 000159429 D|079970188 082346574 +000000675 000182655 000250376 D|091105952 077861210 +000000675 000201210 000255298 D|092014086 051560180 +000000675 000211437 000267588 D|030193581 034603542 +000000675 000216048 000278963 D|072127938 022258301 +000000675 000228912 000304111 D|035062411 063604428 +000000675 000289761 000305687 D|033272047 095600082 +000000675 000292903 000312447 D|020878764 025480421 +000000675 000312399 000322111 D|043329927 020794767 +000000675 000334962 000349504 D|091398827 050934852 +000000675 000355318 000372740 D|041402143 078100285 +000000675 000407076 000377838 D|007045519 014927843 +000000675 000461864 000389617 D|050007378 020541618 +000000675 000477398 000510397 D|045464184 010035760 +000000675 000512161 000511629 D|032399105 049481211 +000000675 000528402 000514403 D|003550922 056773441 +000000675 000560977 000542206 D|022038766 045090872 +000000675 000569596 000566570 D|057079488 057824352 +000000675 000581146 000577963 D|038801270 070490612 +000000675 000601865 000579768 D|076789132 020504057 +000000675 000606595 000637558 D|096784742 095793581 +000000675 000608435 000640609 D|049163124 079134795 +000000675 000644580 000661821 D|034176769 016664340 +000000675 000668985 000673171 D|031058200 052928293 +000000675 000687387 000688355 D|060952510 001049442 +000000675 000688787 000706100 D|051950861 015524238 +000000675 000718364 000716871 D|004791814 094166645 +000000675 000730369 000718525 D|068759596 031401019 +000000675 000770535 000730276 D|058368345 088127057 +000000675 000774628 000735616 D|035444123 052127106 +000000675 000808462 000738663 D|040123775 055130664 +000000675 000814332 000745570 D|026077086 006408922 +000000675 000819013 000762195 D|085676388 065410374 +000000675 000822886 000786270 D|037163227 045576006 +000000675 000868779 000901977 D|036272587 067276220 +000000675 000888297 000906468 D|035240697 044788024 +000000675 000915139 000910022 D|072143660 052513251 +000000675 000919262 000946645 D|044306570 000261698 +000000675 000977135 000961560 D|053107548 007092501 +000000675 000989821 000963447 D|094975528 017035391 +000000676 000004222 000001192 D|081131439 011616727 +000000676 000024532 000003857 D|027830602 024400244 +000000676 000035714 000024073 D|080383664 055818104 +000000676 000044363 000029602 D|025355105 071845259 +000000676 000049421 000187362 D|068931580 063442405 +000000676 000072295 000188493 D|077248566 077704812 +000000676 000073612 000197172 D|093070588 008114302 +000000676 000105157 000218300 D|009276637 038705794 +000000676 000123172 000222966 D|024469112 011257213 +000000676 000168658 000223022 D|047797237 048321720 +000000676 000262999 000266880 D|052720955 038403169 +000000676 000286246 000282251 D|066973635 075996864 +000000676 000286368 000325733 D|079635022 020756417 +000000676 000380570 000331686 D|089517651 033756018 +000000676 000422766 000346953 D|048765516 068539532 +000000676 000423281 000365684 D|062717189 095296185 +000000676 000442880 000367487 D|098111926 024032307 +000000676 000466448 000372389 D|027163855 095756002 +000000676 000493696 000398384 D|018163114 032658752 +000000676 000510121 000407829 D|092383414 095617773 +000000676 000529049 000413080 D|054155587 053218852 +000000676 000529594 000442530 D|061733665 023186959 +000000676 000554947 000476847 D|009663934 052680117 +000000676 000560647 000483416 D|099142111 037083316 +000000676 000590846 000492854 D|045000888 040131372 +000000676 000619220 000499838 D|095768587 072099569 +000000676 000620899 000503721 D|031413163 040372907 +000000676 000631473 000517904 D|021024511 006350779 +000000676 000633090 000531533 D|043298492 072259490 +000000676 000634132 000539310 D|041176926 041853738 +000000676 000650064 000566784 D|046141223 012197114 +000000676 000653402 000594441 D|050973016 041262395 +000000676 000658014 000602489 D|024395288 072500031 +000000676 000659017 000671277 D|071861186 038801406 +000000676 000671384 000672513 D|078910616 014127010 +000000676 000682991 000689664 D|048606401 074824655 +000000676 000694385 000691060 D|068285107 073503650 +000000676 000695815 000715149 D|004420026 012327374 +000000676 000708165 000731771 D|057322667 049528429 +000000676 000726736 000739538 D|043182040 006752630 +000000676 000774476 000771204 D|059396645 095289306 +000000676 000829199 000775189 D|030182642 075198358 +000000676 000832450 000826984 D|082046323 011425835 +000000676 000891012 000865556 D|040968293 024636160 +000000676 000900305 000867614 D|017767610 047992707 +000000676 000923428 000948526 D|040077667 090270281 +000000676 000931310 000962461 D|070131448 020278688 +000000676 000956652 000964010 D|019533990 004167101 +000000676 000958138 000976907 D|017816332 011271732 +000000676 000991098 000984279 D|006842359 030837235 +000000677 000004045 000028909 D|083968959 058351342 +000000677 000048818 000044982 D|038799098 026533960 +000000677 000095512 000065636 D|084928070 099856449 +000000677 000098860 000077976 D|047956237 073482975 +000000677 000105236 000138950 D|052477173 009211056 +000000677 000121562 000153904 D|080624357 074690861 +000000677 000147670 000203567 D|086124736 015970715 +000000677 000152407 000223677 D|083354271 078793428 +000000677 000154251 000227109 D|082806215 003281935 +000000677 000155193 000240850 D|099609738 041666638 +000000677 000170894 000244490 D|045592718 001772481 +000000677 000194210 000247600 D|000466194 013321706 +000000677 000227521 000274267 D|021297632 087378381 +000000677 000235383 000287482 D|002056533 095175457 +000000677 000266843 000315928 D|093001492 016390594 +000000677 000280207 000319076 D|069364711 009723576 +000000677 000281249 000322606 D|000403398 051381034 +000000677 000333850 000335302 D|091766057 071098181 +000000677 000339624 000411656 D|011246513 058974071 +000000677 000418216 000453924 D|068418602 093495565 +000000677 000420071 000459295 D|091431697 004022956 +000000677 000422899 000503396 D|004909906 031788336 +000000677 000429756 000587924 D|015479984 002070136 +000000677 000458118 000596066 D|028793420 039139538 +000000677 000478447 000605856 D|047911924 039361776 +000000677 000498213 000618085 D|082435383 054866557 +000000677 000528212 000642703 D|012217722 068271888 +000000677 000547828 000664002 D|042636747 073332885 +000000677 000555571 000666021 D|098040660 035381179 +000000677 000573366 000702333 D|067093827 015963403 +000000677 000578633 000723269 D|031253357 052638661 +000000677 000588055 000730791 D|012636977 067488366 +000000677 000622298 000736185 D|078870467 045485015 +000000677 000660199 000744695 D|073616335 076713797 +000000677 000664221 000752725 D|050524116 084764626 +000000677 000674050 000789860 D|049991637 032092004 +000000677 000682346 000797189 D|094014265 077886112 +000000677 000727402 000822322 D|024576212 030533876 +000000677 000750188 000835983 D|038660100 090256111 +000000677 000798438 000845178 D|035816596 074229878 +000000677 000811689 000865318 D|030551488 027638662 +000000677 000824688 000872747 D|069701614 098638740 +000000677 000826046 000898184 D|085547282 080673345 +000000677 000844270 000904716 D|044153688 055983401 +000000677 000854375 000905765 D|074625319 024953542 +000000677 000864417 000925442 D|009592143 064016573 +000000677 000873872 000931965 D|063990939 035672358 +000000677 000876887 000933411 D|097714438 057498021 +000000677 000889145 000948693 D|003816949 055495841 +000000677 000937667 000987569 D|078726334 097713861 +000000678 000007438 000000438 D|098370390 087391608 +000000678 000058918 000024601 D|047472096 078245684 +000000678 000128753 000035963 D|005841772 081063979 +000000678 000133375 000039253 D|036682418 001008673 +000000678 000134759 000062688 D|000930343 013428813 +000000678 000145799 000096928 D|060085863 053248975 +000000678 000148157 000126761 D|086897092 048426647 +000000678 000163898 000129860 D|010404511 017761311 +000000678 000179905 000131450 D|074837379 097055439 +000000678 000185494 000185152 D|003512719 087867473 +000000678 000190890 000207727 D|051368889 020570163 +000000678 000205349 000262393 D|088136925 031446047 +000000678 000253041 000274629 D|058345196 014930916 +000000678 000267956 000311652 D|022705343 017998244 +000000678 000279903 000340781 D|042306831 095509024 +000000678 000326691 000342859 D|011173982 002423983 +000000678 000332578 000371521 D|018181576 035423383 +000000678 000343503 000379885 D|061359536 092764058 +000000678 000344689 000382276 D|028885174 036938589 +000000678 000355256 000382672 D|089087238 005313857 +000000678 000380448 000402666 D|059223717 083631997 +000000678 000381735 000405643 D|055764983 079488467 +000000678 000390235 000423497 D|089059509 052179351 +000000678 000442069 000447083 D|010499925 063955599 +000000678 000451338 000464409 D|014890415 028981786 +000000678 000468756 000489543 D|034059727 038926826 +000000678 000480161 000500935 D|090570718 072553382 +000000678 000491460 000515781 D|026143032 074980861 +000000678 000611306 000543724 D|084765366 072701055 +000000678 000646933 000550000 D|048223658 065322545 +000000678 000661799 000557830 D|062798785 066056656 +000000678 000662450 000594006 D|042154138 038562013 +000000678 000672461 000597519 D|067083014 087688220 +000000678 000676756 000614060 D|099899826 020152909 +000000678 000736859 000614502 D|041823109 068391362 +000000678 000741858 000639566 D|099193301 015046645 +000000678 000755123 000690983 D|036854492 055402959 +000000678 000765422 000719083 D|022826288 002233289 +000000678 000780739 000721725 D|045720363 036489571 +000000678 000798377 000761704 D|031259531 001163013 +000000678 000810412 000774185 D|009733062 073137754 +000000678 000860255 000831111 D|058299298 089486851 +000000678 000875506 000852328 D|018021132 008838683 +000000678 000878972 000874825 D|006448393 049575850 +000000678 000944096 000877614 D|046412510 084353489 +000000678 000944243 000884836 D|031390502 030485091 +000000678 000949132 000897397 D|094445385 010945065 +000000678 000954839 000898204 D|049515863 078748961 +000000678 000970716 000917067 D|072982702 025256702 +000000678 000984481 000945668 D|029257799 052565482 +000000679 000014297 000019285 D|014823901 073973113 +000000679 000037632 000020927 D|061648768 022853481 +000000679 000040620 000045317 D|099489436 088597365 +000000679 000120503 000048127 D|079753522 079527599 +000000679 000153385 000058163 D|003684647 056055075 +000000679 000157660 000081827 D|091262455 082639499 +000000679 000158898 000089147 D|063848866 088900883 +000000679 000171231 000098445 D|083538336 092020939 +000000679 000201213 000118388 D|096545142 094081081 +000000679 000226267 000123320 D|043730457 072791199 +000000679 000265462 000128831 D|065887912 010344603 +000000679 000275533 000152504 D|065436725 096948525 +000000679 000301716 000188881 D|016578985 026738384 +000000679 000326764 000242593 D|082350912 019504121 +000000679 000331594 000255222 D|097947697 051627782 +000000679 000333851 000258961 D|006785608 013023903 +000000679 000347900 000266197 D|013974721 080804728 +000000679 000352407 000278686 D|066823414 016455958 +000000679 000379512 000295555 D|090495826 059244261 +000000679 000448904 000320222 D|062996559 076967345 +000000679 000449896 000329215 D|020924870 036605472 +000000679 000476003 000330988 D|010801481 093260373 +000000679 000491241 000408156 D|093173392 036233912 +000000679 000494230 000427439 D|024257896 055371883 +000000679 000506052 000454228 D|061049314 067923504 +000000679 000513432 000521439 D|071019193 064188861 +000000679 000554672 000524086 D|087973474 061627907 +000000679 000557018 000537711 D|080732300 000968613 +000000679 000557769 000538210 D|022207144 007902952 +000000679 000568295 000540024 D|043995573 059714816 +000000679 000628390 000542601 D|026996802 048771426 +000000679 000632527 000613220 D|030516260 034348671 +000000679 000633302 000628031 D|023375203 014633702 +000000679 000635404 000676547 D|057595396 083708243 +000000679 000642799 000678591 D|006577806 083484181 +000000679 000718721 000753589 D|051191017 015209966 +000000679 000737672 000764992 D|089420888 043788538 +000000679 000739654 000797175 D|084972564 072793507 +000000679 000762067 000826890 D|056030536 072165183 +000000679 000827893 000834948 D|055554259 031583928 +000000679 000838950 000846554 D|092138230 020323248 +000000679 000844041 000852718 D|065862103 093474510 +000000679 000864526 000862266 D|096024089 005986282 +000000679 000875396 000869290 D|095801961 050103589 +000000679 000880222 000917512 D|009410274 021671370 +000000679 000892984 000953231 D|089640897 053196447 +000000679 000949400 000965462 D|080434667 048726863 +000000679 000956449 000983594 D|005260443 052825292 +000000679 000995706 000987515 D|048112762 053962680 +000000679 000998381 000990473 D|063992926 005652105 +000000680 000006086 000029518 D|086082361 089300032 +000000680 000030189 000050458 D|063983489 003660521 +000000680 000032884 000054135 D|090970548 064464516 +000000680 000046494 000094392 D|000226906 013847655 +000000680 000062842 000100841 D|000079669 095084056 +000000680 000091907 000118274 D|076179457 085476907 +000000680 000149043 000134653 D|052837050 080814973 +000000680 000159668 000196586 D|041511371 014172303 +000000680 000166353 000217129 D|034744841 048038923 +000000680 000176136 000218836 D|001409954 068418543 +000000680 000186873 000239250 D|066168015 003340045 +000000680 000188165 000244564 D|022416397 074869305 +000000680 000212106 000274993 D|032544986 009766942 +000000680 000250572 000275355 D|072547756 071422127 +000000680 000288557 000323050 D|043646147 022758840 +000000680 000313670 000368319 D|095311521 086340878 +000000680 000329785 000391241 D|026464675 096610917 +000000680 000337797 000404589 D|060599300 000576450 +000000680 000346135 000405890 D|005795854 008527776 +000000680 000367724 000448911 D|049991131 070412335 +000000680 000389224 000500507 D|034956539 047654069 +000000680 000404913 000505619 D|051796766 073047469 +000000680 000419789 000520989 D|067356822 035986500 +000000680 000425730 000523167 D|062846466 083873267 +000000680 000487441 000536747 D|014863218 030211872 +000000680 000506122 000549704 D|004272468 054850995 +000000680 000530963 000578921 D|029856984 083589294 +000000680 000548769 000594646 D|076875829 083575066 +000000680 000560784 000620518 D|027295699 069349291 +000000680 000595067 000621446 D|051334403 043791492 +000000680 000605036 000654591 D|034417628 087311445 +000000680 000613619 000660568 D|069766948 081672936 +000000680 000621710 000668688 D|099606018 050443612 +000000680 000623458 000715990 D|067299480 037953387 +000000680 000649021 000723163 D|020129418 097157751 +000000680 000676975 000744462 D|022270339 094997700 +000000680 000696102 000748300 D|033628055 005544156 +000000680 000699976 000751440 D|034328558 000068925 +000000680 000704385 000778804 D|076060246 090283878 +000000680 000705436 000795268 D|088908832 024965526 +000000680 000728963 000795633 D|082571707 075921077 +000000680 000733592 000857314 D|063134222 030599903 +000000680 000799706 000869703 D|054185836 066571581 +000000680 000805187 000873204 D|029527001 092093792 +000000680 000871938 000881998 D|097576148 091096987 +000000680 000897280 000928938 D|089961793 045327276 +000000680 000905640 000934862 D|075515641 078903240 +000000680 000913020 000979313 D|006121499 045012197 +000000680 000943844 000979841 D|094797248 080272922 +000000680 000980486 000985834 D|082775076 032245793 +000000681 000000836 000013009 D|010617182 031686719 +000000681 000020689 000041157 D|040219517 044149555 +000000681 000038473 000041811 D|021262990 064895682 +000000681 000049976 000052125 D|014668538 026761642 +000000681 000050078 000066039 D|028783211 068302244 +000000681 000063506 000066540 D|038237934 003618061 +000000681 000070468 000090629 D|037205772 022158578 +000000681 000115711 000191401 D|038586267 058247984 +000000681 000130136 000206099 D|080760863 006503708 +000000681 000133196 000212548 D|007765119 020107718 +000000681 000135976 000249174 D|070158717 092743645 +000000681 000150693 000249935 D|063244488 034377470 +000000681 000153340 000262406 D|087942483 011853233 +000000681 000160922 000265602 D|018398036 088447115 +000000681 000177582 000290630 D|092635239 015577936 +000000681 000186066 000292438 D|093800979 049890329 +000000681 000203296 000327824 D|097664015 066809049 +000000681 000252806 000334598 D|065103131 085874332 +000000681 000280503 000337562 D|002771967 010602687 +000000681 000300318 000355424 D|012526755 083450881 +000000681 000341194 000359919 D|047172641 035601116 +000000681 000350910 000382162 D|090034519 078898150 +000000681 000360284 000386105 D|041703386 008217981 +000000681 000360969 000393202 D|073387479 026610961 +000000681 000364698 000416399 D|051320467 045584444 +000000681 000469803 000428469 D|038595042 037683140 +000000681 000504494 000428641 D|087806299 015701711 +000000681 000537934 000465813 D|025817338 051440355 +000000681 000538285 000469405 D|098832822 070761978 +000000681 000606431 000489038 D|037492668 057074257 +000000681 000621132 000492096 D|096028003 030426827 +000000681 000639400 000550465 D|026965391 091779294 +000000681 000696564 000609462 D|043231670 065603890 +000000681 000703320 000618935 D|030116095 039630663 +000000681 000726296 000625735 D|075630857 066540346 +000000681 000732139 000655768 D|085799166 001492204 +000000681 000734693 000667183 D|031852954 010753044 +000000681 000762372 000690657 D|084537340 013211347 +000000681 000768639 000695693 D|035536702 067717821 +000000681 000804713 000730272 D|037207731 034207145 +000000681 000805953 000740098 D|036714997 021793135 +000000681 000830094 000749937 D|075229438 039589452 +000000681 000843555 000763944 D|075596614 020844546 +000000681 000852619 000785463 D|018916162 014419404 +000000681 000880199 000853784 D|046022899 035205880 +000000681 000900556 000858199 D|031625854 039245424 +000000681 000909862 000891338 D|094300586 086824232 +000000681 000923895 000917651 D|035424169 018447552 +000000681 000955964 000928649 D|032217985 096549446 +000000681 000974878 000989359 D|097694483 078347388 +000000682 000003619 000025576 D|070112987 096415069 +000000682 000012477 000066684 D|088979020 099179159 +000000682 000016459 000078241 D|062973851 057606096 +000000682 000024730 000094274 D|003256124 002295515 +000000682 000036686 000105929 D|040469887 082339546 +000000682 000045424 000108052 D|090226836 068740980 +000000682 000060880 000118271 D|055698213 053108779 +000000682 000082074 000131053 D|043247066 050043067 +000000682 000099692 000145315 D|029919526 065582877 +000000682 000128993 000153638 D|086514261 027835308 +000000682 000171761 000168820 D|076613461 081740833 +000000682 000207585 000186231 D|023678003 099216484 +000000682 000245866 000230750 D|057119659 085567902 +000000682 000247832 000232346 D|047127349 036605550 +000000682 000265625 000246375 D|076479771 014158636 +000000682 000266941 000279835 D|062599010 086531751 +000000682 000275685 000347104 D|007734026 098455872 +000000682 000288860 000353316 D|048231790 016680364 +000000682 000321660 000357437 D|073339984 040733098 +000000682 000324520 000364962 D|011234584 098670043 +000000682 000327749 000386852 D|028337700 063665207 +000000682 000338342 000398501 D|017553944 010547708 +000000682 000340390 000464842 D|039732995 060499024 +000000682 000397676 000472438 D|017969587 000601891 +000000682 000436579 000475102 D|066075660 080423659 +000000682 000454179 000478841 D|082071641 018816996 +000000682 000471061 000551094 D|075014890 020474697 +000000682 000476863 000562857 D|010373301 018284108 +000000682 000530182 000568043 D|008682529 077204306 +000000682 000568130 000592083 D|096014098 078903465 +000000682 000574494 000614412 D|042829316 078986208 +000000682 000598306 000618926 D|069300094 084358145 +000000682 000617770 000636875 D|057196513 087132411 +000000682 000622776 000661674 D|067933518 005858993 +000000682 000638198 000679548 D|082500410 086508027 +000000682 000643581 000703549 D|090645588 010781253 +000000682 000647047 000704978 D|048882107 030697416 +000000682 000667147 000728997 D|072401820 054557348 +000000682 000669223 000736121 D|001802345 038324547 +000000682 000719103 000775088 D|054482885 001746279 +000000682 000721409 000805934 D|094698830 017175763 +000000682 000725145 000811469 D|030068746 008817110 +000000682 000736666 000839729 D|020858385 024147423 +000000682 000740877 000894389 D|086503287 048920127 +000000682 000743164 000896020 D|091273913 016965196 +000000682 000757492 000905347 D|021591088 012850704 +000000682 000773599 000956242 D|088598632 000451400 +000000682 000786611 000966966 D|020802644 079167092 +000000682 000796643 000988308 D|065085775 035726133 +000000682 000858553 000991102 D|032404567 055437529 +000000683 000029838 000037211 D|054328346 007638395 +000000683 000059968 000101835 D|049251300 037896816 +000000683 000070179 000124989 D|052228692 061544478 +000000683 000090602 000144488 D|007072419 081953443 +000000683 000108844 000166793 D|026150876 056885006 +000000683 000127766 000184975 D|010625134 011362042 +000000683 000144557 000207743 D|037104991 036954228 +000000683 000158711 000244067 D|053340027 029240081 +000000683 000167787 000268601 D|080208224 043877402 +000000683 000185944 000269873 D|099261450 027916001 +000000683 000191448 000272732 D|024435024 041920052 +000000683 000216543 000273344 D|081800673 079306801 +000000683 000227363 000281898 D|027084665 080570777 +000000683 000255817 000299647 D|011655175 097824565 +000000683 000269781 000319359 D|094585908 066626413 +000000683 000299883 000328878 D|026235865 027105111 +000000683 000305481 000340317 D|045150356 098979980 +000000683 000315660 000357691 D|053453159 010010411 +000000683 000330804 000363268 D|035457573 099901349 +000000683 000355942 000376351 D|016776949 088979746 +000000683 000402102 000398008 D|048589315 097291532 +000000683 000409819 000404776 D|020340201 056821091 +000000683 000442147 000415194 D|096878849 051328016 +000000683 000453173 000468156 D|007725708 019600031 +000000683 000467120 000510821 D|037123058 082396429 +000000683 000473221 000559101 D|033080293 074538821 +000000683 000507128 000594133 D|060462549 012415691 +000000683 000517702 000611683 D|030039680 091757202 +000000683 000527303 000658538 D|087275822 064826441 +000000683 000593050 000671751 D|089213762 024656488 +000000683 000593759 000681838 D|043984857 045427934 +000000683 000615785 000683200 D|032567291 041129591 +000000683 000643342 000684547 D|005903487 019314345 +000000683 000662112 000692459 D|053694948 099636864 +000000683 000662652 000776009 D|063049098 057797435 +000000683 000669501 000790154 D|089185689 075622784 +000000683 000676699 000795277 D|055968381 083939299 +000000683 000689450 000843556 D|050079797 065307204 +000000683 000705743 000870399 D|068669487 068225032 +000000683 000764231 000875681 D|096650475 020981869 +000000683 000808902 000880178 D|013112021 012246394 +000000683 000838294 000893249 D|033760235 069454053 +000000683 000841985 000909171 D|042850517 021715270 +000000683 000874322 000918150 D|007731407 011238252 +000000683 000886909 000926753 D|009823288 035734703 +000000683 000888600 000947419 D|035534560 058459625 +000000683 000906473 000953589 D|093590465 046899879 +000000683 000917362 000976825 D|056902870 031535112 +000000683 000925329 000987789 D|090530106 023712166 +000000683 000933962 000991440 D|073840750 013205278 +000000684 000019890 000035622 D|093896280 076801239 +000000684 000075807 000081226 D|039625856 074786567 +000000684 000090395 000104295 D|015330124 073856567 +000000684 000136599 000136167 D|055630505 054483814 +000000684 000141447 000140882 D|070187898 073947675 +000000684 000156340 000143303 D|040704545 016178108 +000000684 000162230 000168946 D|096244152 082362129 +000000684 000167622 000224868 D|070383857 098007974 +000000684 000194952 000243764 D|035282468 045533712 +000000684 000201495 000246192 D|055842995 015754673 +000000684 000212664 000250034 D|081087991 047915116 +000000684 000215357 000251848 D|082598548 000735638 +000000684 000257125 000287186 D|076595928 037089671 +000000684 000273115 000291576 D|001043358 071463764 +000000684 000280535 000358125 D|020812240 018311343 +000000684 000290542 000359431 D|060999772 000645521 +000000684 000312054 000439268 D|043188073 084690746 +000000684 000318743 000440061 D|045989897 027023107 +000000684 000332118 000466477 D|023041123 052762338 +000000684 000338016 000513611 D|019937196 070417205 +000000684 000351670 000550163 D|067850664 007554247 +000000684 000432683 000583787 D|097542672 027825847 +000000684 000454245 000593798 D|068663331 086090235 +000000684 000467271 000594328 D|045526426 066794197 +000000684 000486156 000601374 D|009339361 028950575 +000000684 000513197 000628248 D|040793262 042615595 +000000684 000514518 000636177 D|090073866 095587700 +000000684 000538575 000651255 D|047751381 006305532 +000000684 000543790 000675345 D|053827762 048180580 +000000684 000548451 000678639 D|061123485 052364830 +000000684 000573114 000686821 D|092190536 095960975 +000000684 000613929 000702130 D|066018212 037085502 +000000684 000616127 000703450 D|072014613 073262481 +000000684 000630574 000718998 D|078073161 009580098 +000000684 000654574 000728140 D|095045687 013294639 +000000684 000665329 000732563 D|019417484 083667564 +000000684 000686585 000735215 D|030985308 044801970 +000000684 000741481 000772281 D|047152067 015697293 +000000684 000766930 000805175 D|000301397 057051832 +000000684 000789688 000824730 D|025135400 050101439 +000000684 000795630 000832831 D|043453949 045519094 +000000684 000813010 000869868 D|089987474 085489464 +000000684 000815886 000874340 D|017371449 067685172 +000000684 000850331 000879246 D|087574493 006634674 +000000684 000885580 000904797 D|025304571 043979499 +000000684 000927936 000930935 D|008152453 097122442 +000000684 000931535 000963686 D|022677868 024852829 +000000684 000935425 000966937 D|059960931 078378257 +000000684 000968310 000975347 D|060469869 071402792 +000000684 000984227 000981685 D|034828617 054802340 +000000685 000003983 000003084 D|052826638 026700481 +000000685 000058026 000003458 D|041299875 081024831 +000000685 000063045 000040727 D|042829252 071714350 +000000685 000103834 000048900 D|078712224 087764087 +000000685 000105264 000056072 D|063456063 006264017 +000000685 000115576 000066694 D|027926512 019919904 +000000685 000158827 000077147 D|054000006 059716212 +000000685 000170189 000130507 D|048293079 035137086 +000000685 000182217 000138655 D|064544181 041090087 +000000685 000205305 000194253 D|094857315 016218675 +000000685 000221464 000194849 D|059078229 040336845 +000000685 000222729 000213451 D|058780403 015518051 +000000685 000227380 000270081 D|039035402 041840961 +000000685 000227426 000291271 D|056764670 014398838 +000000685 000237470 000327681 D|097312628 042087554 +000000685 000326510 000335793 D|056452444 000841957 +000000685 000344576 000384278 D|000023542 080111811 +000000685 000348298 000387908 D|006108479 068374518 +000000685 000385275 000387926 D|033231073 067590925 +000000685 000390182 000388397 D|026967244 049057096 +000000685 000415888 000393375 D|041559788 058753380 +000000685 000431888 000393458 D|096399760 018469975 +000000685 000487882 000402420 D|099693181 001158147 +000000685 000490510 000431289 D|008858690 030651294 +000000685 000513398 000439112 D|003190795 038159074 +000000685 000519572 000446410 D|026737491 049946280 +000000685 000530357 000466174 D|084663828 064084111 +000000685 000578469 000482883 D|046940958 014384726 +000000685 000614111 000496415 D|016947908 034583953 +000000685 000628235 000502515 D|092485023 053219004 +000000685 000664372 000517362 D|093661630 022863604 +000000685 000672059 000549673 D|019504913 017850066 +000000685 000672384 000552983 D|057522778 095447202 +000000685 000713909 000611998 D|019539739 029891462 +000000685 000717438 000625504 D|066163351 007786592 +000000685 000727179 000674022 D|022482891 007235867 +000000685 000751706 000687966 D|089453293 035563150 +000000685 000754892 000692554 D|091571567 064036630 +000000685 000770308 000701112 D|057741989 030324624 +000000685 000798483 000763549 D|021652097 023106668 +000000685 000812826 000773593 D|045776450 089403711 +000000685 000815096 000775205 D|079134616 006696443 +000000685 000844427 000796485 D|006267110 090902787 +000000685 000855606 000847233 D|094978281 069764139 +000000685 000894908 000872947 D|013014667 058123656 +000000685 000933593 000880789 D|079441630 014604794 +000000685 000944891 000930335 D|008851881 047048671 +000000685 000966151 000982835 D|059839919 051049681 +000000685 000989769 000990501 D|039149258 075836286 +000000685 000995211 000997407 D|068541124 024499712 +000000686 000009515 000015747 D|049365886 014704429 +000000686 000063918 000018685 D|034040466 059912615 +000000686 000077364 000035435 D|004029856 055641614 +000000686 000078588 000059486 D|008106724 081227125 +000000686 000081632 000063257 D|013980723 049481511 +000000686 000087349 000083211 D|084095137 057616349 +000000686 000119057 000099127 D|059177032 098602419 +000000686 000123483 000109188 D|080953007 094292350 +000000686 000194145 000125406 D|026809436 012848863 +000000686 000270558 000156727 D|030899197 048017010 +000000686 000297716 000159083 D|076939385 085120473 +000000686 000311830 000161012 D|018203802 090840700 +000000686 000341806 000161548 D|000683988 057616479 +000000686 000345786 000188423 D|087654935 043447376 +000000686 000363588 000203661 D|015564799 049912052 +000000686 000373924 000207154 D|050508370 029712909 +000000686 000375415 000221655 D|028651158 017523110 +000000686 000389845 000223538 D|062179162 048779681 +000000686 000402295 000233213 D|049151174 070682574 +000000686 000431507 000313770 D|040703006 083808926 +000000686 000450465 000319836 D|008154331 008853330 +000000686 000452078 000337079 D|085706340 007725696 +000000686 000495017 000371623 D|035608819 056392003 +000000686 000502606 000385633 D|024334873 087701453 +000000686 000531600 000403472 D|071410318 088698889 +000000686 000551619 000416252 D|091378763 004477577 +000000686 000553844 000433072 D|085464429 072514209 +000000686 000556598 000453409 D|052084438 062701783 +000000686 000567362 000476092 D|024698665 049913078 +000000686 000604624 000509305 D|024025910 036167609 +000000686 000610317 000528187 D|020670897 054148770 +000000686 000611272 000529799 D|036092024 078389465 +000000686 000659594 000539617 D|037632210 084734170 +000000686 000670371 000542050 D|013399327 094353681 +000000686 000692255 000544608 D|064028810 032838710 +000000686 000697246 000629160 D|072355163 050148550 +000000686 000703499 000639164 D|077376288 028552245 +000000686 000710494 000681015 D|046299425 078919251 +000000686 000729483 000739037 D|078492734 004435536 +000000686 000741974 000759177 D|061961615 024656882 +000000686 000807240 000834283 D|046887859 079934120 +000000686 000811405 000863850 D|079985448 065302188 +000000686 000876096 000884520 D|002952691 017105391 +000000686 000889820 000896021 D|047910038 086896576 +000000686 000924673 000897497 D|081584222 025456813 +000000686 000938353 000900365 D|012747949 052696941 +000000686 000945813 000911385 D|052602347 069321184 +000000686 000965002 000958025 D|096195585 046672442 +000000686 000986417 000963796 D|088254026 064247153 +000000686 000991037 000987109 D|013518876 024164305 +000000687 000002217 000039611 D|053487214 075048944 +000000687 000007951 000069628 D|004909265 067388230 +000000687 000023205 000073071 D|007224311 075619904 +000000687 000038465 000102096 D|075834593 014995204 +000000687 000040155 000112343 D|041988861 060407408 +000000687 000075974 000121939 D|029047268 022835623 +000000687 000092980 000136520 D|058666893 007989555 +000000687 000096094 000157988 D|023854284 033715034 +000000687 000101563 000159585 D|067019866 017732159 +000000687 000108122 000160895 D|060671697 000004246 +000000687 000147400 000164131 D|088160593 033343685 +000000687 000150451 000194994 D|069830105 031623724 +000000687 000166257 000200425 D|014643905 014300281 +000000687 000178872 000221235 D|045452628 084746930 +000000687 000220935 000243322 D|026310043 055055879 +000000687 000225633 000306993 D|070428230 077506603 +000000687 000231391 000318299 D|022575396 055265612 +000000687 000235070 000322989 D|095042323 056167699 +000000687 000240702 000339648 D|045800365 072196359 +000000687 000308174 000344182 D|048463542 096407850 +000000687 000353735 000391583 D|055616635 062935853 +000000687 000354758 000422945 D|046513830 058332243 +000000687 000364692 000478702 D|058992567 022525763 +000000687 000365338 000518583 D|095068730 096940720 +000000687 000367349 000551130 D|061083849 055941664 +000000687 000449391 000551844 D|085262384 048997778 +000000687 000467219 000575005 D|072392308 029511205 +000000687 000496822 000624087 D|072256855 075268717 +000000687 000508627 000633114 D|022607929 086861863 +000000687 000538258 000658252 D|039072251 031689498 +000000687 000547167 000666548 D|045760542 088325539 +000000687 000556390 000680549 D|027486700 038601450 +000000687 000568337 000689065 D|047088684 011012129 +000000687 000579126 000690464 D|058475798 045862212 +000000687 000582275 000727698 D|045951416 045096598 +000000687 000601649 000738714 D|053272835 086168055 +000000687 000644559 000767739 D|030353242 008988948 +000000687 000664170 000788913 D|056075541 058634511 +000000687 000668858 000790547 D|059510450 040754727 +000000687 000678147 000805811 D|043848451 098208755 +000000687 000691267 000835840 D|038753798 013620629 +000000687 000723327 000840810 D|095408212 033621781 +000000687 000746778 000855797 D|096016511 043692702 +000000687 000759055 000856005 D|072350527 037745414 +000000687 000798737 000858746 D|049000632 037341140 +000000687 000862423 000874750 D|068367425 013835036 +000000687 000945121 000878619 D|042643845 027530268 +000000687 000970209 000921395 D|072199489 000348134 +000000687 000987162 000955425 D|024765477 055745685 +000000687 000989971 000984653 D|002223102 008346112 +000000688 000006113 000000131 D|078547369 063602634 +000000688 000063066 000008988 D|017375011 099172570 +000000688 000120785 000046642 D|008840165 067044200 +000000688 000162472 000059833 D|046583162 028410633 +000000688 000196601 000061917 D|067008809 092066763 +000000688 000222028 000071217 D|028898469 045036093 +000000688 000225278 000142933 D|055801769 078321976 +000000688 000229728 000146542 D|077917058 021010979 +000000688 000239225 000163935 D|065897958 047043835 +000000688 000245935 000165946 D|060913976 015505060 +000000688 000265035 000196157 D|094685220 044312219 +000000688 000312914 000213261 D|057258266 033606276 +000000688 000343876 000260163 D|008878335 083997502 +000000688 000430208 000274636 D|033330540 080575781 +000000688 000432685 000311850 D|082876753 098389332 +000000688 000459362 000316650 D|088407657 083581209 +000000688 000465170 000339827 D|041975660 021645505 +000000688 000466103 000343522 D|070411676 074037798 +000000688 000469471 000367574 D|039415808 076449327 +000000688 000472617 000430509 D|066065361 010900611 +000000688 000476151 000434519 D|017577001 002121305 +000000688 000477019 000446082 D|090182122 040570066 +000000688 000486127 000465392 D|029631918 084292679 +000000688 000531676 000469468 D|021034810 077174208 +000000688 000622658 000484767 D|049381006 063302846 +000000688 000625323 000538371 D|054278969 013814476 +000000688 000631264 000647140 D|064036906 001207671 +000000688 000632671 000695126 D|014951784 025293558 +000000688 000670338 000715643 D|003206627 073580595 +000000688 000674510 000739570 D|049612322 058807703 +000000688 000680958 000740620 D|053979885 056196520 +000000688 000684246 000751970 D|053524626 079321736 +000000688 000708760 000754898 D|044970987 016617139 +000000688 000709884 000772271 D|037878003 051849446 +000000688 000728239 000785523 D|086080851 017397766 +000000688 000731549 000795512 D|032434917 060283025 +000000688 000777636 000802297 D|069013247 040083237 +000000688 000800633 000802766 D|007223364 027340327 +000000688 000811301 000839209 D|006413949 056624746 +000000688 000825423 000848906 D|017555679 041193650 +000000688 000827787 000856102 D|077737503 098826601 +000000688 000831087 000856920 D|015758503 002238340 +000000688 000833188 000874541 D|021708450 089747916 +000000688 000839873 000906562 D|081058958 043067345 +000000688 000878738 000926022 D|089564485 040923567 +000000688 000903218 000935780 D|081322040 001894010 +000000688 000908207 000942103 D|099320538 078027273 +000000688 000953181 000969039 D|013729503 070928142 +000000688 000974905 000990837 D|003014682 051211922 +000000688 000984502 000998585 D|096690730 087777841 +000000689 000023929 000019900 D|026911317 028194854 +000000689 000026370 000025453 D|056377806 099786914 +000000689 000057250 000098750 D|006680752 058835243 +000000689 000060306 000103674 D|006274880 086391594 +000000689 000066994 000115086 D|037393237 060517191 +000000689 000097362 000123769 D|020858797 073772318 +000000689 000104556 000125515 D|010065586 037099302 +000000689 000107280 000133944 D|099478675 084402686 +000000689 000112010 000149076 D|022558125 074161699 +000000689 000126307 000172314 D|085496610 038819624 +000000689 000167367 000182500 D|090879429 070732651 +000000689 000175106 000222719 D|029901482 095204696 +000000689 000192792 000241959 D|038581675 074897152 +000000689 000212292 000241962 D|099072603 029280944 +000000689 000214881 000256309 D|038360250 019138294 +000000689 000221827 000313852 D|044505157 095179332 +000000689 000243300 000319890 D|010973116 028091860 +000000689 000294884 000351328 D|083209542 052877400 +000000689 000311695 000358219 D|070506083 057845852 +000000689 000337374 000390657 D|038398534 041532010 +000000689 000386869 000397962 D|038222476 004878064 +000000689 000416658 000460661 D|044703239 073529976 +000000689 000423296 000467046 D|014806359 021989092 +000000689 000428834 000522767 D|080156707 062948969 +000000689 000452221 000553380 D|067368471 097338533 +000000689 000461500 000592472 D|023430644 033725037 +000000689 000475911 000636107 D|062045826 001313239 +000000689 000477030 000660566 D|010901293 078745656 +000000689 000482593 000675478 D|067449558 067837399 +000000689 000490833 000699442 D|013769400 081280760 +000000689 000504355 000714150 D|096029669 034103054 +000000689 000533690 000731682 D|090387048 007276403 +000000689 000546804 000743205 D|074776169 074605860 +000000689 000548833 000753812 D|090723742 058031059 +000000689 000600664 000769531 D|085440641 088618881 +000000689 000683852 000801315 D|020854247 039294569 +000000689 000714849 000803114 D|016772753 065202688 +000000689 000736641 000829790 D|020466158 069845710 +000000689 000743637 000831686 D|042407513 086891732 +000000689 000764526 000841688 D|050670538 086200766 +000000689 000767164 000853957 D|044944098 068643523 +000000689 000792813 000856344 D|098500695 047268108 +000000689 000807563 000860429 D|025650553 020819559 +000000689 000822211 000863195 D|026956445 069461300 +000000689 000842669 000869240 D|075069322 049535511 +000000689 000962964 000876278 D|003377908 097800484 +000000689 000973423 000884900 D|043097657 002911800 +000000689 000979913 000902796 D|046010157 003300062 +000000689 000988810 000921791 D|053776330 042132939 +000000689 000990595 000984924 D|004824530 033404220 +000000690 000017432 000001756 D|074530171 058380251 +000000690 000058459 000021407 D|042803126 055821486 +000000690 000097481 000029635 D|093064914 030269660 +000000690 000143829 000042282 D|025862775 068308417 +000000690 000154025 000049002 D|069273619 088370013 +000000690 000162152 000071722 D|055970069 078836754 +000000690 000191976 000083782 D|012098459 011520147 +000000690 000218871 000103722 D|050736407 077507757 +000000690 000254917 000123034 D|043230678 071890246 +000000690 000305251 000124826 D|083604461 053329855 +000000690 000341415 000165480 D|035077943 074657061 +000000690 000358505 000239825 D|018756506 088348744 +000000690 000407487 000253246 D|029072309 067857041 +000000690 000413998 000283115 D|015938375 005264283 +000000690 000421905 000286589 D|043155589 008608590 +000000690 000422510 000293883 D|000261404 004674258 +000000690 000427556 000300535 D|058000935 070986150 +000000690 000459650 000301017 D|040507257 069093783 +000000690 000472554 000335790 D|029091271 023915427 +000000690 000488460 000340376 D|095637188 035212384 +000000690 000504166 000342031 D|009342125 083917330 +000000690 000508096 000343333 D|061642326 011548496 +000000690 000514727 000346003 D|095876262 006880860 +000000690 000517938 000375124 D|093056292 066167152 +000000690 000523248 000379935 D|023074405 081171185 +000000690 000575119 000387389 D|045030403 071741596 +000000690 000630410 000389111 D|009435928 007293540 +000000690 000631899 000425083 D|035058580 026768367 +000000690 000653209 000427084 D|036026502 007029180 +000000690 000671779 000517102 D|016552716 077388818 +000000690 000736806 000529492 D|060368818 069247158 +000000690 000790551 000565731 D|034996274 017078102 +000000690 000795275 000572875 D|060505267 063954052 +000000690 000796470 000615252 D|007737870 099083418 +000000690 000799929 000639744 D|088142301 039555057 +000000690 000802295 000658527 D|099709758 038825262 +000000690 000828510 000678564 D|029408991 005162974 +000000690 000860989 000704859 D|046499243 045389193 +000000690 000892069 000724502 D|097285718 096319724 +000000690 000897097 000732882 D|088914728 087312296 +000000690 000899998 000750802 D|099992153 062346029 +000000690 000904600 000755856 D|091265027 016189093 +000000690 000906686 000803766 D|071579287 020091688 +000000690 000925801 000807557 D|048592383 043193943 +000000690 000930577 000816624 D|025070307 036808426 +000000690 000950618 000863673 D|069474089 063812895 +000000690 000950633 000867507 D|015138180 026520461 +000000690 000950717 000888554 D|048414201 093182394 +000000690 000984022 000929616 D|074978933 051367845 +000000690 000990672 000995526 D|075917349 076391691 +000000691 000034950 000011089 D|057436891 009437556 +000000691 000060628 000019488 D|008097429 070047673 +000000691 000070705 000054425 D|074008097 098137428 +000000691 000080275 000082478 D|038793901 031392821 +000000691 000102167 000094453 D|069553011 021524366 +000000691 000111353 000108991 D|019442329 046124314 +000000691 000133587 000114714 D|029233165 053990602 +000000691 000137339 000122469 D|098421077 058067565 +000000691 000153587 000149012 D|070797504 052841223 +000000691 000184415 000157769 D|048905468 056982040 +000000691 000186788 000180612 D|018450152 003745358 +000000691 000195743 000239826 D|061917181 053273928 +000000691 000205080 000243572 D|002761894 047951750 +000000691 000227272 000265307 D|097927822 049553945 +000000691 000271637 000278714 D|075832556 001593090 +000000691 000284192 000280903 D|076887760 072971590 +000000691 000297502 000329782 D|086598175 061199504 +000000691 000314135 000363781 D|085415422 024958505 +000000691 000334689 000396119 D|099970844 087107634 +000000691 000374891 000401485 D|046229008 053103356 +000000691 000384707 000417329 D|076818444 041426586 +000000691 000392494 000437141 D|048278763 089929433 +000000691 000408643 000441798 D|023022699 080285202 +000000691 000421441 000466544 D|070325529 040401815 +000000691 000455147 000470102 D|037953831 057277752 +000000691 000493754 000491567 D|095054713 029445242 +000000691 000494028 000543962 D|027281607 000545873 +000000691 000555105 000557219 D|043668690 079834346 +000000691 000611527 000578631 D|068462501 024414383 +000000691 000627886 000622117 D|034102552 025838174 +000000691 000634147 000648839 D|005961356 073407494 +000000691 000650257 000654401 D|055282459 096407912 +000000691 000683751 000656570 D|009376830 043976677 +000000691 000687400 000657481 D|000329284 076971361 +000000691 000704181 000682846 D|008840494 008352909 +000000691 000713504 000706699 D|017367293 095885989 +000000691 000727719 000776575 D|022576692 076582070 +000000691 000772430 000785606 D|086025806 006392459 +000000691 000773455 000841402 D|093932049 021944803 +000000691 000777804 000877119 D|062445025 092424534 +000000691 000820877 000881960 D|096639039 004129984 +000000691 000827506 000920235 D|072491528 003852397 +000000691 000834719 000929471 D|067554897 036313281 +000000691 000849477 000955318 D|054258758 028282327 +000000691 000887387 000957821 D|024699900 084551664 +000000691 000899298 000980363 D|011144580 075796473 +000000691 000911828 000987800 D|042043116 013455731 +000000691 000934901 000988138 D|077334034 010171868 +000000691 000939216 000990131 D|071721158 066597454 +000000691 000960169 000995564 D|071632583 059882151 +000000692 000075053 000013877 D|089610377 039915666 +000000692 000114061 000060852 D|015723562 071049432 +000000692 000121476 000061712 D|049726767 023121752 +000000692 000140338 000086261 D|085083397 058631825 +000000692 000141316 000095583 D|088833344 050801693 +000000692 000151728 000180384 D|038051127 085126342 +000000692 000176811 000199600 D|066302454 078630998 +000000692 000209104 000229327 D|095643333 067947961 +000000692 000209905 000244187 D|053912189 082319789 +000000692 000241489 000244912 D|073217909 089209561 +000000692 000244903 000268532 D|013085329 061842354 +000000692 000252833 000278607 D|026497422 042593594 +000000692 000261657 000283524 D|064910374 043806861 +000000692 000362612 000301974 D|028178463 025953170 +000000692 000399802 000318830 D|043525710 014059429 +000000692 000412998 000328976 D|087008713 099138451 +000000692 000431788 000329417 D|041781329 040279820 +000000692 000434639 000332879 D|032889552 040252184 +000000692 000491790 000332897 D|041467955 018549513 +000000692 000511249 000358622 D|045627335 045410669 +000000692 000512907 000375306 D|023560847 064143151 +000000692 000519720 000401249 D|035608305 078863796 +000000692 000545492 000413752 D|008647109 014440962 +000000692 000545617 000418554 D|004093372 056890025 +000000692 000568004 000422826 D|079725268 049588936 +000000692 000634060 000483037 D|018198741 010339250 +000000692 000649307 000501020 D|027294702 035190171 +000000692 000678242 000502298 D|031916374 048883335 +000000692 000678524 000544608 D|021076107 095003156 +000000692 000679121 000569317 D|030724081 059839729 +000000692 000682427 000586959 D|007604513 017347865 +000000692 000692932 000595486 D|079668293 079154078 +000000692 000715152 000658992 D|057516843 041178854 +000000692 000727477 000680162 D|073305763 073852536 +000000692 000731682 000690427 D|036119076 044012957 +000000692 000744761 000692567 D|039990571 039313918 +000000692 000767331 000700012 D|028401237 021811215 +000000692 000777554 000727702 D|068555409 097004564 +000000692 000780465 000739266 D|085985913 047646112 +000000692 000816854 000756176 D|001103350 024608616 +000000692 000830068 000786314 D|038198047 010373802 +000000692 000839481 000807856 D|035015221 097668921 +000000692 000873746 000831544 D|023933727 072430261 +000000692 000900048 000844755 D|028683906 053306240 +000000692 000901745 000851679 D|054946617 023342709 +000000692 000929591 000873007 D|084176948 082510435 +000000692 000932757 000882222 D|020742698 089733945 +000000692 000940026 000933982 D|036214557 011670214 +000000692 000974537 000983958 D|001441928 068866006 +000000692 000997240 000993659 D|027525389 050059274 +000000693 000011862 000003540 D|037288443 002045431 +000000693 000038256 000012085 D|031145304 095768827 +000000693 000062781 000041033 D|074146429 038595577 +000000693 000085076 000049851 D|004173536 081559429 +000000693 000122833 000061683 D|013945082 042921268 +000000693 000135030 000063048 D|083969056 047286435 +000000693 000138746 000069020 D|017831430 048194234 +000000693 000153346 000080596 D|007230864 055866393 +000000693 000162194 000104407 D|070133749 056261329 +000000693 000218726 000129148 D|028441102 098851491 +000000693 000222160 000255914 D|074386327 020011114 +000000693 000247677 000261450 D|086033352 079101401 +000000693 000253003 000282995 D|022668469 022256935 +000000693 000262137 000289892 D|017093351 000604993 +000000693 000267236 000290486 D|028769054 008950086 +000000693 000301147 000311861 D|080801445 081971614 +000000693 000336208 000384512 D|014623750 012240636 +000000693 000343224 000395520 D|019085985 023626082 +000000693 000352707 000403662 D|051670668 036187251 +000000693 000401220 000405989 D|036850170 082458830 +000000693 000420016 000408539 D|097632661 010788844 +000000693 000467445 000412035 D|004353996 051991852 +000000693 000486313 000414426 D|012364829 073236641 +000000693 000496988 000420965 D|091393721 081878014 +000000693 000539120 000516904 D|001130502 030720097 +000000693 000554382 000531641 D|034691474 031273282 +000000693 000556787 000544785 D|072215233 020608301 +000000693 000563282 000580458 D|037556782 034559120 +000000693 000571926 000585366 D|081941063 083949277 +000000693 000616107 000600903 D|040514190 036151731 +000000693 000617245 000633051 D|069653820 048780687 +000000693 000642051 000660265 D|058254329 096377204 +000000693 000656374 000704574 D|007618349 039232318 +000000693 000669586 000726054 D|050824992 020195629 +000000693 000710508 000748272 D|011678799 066862620 +000000693 000720407 000761097 D|099447842 075196721 +000000693 000734285 000783186 D|058751055 077820942 +000000693 000751658 000784418 D|048588089 058729961 +000000693 000809487 000791029 D|055832123 001284704 +000000693 000813176 000791989 D|069166767 058928654 +000000693 000826221 000797856 D|095101246 086066191 +000000693 000829371 000811831 D|051940973 007125162 +000000693 000854593 000826646 D|022258519 083743453 +000000693 000859957 000836328 D|003024302 009623666 +000000693 000885335 000885802 D|038809895 088936203 +000000693 000923970 000890561 D|024481281 063844115 +000000693 000928824 000895687 D|078538175 085932310 +000000693 000936105 000919065 D|074777561 088501408 +000000693 000944372 000952409 D|073442327 052010667 +000000693 000973291 000960465 D|057543293 049933392 +000000694 000032613 000023113 D|040368412 025563167 +000000694 000038585 000065939 D|073519823 096752008 +000000694 000041070 000095117 D|060866081 086753512 +000000694 000046518 000107899 D|082736200 037865934 +000000694 000052214 000121803 D|061378051 000485394 +000000694 000100144 000157626 D|028180704 002143065 +000000694 000138602 000161815 D|063276155 093559675 +000000694 000146961 000207942 D|085065923 086665860 +000000694 000155984 000224163 D|062437353 006214950 +000000694 000188024 000229635 D|083122036 022126008 +000000694 000212127 000230988 D|030601905 001047062 +000000694 000226421 000233890 D|002661695 075259533 +000000694 000243737 000302309 D|055857314 014986965 +000000694 000273510 000322392 D|027595269 041060694 +000000694 000293533 000323477 D|028642370 026443039 +000000694 000306187 000339923 D|076425513 015985286 +000000694 000315192 000370670 D|002226493 025706387 +000000694 000320300 000385388 D|016227609 001902326 +000000694 000326614 000391877 D|052555611 095855842 +000000694 000333763 000401387 D|063458157 056407302 +000000694 000334247 000413730 D|094127391 085694900 +000000694 000358358 000513077 D|022257179 084980749 +000000694 000369911 000516270 D|041166537 065499069 +000000694 000371629 000527142 D|045220548 090048380 +000000694 000404568 000571801 D|092995208 047750947 +000000694 000406027 000591440 D|069033430 032812458 +000000694 000406521 000594045 D|082169825 087498681 +000000694 000428766 000619006 D|076383902 054702315 +000000694 000431677 000700126 D|058794765 030544229 +000000694 000449229 000721361 D|027370729 005745344 +000000694 000487921 000722494 D|094847248 043214766 +000000694 000490662 000723154 D|038721680 003108036 +000000694 000535729 000725335 D|079997521 024617641 +000000694 000579675 000726912 D|025300479 005080289 +000000694 000648952 000748349 D|061851456 044770237 +000000694 000652069 000751622 D|042552525 011564333 +000000694 000656000 000755261 D|078828813 038753152 +000000694 000676486 000769519 D|098941881 056671773 +000000694 000681737 000799087 D|069574408 075395216 +000000694 000686778 000809627 D|029497069 056258883 +000000694 000689389 000811765 D|088585335 054984349 +000000694 000753396 000811931 D|046262386 063346649 +000000694 000833099 000855504 D|090402354 089011423 +000000694 000833968 000896418 D|006854534 082726271 +000000694 000901224 000896510 D|022423299 009704783 +000000694 000908249 000905329 D|036058812 067305440 +000000694 000919684 000928904 D|085249855 049194439 +000000694 000926440 000954407 D|089732475 033165947 +000000694 000935689 000974484 D|088732187 022245977 +000000694 000997735 000992323 D|081649715 072348263 +000000695 000001499 000000388 D|033842450 036507509 +000000695 000032724 000021634 D|069377559 080491981 +000000695 000038810 000032601 D|081414346 021999047 +000000695 000039153 000044158 D|027050602 099873665 +000000695 000092492 000059138 D|089432165 075121688 +000000695 000125045 000077341 D|072901278 069452191 +000000695 000132132 000112863 D|027147788 044775237 +000000695 000136248 000133433 D|090233222 059049753 +000000695 000155004 000190103 D|077057072 029661055 +000000695 000159277 000195711 D|050164105 040501467 +000000695 000233217 000219173 D|000075469 084722573 +000000695 000261342 000227558 D|010665675 056100451 +000000695 000283419 000245240 D|047762150 090493112 +000000695 000284560 000248397 D|049624798 009946318 +000000695 000320430 000251848 D|099799558 009591311 +000000695 000332971 000274202 D|082032823 060304868 +000000695 000344956 000284996 D|005235245 000621206 +000000695 000356554 000325326 D|052992353 093015607 +000000695 000379585 000331030 D|001343402 051909697 +000000695 000379588 000331934 D|025045093 067510520 +000000695 000415878 000375231 D|051099848 084306689 +000000695 000417123 000387859 D|098738432 092802326 +000000695 000489778 000439813 D|052097072 022365421 +000000695 000516460 000442113 D|079090044 007214315 +000000695 000520423 000450631 D|047262577 027262450 +000000695 000522747 000457518 D|054945663 032370741 +000000695 000586829 000481459 D|039771242 026479917 +000000695 000602564 000500605 D|017242678 019031740 +000000695 000631209 000532019 D|087071067 081891889 +000000695 000651823 000563685 D|064413291 060855334 +000000695 000653090 000570402 D|025330158 036465866 +000000695 000663717 000584087 D|006515792 088127025 +000000695 000725072 000633181 D|094671295 045841127 +000000695 000726598 000662210 D|037047647 066358028 +000000695 000726679 000677258 D|064640371 097422225 +000000695 000732456 000680624 D|003210829 060981642 +000000695 000733156 000705207 D|032826948 087021550 +000000695 000737680 000710550 D|021473119 011354001 +000000695 000779592 000718335 D|066162161 037039789 +000000695 000789365 000747418 D|087019049 028932836 +000000695 000794503 000777434 D|003320325 055252042 +000000695 000801846 000798614 D|033516251 094815309 +000000695 000805734 000800089 D|090772100 035598976 +000000695 000833855 000810668 D|020126003 011225398 +000000695 000845853 000825539 D|077003692 030330042 +000000695 000866973 000832984 D|008652862 006736987 +000000695 000897455 000848251 D|060430195 060088409 +000000695 000934556 000886151 D|035341821 039133126 +000000695 000955096 000941066 D|078595869 033099131 +000000695 000974492 000968316 D|067376246 006248761 +000000696 000026678 000050235 D|062427108 091454250 +000000696 000033244 000052680 D|008798154 049337423 +000000696 000066291 000080884 D|047991824 022497832 +000000696 000096578 000151427 D|051959382 076830581 +000000696 000099292 000186136 D|072077722 076989988 +000000696 000110938 000194285 D|084216541 076426739 +000000696 000148844 000197926 D|018782651 048621870 +000000696 000152870 000204843 D|050030127 002452032 +000000696 000161603 000211261 D|012195178 089406056 +000000696 000162261 000236565 D|026964047 075007151 +000000696 000169023 000237673 D|051966773 071100276 +000000696 000239703 000249285 D|059326446 039549300 +000000696 000256490 000254331 D|089634754 001961474 +000000696 000261801 000264872 D|098124281 093034138 +000000696 000318403 000267130 D|023480377 067068926 +000000696 000349553 000311794 D|036093299 065590011 +000000696 000353262 000331120 D|099155767 034984641 +000000696 000373151 000351166 D|096362922 085457160 +000000696 000417507 000366657 D|036440883 023086335 +000000696 000451993 000376900 D|051150166 001633312 +000000696 000455330 000379578 D|099734514 024076151 +000000696 000456945 000396664 D|027480703 025949883 +000000696 000465369 000410310 D|049172761 015875252 +000000696 000480576 000423237 D|021192952 070137177 +000000696 000515569 000446661 D|026684334 099795515 +000000696 000567086 000498477 D|034068494 058088762 +000000696 000577496 000538955 D|080474801 091745032 +000000696 000603991 000539357 D|013826463 059482327 +000000696 000607411 000606006 D|083493280 006931851 +000000696 000608848 000611108 D|029287769 094888499 +000000696 000632035 000649314 D|087539170 049209081 +000000696 000645521 000672534 D|095359891 061318449 +000000696 000658356 000683603 D|070526744 034711705 +000000696 000684580 000696519 D|042301215 024197999 +000000696 000699728 000706665 D|042579221 038374729 +000000696 000729333 000750291 D|046896813 035002923 +000000696 000740702 000756962 D|006242801 055000904 +000000696 000742818 000766325 D|043055842 011919716 +000000696 000775204 000774069 D|044643239 020668127 +000000696 000790658 000798514 D|044365422 061877744 +000000696 000795226 000807532 D|089482550 042065804 +000000696 000800631 000816912 D|072977974 024306654 +000000696 000802351 000821051 D|016050149 005271785 +000000696 000841586 000826346 D|060316898 082898966 +000000696 000909383 000829625 D|012832731 044661095 +000000696 000916148 000909711 D|046634005 026868046 +000000696 000935462 000946840 D|091371440 085877560 +000000696 000968530 000959251 D|030266176 005331225 +000000696 000979688 000969511 D|010910105 011688529 +000000696 000999387 000973298 D|009539665 037062939 +000000697 000021430 000037309 D|036509900 018838685 +000000697 000022148 000039202 D|062413995 042738388 +000000697 000045117 000127788 D|040379364 025444496 +000000697 000066901 000134460 D|039621218 096121984 +000000697 000073694 000145740 D|069202151 036056327 +000000697 000087334 000151975 D|073933930 057932946 +000000697 000093184 000156747 D|009492482 043478682 +000000697 000139778 000212889 D|068685830 063475442 +000000697 000155708 000223764 D|021760880 073226702 +000000697 000155807 000226912 D|087006481 065149209 +000000697 000169859 000234971 D|085274755 073918761 +000000697 000179583 000270046 D|008405936 030673001 +000000697 000185072 000271511 D|034457327 025262026 +000000697 000194058 000278534 D|078540481 092297318 +000000697 000224233 000313964 D|016455444 035498686 +000000697 000227370 000322794 D|093388331 069307547 +000000697 000239753 000358519 D|027562749 036018725 +000000697 000245517 000405688 D|022340320 097157602 +000000697 000266305 000460344 D|093398206 027994893 +000000697 000271349 000490454 D|010380690 006376678 +000000697 000327029 000496208 D|042380472 077405445 +000000697 000334428 000531537 D|048097531 089074213 +000000697 000359616 000550854 D|086682618 019121358 +000000697 000367192 000577898 D|034440825 022952525 +000000697 000376441 000587331 D|061303429 056443924 +000000697 000432429 000607726 D|044053482 099938561 +000000697 000526872 000612208 D|043245617 013585486 +000000697 000567583 000617889 D|032012395 086428606 +000000697 000581216 000631791 D|081342535 028356538 +000000697 000582426 000662032 D|084879956 096307899 +000000697 000586303 000672449 D|046763185 051782816 +000000697 000605241 000700103 D|096854118 067480912 +000000697 000607379 000706506 D|059861420 028017483 +000000697 000626425 000711183 D|056042921 096423065 +000000697 000645320 000717334 D|049253620 066284205 +000000697 000646176 000721913 D|058716592 020597679 +000000697 000653073 000723856 D|042137863 074374618 +000000697 000673634 000732691 D|050992095 036455828 +000000697 000723822 000781946 D|040763410 026498391 +000000697 000742552 000788828 D|042447147 044253378 +000000697 000755159 000789644 D|046080531 020006868 +000000697 000773608 000799235 D|099408017 042960979 +000000697 000779541 000814812 D|065947917 082504119 +000000697 000809614 000847568 D|095560951 096418902 +000000697 000816781 000964072 D|041700883 075127756 +000000697 000864603 000964353 D|098228259 080546278 +000000697 000867583 000984677 D|002471077 058160288 +000000697 000895603 000990845 D|096688627 001321412 +000000697 000933555 000991575 D|091189784 054890923 +000000697 000979538 000996829 D|012310968 064280765 +000000698 000010402 000028691 D|001423577 083705524 +000000698 000014283 000039216 D|084940543 028291318 +000000698 000036691 000058398 D|060935196 069495632 +000000698 000053224 000063626 D|038642749 038398548 +000000698 000056278 000075896 D|040312790 012165513 +000000698 000083624 000086175 D|031367407 082059161 +000000698 000094478 000109491 D|068056540 027907294 +000000698 000100948 000114149 D|065094695 006472635 +000000698 000113900 000115742 D|092628941 010521901 +000000698 000117675 000122539 D|018620454 042307485 +000000698 000140583 000136971 D|046940465 022285787 +000000698 000156151 000151650 D|096724437 074584417 +000000698 000182623 000164384 D|020407790 019090283 +000000698 000188776 000172037 D|025766781 055951472 +000000698 000198644 000176333 D|061378159 059300939 +000000698 000224872 000183794 D|054590909 032861051 +000000698 000250765 000188103 D|079197407 027313475 +000000698 000292981 000196867 D|051180723 009966925 +000000698 000299806 000205530 D|002608281 060511860 +000000698 000427230 000239280 D|053633660 018365765 +000000698 000430232 000269497 D|014352378 001607701 +000000698 000441916 000278522 D|091317268 031441083 +000000698 000473727 000280475 D|098126980 085678516 +000000698 000531397 000306163 D|058440923 087620868 +000000698 000550563 000315710 D|097463713 019202658 +000000698 000550932 000334310 D|076669090 001386999 +000000698 000565451 000350940 D|023662756 024305587 +000000698 000568976 000400935 D|074793524 097610123 +000000698 000586332 000413133 D|009113965 014336588 +000000698 000605067 000446244 D|008136651 086432281 +000000698 000605348 000455195 D|027065140 013532584 +000000698 000621010 000525002 D|005180887 082421281 +000000698 000633243 000578065 D|076425442 055003045 +000000698 000651900 000616178 D|032931876 022813752 +000000698 000656604 000623195 D|082402233 051791249 +000000698 000662161 000626717 D|069672462 092718654 +000000698 000678283 000646910 D|005897227 073607114 +000000698 000691419 000647032 D|084752417 027381862 +000000698 000704944 000798063 D|058670999 002207680 +000000698 000735187 000804038 D|037820312 085204297 +000000698 000736251 000817955 D|079294094 022998142 +000000698 000786769 000863959 D|006834477 002546046 +000000698 000829371 000881712 D|095581509 019224003 +000000698 000865999 000897112 D|059077291 023343695 +000000698 000908876 000897665 D|096606465 028294463 +000000698 000914639 000902582 D|030669827 083989697 +000000698 000932213 000913994 D|094234838 084886231 +000000698 000950706 000934354 D|096546628 093889855 +000000698 000968093 000950639 D|038166896 096944468 +000000698 000981957 000972689 D|083592427 000527159 +000000699 000013548 000008861 D|097870068 046833008 +000000699 000026064 000035264 D|093562991 054858107 +000000699 000035688 000037718 D|078708767 082151628 +000000699 000048572 000043163 D|077624379 076748558 +000000699 000062780 000071870 D|051028064 077168146 +000000699 000102892 000086887 D|082860872 055235480 +000000699 000106181 000105758 D|042583067 005082752 +000000699 000116058 000127109 D|034761858 069397661 +000000699 000193059 000138131 D|079877797 063566294 +000000699 000222818 000148461 D|062274449 080060499 +000000699 000226843 000149885 D|070881013 015369104 +000000699 000232097 000150364 D|047410053 091569242 +000000699 000247996 000154496 D|022603682 027620260 +000000699 000302792 000223600 D|076288913 025999460 +000000699 000362620 000226059 D|042416076 093456508 +000000699 000372241 000242137 D|085380888 083813486 +000000699 000392541 000258147 D|003295195 033689802 +000000699 000405292 000269486 D|049948693 011741518 +000000699 000412028 000285193 D|036034221 081746420 +000000699 000428779 000307223 D|064903121 047541449 +000000699 000433975 000309636 D|045248220 000359830 +000000699 000444793 000311843 D|052603865 037365551 +000000699 000450058 000319762 D|064180129 062992616 +000000699 000500395 000324775 D|019278206 034274594 +000000699 000516150 000333663 D|079966469 070043108 +000000699 000517703 000383501 D|074029768 022350227 +000000699 000537534 000400185 D|045546588 057227510 +000000699 000538110 000411503 D|018131541 050143312 +000000699 000550968 000433444 D|076869116 043915826 +000000699 000589338 000460751 D|026818275 005197658 +000000699 000598488 000481295 D|009356102 033971554 +000000699 000603056 000490954 D|066790738 049222167 +000000699 000634258 000511030 D|019409779 083171427 +000000699 000638695 000523159 D|057833698 050670218 +000000699 000656017 000546461 D|051183220 008124171 +000000699 000670951 000597117 D|098816960 057301381 +000000699 000701509 000708286 D|025704166 015579395 +000000699 000719068 000787567 D|022757215 076445957 +000000699 000728000 000797234 D|091281036 037559198 +000000699 000738170 000810944 D|097732757 020743494 +000000699 000749439 000823408 D|035819211 017256936 +000000699 000777573 000825067 D|069821573 007000917 +000000699 000799172 000825567 D|048328174 078629374 +000000699 000862054 000851287 D|047790745 015920689 +000000699 000871226 000863698 D|016689212 020164707 +000000699 000888912 000878016 D|044831791 093344456 +000000699 000894759 000906284 D|081697478 013891459 +000000699 000934763 000921450 D|032073216 013961317 +000000699 000951782 000984685 D|065013958 080070235 +000000699 000958965 000996078 D|004756819 053142721 +000000700 000001895 000001355 D|026802106 040905000 +000000700 000026272 000022197 D|052898717 052788170 +000000700 000040630 000041334 D|034711650 045423639 +000000700 000041546 000080009 D|016891734 010893641 +000000700 000043169 000103877 D|032720412 022153465 +000000700 000062399 000139530 D|092909363 072968684 +000000700 000166665 000149397 D|000557190 005629443 +000000700 000194851 000187994 D|023604152 039253452 +000000700 000246576 000217637 D|037436899 081713461 +000000700 000258004 000223832 D|085651946 097044491 +000000700 000327057 000224080 D|057135460 008018203 +000000700 000331863 000229492 D|088360980 072769590 +000000700 000353466 000280502 D|003380349 029009121 +000000700 000356610 000287761 D|042819351 034095492 +000000700 000373890 000302445 D|059152119 015322627 +000000700 000377053 000307960 D|044630638 031190750 +000000700 000383151 000336379 D|005160679 049531168 +000000700 000398018 000342807 D|018963797 098295854 +000000700 000400507 000391929 D|008304678 052833822 +000000700 000408132 000420426 D|068160195 092917486 +000000700 000428887 000421012 D|037863633 004251256 +000000700 000518751 000441805 D|044627139 024237055 +000000700 000536304 000485844 D|076436092 058452688 +000000700 000551196 000505946 D|019138042 044897298 +000000700 000611030 000534494 D|079154581 033878142 +000000700 000619900 000540751 D|007776262 019632245 +000000700 000639523 000546017 D|057686873 082215004 +000000700 000683272 000554978 D|023754822 080397248 +000000700 000729967 000599956 D|000033111 013485767 +000000700 000759418 000607768 D|026484668 002452392 +000000700 000764863 000617056 D|032537853 013850888 +000000700 000780926 000634989 D|055428275 010215832 +000000700 000793440 000650293 D|044637946 050655273 +000000700 000801547 000676045 D|048009176 038964627 +000000700 000821053 000677428 D|053979118 098261931 +000000700 000823092 000705815 D|085229193 097702886 +000000700 000837520 000711015 D|030287798 097137158 +000000700 000840239 000729227 D|046997574 091041008 +000000700 000853384 000757195 D|037359521 036606123 +000000700 000861351 000760111 D|089939003 021929911 +000000700 000888426 000767838 D|065060430 085505015 +000000700 000920857 000776313 D|082861045 095570388 +000000700 000921035 000799720 D|044921181 055882869 +000000700 000926080 000817255 D|075084867 001663467 +000000700 000957650 000851411 D|026736377 058315496 +000000700 000958582 000888723 D|064992450 002638292 +000000700 000961320 000914444 D|058790535 066171626 +000000700 000963992 000945095 D|080866465 079362595 +000000700 000983639 000961255 D|042568633 007634467 +000000700 000992238 000969863 D|022039178 038554754 +000000701 000005541 000018801 D|042590952 002075404 +000000701 000010777 000039237 D|064815018 057359544 +000000701 000012446 000047223 D|018962760 064912088 +000000701 000020480 000106769 D|064208682 045065104 +000000701 000029519 000110002 D|028735073 082005936 +000000701 000043208 000129998 D|078171768 004321603 +000000701 000082889 000136094 D|072200922 067402226 +000000701 000097224 000153697 D|030235918 070207313 +000000701 000138076 000159483 D|022966910 086401980 +000000701 000150625 000173378 D|070207588 081288900 +000000701 000164982 000174492 D|033864410 006345953 +000000701 000176856 000185251 D|057810376 090248362 +000000701 000189603 000196289 D|053103608 088260493 +000000701 000267520 000241665 D|088153537 055665639 +000000701 000281934 000267393 D|023564285 088826776 +000000701 000311395 000291557 D|062553631 064249080 +000000701 000325882 000292720 D|078317237 039648550 +000000701 000355002 000300479 D|038778130 086536045 +000000701 000378479 000304194 D|085875954 082432355 +000000701 000385103 000306188 D|067452532 026754206 +000000701 000390090 000350823 D|094372182 069294440 +000000701 000394752 000358208 D|017875466 064846907 +000000701 000417268 000525518 D|042571957 033710224 +000000701 000422060 000535398 D|052357390 068198202 +000000701 000428868 000550356 D|074511913 006033813 +000000701 000430491 000564237 D|039686169 053752853 +000000701 000441395 000575055 D|026691849 012828747 +000000701 000528920 000582820 D|047683013 073508558 +000000701 000563483 000586306 D|025366236 030409423 +000000701 000564135 000606306 D|043391210 057677215 +000000701 000566141 000617654 D|013092522 009086225 +000000701 000572991 000628772 D|091481270 085664520 +000000701 000578683 000637648 D|055084280 021481974 +000000701 000620377 000653703 D|006691178 069812178 +000000701 000668383 000655165 D|021640331 000910963 +000000701 000691882 000659093 D|093387368 060798357 +000000701 000692063 000678127 D|001974858 047656076 +000000701 000717909 000706056 D|039227872 083708776 +000000701 000740386 000728259 D|030150189 032958339 +000000701 000761887 000742342 D|039712950 034959987 +000000701 000784824 000759262 D|073196861 043075220 +000000701 000823360 000767137 D|049268044 038011654 +000000701 000840910 000863988 D|009430812 057463346 +000000701 000851750 000936391 D|066371322 061622409 +000000701 000859869 000943188 D|063282216 065764712 +000000701 000871555 000944145 D|087098067 090194240 +000000701 000920343 000958737 D|094210807 094719977 +000000701 000930719 000983973 D|083429458 026920294 +000000701 000956410 000993859 D|034996449 081089472 +000000701 000972301 000997088 D|040971283 070438054 +000000702 000010299 000012934 D|044505105 012957745 +000000702 000054513 000029673 D|056611450 061008826 +000000702 000098211 000033466 D|044566705 019947244 +000000702 000100737 000034847 D|045628756 003069638 +000000702 000101635 000061893 D|001625787 025644086 +000000702 000129501 000074790 D|044408241 041629935 +000000702 000132158 000133886 D|079489013 005403167 +000000702 000141304 000139963 D|015994558 056141436 +000000702 000151573 000141578 D|006067175 070667819 +000000702 000185214 000196042 D|074871215 076272046 +000000702 000186027 000206085 D|078010191 009261838 +000000702 000225865 000214527 D|040582092 041954776 +000000702 000231991 000301906 D|013071265 029788597 +000000702 000240248 000308193 D|099379037 063686685 +000000702 000282550 000343454 D|097510620 068220879 +000000702 000288152 000344747 D|051320356 048245296 +000000702 000288423 000364426 D|099631080 077500160 +000000702 000293551 000374754 D|025705632 024299360 +000000702 000324249 000387508 D|077343841 091301638 +000000702 000352512 000390413 D|040912590 012623059 +000000702 000397865 000393945 D|080809185 087077683 +000000702 000401338 000413202 D|038521325 053686863 +000000702 000404715 000460966 D|084755152 015586315 +000000702 000447837 000477789 D|032572577 029542641 +000000702 000490915 000525803 D|045312886 082393760 +000000702 000525819 000527828 D|034324978 045115581 +000000702 000553015 000537221 D|050308169 043291769 +000000702 000575725 000554163 D|099221378 002029288 +000000702 000588147 000567408 D|097728378 018583325 +000000702 000598035 000571016 D|032259411 029252942 +000000702 000611821 000602171 D|024468160 094688935 +000000702 000619725 000626839 D|036488487 080886721 +000000702 000627414 000659050 D|019965507 095763097 +000000702 000645398 000661896 D|086104899 040755371 +000000702 000677482 000669765 D|075487252 056417221 +000000702 000708140 000707187 D|002657654 061230538 +000000702 000731301 000744247 D|038403256 092808679 +000000702 000745074 000755507 D|041884679 069565715 +000000702 000748945 000760619 D|019189464 085127868 +000000702 000752911 000784598 D|083207207 021666110 +000000702 000771203 000786910 D|073467376 008600223 +000000702 000782330 000790527 D|080911702 073211966 +000000702 000795377 000817618 D|091020033 046555548 +000000702 000824677 000837943 D|046497380 014722700 +000000702 000840502 000850377 D|021753810 053184112 +000000702 000847066 000851502 D|014224655 026923973 +000000702 000847308 000872409 D|045007745 057180299 +000000702 000866470 000892216 D|031476447 056564341 +000000702 000911653 000936400 D|063422694 062511432 +000000702 000994310 000942130 D|015719462 071195567 +000000703 000027500 000032944 D|094034539 058904806 +000000703 000044376 000039355 D|099079984 098388749 +000000703 000059227 000062871 D|024070707 018750607 +000000703 000073586 000091920 D|075275793 021449956 +000000703 000101875 000094989 D|036086674 072602304 +000000703 000113330 000134703 D|064454341 016059571 +000000703 000115083 000143141 D|017961933 045731730 +000000703 000119252 000153248 D|012566878 032246999 +000000703 000146223 000181664 D|024049597 045119681 +000000703 000154390 000187340 D|070993674 086903429 +000000703 000164654 000194556 D|035077733 037139815 +000000703 000245159 000195307 D|079179172 008231677 +000000703 000295815 000201493 D|069574806 058410368 +000000703 000308934 000263904 D|015927652 075518262 +000000703 000319341 000272812 D|061923237 088983502 +000000703 000320077 000281100 D|039742827 092969345 +000000703 000325704 000314573 D|049886471 004590123 +000000703 000326981 000334508 D|034663924 006757262 +000000703 000331817 000369061 D|022830644 096014087 +000000703 000339782 000384994 D|019428426 008314085 +000000703 000347261 000395399 D|041516872 007593938 +000000703 000363304 000404132 D|012516671 038136281 +000000703 000408609 000441859 D|095833395 042620691 +000000703 000424750 000467010 D|064927517 041288115 +000000703 000449971 000474105 D|037380031 083218703 +000000703 000451080 000532039 D|028060507 006289502 +000000703 000512060 000538799 D|064366372 059525403 +000000703 000519393 000540535 D|038881071 060011288 +000000703 000520617 000549190 D|049295272 029199367 +000000703 000547832 000570191 D|066325924 036640582 +000000703 000592464 000575662 D|065849312 048514415 +000000703 000592910 000592241 D|062467852 049841481 +000000703 000595836 000613884 D|043828535 054597067 +000000703 000603242 000616865 D|071041492 093978136 +000000703 000620754 000624396 D|021897271 048065536 +000000703 000645217 000675477 D|067164382 007596250 +000000703 000655955 000707708 D|029250673 048265190 +000000703 000667004 000709077 D|000620161 076854861 +000000703 000686845 000710497 D|079354261 013590513 +000000703 000696574 000717875 D|025473379 046210973 +000000703 000712275 000732565 D|086927456 067929115 +000000703 000834139 000796779 D|027697051 092924802 +000000703 000835915 000858076 D|087594940 037615182 +000000703 000885181 000877396 D|071298453 045152861 +000000703 000908528 000918385 D|095028919 029678981 +000000703 000910847 000928280 D|044791634 087631929 +000000703 000913323 000930569 D|007530528 076013514 +000000703 000923528 000952877 D|015446647 091450090 +000000703 000970321 000977049 D|036192568 021155738 +000000703 000990183 000978177 D|009625235 079649744 +000000704 000035338 000015939 D|099845059 018393165 +000000704 000043935 000017420 D|010823745 044930400 +000000704 000060829 000024169 D|036711142 044923694 +000000704 000082380 000077701 D|087045045 026541099 +000000704 000086189 000093515 D|065332859 049359206 +000000704 000123952 000107084 D|047421695 058160182 +000000704 000134884 000142160 D|058257100 077772909 +000000704 000163713 000145011 D|016514632 019602007 +000000704 000252791 000194418 D|085458032 054528235 +000000704 000265447 000215152 D|070449471 018784026 +000000704 000296813 000254614 D|041673868 022530743 +000000704 000342412 000341998 D|029658883 047333416 +000000704 000363853 000368494 D|070185839 057749931 +000000704 000382175 000376527 D|098219923 005062217 +000000704 000402595 000383809 D|063131335 020245675 +000000704 000456669 000396012 D|096173158 015464257 +000000704 000475255 000423381 D|007051634 049520296 +000000704 000481799 000432456 D|018925720 017146501 +000000704 000528766 000473227 D|027226770 044059419 +000000704 000549934 000476990 D|089550935 006446337 +000000704 000564771 000502157 D|055392164 004176481 +000000704 000577697 000516106 D|048202370 008449824 +000000704 000588006 000519720 D|095924190 056542342 +000000704 000590710 000525080 D|016532377 089341535 +000000704 000598403 000543326 D|039640856 053888376 +000000704 000610262 000549590 D|087014963 096484096 +000000704 000627743 000607751 D|008513960 076244154 +000000704 000628645 000639167 D|065815760 059249310 +000000704 000641542 000653201 D|065357954 017139966 +000000704 000657096 000710391 D|046946142 086235382 +000000704 000688341 000720558 D|032351391 073289756 +000000704 000707314 000746926 D|032382130 058005115 +000000704 000714025 000758628 D|006866962 071382137 +000000704 000720010 000761191 D|015124034 036828536 +000000704 000747574 000770324 D|004471867 094938211 +000000704 000777599 000820991 D|031042598 047123873 +000000704 000781932 000833193 D|027910410 061696629 +000000704 000811518 000845286 D|029273174 065034978 +000000704 000853478 000845917 D|043698935 025772148 +000000704 000868115 000872424 D|063700472 051937883 +000000704 000873679 000887300 D|076278236 099752540 +000000704 000912713 000895183 D|036973748 084939158 +000000704 000914504 000897410 D|063548784 088092151 +000000704 000920711 000910193 D|055261391 073905705 +000000704 000925882 000920177 D|097733543 059443744 +000000704 000931330 000937985 D|026409118 063539211 +000000704 000941280 000963173 D|024462306 087379245 +000000704 000957166 000963396 D|083884079 048575403 +000000704 000970023 000992632 D|003054228 084005163 +000000704 000972896 000994641 D|009834918 082634949 +000000705 000031436 000008741 D|030868035 040601990 +000000705 000044191 000019588 D|001119784 099881879 +000000705 000063855 000042891 D|079562325 074861510 +000000705 000067826 000052127 D|026067166 000640028 +000000705 000119686 000080847 D|014938739 037892275 +000000705 000125691 000121983 D|005331746 023486130 +000000705 000172363 000145574 D|038964278 018754750 +000000705 000190662 000237181 D|072660445 011218186 +000000705 000202178 000260643 D|059764762 009161698 +000000705 000205351 000263078 D|048362144 024387743 +000000705 000214101 000310225 D|018476380 094886017 +000000705 000234025 000346761 D|085403836 066759186 +000000705 000284640 000359457 D|084696067 017631783 +000000705 000298844 000361873 D|040994585 043937177 +000000705 000299309 000377637 D|085199844 018373881 +000000705 000305221 000395820 D|079075096 011022577 +000000705 000321117 000432506 D|070355529 075533623 +000000705 000334637 000480106 D|052926261 055320990 +000000705 000337623 000504957 D|042297488 055065678 +000000705 000338863 000505743 D|020283796 036922256 +000000705 000401673 000517974 D|041620253 045682742 +000000705 000441866 000520055 D|097547752 080326855 +000000705 000479379 000526896 D|095006567 010587289 +000000705 000517387 000530338 D|060425633 005855348 +000000705 000528917 000549951 D|005517867 092390130 +000000705 000542729 000560914 D|066616660 032967820 +000000705 000553801 000565810 D|013272932 085347847 +000000705 000585377 000565867 D|068147378 071212438 +000000705 000624969 000569264 D|037188649 013269624 +000000705 000656470 000588569 D|059497670 080284520 +000000705 000657071 000591500 D|080863013 044464336 +000000705 000657386 000592256 D|054673774 093379540 +000000705 000660196 000609229 D|044897111 017453605 +000000705 000666025 000614433 D|056708707 020797462 +000000705 000694648 000618986 D|008458837 030781905 +000000705 000761329 000629409 D|083584620 056570194 +000000705 000764064 000657320 D|018690560 090012194 +000000705 000783469 000660042 D|098463110 023945758 +000000705 000793044 000671760 D|023714584 027184355 +000000705 000810358 000690197 D|088458633 074034938 +000000705 000826533 000754217 D|055026869 087741657 +000000705 000836543 000829191 D|028774858 064174260 +000000705 000842301 000836050 D|035734412 021466379 +000000705 000846492 000846849 D|007353913 056466452 +000000705 000875698 000863479 D|036053478 037170669 +000000705 000913076 000884101 D|097019690 007580871 +000000705 000919562 000939425 D|036964935 081141012 +000000705 000935478 000977579 D|017957578 062951576 +000000705 000950595 000982679 D|066037845 076719794 +000000705 000983912 000988754 D|000029686 095924639 +000000706 000004366 000000095 D|040906497 090323241 +000000706 000006905 000016790 D|058327910 038168378 +000000706 000007463 000024912 D|073196311 065498886 +000000706 000067053 000057782 D|080899224 059035337 +000000706 000070832 000095618 D|011784476 095280824 +000000706 000071201 000118693 D|008941220 013444082 +000000706 000133883 000121652 D|089583797 008024156 +000000706 000182668 000179258 D|042011766 065044537 +000000706 000188483 000184960 D|013589530 023144481 +000000706 000221104 000199321 D|088295227 063671503 +000000706 000307233 000293517 D|053163043 007453661 +000000706 000330762 000324226 D|045068279 017860695 +000000706 000354770 000349763 D|055870306 076536432 +000000706 000382418 000359367 D|052583694 062391573 +000000706 000392502 000392950 D|013267633 051810728 +000000706 000405210 000395724 D|019089416 045642206 +000000706 000421271 000430510 D|063550018 053721423 +000000706 000434912 000449343 D|050102723 050340568 +000000706 000454629 000453395 D|069637872 077637067 +000000706 000497199 000476260 D|061692315 041946897 +000000706 000518742 000485562 D|029969508 045079233 +000000706 000531266 000512978 D|012903541 069970223 +000000706 000553705 000517261 D|018790377 098674570 +000000706 000591592 000532762 D|008842242 002091352 +000000706 000626272 000560258 D|024368051 005702458 +000000706 000658930 000602842 D|022039349 070754724 +000000706 000668189 000615508 D|017632500 002468792 +000000706 000690658 000619542 D|096949025 061910840 +000000706 000699191 000629499 D|068280137 077371518 +000000706 000705494 000690213 D|034470068 032667623 +000000706 000737853 000696635 D|020603699 084846178 +000000706 000746885 000707029 D|059212088 095500418 +000000706 000757215 000707610 D|081028679 060787842 +000000706 000789095 000723409 D|085205469 006511847 +000000706 000791712 000738632 D|010092040 005777675 +000000706 000834243 000741090 D|051640490 094265390 +000000706 000840354 000746802 D|014050078 045779176 +000000706 000847730 000769594 D|013481194 076159090 +000000706 000854192 000789116 D|024382539 046676168 +000000706 000855089 000791871 D|088093054 060894452 +000000706 000865205 000826668 D|008548081 030970893 +000000706 000871715 000828473 D|030070782 003440406 +000000706 000875800 000831438 D|083839484 093623168 +000000706 000888944 000834907 D|064073714 075704453 +000000706 000897971 000883354 D|043105267 018955265 +000000706 000899027 000888788 D|065287623 015992860 +000000706 000907956 000933395 D|091944627 089051140 +000000706 000934774 000965029 D|076394235 007962343 +000000706 000980724 000971452 D|050956770 040718813 +000000706 000986025 000999499 D|061500897 094373854 +000000707 000010675 000004450 D|066771005 084450987 +000000707 000030869 000009008 D|041755659 026375569 +000000707 000048580 000035096 D|081054967 044018537 +000000707 000065550 000083664 D|016718157 091503507 +000000707 000098031 000123844 D|079687735 083026993 +000000707 000217442 000132445 D|018203315 031386721 +000000707 000230796 000154620 D|012297135 022685473 +000000707 000242235 000175658 D|020203386 075499049 +000000707 000246960 000231944 D|070710596 032019673 +000000707 000277916 000239258 D|082326030 094379868 +000000707 000286907 000239685 D|030313147 070652622 +000000707 000319158 000252073 D|016708481 096447612 +000000707 000320538 000254864 D|064623802 032040378 +000000707 000331301 000264580 D|047464440 050298206 +000000707 000346594 000274213 D|061261022 099179208 +000000707 000349828 000277799 D|051195442 084778723 +000000707 000360788 000297297 D|090089896 071231406 +000000707 000385792 000297537 D|083705034 097050798 +000000707 000395740 000318711 D|030722922 033266087 +000000707 000414699 000320362 D|067591539 000344526 +000000707 000459329 000360214 D|047189749 067461913 +000000707 000471292 000394261 D|066596393 060088586 +000000707 000495599 000425809 D|096107247 087680117 +000000707 000533302 000448341 D|082319524 016062996 +000000707 000540850 000450307 D|098369783 068998347 +000000707 000568742 000462095 D|035225482 045891694 +000000707 000568978 000476613 D|014792982 071085467 +000000707 000576244 000487470 D|019317551 035171815 +000000707 000580261 000510775 D|099336139 066661046 +000000707 000603684 000610566 D|010833422 077065474 +000000707 000607181 000680361 D|083121845 053564652 +000000707 000621985 000683218 D|068404357 015732588 +000000707 000634087 000688935 D|008495060 033081825 +000000707 000665879 000702079 D|031936547 019778637 +000000707 000723399 000731957 D|051073069 026838440 +000000707 000728259 000735313 D|063743427 023914467 +000000707 000761314 000737678 D|065448881 098669241 +000000707 000765735 000744070 D|048921196 038365882 +000000707 000770858 000802875 D|054583745 042299343 +000000707 000786951 000830167 D|082101484 061899358 +000000707 000795067 000838937 D|095361338 084636298 +000000707 000798883 000843379 D|067656026 064167810 +000000707 000842661 000849588 D|063851917 012423953 +000000707 000849162 000851930 D|038231873 098147091 +000000707 000855748 000865377 D|086232634 026249197 +000000707 000874273 000899080 D|042437077 017186694 +000000707 000926535 000925327 D|046228187 037609407 +000000707 000934786 000926690 D|026051206 062386626 +000000707 000941509 000948888 D|025998981 018656388 +000000707 000993664 000990458 D|015224140 011710706 +000000708 000017496 000001411 D|089352482 051254092 +000000708 000046308 000003061 D|011910269 009008624 +000000708 000051340 000104239 D|034459146 066413656 +000000708 000066337 000111851 D|007678713 049877753 +000000708 000067259 000124721 D|081785908 079016219 +000000708 000096198 000127527 D|098065848 032848269 +000000708 000100633 000163543 D|053515062 080508958 +000000708 000104531 000172861 D|063273913 075039673 +000000708 000120667 000172885 D|082335739 086840375 +000000708 000122740 000198542 D|057143855 019899387 +000000708 000172095 000212896 D|084309247 039991750 +000000708 000184103 000213591 D|092493337 003100587 +000000708 000238138 000225552 D|055989083 044625214 +000000708 000276007 000235240 D|011747277 081687320 +000000708 000284085 000239304 D|088690521 063211627 +000000708 000338595 000259214 D|005654292 010897398 +000000708 000355858 000293520 D|075362092 061282100 +000000708 000368853 000310045 D|039869366 050449595 +000000708 000393039 000322495 D|038334899 035064445 +000000708 000403826 000332019 D|046519976 089791114 +000000708 000459903 000362044 D|054049916 040684725 +000000708 000484556 000375365 D|015416310 060003945 +000000708 000524601 000380278 D|099101029 055717278 +000000708 000526712 000389440 D|054732727 056860284 +000000708 000539471 000390951 D|010883634 049192084 +000000708 000546613 000402111 D|086011787 080258438 +000000708 000572798 000432467 D|082412149 096297979 +000000708 000593334 000459101 D|026344616 091150749 +000000708 000618771 000469492 D|099651297 047768515 +000000708 000633125 000538914 D|048500342 021440145 +000000708 000635999 000546509 D|002674019 092637579 +000000708 000658456 000552077 D|027710620 041716566 +000000708 000684100 000568938 D|018956144 084698675 +000000708 000693026 000574710 D|000133576 031033526 +000000708 000708362 000590531 D|055446217 031630394 +000000708 000709796 000597858 D|001162925 025322368 +000000708 000710080 000646322 D|065502853 020756619 +000000708 000749582 000681827 D|098891059 046017845 +000000708 000762854 000694443 D|091937536 090320396 +000000708 000768443 000744965 D|034526365 074584584 +000000708 000788871 000800041 D|049268673 054581370 +000000708 000830533 000811354 D|012816896 072560344 +000000708 000839828 000816937 D|004966890 085413326 +000000708 000849718 000850078 D|057855675 017440983 +000000708 000901108 000862580 D|000555227 091065826 +000000708 000903456 000864660 D|025944107 069579467 +000000708 000928960 000865716 D|092959908 005367990 +000000708 000940547 000882285 D|006085043 051382036 +000000708 000948634 000911161 D|081477078 051236290 +000000708 000950249 000920289 D|091639125 055336667 +000000709 000014151 000001571 D|005006042 066185540 +000000709 000020313 000017314 D|060793740 044008844 +000000709 000022144 000043907 D|031960057 085368260 +000000709 000026168 000044369 D|093733029 099999335 +000000709 000055047 000060904 D|014046736 074705433 +000000709 000065776 000113116 D|045666018 098235447 +000000709 000071603 000173858 D|063526212 050501955 +000000709 000089969 000204394 D|088803496 098059015 +000000709 000101511 000224154 D|029225380 041523186 +000000709 000134636 000231577 D|098927299 060920396 +000000709 000152926 000234274 D|012676421 064505725 +000000709 000179977 000235705 D|032414197 035060852 +000000709 000189484 000243443 D|070837829 060620298 +000000709 000238854 000243702 D|071741741 046320989 +000000709 000240627 000269313 D|035471646 079377974 +000000709 000252696 000278792 D|055148200 083232921 +000000709 000304508 000285564 D|000372443 022633915 +000000709 000306271 000289146 D|096680207 013287551 +000000709 000317847 000334506 D|009988735 018334770 +000000709 000323926 000348234 D|064027158 077749657 +000000709 000406990 000356869 D|075295306 011248299 +000000709 000437228 000391747 D|047728996 034633319 +000000709 000438025 000394435 D|044750209 086785859 +000000709 000446408 000423297 D|007543873 046395741 +000000709 000447345 000424006 D|095682587 010673899 +000000709 000457681 000429740 D|034007301 006594978 +000000709 000461535 000448520 D|011487321 097386601 +000000709 000482866 000487184 D|054351641 019522243 +000000709 000499945 000488112 D|013007466 070119169 +000000709 000525932 000495310 D|051173909 098616357 +000000709 000590857 000505847 D|046202554 094521742 +000000709 000598656 000528387 D|079681503 047274815 +000000709 000599434 000564283 D|034238439 057463166 +000000709 000702550 000580078 D|043927996 094500781 +000000709 000722243 000612408 D|064502748 053853335 +000000709 000745588 000620645 D|016367537 067460135 +000000709 000793629 000652286 D|030900393 030444869 +000000709 000856366 000664982 D|022458253 006338741 +000000709 000862493 000665485 D|007075572 006279422 +000000709 000893612 000691586 D|078096619 030311330 +000000709 000906093 000710516 D|031801622 023549509 +000000709 000909161 000748400 D|013030934 044942580 +000000709 000916537 000767567 D|093000296 020424814 +000000709 000920048 000792402 D|021499859 009881266 +000000709 000936936 000799296 D|054251173 094932795 +000000709 000966449 000842827 D|035491548 055470383 +000000709 000976062 000876362 D|097191606 045115952 +000000709 000977969 000912319 D|009796533 098067857 +000000709 000985996 000940478 D|098087126 021682272 +000000709 000986875 000987792 D|032186086 047823090 +000000710 000034343 000074992 D|062240092 085533271 +000000710 000047064 000080999 D|022517411 021042218 +000000710 000054226 000096444 D|010585872 002327078 +000000710 000073185 000107192 D|050255140 018748464 +000000710 000164230 000134362 D|007948127 021920221 +000000710 000167186 000137955 D|089765683 080244124 +000000710 000193707 000153016 D|034220159 017287051 +000000710 000197422 000156471 D|055260060 051502392 +000000710 000235972 000189811 D|020286119 003623493 +000000710 000267346 000208026 D|078618739 025009331 +000000710 000285952 000343918 D|074069245 072645487 +000000710 000288936 000359852 D|050133444 002637996 +000000710 000296349 000376626 D|050336927 004771332 +000000710 000310510 000403958 D|075280174 055330451 +000000710 000329916 000422519 D|073583742 064421351 +000000710 000361659 000429738 D|071862543 007141759 +000000710 000363606 000522420 D|002709644 094654348 +000000710 000367509 000523377 D|026047053 047355043 +000000710 000410804 000568042 D|093873893 062897082 +000000710 000469192 000577253 D|046287914 022497397 +000000710 000504877 000601013 D|061814288 036499919 +000000710 000510141 000618251 D|042490896 070357186 +000000710 000545399 000621696 D|073647315 076530331 +000000710 000552525 000658795 D|030015838 083039220 +000000710 000576597 000663773 D|026903509 005647688 +000000710 000599332 000693751 D|016484618 094919140 +000000710 000606135 000734432 D|094033538 010180246 +000000710 000606236 000737962 D|078755527 056970198 +000000710 000612532 000742087 D|046257903 019100624 +000000710 000615370 000760481 D|058782829 071402292 +000000710 000624609 000785652 D|019373331 002711899 +000000710 000663947 000797632 D|023477316 099219152 +000000710 000670863 000797905 D|097228634 010211876 +000000710 000678391 000799404 D|015219698 088138969 +000000710 000757016 000816616 D|095687545 054034075 +000000710 000778835 000822794 D|060086565 099409253 +000000710 000784981 000828674 D|048462662 051969866 +000000710 000804372 000831601 D|023957608 008151368 +000000710 000831311 000832152 D|051351593 001916398 +000000710 000855268 000839239 D|052534830 039815135 +000000710 000894883 000863733 D|060229822 086542545 +000000710 000900507 000931107 D|082688404 069215692 +000000710 000901959 000940934 D|019334375 064914667 +000000710 000922109 000948807 D|050951160 072817830 +000000710 000925204 000961101 D|010135379 004912535 +000000710 000932512 000961712 D|007984241 024527871 +000000710 000950628 000965710 D|079562141 070251749 +000000710 000962860 000974884 D|023032298 005784283 +000000710 000963051 000992397 D|078734026 036954513 +000000710 000991851 000998474 D|060741288 074365252 +000000711 000012421 000007908 D|031141711 097451562 +000000711 000027022 000054077 D|079101329 072256709 +000000711 000028955 000054754 D|036019418 009718228 +000000711 000053581 000068564 D|017978976 046465256 +000000711 000063194 000071207 D|097057564 019106631 +000000711 000098629 000071708 D|036621650 015458350 +000000711 000101536 000079296 D|030583868 035174897 +000000711 000138616 000088237 D|038530034 068237352 +000000711 000183962 000095440 D|026100306 073980227 +000000711 000198904 000115240 D|052232261 034500538 +000000711 000199982 000266207 D|018216353 089709683 +000000711 000206802 000282031 D|084579966 082386826 +000000711 000225033 000322347 D|090731671 000888074 +000000711 000227690 000358214 D|021220702 029331637 +000000711 000234129 000370940 D|090392298 054570011 +000000711 000244067 000397827 D|028390309 035594260 +000000711 000294168 000405878 D|007111836 042107096 +000000711 000333221 000406565 D|064878473 013990724 +000000711 000356771 000462978 D|071593995 039235727 +000000711 000366644 000475723 D|095661251 007895456 +000000711 000388953 000523528 D|044253590 079049793 +000000711 000489517 000537128 D|042825994 056460910 +000000711 000500204 000552126 D|097939971 090635398 +000000711 000527967 000556091 D|028211663 007513332 +000000711 000538772 000569090 D|059592760 025328326 +000000711 000558747 000587412 D|092326593 027017988 +000000711 000640473 000598226 D|016331734 002976420 +000000711 000653593 000621078 D|080085317 020355569 +000000711 000671695 000677356 D|013192439 011319273 +000000711 000677704 000691065 D|089695417 087406479 +000000711 000678034 000719621 D|027098683 023327318 +000000711 000684471 000723718 D|016262556 060415876 +000000711 000692741 000727233 D|097499414 084844978 +000000711 000707129 000730736 D|092708597 092357324 +000000711 000712267 000754556 D|062901087 023852251 +000000711 000720352 000768689 D|038753073 078139053 +000000711 000723287 000771326 D|056231058 032644387 +000000711 000731345 000773312 D|050887412 047270359 +000000711 000738002 000775843 D|087633756 093235704 +000000711 000745629 000814271 D|078189253 059388246 +000000711 000761051 000830256 D|038221350 066377360 +000000711 000813259 000833810 D|068435443 076360444 +000000711 000829463 000844383 D|021067992 013173004 +000000711 000861810 000866456 D|017208781 012964487 +000000711 000880982 000888641 D|019468358 065741307 +000000711 000883229 000892449 D|002522866 016748682 +000000711 000900529 000922848 D|077416616 033850394 +000000711 000901309 000948348 D|054688890 037917994 +000000711 000930997 000953584 D|089298450 091685325 +000000711 000935678 000968460 D|097532268 016122699 +000000712 000031048 000042890 D|040761236 013481696 +000000712 000047358 000094749 D|011801238 006701248 +000000712 000058509 000097238 D|002774976 027067585 +000000712 000063750 000106472 D|084882865 023199118 +000000712 000114257 000110980 D|008697985 052596190 +000000712 000116704 000159879 D|062419020 035544026 +000000712 000133286 000173474 D|031614482 072051263 +000000712 000149648 000179399 D|079068345 031902580 +000000712 000170330 000249108 D|006457135 075900067 +000000712 000172180 000296093 D|094509267 023898322 +000000712 000214026 000297703 D|055473737 057003347 +000000712 000215466 000339247 D|046350410 063903490 +000000712 000243284 000369968 D|085923815 099458758 +000000712 000262737 000381710 D|095558426 054473974 +000000712 000288018 000394082 D|047893375 071784886 +000000712 000314454 000409463 D|067160076 099104352 +000000712 000344245 000428705 D|012121324 091302659 +000000712 000363993 000435311 D|031353620 013220056 +000000712 000377750 000495193 D|069078604 096743174 +000000712 000389218 000501206 D|080607807 005594869 +000000712 000466544 000511414 D|052593618 007309385 +000000712 000514926 000516264 D|046412158 096735571 +000000712 000517281 000529212 D|039759709 054254404 +000000712 000517315 000540981 D|064144153 042945905 +000000712 000520392 000563567 D|093969188 018267334 +000000712 000521759 000565130 D|024886597 082557925 +000000712 000549681 000573283 D|074412637 068541307 +000000712 000598371 000575585 D|078672874 099241435 +000000712 000605060 000580561 D|034144541 052458222 +000000712 000631295 000581887 D|078908755 066044372 +000000712 000660141 000615667 D|037904307 070779499 +000000712 000672993 000623552 D|014250859 069219026 +000000712 000675782 000634345 D|041012845 035625260 +000000712 000680936 000643155 D|068641072 096141384 +000000712 000682493 000667558 D|075819214 070518575 +000000712 000687698 000693215 D|024710775 075840961 +000000712 000691445 000728989 D|033511201 017466687 +000000712 000726038 000733413 D|003567567 046882822 +000000712 000745888 000798972 D|042152493 032605734 +000000712 000754172 000813414 D|061129555 033735187 +000000712 000757048 000849356 D|023076048 019478408 +000000712 000764901 000862963 D|071260491 007255734 +000000712 000793374 000875669 D|030089303 072616451 +000000712 000855534 000878324 D|026997467 070055132 +000000712 000874673 000883327 D|049450669 095312956 +000000712 000898209 000891490 D|004030614 054203658 +000000712 000914383 000930028 D|085312752 058830623 +000000712 000921632 000942147 D|090827934 041977471 +000000712 000935281 000953627 D|066985536 089402358 +000000712 000990575 000994101 D|013918988 098945604 +000000713 000004405 000021553 D|088426657 012784093 +000000713 000004430 000067367 D|082613195 040025910 +000000713 000054625 000069773 D|078057850 026042842 +000000713 000064756 000100513 D|013126714 033603604 +000000713 000080469 000102419 D|038252349 031843638 +000000713 000101835 000123964 D|068761826 039097374 +000000713 000107432 000133971 D|062464414 018166574 +000000713 000119134 000147451 D|070647614 099417400 +000000713 000148904 000167240 D|099257993 050930899 +000000713 000179639 000182075 D|006645609 059920771 +000000713 000196987 000195454 D|016406663 008971588 +000000713 000262508 000236307 D|058634711 066035176 +000000713 000275209 000249518 D|057117427 007505017 +000000713 000288238 000256906 D|011580849 035037997 +000000713 000305014 000277684 D|083346177 087563392 +000000713 000315363 000346279 D|098218079 084897532 +000000713 000384524 000392079 D|039373316 008603584 +000000713 000412467 000392264 D|083567477 077133951 +000000713 000419704 000456348 D|062616014 056956030 +000000713 000437122 000468223 D|002098877 000892340 +000000713 000448308 000527642 D|024644517 014237568 +000000713 000484005 000558091 D|081693340 037672595 +000000713 000488486 000578841 D|069960451 042931815 +000000713 000523467 000590763 D|046092617 083629923 +000000713 000572222 000605120 D|084725248 010519227 +000000713 000575222 000660704 D|022998617 070570400 +000000713 000581131 000667880 D|081352811 081498902 +000000713 000599012 000676048 D|017733492 016756581 +000000713 000602222 000725772 D|094693065 014702350 +000000713 000612500 000726118 D|060814032 024600560 +000000713 000619078 000730643 D|004530048 073986498 +000000713 000672863 000752623 D|017081583 082469842 +000000713 000682128 000791752 D|022205396 040359247 +000000713 000709515 000809630 D|049608797 094784548 +000000713 000760755 000811021 D|085622461 008466880 +000000713 000773747 000833961 D|088274290 070675257 +000000713 000775641 000839863 D|018823970 076228015 +000000713 000788370 000888846 D|009593940 089544366 +000000713 000802621 000911413 D|034707839 043628733 +000000713 000815710 000915383 D|001732344 021119135 +000000713 000823328 000928946 D|058881875 007212465 +000000713 000829276 000932413 D|030073657 058922864 +000000713 000835456 000945036 D|020634257 011463847 +000000713 000843355 000957328 D|016162886 065988858 +000000713 000888702 000964476 D|025362641 077390449 +000000713 000939781 000967312 D|079696904 024709391 +000000713 000958598 000968243 D|067353160 086847097 +000000713 000978063 000973925 D|019962148 015153723 +000000713 000979046 000982377 D|074885823 034436568 +000000713 000988064 000986707 D|074830894 080376746 +000000714 000003976 000007731 D|034616363 026502748 +000000714 000027059 000009067 D|049035589 063248357 +000000714 000036880 000013345 D|059024917 006941978 +000000714 000057888 000104200 D|014371364 026145461 +000000714 000057913 000150677 D|097615052 053777625 +000000714 000083258 000178557 D|017822919 076237027 +000000714 000084334 000199020 D|040178312 061943210 +000000714 000089923 000224236 D|067548036 055866529 +000000714 000101518 000251976 D|055657027 066035491 +000000714 000190156 000255773 D|098666836 035976355 +000000714 000193310 000256078 D|083246118 083111767 +000000714 000200781 000393627 D|089429583 017071659 +000000714 000211766 000398425 D|007275603 076243559 +000000714 000235809 000400536 D|091682494 017761338 +000000714 000265939 000419471 D|075570273 025725119 +000000714 000287578 000443277 D|092900816 051077401 +000000714 000289111 000445419 D|085803243 075175758 +000000714 000345586 000494845 D|039848241 092105456 +000000714 000372563 000507133 D|012692435 056404383 +000000714 000381122 000547764 D|088719178 023609190 +000000714 000386031 000548415 D|060157821 000049311 +000000714 000399877 000553299 D|004880811 096267281 +000000714 000426103 000565331 D|028850800 009505428 +000000714 000433512 000567088 D|008433930 042402443 +000000714 000441406 000582187 D|047792817 042200619 +000000714 000489313 000598688 D|079813064 096267611 +000000714 000509797 000617010 D|041439416 083063785 +000000714 000511088 000627030 D|055105727 069324094 +000000714 000526352 000645716 D|016213597 039306313 +000000714 000619649 000657663 D|057011245 016661578 +000000714 000623075 000690323 D|059596727 007709728 +000000714 000626189 000692338 D|091829022 060785737 +000000714 000634504 000695692 D|081398140 003847890 +000000714 000654943 000699875 D|013316934 040345705 +000000714 000696256 000705505 D|050678948 091873734 +000000714 000706841 000729781 D|035119734 074560800 +000000714 000756267 000760420 D|006917563 048504549 +000000714 000790262 000768879 D|014725970 046924439 +000000714 000824979 000823442 D|096729815 020195439 +000000714 000825639 000827018 D|028950836 091616933 +000000714 000831360 000834590 D|074925463 021560543 +000000714 000834697 000838580 D|004992989 011772140 +000000714 000839987 000872589 D|061784837 079254312 +000000714 000866744 000938963 D|035602748 070727810 +000000714 000875862 000958441 D|014190723 002122928 +000000714 000909256 000960122 D|003725616 078355426 +000000714 000924343 000961975 D|074309449 033629145 +000000714 000959878 000970468 D|042648911 068648489 +000000714 000971020 000970735 D|041460791 055147160 +000000714 000996324 000986241 D|060135847 037252380 +000000715 000003680 000027979 D|074402741 069483338 +000000715 000053193 000062751 D|025420083 075646240 +000000715 000058555 000068632 D|087720788 014891006 +000000715 000073502 000096654 D|099597546 087878656 +000000715 000083274 000138015 D|069819922 000211087 +000000715 000094447 000140375 D|088171746 094376792 +000000715 000101094 000149914 D|032016679 094215387 +000000715 000146832 000163284 D|003654549 081099889 +000000715 000171890 000196037 D|038497119 069078387 +000000715 000203892 000203382 D|051752812 035861723 +000000715 000210746 000218702 D|013075128 079861986 +000000715 000236336 000256976 D|018932746 028474918 +000000715 000252660 000279979 D|019833085 082403888 +000000715 000275605 000281725 D|080249652 002380446 +000000715 000287942 000312576 D|010176579 038472880 +000000715 000317511 000323591 D|067188049 022806036 +000000715 000370251 000348391 D|083754225 028986191 +000000715 000371418 000376337 D|028599917 002306422 +000000715 000402747 000395272 D|032655188 011294895 +000000715 000441850 000412761 D|078098739 057401682 +000000715 000452398 000426890 D|059870918 047475801 +000000715 000469614 000442068 D|020551724 078854220 +000000715 000471634 000468375 D|047091605 041686198 +000000715 000510350 000480350 D|068155529 032513849 +000000715 000514691 000571942 D|021306209 061476195 +000000715 000522385 000580712 D|045992638 048930836 +000000715 000524780 000661879 D|082606000 028226269 +000000715 000610151 000667081 D|061411605 042473349 +000000715 000612665 000693680 D|072305642 079743573 +000000715 000623016 000699679 D|083388421 041867171 +000000715 000644258 000752164 D|060427087 056302300 +000000715 000650613 000753218 D|075728122 080181218 +000000715 000668430 000754531 D|037967294 002809880 +000000715 000677352 000761586 D|003012956 090700214 +000000715 000738167 000764712 D|061037660 015657844 +000000715 000792172 000770103 D|020859522 051060023 +000000715 000817589 000770655 D|007668709 092755316 +000000715 000819607 000810606 D|003486406 075045450 +000000715 000848712 000816384 D|032862588 011839128 +000000715 000861043 000825621 D|067817948 015625171 +000000715 000883413 000828761 D|099815541 013522120 +000000715 000902304 000867368 D|029100645 075445111 +000000715 000913154 000892388 D|028275155 063798550 +000000715 000922073 000908499 D|052308389 071560412 +000000715 000934959 000915850 D|083273604 048472330 +000000715 000938236 000928087 D|034861171 080905023 +000000715 000964615 000936438 D|001511632 045490879 +000000715 000965315 000946208 D|008938390 013541436 +000000715 000967279 000964304 D|024851950 051587730 +000000715 000997981 000971052 D|061105688 032223442 +000000716 000049324 000002167 D|040787392 005703223 +000000716 000078264 000019946 D|048230781 085995243 +000000716 000114529 000021824 D|059887402 011426773 +000000716 000135215 000031852 D|019363236 016314169 +000000716 000139560 000046536 D|034301498 069633442 +000000716 000152827 000052805 D|022747656 076032131 +000000716 000178802 000068969 D|035323961 067741617 +000000716 000217468 000079576 D|015803979 053743829 +000000716 000230196 000115531 D|014259034 063701819 +000000716 000248735 000125504 D|024188565 075444957 +000000716 000249875 000141028 D|042966780 029214237 +000000716 000276146 000145792 D|084526627 090715839 +000000716 000284566 000188981 D|085697431 045458505 +000000716 000324697 000227448 D|010093559 018813010 +000000716 000343374 000278933 D|083115303 024570757 +000000716 000350215 000317153 D|043093134 073907901 +000000716 000366801 000324123 D|031636554 007086705 +000000716 000376742 000405918 D|090724003 030967031 +000000716 000398382 000462953 D|007152011 050433296 +000000716 000420998 000486945 D|084938212 052550233 +000000716 000488050 000491669 D|075472529 071642737 +000000716 000508160 000507389 D|028488505 080368725 +000000716 000512931 000515906 D|014341282 092274695 +000000716 000516800 000550063 D|052896657 087338346 +000000716 000525396 000556113 D|025446656 083232600 +000000716 000592250 000556348 D|067182752 071425550 +000000716 000616291 000570163 D|081354584 006618795 +000000716 000632802 000582474 D|059743262 051400358 +000000716 000665438 000593330 D|050319320 008548517 +000000716 000669675 000601492 D|042106070 046198868 +000000716 000682030 000608716 D|064313887 057622337 +000000716 000697798 000613638 D|040345925 029460860 +000000716 000704071 000641812 D|057293682 012328196 +000000716 000708019 000653788 D|010263514 006987280 +000000716 000746362 000663716 D|071643391 002963702 +000000716 000752115 000664979 D|056977755 021352510 +000000716 000775747 000670397 D|058850420 098404336 +000000716 000794189 000706710 D|098615334 047462746 +000000716 000801983 000721352 D|017113827 018197831 +000000716 000805732 000748281 D|093040838 049447329 +000000716 000832530 000748682 D|017912809 049632610 +000000716 000832663 000762729 D|024324554 037244053 +000000716 000836107 000781125 D|072859993 024971206 +000000716 000867787 000821527 D|011985157 037843726 +000000716 000869824 000834709 D|026797997 018377039 +000000716 000920044 000873361 D|013606768 001048446 +000000716 000932676 000874265 D|040327490 014031545 +000000716 000962521 000911886 D|067550012 038851503 +000000716 000975121 000920475 D|008096044 035569776 +000000716 000981221 000952307 D|043101683 010929218 +000000717 000002896 000036325 D|003608578 043679872 +000000717 000005124 000046897 D|013274474 017024730 +000000717 000039660 000055765 D|022702302 004365385 +000000717 000085538 000074916 D|053881555 078657539 +000000717 000090315 000126592 D|032728693 055395411 +000000717 000091715 000165076 D|070455940 096268914 +000000717 000106166 000184169 D|093260911 001900156 +000000717 000142772 000251581 D|039622687 079388666 +000000717 000150749 000251975 D|096374484 078357876 +000000717 000181809 000263286 D|001334748 006500894 +000000717 000195505 000289345 D|002095120 053450134 +000000717 000208206 000304477 D|032195419 086820813 +000000717 000219640 000312647 D|074201505 000672762 +000000717 000245909 000332896 D|025466904 001954877 +000000717 000290833 000351072 D|081969130 087513225 +000000717 000304380 000356825 D|050082199 049178122 +000000717 000328229 000391677 D|090842495 069569512 +000000717 000344424 000419069 D|007525057 019380994 +000000717 000375512 000419837 D|069336678 075956373 +000000717 000378876 000436199 D|008046363 052998596 +000000717 000382680 000468958 D|074665252 018541513 +000000717 000392175 000475899 D|076770967 044710346 +000000717 000419120 000481256 D|007580408 093902911 +000000717 000420545 000495954 D|049240592 095813551 +000000717 000433352 000532073 D|007344580 010249854 +000000717 000456769 000550499 D|061428087 062359424 +000000717 000475217 000555793 D|021156151 066686330 +000000717 000482850 000559979 D|036582578 083621695 +000000717 000495516 000578725 D|068370154 086968975 +000000717 000553611 000582458 D|093052422 071988023 +000000717 000558821 000592028 D|049942704 080818489 +000000717 000560396 000593463 D|060828616 092799081 +000000717 000591138 000605680 D|030888668 055587397 +000000717 000595221 000619268 D|027642159 021459827 +000000717 000615685 000625446 D|049781900 082713544 +000000717 000627748 000663558 D|030874644 083975180 +000000717 000633324 000664202 D|099886847 059972437 +000000717 000687147 000668313 D|096533846 087016531 +000000717 000703719 000699736 D|097514172 040191700 +000000717 000730908 000709258 D|018408579 063476418 +000000717 000746337 000713662 D|004203409 077383069 +000000717 000763612 000782839 D|048307730 049489706 +000000717 000767108 000783349 D|055818621 073586534 +000000717 000821163 000799213 D|078459052 054356841 +000000717 000868517 000804324 D|005136786 000666548 +000000717 000869914 000896972 D|003098492 055183561 +000000717 000881284 000911347 D|084711297 028653078 +000000717 000904822 000955850 D|007687915 034842353 +000000717 000914127 000978574 D|080644782 016475479 +000000717 000940725 000992494 D|096607377 009163056 +000000718 000027288 000021833 D|079865509 096783030 +000000718 000064520 000032711 D|073771039 079104337 +000000718 000089464 000044464 D|086938189 099508184 +000000718 000116145 000053241 D|080796518 029052538 +000000718 000137604 000055424 D|084509936 070324184 +000000718 000151435 000135252 D|055405818 016959301 +000000718 000187433 000185720 D|059918704 047088972 +000000718 000193969 000194146 D|039877309 064713829 +000000718 000200843 000210830 D|054995103 072001682 +000000718 000225395 000220222 D|028887434 066172980 +000000718 000235030 000221673 D|047282343 043393193 +000000718 000236968 000224162 D|013535723 084627073 +000000718 000239317 000246383 D|049430026 083345169 +000000718 000264433 000257580 D|088234928 053504515 +000000718 000271597 000265450 D|048071968 046768708 +000000718 000285499 000325936 D|055437153 070161831 +000000718 000290101 000337985 D|046932231 080828679 +000000718 000321149 000346091 D|051446611 057869093 +000000718 000327053 000349226 D|087127929 004058700 +000000718 000344858 000369146 D|092819702 060937475 +000000718 000352268 000377120 D|006682262 023555950 +000000718 000359674 000381282 D|083298740 069485250 +000000718 000401150 000387420 D|012861305 068216498 +000000718 000415320 000469797 D|028466417 025622814 +000000718 000444106 000537723 D|061083243 025892456 +000000718 000488485 000538462 D|052002582 006034678 +000000718 000494061 000552562 D|049695871 031116911 +000000718 000510408 000557246 D|059616440 081741652 +000000718 000526258 000598342 D|043826250 086782802 +000000718 000575314 000606913 D|052616440 081527000 +000000718 000604608 000616332 D|034055642 032383091 +000000718 000609063 000628401 D|083911234 011252833 +000000718 000609652 000665516 D|007532805 045399526 +000000718 000612403 000688765 D|068856700 056807305 +000000718 000629867 000707053 D|031670710 059329944 +000000718 000653814 000741019 D|010205992 019087946 +000000718 000664797 000745690 D|045797295 089231231 +000000718 000697738 000795737 D|007527039 024208055 +000000718 000759093 000811463 D|011176995 032204108 +000000718 000770930 000817434 D|004112956 033120825 +000000718 000837905 000822586 D|086262345 042137858 +000000718 000840261 000835489 D|001423514 061881948 +000000718 000866317 000841671 D|041701916 085840300 +000000718 000871093 000916009 D|036984966 046096884 +000000718 000899347 000930362 D|032694091 042761487 +000000718 000903278 000955559 D|003691323 053792556 +000000718 000906972 000971601 D|059379173 092174963 +000000718 000927359 000972299 D|050332302 014773790 +000000718 000964983 000982915 D|022355202 090327471 +000000718 000997070 000996735 D|078327171 013760790 +000000719 000052104 000017506 D|056916722 053559718 +000000719 000055356 000042203 D|004475135 016704643 +000000719 000067282 000042670 D|077457724 049108633 +000000719 000184295 000045554 D|041977892 012199729 +000000719 000186224 000074913 D|058551583 003231376 +000000719 000189303 000109472 D|001859754 037614698 +000000719 000216776 000134489 D|002872900 071846183 +000000719 000230089 000140043 D|088917447 052027320 +000000719 000232273 000144880 D|013848815 081706815 +000000719 000261253 000145450 D|005659101 070033847 +000000719 000275404 000145615 D|052557838 006144426 +000000719 000286093 000148250 D|046181972 013515467 +000000719 000326810 000166959 D|009551074 062445044 +000000719 000328157 000201785 D|015943232 099604491 +000000719 000354378 000202483 D|003542133 046347914 +000000719 000373111 000205876 D|079248216 021152810 +000000719 000382497 000242801 D|077830616 036393544 +000000719 000398827 000275205 D|042477639 017139025 +000000719 000408397 000284226 D|045465056 092428644 +000000719 000447989 000301689 D|074879854 003870813 +000000719 000484879 000320849 D|010603299 050115849 +000000719 000495164 000331372 D|084221764 013997663 +000000719 000495704 000343250 D|008638456 055876939 +000000719 000502261 000396873 D|041262453 096960992 +000000719 000521019 000399436 D|052796847 013316628 +000000719 000523616 000429102 D|081099118 090830191 +000000719 000551089 000463289 D|025495966 027307995 +000000719 000594439 000467508 D|082126151 051610814 +000000719 000632692 000468761 D|076150244 015769463 +000000719 000639941 000531516 D|089701074 033157836 +000000719 000652546 000541423 D|020596771 080355172 +000000719 000672227 000614886 D|022512305 085356833 +000000719 000692288 000624982 D|077491316 030207331 +000000719 000696187 000629028 D|070257110 051047590 +000000719 000704693 000652064 D|000891771 069504012 +000000719 000744828 000665478 D|035993735 079535642 +000000719 000776010 000697069 D|079922461 084811513 +000000719 000795962 000716784 D|067794428 091275869 +000000719 000805008 000731185 D|086768219 078616282 +000000719 000831400 000745805 D|039112467 042474726 +000000719 000848340 000747058 D|086466439 059259739 +000000719 000851400 000787218 D|002144544 096659350 +000000719 000861011 000790020 D|051116573 079790730 +000000719 000864494 000828493 D|081264831 024147149 +000000719 000882447 000845498 D|055153387 010846779 +000000719 000888654 000848439 D|025475755 047865197 +000000719 000903795 000924470 D|028836572 051277320 +000000719 000903961 000965336 D|003898754 008331797 +000000719 000983397 000974717 D|007624361 011820655 +000000719 000984700 000982531 D|062244193 019914825 +000000720 000031202 000031814 D|055725988 068976015 +000000720 000039309 000040282 D|066869526 024887082 +000000720 000071242 000043776 D|047327032 066428106 +000000720 000129130 000075360 D|041845968 014456422 +000000720 000164850 000081638 D|061881949 074320449 +000000720 000176675 000092490 D|008870707 045786507 +000000720 000177844 000110216 D|084369957 055713036 +000000720 000226469 000125453 D|007064666 021999249 +000000720 000261748 000166662 D|003169974 007021010 +000000720 000275941 000183083 D|007180192 077123011 +000000720 000283195 000207699 D|048359676 063089411 +000000720 000302476 000211143 D|070383815 040968308 +000000720 000341556 000233223 D|099947090 044071734 +000000720 000347497 000237329 D|061364651 073192203 +000000720 000348778 000254867 D|098416092 006913365 +000000720 000364157 000277736 D|070319728 053022640 +000000720 000377469 000282976 D|021224202 086320949 +000000720 000447201 000284452 D|025253650 019350518 +000000720 000466123 000311299 D|049161575 031416569 +000000720 000466461 000327076 D|015156318 008450004 +000000720 000484132 000359820 D|087148517 074751557 +000000720 000494761 000368331 D|088885059 005111578 +000000720 000495357 000376314 D|021854674 039799651 +000000720 000524930 000448272 D|051662595 087827562 +000000720 000530179 000474465 D|049598629 081973436 +000000720 000543589 000493944 D|063278830 068695862 +000000720 000551372 000502482 D|085696262 073596524 +000000720 000577951 000515613 D|042315082 058621092 +000000720 000598250 000555548 D|077668758 071757767 +000000720 000600583 000573464 D|025803045 053986645 +000000720 000615395 000576468 D|072896876 086737333 +000000720 000625911 000585031 D|013956669 013143082 +000000720 000632434 000614584 D|035980523 052140005 +000000720 000703920 000664483 D|052450028 011063382 +000000720 000705962 000710186 D|089137679 049931108 +000000720 000724328 000750907 D|006951853 005907082 +000000720 000740694 000770190 D|092238901 069856104 +000000720 000758335 000781741 D|068238990 086047498 +000000720 000784062 000785308 D|038775148 069040305 +000000720 000802869 000804710 D|078325920 056982502 +000000720 000813588 000839472 D|098962420 055115373 +000000720 000847210 000868347 D|060430789 079039476 +000000720 000889769 000896870 D|031639830 062145787 +000000720 000919869 000913994 D|094842033 032860246 +000000720 000922799 000930919 D|076674353 073904409 +000000720 000929581 000950688 D|063645755 027155306 +000000720 000949724 000967548 D|036902681 083508171 +000000720 000952801 000973827 D|026780517 071041537 +000000720 000957939 000983999 D|027979466 034593462 +000000720 000974414 000986796 D|045544358 053663850 +000000721 000051346 000002854 D|071298024 074688952 +000000721 000066891 000046202 D|095342615 096054309 +000000721 000105108 000049339 D|096635286 060024510 +000000721 000105900 000061666 D|074362019 092624162 +000000721 000123782 000076336 D|038342308 001178511 +000000721 000124489 000088162 D|000010163 040634323 +000000721 000131137 000149708 D|087672068 095376890 +000000721 000161746 000200177 D|077239591 080065904 +000000721 000173166 000228344 D|029702914 009833605 +000000721 000179140 000254242 D|036556282 001017488 +000000721 000236844 000254471 D|012164189 007705912 +000000721 000239493 000256128 D|091467470 012581520 +000000721 000248747 000310490 D|017655541 071935214 +000000721 000291843 000318259 D|013139431 025115896 +000000721 000313966 000323751 D|021499465 001154719 +000000721 000325721 000358693 D|083737854 087204675 +000000721 000340507 000364373 D|024270504 043927754 +000000721 000347233 000369136 D|074824367 041778295 +000000721 000402598 000418347 D|093524789 088355925 +000000721 000403023 000424504 D|033761020 006156588 +000000721 000425425 000437985 D|025262117 056297574 +000000721 000458996 000441139 D|053734478 086228481 +000000721 000475452 000446590 D|094067173 040312126 +000000721 000512432 000518033 D|086074894 047235103 +000000721 000523772 000550996 D|093939205 074110503 +000000721 000580738 000557106 D|053776170 086433696 +000000721 000597316 000569021 D|018639208 041735532 +000000721 000633636 000570245 D|033650632 001196102 +000000721 000634749 000582528 D|096819419 055925920 +000000721 000645841 000637595 D|065109834 033489738 +000000721 000657174 000642668 D|051984074 031754856 +000000721 000663457 000645048 D|061861013 050051975 +000000721 000669895 000669015 D|054409031 092473362 +000000721 000677957 000676016 D|029498687 061201469 +000000721 000719201 000736913 D|067450468 020782313 +000000721 000725406 000743303 D|039187938 099713289 +000000721 000725885 000755659 D|051435299 080351398 +000000721 000765670 000768777 D|024773394 012763638 +000000721 000773821 000776272 D|085282157 014302865 +000000721 000805805 000776852 D|041311184 063992946 +000000721 000830477 000790390 D|060082429 018204034 +000000721 000831246 000792157 D|013457268 019319683 +000000721 000854235 000873335 D|063516305 013512904 +000000721 000870114 000933281 D|017448447 001839398 +000000721 000877223 000953086 D|011086067 066145582 +000000721 000902432 000954417 D|059621750 007330519 +000000721 000931293 000960117 D|030045056 098497914 +000000721 000967008 000973798 D|067556728 081226162 +000000721 000974202 000986440 D|034911833 039106334 +000000721 000992800 000989582 D|027082141 044708926 +000000722 000003914 000009987 D|032060040 051287674 +000000722 000014483 000073671 D|003739479 038296471 +000000722 000018371 000076300 D|080744438 094248255 +000000722 000040941 000108575 D|028031971 073951440 +000000722 000055144 000115431 D|044663705 040036463 +000000722 000063991 000144853 D|038246797 025169512 +000000722 000174713 000182053 D|034577901 040315773 +000000722 000182941 000200180 D|079932241 094688381 +000000722 000183494 000227631 D|047970596 014979551 +000000722 000191191 000244490 D|055485834 047270576 +000000722 000204324 000250034 D|036434983 080644445 +000000722 000206572 000303121 D|025267631 094942177 +000000722 000229425 000365921 D|085906945 093743710 +000000722 000248731 000370005 D|011410248 030801070 +000000722 000263579 000378325 D|047760698 093399149 +000000722 000304564 000405269 D|066163346 070799736 +000000722 000383976 000412385 D|070740906 053694787 +000000722 000453366 000416370 D|016457472 061067957 +000000722 000465141 000431695 D|037860764 086680634 +000000722 000466060 000445263 D|097215712 067440651 +000000722 000473658 000448529 D|053088309 083563834 +000000722 000476341 000476146 D|061448926 068732611 +000000722 000483464 000524505 D|069316104 066916196 +000000722 000483927 000545210 D|050107236 003200384 +000000722 000537982 000550656 D|018852710 038495894 +000000722 000563663 000583662 D|092025751 015333257 +000000722 000566409 000610651 D|080074352 007283624 +000000722 000622824 000631433 D|045946525 002073972 +000000722 000630601 000644743 D|001317435 080420498 +000000722 000644959 000655270 D|021536592 025811048 +000000722 000654482 000663446 D|003959080 022352641 +000000722 000664547 000694733 D|043110962 067688573 +000000722 000775180 000706568 D|009580421 051637686 +000000722 000796642 000711769 D|040614713 082568884 +000000722 000797242 000727315 D|091243795 066348050 +000000722 000808719 000793916 D|083866010 076536691 +000000722 000810954 000801070 D|059626147 064592988 +000000722 000822362 000813668 D|021116972 071053517 +000000722 000832433 000821254 D|066401976 052315629 +000000722 000844089 000841203 D|015301472 019091867 +000000722 000845315 000851386 D|024516819 081376894 +000000722 000873650 000880704 D|068291435 070196890 +000000722 000903341 000887467 D|021423948 084439005 +000000722 000911442 000912721 D|034396604 011827388 +000000722 000912851 000925912 D|089246707 078127764 +000000722 000946452 000957292 D|019078726 059276401 +000000722 000952483 000973999 D|043432467 097954788 +000000722 000956644 000980852 D|052041118 031867066 +000000722 000957706 000985895 D|055226334 022094179 +000000722 000971161 000998047 D|071982417 014932684 +000000723 000066122 000000377 D|062299323 093661324 +000000723 000078157 000014286 D|098401422 025487825 +000000723 000090824 000016865 D|024404232 078328193 +000000723 000097509 000028348 D|071570220 041902266 +000000723 000102818 000074256 D|016867881 005945453 +000000723 000123333 000077512 D|059013380 012663374 +000000723 000150566 000078293 D|012525882 056211568 +000000723 000227441 000082280 D|085419773 096243763 +000000723 000227469 000087692 D|020786684 083724265 +000000723 000277047 000088035 D|023422927 013749386 +000000723 000292448 000089583 D|001885935 050066837 +000000723 000330009 000120847 D|065147843 043315361 +000000723 000337989 000208726 D|036962802 097849975 +000000723 000340816 000209307 D|036869133 026401696 +000000723 000345509 000255338 D|022554473 076259893 +000000723 000349766 000261671 D|055720978 070987325 +000000723 000351165 000269711 D|094446894 010837369 +000000723 000355612 000337551 D|004505914 022162984 +000000723 000395460 000442858 D|093965777 042245431 +000000723 000415670 000462789 D|017974052 036143864 +000000723 000427604 000464788 D|094084770 001835849 +000000723 000438663 000466492 D|017499349 025592169 +000000723 000456116 000491515 D|027584622 059245481 +000000723 000460027 000512146 D|005428053 064446014 +000000723 000464779 000525806 D|051010626 078453210 +000000723 000465239 000536013 D|067033903 036533821 +000000723 000474811 000578725 D|051070608 092284318 +000000723 000514264 000580280 D|069900085 034312793 +000000723 000522939 000609912 D|079817625 025392124 +000000723 000538294 000613949 D|044318631 095094212 +000000723 000589802 000620954 D|052373816 002968323 +000000723 000593190 000636246 D|040031622 036724880 +000000723 000605198 000645283 D|006927185 063039544 +000000723 000614508 000680831 D|049549891 093509261 +000000723 000637041 000698569 D|024322744 090325681 +000000723 000673440 000711217 D|092204203 099707109 +000000723 000737865 000764898 D|065680092 028682457 +000000723 000761807 000781404 D|003338296 046491984 +000000723 000768304 000791121 D|022246767 093503213 +000000723 000814963 000807005 D|006414529 085062119 +000000723 000823574 000860527 D|044731877 037141978 +000000723 000845515 000895524 D|075355336 029047121 +000000723 000863874 000898342 D|015257545 080744184 +000000723 000904715 000918551 D|058255142 055496269 +000000723 000919337 000931797 D|076599580 010665965 +000000723 000919638 000935851 D|065567907 032633890 +000000723 000933965 000945296 D|082034719 068787802 +000000723 000941261 000983355 D|086205575 091625650 +000000723 000987068 000986872 D|010463912 063097973 +000000723 000999468 000992861 D|033639634 002350700 +000000724 000008982 000080265 D|000032358 028616208 +000000724 000008989 000081699 D|007283981 080608064 +000000724 000023218 000083330 D|073484497 060808515 +000000724 000031344 000118794 D|085539089 074813352 +000000724 000034844 000128295 D|048335178 099078828 +000000724 000065995 000133659 D|085109472 007097992 +000000724 000069202 000152762 D|098376112 047155684 +000000724 000070447 000162695 D|066981968 035408781 +000000724 000086626 000168458 D|092057732 033070061 +000000724 000096644 000177916 D|000182090 060863953 +000000724 000110943 000200979 D|073882570 062994504 +000000724 000136134 000221746 D|043218371 031874332 +000000724 000166800 000225446 D|030897799 042171184 +000000724 000185942 000225612 D|018575914 045451831 +000000724 000211895 000226337 D|004714110 060655103 +000000724 000253587 000242448 D|020333375 066760335 +000000724 000281346 000258992 D|087160915 081759123 +000000724 000290159 000267003 D|071172225 011803253 +000000724 000306751 000301489 D|048608628 004121538 +000000724 000319130 000310282 D|010250169 018881980 +000000724 000322182 000358855 D|096368864 022496772 +000000724 000366649 000376152 D|089099806 026663345 +000000724 000394244 000378145 D|088738003 085641413 +000000724 000395142 000406176 D|036511958 062271288 +000000724 000410435 000416380 D|046733677 040338354 +000000724 000442519 000420185 D|096955547 005657019 +000000724 000462641 000492406 D|073997161 002630661 +000000724 000483527 000521558 D|042862391 040635088 +000000724 000507111 000540535 D|003952421 004588515 +000000724 000510364 000568258 D|033351422 088989477 +000000724 000517382 000627845 D|042836679 085590420 +000000724 000520076 000648660 D|006299746 060228689 +000000724 000532213 000697971 D|075234250 068071496 +000000724 000542598 000713361 D|083874992 074465772 +000000724 000587881 000736016 D|040921483 093002430 +000000724 000623593 000744556 D|074709337 047122158 +000000724 000628197 000746146 D|018953025 099043694 +000000724 000668474 000747222 D|017352803 093934595 +000000724 000670751 000753406 D|084338283 022434582 +000000724 000687828 000775610 D|090688655 012115643 +000000724 000699331 000787504 D|098233953 086347882 +000000724 000721667 000789274 D|043992646 068044080 +000000724 000821419 000822907 D|063730463 082987620 +000000724 000915977 000837009 D|027362024 056934526 +000000724 000933562 000844399 D|033353847 055632887 +000000724 000934005 000860383 D|008948520 020938509 +000000724 000956676 000881504 D|018959773 021784106 +000000724 000970973 000892898 D|054727597 079354620 +000000724 000980395 000964352 D|025608966 019472346 +000000724 000999401 000999014 D|075483621 055482216 +000000725 000067191 000043145 D|015330667 086947749 +000000725 000075017 000054518 D|033321852 011927834 +000000725 000082051 000068571 D|003470513 013123317 +000000725 000093422 000093030 D|074667600 027522032 +000000725 000095903 000120691 D|078034300 091380036 +000000725 000104824 000150759 D|019283360 045925309 +000000725 000107170 000152002 D|011517072 047336497 +000000725 000117343 000207904 D|097977782 012545067 +000000725 000126952 000213951 D|040256734 021387226 +000000725 000156450 000226066 D|037677298 045229275 +000000725 000185799 000298562 D|090096549 031016745 +000000725 000196517 000305587 D|026755525 002376090 +000000725 000249349 000317433 D|051742017 039532604 +000000725 000282145 000320948 D|046561068 000212764 +000000725 000318240 000324438 D|046793618 027048738 +000000725 000323740 000352234 D|058081580 041661107 +000000725 000359804 000387516 D|046147376 004752756 +000000725 000370623 000413223 D|000953085 003725620 +000000725 000410116 000421489 D|039926523 052127872 +000000725 000492949 000434533 D|046332806 055404126 +000000725 000502915 000453983 D|057185586 060348186 +000000725 000534070 000499823 D|001004499 080620538 +000000725 000550420 000524922 D|000687718 082744915 +000000725 000590366 000547110 D|047819769 079433690 +000000725 000622040 000556471 D|016798110 096143303 +000000725 000631362 000560315 D|094117612 074671965 +000000725 000637940 000648652 D|060915430 079568602 +000000725 000656774 000661821 D|004524617 027041072 +000000725 000664913 000673587 D|045445765 063841881 +000000725 000701495 000699263 D|080475236 014557520 +000000725 000719862 000701902 D|068431054 027178526 +000000725 000723083 000749028 D|009309451 055518989 +000000725 000737644 000766494 D|037476338 088836571 +000000725 000750928 000773824 D|097065482 094291149 +000000725 000751362 000811973 D|027647771 059995238 +000000725 000767877 000815448 D|051882862 047658597 +000000725 000770631 000818644 D|055007915 049748784 +000000725 000775828 000820178 D|007480272 058401520 +000000725 000807110 000826432 D|055435179 029583612 +000000725 000810735 000828326 D|078143630 048418794 +000000725 000830719 000840542 D|017733562 063343240 +000000725 000895138 000842558 D|067168410 001295998 +000000725 000908002 000855342 D|077987797 005444116 +000000725 000917022 000864901 D|032011893 077958597 +000000725 000977450 000895340 D|094395719 081194147 +000000725 000980130 000899249 D|007635254 037581124 +000000725 000982890 000905631 D|058216798 001714404 +000000725 000986835 000953369 D|049564011 052711210 +000000725 000987331 000958001 D|096561448 052544358 +000000725 000999607 000997348 D|001949063 041786671 +000000726 000061168 000036115 D|088116290 084935370 +000000726 000068169 000048286 D|001894283 032508888 +000000726 000070703 000056789 D|042326367 069577180 +000000726 000081523 000067515 D|020065470 011766933 +000000726 000098644 000070529 D|071397131 059799286 +000000726 000123357 000099745 D|022194594 075728466 +000000726 000147168 000114170 D|039623630 040645359 +000000726 000153033 000133127 D|007032812 077205869 +000000726 000168747 000136496 D|000371609 008347688 +000000726 000176570 000164977 D|096586242 073088219 +000000726 000201527 000183435 D|085597696 064427257 +000000726 000203693 000185425 D|090213422 097012384 +000000726 000230707 000242349 D|001289932 007965778 +000000726 000238699 000253688 D|071149606 063250818 +000000726 000261213 000254420 D|054820955 086397571 +000000726 000273280 000297099 D|000868446 019264558 +000000726 000301937 000350447 D|095491120 018612092 +000000726 000309139 000382856 D|032977965 057021554 +000000726 000325811 000382866 D|021800006 052815033 +000000726 000347221 000384227 D|029611871 043702278 +000000726 000359714 000396465 D|014261000 000853808 +000000726 000376560 000430145 D|004798081 005790922 +000000726 000388746 000445514 D|094216052 068906004 +000000726 000516410 000446586 D|045987567 044249113 +000000726 000535018 000466417 D|015164852 075342491 +000000726 000564465 000489611 D|008296669 049394482 +000000726 000566399 000509172 D|076011420 047736233 +000000726 000570214 000516091 D|073052576 000764920 +000000726 000594153 000521906 D|009034020 024135892 +000000726 000627782 000537978 D|047445421 095330954 +000000726 000629795 000541510 D|010541910 032512579 +000000726 000670405 000546208 D|025686952 021192672 +000000726 000682676 000558249 D|064039886 076798320 +000000726 000719658 000585229 D|077039011 030861787 +000000726 000732913 000627308 D|026242244 096194042 +000000726 000743728 000633256 D|076596023 046548654 +000000726 000746811 000663889 D|058418535 014193135 +000000726 000767521 000710661 D|018554992 013777997 +000000726 000770084 000741190 D|025452485 073976963 +000000726 000773108 000758467 D|014227627 001057383 +000000726 000796778 000776465 D|011681186 041315403 +000000726 000801574 000819945 D|084741881 013415312 +000000726 000824038 000829258 D|063264339 011419054 +000000726 000859026 000838450 D|062364135 026580721 +000000726 000860802 000840336 D|039595207 057515048 +000000726 000868563 000866805 D|062259314 023209302 +000000726 000903198 000916682 D|085430528 090589058 +000000726 000940324 000967372 D|050542611 051636210 +000000726 000952008 000993970 D|096175735 054026777 +000000726 000991526 000999051 D|078943754 075456757 +000000727 000008414 000018281 D|062962885 049708985 +000000727 000012841 000022750 D|019120309 098118377 +000000727 000031216 000067780 D|009636345 028640464 +000000727 000038105 000080462 D|038827393 010048666 +000000727 000048988 000136864 D|090978721 082934761 +000000727 000068893 000147195 D|000483928 039206694 +000000727 000088736 000158863 D|011103298 020796739 +000000727 000100221 000177258 D|028300785 023493529 +000000727 000108501 000177543 D|053490716 099884783 +000000727 000114412 000255999 D|095677941 075537518 +000000727 000178777 000260600 D|009148521 066057701 +000000727 000187637 000281056 D|096041677 099401176 +000000727 000187874 000327082 D|026139503 019576805 +000000727 000189252 000335280 D|092376944 063668083 +000000727 000208206 000350500 D|030113817 067589590 +000000727 000231978 000359816 D|073456998 060908084 +000000727 000237106 000366269 D|089915011 097530719 +000000727 000240047 000375190 D|061391477 008860077 +000000727 000285336 000384679 D|077203766 091847282 +000000727 000329561 000386376 D|029137115 051601070 +000000727 000366514 000415504 D|053479737 061451344 +000000727 000368625 000436524 D|032690842 000240691 +000000727 000371731 000507286 D|009658504 067972167 +000000727 000382977 000540625 D|012046948 010636499 +000000727 000403857 000542358 D|097718578 031486107 +000000727 000460160 000543342 D|038323957 098956726 +000000727 000490065 000547015 D|010301948 089030214 +000000727 000490818 000547665 D|096355124 090357855 +000000727 000515702 000569354 D|055575529 047444140 +000000727 000522843 000602965 D|017417026 035263934 +000000727 000531742 000634015 D|038956505 059704721 +000000727 000541717 000644576 D|080099079 075313796 +000000727 000631115 000660508 D|084276522 059985887 +000000727 000648163 000664438 D|033863420 036609939 +000000727 000681340 000686909 D|024058917 092586021 +000000727 000683160 000762253 D|074593997 039318525 +000000727 000741260 000768844 D|024583396 024123435 +000000727 000786319 000789414 D|039361021 015856179 +000000727 000787468 000791171 D|095163354 062800124 +000000727 000800696 000808873 D|026441950 005879689 +000000727 000801606 000810686 D|075803253 082381596 +000000727 000828829 000884097 D|093700143 000477059 +000000727 000846288 000919467 D|010601426 074249526 +000000727 000866621 000922979 D|003182388 030043077 +000000727 000871532 000927660 D|039882016 008625091 +000000727 000872007 000929113 D|013832203 011736519 +000000727 000881092 000965801 D|047827266 041078656 +000000727 000913309 000968992 D|057189124 011359326 +000000727 000964664 000995984 D|060343157 019856340 +000000727 000965485 000997116 D|021388044 035892302 +000000728 000017706 000006136 D|001138983 055522712 +000000728 000050741 000016957 D|035736517 083241005 +000000728 000072915 000017429 D|098086463 086750487 +000000728 000082916 000017642 D|010651116 075108058 +000000728 000131418 000078148 D|038796884 095771217 +000000728 000148224 000164595 D|027544092 068363309 +000000728 000158155 000164950 D|051117941 030145596 +000000728 000160964 000184505 D|011416450 041600868 +000000728 000170007 000188258 D|042180421 050674142 +000000728 000183981 000201453 D|014954360 044494351 +000000728 000224374 000206957 D|052183593 094647797 +000000728 000244075 000214131 D|076220017 057240197 +000000728 000249640 000233477 D|091298019 032352883 +000000728 000296143 000243097 D|043501766 088098842 +000000728 000299462 000246798 D|003602323 008934428 +000000728 000318175 000267914 D|089027405 098868828 +000000728 000324724 000283379 D|008505896 073886968 +000000728 000366086 000314483 D|049510604 058762142 +000000728 000397262 000358605 D|038001221 015066644 +000000728 000405882 000375645 D|025826998 005232746 +000000728 000429175 000376965 D|035670545 049230390 +000000728 000467219 000396452 D|012246948 070126903 +000000728 000480631 000453643 D|039135793 005708622 +000000728 000483699 000456005 D|019867101 052108901 +000000728 000496834 000477916 D|093980918 008760401 +000000728 000500501 000489959 D|046862650 041527733 +000000728 000573490 000497995 D|043155473 089312243 +000000728 000579217 000510275 D|055807089 026705254 +000000728 000592790 000559648 D|096439833 088562820 +000000728 000603366 000581723 D|000191996 012547337 +000000728 000629837 000601176 D|082572954 060945692 +000000728 000644073 000619917 D|066246580 085876002 +000000728 000654461 000630983 D|041945729 005035551 +000000728 000657932 000635415 D|075899286 056183696 +000000728 000660919 000648791 D|094579302 041659407 +000000728 000680416 000651547 D|095649871 049767016 +000000728 000683059 000656996 D|067913300 083685291 +000000728 000687316 000666835 D|095811555 096274018 +000000728 000692731 000678037 D|086447683 048589835 +000000728 000693192 000698574 D|069360471 006693566 +000000728 000716550 000708086 D|084588879 097327181 +000000728 000767337 000749326 D|081276137 085587016 +000000728 000768180 000761719 D|077925530 079630669 +000000728 000784134 000779488 D|085980630 089041166 +000000728 000819454 000797361 D|036466226 090446405 +000000728 000853832 000837040 D|089299231 009931917 +000000728 000880315 000909694 D|002278549 051173283 +000000728 000882005 000914483 D|015432399 003960882 +000000728 000933138 000918348 D|063504706 026857220 +000000728 000956706 000997261 D|035447701 069363996 +000000729 000002615 000003647 D|098581082 096998046 +000000729 000045347 000018156 D|046683621 064449333 +000000729 000050410 000027948 D|076477720 035382654 +000000729 000062372 000034066 D|061468967 041467761 +000000729 000068672 000044231 D|066583063 046378994 +000000729 000086000 000082829 D|047493155 020723746 +000000729 000092066 000160088 D|082008018 067824677 +000000729 000098433 000165604 D|013247366 033462142 +000000729 000177806 000210621 D|043650369 046981540 +000000729 000199511 000213044 D|007590656 077139251 +000000729 000200364 000216559 D|010039229 058402031 +000000729 000208056 000234559 D|045482496 026563528 +000000729 000220905 000238397 D|003529820 004163669 +000000729 000228558 000244521 D|022750017 067537499 +000000729 000240539 000266499 D|040437890 097545563 +000000729 000264237 000289310 D|063518593 017452997 +000000729 000269499 000316499 D|055384675 051324637 +000000729 000328431 000410999 D|040685822 059092046 +000000729 000330297 000422506 D|087802113 020653016 +000000729 000352874 000428706 D|083147772 015262988 +000000729 000387498 000436616 D|037800819 032914019 +000000729 000435150 000463218 D|017457903 045667700 +000000729 000461610 000473632 D|076141810 080912346 +000000729 000486891 000488594 D|012483047 088646868 +000000729 000512247 000508373 D|062161775 039052531 +000000729 000531627 000511005 D|043526256 025751306 +000000729 000532917 000525446 D|068951049 051481711 +000000729 000533479 000568946 D|080733228 085190197 +000000729 000534542 000572848 D|097695148 015825531 +000000729 000534838 000619953 D|000914815 081462765 +000000729 000556144 000640045 D|082050952 010396238 +000000729 000567794 000660706 D|021589754 011577140 +000000729 000571064 000675823 D|031602009 056323468 +000000729 000621741 000721884 D|063689906 040222872 +000000729 000690672 000738184 D|076443993 055007263 +000000729 000695769 000780604 D|024897624 024227612 +000000729 000721454 000795148 D|097181430 005099856 +000000729 000738467 000807890 D|086345400 041939912 +000000729 000785222 000810458 D|002981525 078927002 +000000729 000785694 000827170 D|015701109 047369462 +000000729 000808951 000846681 D|077131252 002801766 +000000729 000832909 000846791 D|084889059 048298080 +000000729 000860862 000852704 D|065010633 067193698 +000000729 000861392 000871531 D|094210638 084532109 +000000729 000885782 000881620 D|063615889 029041007 +000000729 000891087 000890323 D|059439958 018143683 +000000729 000896469 000918741 D|058059027 061150106 +000000729 000912384 000932035 D|080160554 018991236 +000000729 000960550 000954121 D|033269331 047996725 +000000729 000979105 000982687 D|057470235 017840693 +000000730 000004936 000041848 D|051119110 018186406 +000000730 000010766 000048853 D|022613481 021202110 +000000730 000032970 000052270 D|006295421 039935234 +000000730 000056769 000068647 D|020455482 006873266 +000000730 000074471 000085927 D|054970932 073544323 +000000730 000078513 000133757 D|031300438 030394248 +000000730 000079845 000137099 D|062902564 059478580 +000000730 000106558 000151614 D|042380400 004271439 +000000730 000130917 000152518 D|026926466 085192109 +000000730 000173036 000181650 D|040679338 046762425 +000000730 000175709 000184003 D|005100814 093284848 +000000730 000202850 000218546 D|058051962 008416536 +000000730 000203300 000222395 D|025477097 016390161 +000000730 000205465 000230956 D|022163235 033586021 +000000730 000222342 000242626 D|054281460 075981210 +000000730 000233853 000258861 D|018500864 044756909 +000000730 000256143 000290501 D|090465308 000684658 +000000730 000270357 000305320 D|098063565 019283981 +000000730 000295693 000310195 D|046816589 034145504 +000000730 000319693 000314778 D|001156818 002834128 +000000730 000348467 000326498 D|095006860 014804055 +000000730 000348865 000362975 D|018947404 048634893 +000000730 000367716 000412509 D|007125258 044305136 +000000730 000397618 000416937 D|088680264 048550270 +000000730 000405261 000435246 D|078472004 045847883 +000000730 000443984 000471698 D|051569997 086794923 +000000730 000470626 000487623 D|096003531 065066782 +000000730 000493223 000503908 D|019810608 085284222 +000000730 000495829 000588549 D|034749209 068305121 +000000730 000518449 000619493 D|000788959 061554415 +000000730 000560105 000635439 D|090348974 068506446 +000000730 000562607 000679782 D|026508461 030365533 +000000730 000594035 000714971 D|049535269 046824822 +000000730 000629241 000777436 D|050940378 079252338 +000000730 000632952 000788702 D|097129856 016211347 +000000730 000640224 000799590 D|000245905 017337217 +000000730 000658540 000803728 D|064432156 000978672 +000000730 000664161 000807879 D|015363686 067019425 +000000730 000679910 000816876 D|053099919 096111891 +000000730 000714590 000853320 D|076035055 080172598 +000000730 000717043 000855483 D|080370915 043234924 +000000730 000736428 000868453 D|087609759 011458378 +000000730 000755752 000874728 D|003233004 079541625 +000000730 000773835 000895653 D|063363088 032634750 +000000730 000774571 000926886 D|031812365 031199894 +000000730 000788614 000935770 D|028990027 056103065 +000000730 000795651 000963781 D|047109326 039330655 +000000730 000862666 000972427 D|046135079 032681783 +000000730 000952929 000990786 D|017412059 039916575 +000000730 000987762 000991477 D|077560931 070166269 +000000731 000006507 000031593 D|058627777 030811064 +000000731 000059172 000060863 D|079601534 022558166 +000000731 000060523 000071681 D|090290243 022654933 +000000731 000069656 000076564 D|069815395 084761520 +000000731 000080472 000090212 D|050561637 095850404 +000000731 000086010 000090676 D|098884538 084373674 +000000731 000086214 000108764 D|043641852 002189808 +000000731 000087330 000125958 D|007238983 096276427 +000000731 000106001 000139658 D|020652540 087571716 +000000731 000122195 000197075 D|083592575 088084622 +000000731 000125602 000201632 D|007064092 045286719 +000000731 000127988 000205774 D|057192351 067225234 +000000731 000147774 000238480 D|036910700 002757472 +000000731 000158934 000269414 D|052673110 025262518 +000000731 000182087 000292278 D|046613195 075139675 +000000731 000208663 000315249 D|073925588 066274073 +000000731 000208864 000353531 D|095298371 003614830 +000000731 000248788 000357082 D|000470637 069316173 +000000731 000306181 000357229 D|088135077 099595898 +000000731 000318497 000365193 D|036669793 076074680 +000000731 000328947 000370468 D|089489560 036083277 +000000731 000337978 000388961 D|079030280 043874976 +000000731 000350298 000391613 D|011007396 004277720 +000000731 000382873 000405244 D|084766874 014720018 +000000731 000391742 000423234 D|048785677 088530231 +000000731 000394986 000442809 D|087093697 095055339 +000000731 000411055 000443406 D|093302663 057752610 +000000731 000424457 000450346 D|034572904 058182036 +000000731 000430823 000473921 D|037544250 007658456 +000000731 000457932 000486654 D|070303715 055314610 +000000731 000469401 000533208 D|066987355 056429648 +000000731 000502377 000552394 D|060831065 089613391 +000000731 000508641 000615054 D|001461477 013066582 +000000731 000513629 000623487 D|056004175 040547624 +000000731 000534120 000649381 D|086401047 094245985 +000000731 000547634 000649547 D|057490899 026967245 +000000731 000557269 000653124 D|053781496 048339254 +000000731 000576272 000671560 D|033193308 051562298 +000000731 000603389 000715288 D|067607513 091452480 +000000731 000619570 000722281 D|003492962 026604359 +000000731 000645309 000755100 D|056024348 003323187 +000000731 000667359 000767470 D|046456804 022835918 +000000731 000686973 000824518 D|014235770 001165438 +000000731 000759883 000850946 D|006811594 043962445 +000000731 000760946 000863385 D|066289695 020044991 +000000731 000764433 000924953 D|048579517 064541303 +000000731 000852903 000930778 D|024713615 065857369 +000000731 000863435 000931446 D|012409685 029874862 +000000731 000945464 000937006 D|004671927 084911970 +000000731 000961406 000985016 D|098020584 007850743 +000000732 000030424 000011185 D|022620355 029464329 +000000732 000038790 000048035 D|078873360 074155272 +000000732 000058100 000064456 D|092141759 078449379 +000000732 000083671 000111699 D|044447782 074528681 +000000732 000123993 000149935 D|097307454 073577407 +000000732 000125895 000154273 D|054295179 081370221 +000000732 000127421 000156035 D|043814707 028832119 +000000732 000128387 000187728 D|040602188 016974267 +000000732 000167944 000194094 D|013831182 019280686 +000000732 000184482 000208954 D|039399100 018632834 +000000732 000189676 000280153 D|027307700 006323053 +000000732 000206596 000283346 D|030235402 097306897 +000000732 000275923 000297176 D|019952167 084787903 +000000732 000276402 000302160 D|080292663 012362164 +000000732 000295159 000310115 D|015352380 085521511 +000000732 000295965 000391692 D|010992410 029706771 +000000732 000315138 000392684 D|078222116 029121168 +000000732 000357082 000413254 D|038954736 060449031 +000000732 000367346 000452680 D|026172427 048373337 +000000732 000379158 000503820 D|043181768 030622208 +000000732 000383267 000505245 D|044879434 083657177 +000000732 000392850 000510774 D|028279739 041333550 +000000732 000400340 000514008 D|058233942 061452350 +000000732 000404596 000516687 D|038962616 039015804 +000000732 000421313 000572802 D|019680322 054584754 +000000732 000432697 000583892 D|042619721 099498087 +000000732 000477443 000597783 D|065338011 091510582 +000000732 000530534 000603793 D|000018724 059202945 +000000732 000593066 000622719 D|041814099 045129362 +000000732 000603559 000648020 D|063750836 020640562 +000000732 000613026 000652317 D|022926831 084204560 +000000732 000623872 000662251 D|059115273 006248068 +000000732 000629973 000663919 D|049876466 078527125 +000000732 000638669 000681801 D|014838105 067957719 +000000732 000646791 000686806 D|021868736 094104104 +000000732 000651430 000692566 D|083158002 054756473 +000000732 000666783 000742365 D|030794888 068281634 +000000732 000683311 000790514 D|068665178 041407615 +000000732 000725329 000816802 D|021842698 029961717 +000000732 000744517 000818845 D|006338130 009812536 +000000732 000768299 000837881 D|036151810 077745792 +000000732 000787800 000853189 D|092957694 034154167 +000000732 000792617 000857082 D|098387419 050476614 +000000732 000839980 000894034 D|081380069 070596695 +000000732 000853931 000921877 D|092297496 035814487 +000000732 000865094 000933456 D|093832275 027775287 +000000732 000914128 000960435 D|021033959 052309276 +000000732 000920363 000973542 D|015575630 083250347 +000000732 000925198 000989032 D|094119241 030733102 +000000732 000988826 000994564 D|039729927 091400265 +000000733 000026957 000029551 D|096542993 049491609 +000000733 000032321 000055388 D|015711539 014570043 +000000733 000050074 000059896 D|009295528 067653725 +000000733 000050666 000074278 D|039360313 054162841 +000000733 000074943 000085163 D|014209859 031170833 +000000733 000090577 000087226 D|054059389 049550997 +000000733 000113340 000095772 D|058974961 024181729 +000000733 000131130 000157187 D|002691461 010576370 +000000733 000134156 000180581 D|079025204 013229273 +000000733 000152752 000186249 D|056556087 008700327 +000000733 000161905 000196372 D|074762059 022296110 +000000733 000169781 000213302 D|008044469 069211412 +000000733 000180459 000222932 D|054146811 039387049 +000000733 000204293 000239287 D|005762567 026982694 +000000733 000246556 000259637 D|001148910 027271985 +000000733 000271128 000291488 D|051479132 004752486 +000000733 000291009 000293978 D|038892438 057986093 +000000733 000343148 000304474 D|079618613 010247778 +000000733 000355962 000323435 D|061749772 012312948 +000000733 000362131 000374855 D|019676146 046999577 +000000733 000380920 000386024 D|040437374 081076268 +000000733 000385490 000387963 D|064666713 042787157 +000000733 000396523 000413023 D|062016772 007863859 +000000733 000416302 000414795 D|067525769 070096717 +000000733 000418955 000428038 D|097206463 092263338 +000000733 000529461 000434324 D|049466179 044847196 +000000733 000588913 000448506 D|070505767 032785236 +000000733 000612434 000450246 D|082317854 036302020 +000000733 000689914 000470649 D|062102400 091610708 +000000733 000692200 000487270 D|009156246 068498184 +000000733 000701261 000491734 D|017220146 016765601 +000000733 000701585 000507257 D|015875363 029575154 +000000733 000707585 000539944 D|009959262 030616610 +000000733 000709335 000556014 D|017158050 044383387 +000000733 000709853 000608931 D|044089533 071017411 +000000733 000727790 000628583 D|064885420 007802660 +000000733 000759679 000628790 D|055172018 006496902 +000000733 000775783 000665365 D|091771475 005742519 +000000733 000823147 000693773 D|045631173 011864438 +000000733 000841218 000838377 D|085658044 043473555 +000000733 000862478 000858814 D|068394112 015897077 +000000733 000867378 000862170 D|035920992 073154921 +000000733 000905720 000870868 D|048524986 006206278 +000000733 000921776 000872785 D|018327686 071757854 +000000733 000937356 000877719 D|067824136 023535455 +000000733 000940856 000958367 D|036903380 058063808 +000000733 000956837 000967068 D|076478610 057756194 +000000733 000957083 000978143 D|001298948 051382058 +000000733 000973693 000987116 D|036254798 017414167 +000000733 000973836 000996257 D|008237877 034059430 +000000734 000000510 000026016 D|064924279 055579508 +000000734 000041317 000029293 D|064092484 045407941 +000000734 000058498 000061646 D|012095985 064963970 +000000734 000099748 000078791 D|040167786 078945092 +000000734 000113673 000127410 D|039278567 034649127 +000000734 000177898 000135920 D|037504791 026685834 +000000734 000185826 000170784 D|012986241 041361144 +000000734 000200745 000264867 D|034691220 081247801 +000000734 000236149 000268369 D|082348599 015892589 +000000734 000239541 000270514 D|042062508 038570784 +000000734 000279767 000319159 D|064609356 051282662 +000000734 000363432 000324356 D|058130625 010413683 +000000734 000364770 000359625 D|094953858 052834361 +000000734 000366536 000360384 D|063755442 033641367 +000000734 000454942 000390284 D|078342186 052043422 +000000734 000455359 000397025 D|098528637 076300008 +000000734 000480570 000437273 D|033046154 069929805 +000000734 000482305 000443331 D|035042213 018274465 +000000734 000482781 000443668 D|007818323 098849592 +000000734 000531560 000454266 D|085711845 057783244 +000000734 000558305 000456634 D|029648439 085191588 +000000734 000568941 000482927 D|002625252 057441583 +000000734 000569020 000486212 D|007740079 086887203 +000000734 000585689 000489234 D|004958746 088372616 +000000734 000586973 000510738 D|086544523 052565868 +000000734 000609497 000511043 D|025564089 046101059 +000000734 000615809 000526654 D|027035110 014553874 +000000734 000661640 000543553 D|065418291 014263211 +000000734 000689397 000578137 D|033365655 068151962 +000000734 000698698 000631805 D|029447787 070099130 +000000734 000709701 000658682 D|043764346 012412362 +000000734 000716911 000667726 D|086635738 000554646 +000000734 000720980 000676340 D|007650350 051275465 +000000734 000735930 000695963 D|067657977 006222417 +000000734 000740062 000722908 D|074634496 073285496 +000000734 000746163 000723726 D|018379491 012526362 +000000734 000773994 000747982 D|093118471 037339491 +000000734 000797565 000760616 D|038710467 048125412 +000000734 000821750 000772035 D|064253973 030053262 +000000734 000822170 000790029 D|042764128 008762753 +000000734 000884722 000843936 D|057041266 036010078 +000000734 000895427 000863207 D|075287687 038456457 +000000734 000900493 000881623 D|017799190 020006012 +000000734 000910257 000924533 D|056490451 056706819 +000000734 000955414 000933475 D|079992642 071796885 +000000734 000968210 000948162 D|015132162 054305464 +000000734 000972460 000952223 D|017301190 006295249 +000000734 000975439 000960549 D|099674058 009885575 +000000734 000976451 000965250 D|013299897 022714398 +000000734 000986750 000996823 D|011302504 091725463 +000000735 000001650 000056648 D|036921258 005249124 +000000735 000034174 000099731 D|031447483 066289482 +000000735 000078124 000123917 D|035116100 065979088 +000000735 000128824 000140802 D|087830324 078834057 +000000735 000155121 000160838 D|069441516 042597402 +000000735 000162918 000170055 D|052470865 071289378 +000000735 000175546 000187353 D|092583740 037155587 +000000735 000214629 000206752 D|064581004 056323409 +000000735 000226872 000219347 D|025446019 058841305 +000000735 000265062 000228700 D|084833782 050037804 +000000735 000272521 000234290 D|066428444 061606937 +000000735 000278777 000259367 D|081295175 066676847 +000000735 000281721 000268533 D|041862870 040028684 +000000735 000283146 000288309 D|012575206 003507109 +000000735 000330551 000292502 D|007983162 024753102 +000000735 000334831 000315447 D|028429957 031441691 +000000735 000347784 000366962 D|063814538 006175788 +000000735 000380165 000371626 D|067667471 050884935 +000000735 000404260 000387461 D|046902908 021961920 +000000735 000432352 000419996 D|092466748 089821778 +000000735 000445716 000438062 D|058551702 075831722 +000000735 000447272 000446756 D|077271443 094378575 +000000735 000451598 000470771 D|047540634 029915876 +000000735 000465210 000481250 D|090258384 034243612 +000000735 000514505 000489305 D|093186338 078884063 +000000735 000536121 000520976 D|004820660 082514575 +000000735 000550898 000530377 D|071535207 034513855 +000000735 000563006 000541993 D|041832451 063817737 +000000735 000594533 000561424 D|098944737 078906427 +000000735 000603588 000567610 D|041885691 064410806 +000000735 000610667 000590339 D|088537719 066565758 +000000735 000619955 000603866 D|027094090 075799309 +000000735 000629449 000645343 D|007674938 023729851 +000000735 000677921 000649637 D|001599707 070444238 +000000735 000682165 000655239 D|044603724 008995746 +000000735 000684204 000660223 D|053994584 016211633 +000000735 000696388 000688759 D|073069948 086656572 +000000735 000733322 000746063 D|077582183 036792831 +000000735 000752244 000749011 D|064287648 066534578 +000000735 000763601 000755668 D|019071768 015252213 +000000735 000766363 000759339 D|089083066 011832067 +000000735 000825455 000769648 D|023086841 022749340 +000000735 000842303 000784415 D|053273848 073744846 +000000735 000855173 000788110 D|092026474 067020485 +000000735 000856146 000794926 D|091899831 019845824 +000000735 000857539 000830411 D|046645408 033521605 +000000735 000924350 000843398 D|006807088 091827563 +000000735 000930917 000843723 D|029067591 036133694 +000000735 000965220 000958096 D|036847940 095821776 +000000735 000978604 000986999 D|090352667 019403319 +000000736 000040130 000024102 D|031124448 028221887 +000000736 000046969 000074758 D|093484854 034044574 +000000736 000049452 000083533 D|052272974 076228477 +000000736 000080548 000094369 D|057659229 011707945 +000000736 000101258 000097202 D|001889963 019647879 +000000736 000112117 000099305 D|050649826 025525279 +000000736 000131928 000106467 D|084176865 076146470 +000000736 000193052 000135362 D|094736998 043336570 +000000736 000233686 000151930 D|083994000 029780311 +000000736 000268585 000183155 D|023003903 014311433 +000000736 000274008 000207706 D|063651648 078299076 +000000736 000303399 000269044 D|050242733 082131133 +000000736 000337073 000289023 D|065761603 039874677 +000000736 000356084 000323013 D|081091526 077533782 +000000736 000386700 000346304 D|062254873 045113485 +000000736 000413420 000358431 D|017606102 072801656 +000000736 000432530 000362139 D|059085038 074010390 +000000736 000439776 000402055 D|098108653 096092782 +000000736 000452457 000406034 D|078933787 017832609 +000000736 000459341 000407752 D|073487387 077531990 +000000736 000486598 000422001 D|077134395 067634211 +000000736 000548340 000430280 D|082664199 006319992 +000000736 000628058 000431107 D|071112107 052151892 +000000736 000632268 000438463 D|080976645 035603689 +000000736 000638970 000451498 D|009769102 084449130 +000000736 000640399 000460293 D|079189154 017774479 +000000736 000651133 000516596 D|022238996 071721076 +000000736 000657896 000517353 D|081509421 054057836 +000000736 000705471 000569146 D|093378658 012169145 +000000736 000719433 000638713 D|090483092 029809287 +000000736 000725720 000670879 D|043852819 076453658 +000000736 000733052 000671764 D|026508818 077158387 +000000736 000735075 000693347 D|095108230 027714853 +000000736 000795128 000697549 D|034052621 096788345 +000000736 000801300 000715174 D|009883960 017944885 +000000736 000807267 000724040 D|026497548 031064100 +000000736 000824382 000741797 D|025002483 023929101 +000000736 000826887 000765743 D|049373937 062111687 +000000736 000829865 000771858 D|055460821 016799678 +000000736 000839884 000774144 D|070348910 084254187 +000000736 000866484 000794155 D|020335807 094841965 +000000736 000906108 000795871 D|067476321 090920423 +000000736 000919825 000906925 D|018098881 076087201 +000000736 000925749 000915419 D|045367286 002555848 +000000736 000934982 000932271 D|099169506 098082979 +000000736 000936624 000943758 D|095016856 057707936 +000000736 000949815 000957203 D|016138368 029810289 +000000736 000955740 000960964 D|055970780 037764816 +000000736 000970642 000976917 D|005084072 045894089 +000000736 000987500 000979866 D|057763853 045223854 +000000737 000055799 000019086 D|030928808 026548537 +000000737 000097429 000034411 D|014517428 098506227 +000000737 000097583 000039363 D|092959636 079540889 +000000737 000120681 000069172 D|059261920 022152103 +000000737 000126197 000088328 D|016977179 023588338 +000000737 000147444 000157092 D|007173989 038491983 +000000737 000168382 000162667 D|076393624 042200113 +000000737 000184576 000171484 D|040668833 010394746 +000000737 000195146 000181063 D|078225356 074263961 +000000737 000202309 000195481 D|088124081 012438449 +000000737 000233791 000203200 D|093142092 034696650 +000000737 000252310 000207925 D|087133346 063237997 +000000737 000276572 000225419 D|034846491 040115482 +000000737 000324209 000244804 D|009939912 020404948 +000000737 000324576 000293274 D|000151216 023621912 +000000737 000336284 000304494 D|084646864 020111041 +000000737 000475725 000304758 D|008311756 060243130 +000000737 000534468 000340931 D|089341140 034267432 +000000737 000536402 000347452 D|064061949 027203416 +000000737 000551117 000380332 D|042438213 073402990 +000000737 000553498 000405786 D|003700299 094008503 +000000737 000561602 000414417 D|025981445 010994092 +000000737 000567978 000421190 D|022768969 083938451 +000000737 000578923 000439459 D|031471420 079040728 +000000737 000581990 000443738 D|003224995 019605229 +000000737 000661935 000469945 D|068918036 078460840 +000000737 000677693 000473727 D|038978923 080194329 +000000737 000681615 000483511 D|098516284 069168897 +000000737 000724923 000533312 D|031115566 090626721 +000000737 000726586 000578070 D|027901380 028156462 +000000737 000727989 000578601 D|069200297 076160699 +000000737 000756904 000589683 D|031177484 057455180 +000000737 000769768 000591687 D|034106165 080855721 +000000737 000809097 000600446 D|019329471 043997399 +000000737 000821185 000602025 D|099576092 056952568 +000000737 000825563 000623207 D|055419073 060365041 +000000737 000830275 000678852 D|077424867 095105726 +000000737 000836782 000710008 D|071131174 019687816 +000000737 000855424 000710886 D|045800049 018426807 +000000737 000870992 000742879 D|049925203 023962946 +000000737 000880146 000756061 D|007612768 043611492 +000000737 000912204 000780688 D|079040415 052358835 +000000737 000916948 000811244 D|040278721 024245389 +000000737 000933742 000841047 D|026595891 060799027 +000000737 000941030 000912703 D|095822502 045620162 +000000737 000974490 000914116 D|009383487 022124671 +000000737 000979172 000919528 D|098944820 029983993 +000000737 000981284 000968359 D|073313690 012249188 +000000737 000985484 000981847 D|034190305 020923695 +000000737 000990475 000995108 D|015689047 038200694 +000000738 000029393 000017026 D|057466575 075149103 +000000738 000047759 000024324 D|039581099 066527828 +000000738 000113836 000029828 D|054279606 071357499 +000000738 000145411 000035733 D|045434072 094995569 +000000738 000158686 000087669 D|050446027 029536436 +000000738 000163554 000101775 D|020200901 044615073 +000000738 000200527 000102067 D|013635838 096787978 +000000738 000222091 000136075 D|033116807 007990828 +000000738 000295652 000174435 D|034946775 001240314 +000000738 000320164 000182441 D|092159529 026690597 +000000738 000320978 000182862 D|096955532 008258955 +000000738 000333423 000204731 D|009610437 052700121 +000000738 000345113 000207956 D|031192258 030755893 +000000738 000358328 000228226 D|054650336 026663269 +000000738 000372143 000250154 D|092585576 034182643 +000000738 000378376 000254973 D|088616707 040467520 +000000738 000381788 000285623 D|032400135 036412695 +000000738 000389638 000305011 D|022168366 063780493 +000000738 000418677 000308059 D|037186707 032479606 +000000738 000426697 000324940 D|055886559 076267301 +000000738 000453168 000337711 D|061393714 043635595 +000000738 000456800 000349093 D|011989457 056144063 +000000738 000485999 000456419 D|050639934 038030664 +000000738 000494192 000474964 D|033288522 085452643 +000000738 000540209 000493853 D|021955476 073482514 +000000738 000557432 000511426 D|082236297 013496902 +000000738 000564476 000525189 D|028218245 005631720 +000000738 000621245 000530872 D|018267259 020313541 +000000738 000665347 000576882 D|031562887 050820273 +000000738 000665633 000597854 D|007390989 096148012 +000000738 000669587 000601676 D|048953243 014951642 +000000738 000686798 000650157 D|074552117 044414327 +000000738 000703561 000694392 D|001869307 064397993 +000000738 000712457 000716516 D|046927853 087461130 +000000738 000728300 000718447 D|059118108 085703501 +000000738 000743950 000720535 D|045644603 042234287 +000000738 000745459 000761419 D|063038605 048639496 +000000738 000763424 000766742 D|043445710 003084051 +000000738 000764072 000774731 D|032982390 006129875 +000000738 000766320 000775497 D|083973478 051911532 +000000738 000813325 000795197 D|007386171 031185961 +000000738 000830030 000834230 D|070558125 089646239 +000000738 000848385 000858173 D|056216238 049181105 +000000738 000877118 000875572 D|021325894 052816301 +000000738 000898714 000887129 D|001966367 089019719 +000000738 000926241 000911398 D|048777166 018902153 +000000738 000963536 000981489 D|018398017 092946248 +000000738 000966255 000993685 D|048977866 035979951 +000000738 000966331 000998182 D|051403891 065287469 +000000738 000978014 000998562 D|074594948 076029898 +000000739 000007853 000008932 D|082705316 095431970 +000000739 000041376 000023122 D|007109373 024808870 +000000739 000051193 000035818 D|056732882 032365876 +000000739 000060383 000041123 D|057847612 023102767 +000000739 000111197 000046587 D|027958116 043169827 +000000739 000120195 000047360 D|041029409 059129249 +000000739 000142428 000051394 D|097039510 089156655 +000000739 000182376 000064226 D|004948829 038933829 +000000739 000189247 000072525 D|033947150 073444101 +000000739 000189729 000131539 D|063176578 031598155 +000000739 000204072 000186468 D|003989015 089217333 +000000739 000214526 000198197 D|014327940 019794148 +000000739 000219445 000200104 D|048933557 056725187 +000000739 000276192 000200935 D|091787513 062362570 +000000739 000303613 000303499 D|067178401 041976044 +000000739 000340278 000348391 D|086036161 057209302 +000000739 000344521 000369938 D|093587711 075490595 +000000739 000358837 000397612 D|097522065 091389089 +000000739 000363705 000422664 D|092111779 021765121 +000000739 000365776 000437901 D|041036425 095275644 +000000739 000370918 000438889 D|048952665 049627480 +000000739 000437112 000471911 D|088141504 057579651 +000000739 000471550 000485883 D|081978375 088455516 +000000739 000474723 000487288 D|032896388 016242720 +000000739 000485246 000488147 D|039025177 038993196 +000000739 000494822 000495093 D|073173293 070289457 +000000739 000547353 000543088 D|088004911 082085734 +000000739 000555777 000545183 D|065311093 053333377 +000000739 000600363 000551340 D|074123544 021510994 +000000739 000618734 000591132 D|067952593 012427508 +000000739 000633601 000591263 D|097545592 084738222 +000000739 000634104 000602034 D|021003593 038051441 +000000739 000644269 000642180 D|027345317 021035599 +000000739 000663273 000669288 D|065983867 065486114 +000000739 000681460 000671085 D|064404384 083755439 +000000739 000685195 000680903 D|090824813 078129971 +000000739 000693762 000696548 D|067418416 060059221 +000000739 000717801 000743223 D|000656686 078837527 +000000739 000719232 000747475 D|002136656 070698533 +000000739 000767241 000778108 D|021273684 025023138 +000000739 000804041 000788160 D|036707839 019915119 +000000739 000810195 000798803 D|000345688 021885037 +000000739 000830079 000818994 D|060975845 082843742 +000000739 000834010 000831984 D|012768859 063214682 +000000739 000835063 000838442 D|028699708 055802289 +000000739 000854153 000900235 D|033944619 013080810 +000000739 000864650 000906270 D|078844941 042179335 +000000739 000869480 000956802 D|094567280 049473583 +000000739 000918343 000977805 D|019248466 015736897 +000000739 000967965 000985401 D|038604034 045726829 +000000740 000013094 000008509 D|027193601 007147704 +000000740 000013245 000035781 D|040475986 049129098 +000000740 000030958 000039531 D|032726086 004595657 +000000740 000087513 000079922 D|047091670 029127644 +000000740 000142017 000092632 D|082070729 050907351 +000000740 000145478 000102396 D|098983235 053631285 +000000740 000154378 000103317 D|061700981 007395286 +000000740 000175158 000126268 D|019697148 068001297 +000000740 000177261 000150093 D|050026709 054331602 +000000740 000184633 000155271 D|092931736 033101623 +000000740 000206755 000166434 D|034418910 087714474 +000000740 000213354 000179395 D|084341702 002190518 +000000740 000216480 000182907 D|050968147 020241355 +000000740 000243811 000200784 D|008432650 021343659 +000000740 000273769 000211249 D|081436776 005773537 +000000740 000345970 000215139 D|029964491 038994848 +000000740 000359582 000222370 D|030974830 077246978 +000000740 000367522 000224631 D|080700722 066256273 +000000740 000383494 000247823 D|083747398 018542882 +000000740 000387568 000296715 D|067969290 056868254 +000000740 000401777 000308526 D|081377525 072691868 +000000740 000422340 000364237 D|095033999 036750660 +000000740 000431312 000391674 D|041137318 018837907 +000000740 000438927 000393553 D|012813462 023495062 +000000740 000444968 000397833 D|063970868 088773222 +000000740 000455183 000415225 D|083631243 073972154 +000000740 000494778 000425452 D|038203669 093416673 +000000740 000528791 000433661 D|048295889 012554949 +000000740 000535164 000452428 D|033176356 070501883 +000000740 000553838 000473832 D|044375158 069135410 +000000740 000585299 000495675 D|053343994 066869715 +000000740 000618969 000548504 D|085874867 097777771 +000000740 000639773 000551518 D|091453135 032464474 +000000740 000649436 000556051 D|068604124 050339908 +000000740 000695854 000578517 D|009521704 066950888 +000000740 000716505 000611015 D|082429291 004494434 +000000740 000753572 000624989 D|070655425 055717436 +000000740 000777119 000671405 D|042068782 068402314 +000000740 000787231 000685547 D|015036647 042620561 +000000740 000800599 000702187 D|068407362 072091403 +000000740 000806952 000730854 D|031525067 030550824 +000000740 000813956 000751955 D|007124726 013428384 +000000740 000818026 000789909 D|024263351 066314555 +000000740 000869908 000793953 D|051129873 011596340 +000000740 000927081 000873835 D|016725204 021042824 +000000740 000942850 000880994 D|032029315 035377750 +000000740 000952264 000956347 D|004890633 061625700 +000000740 000956561 000963975 D|042118591 066338799 +000000740 000971146 000973174 D|068194084 088030464 +000000740 000972997 000975369 D|095328869 005592319 +000000741 000016126 000071059 D|043948713 023126562 +000000741 000030599 000084496 D|099114919 013973260 +000000741 000053075 000115098 D|015396324 093970938 +000000741 000059821 000115139 D|052210317 068028204 +000000741 000077519 000147523 D|037601124 091515687 +000000741 000082141 000283190 D|047200384 024923057 +000000741 000115082 000298244 D|018892238 001314735 +000000741 000131591 000299850 D|060568208 067467685 +000000741 000146489 000314080 D|070114211 079223287 +000000741 000150691 000315740 D|019471122 085994131 +000000741 000182553 000328528 D|090090219 020386024 +000000741 000186857 000337459 D|098388107 027510614 +000000741 000186861 000355025 D|000575250 034902648 +000000741 000189228 000368123 D|025266043 088002159 +000000741 000200596 000414666 D|079187083 098522083 +000000741 000201959 000430518 D|031232854 081501609 +000000741 000235263 000440643 D|032337539 080265100 +000000741 000260961 000460392 D|004799394 069192435 +000000741 000301874 000460484 D|071562046 027834489 +000000741 000303095 000476591 D|092776280 083868199 +000000741 000309284 000479463 D|020663318 021783590 +000000741 000313004 000512687 D|072768763 019304949 +000000741 000317682 000519284 D|022821846 040654700 +000000741 000323973 000527134 D|028785721 044497250 +000000741 000359039 000529679 D|089731502 057733391 +000000741 000374242 000542191 D|079414160 033711576 +000000741 000404790 000579192 D|088602423 041807606 +000000741 000406523 000579693 D|052718742 006164858 +000000741 000426954 000598677 D|007119792 007137349 +000000741 000463914 000637706 D|037130687 057895394 +000000741 000519862 000661770 D|082509579 062633480 +000000741 000520456 000690928 D|065053145 000053028 +000000741 000659824 000699154 D|001738875 077048275 +000000741 000682679 000701748 D|004212625 054210624 +000000741 000692854 000714465 D|070206260 033046975 +000000741 000718688 000719587 D|062401643 043248169 +000000741 000754074 000773970 D|072028982 080906183 +000000741 000756777 000808411 D|075161034 026185893 +000000741 000765017 000837665 D|094593518 066435877 +000000741 000803527 000862195 D|000963000 070742194 +000000741 000806456 000864159 D|014164893 060326573 +000000741 000813433 000864985 D|038668358 040398151 +000000741 000844770 000880912 D|037602189 041959950 +000000741 000899244 000883037 D|065715731 010317582 +000000741 000901531 000883836 D|016742898 020419657 +000000741 000918411 000899657 D|050943603 036144720 +000000741 000927404 000924574 D|093710715 082577243 +000000741 000928091 000932953 D|030166732 034508805 +000000741 000962063 000963364 D|036734723 026158142 +000000741 000969796 000989555 D|047759546 092748290 +000000742 000003055 000020792 D|057572954 036896742 +000000742 000005016 000048803 D|046143050 004505436 +000000742 000008983 000050233 D|005395231 003703648 +000000742 000011510 000054072 D|027634931 079423867 +000000742 000049217 000100836 D|089888562 015718977 +000000742 000088247 000115486 D|086758721 020392164 +000000742 000094206 000123699 D|026961999 014471041 +000000742 000131722 000148006 D|059090046 042915716 +000000742 000132095 000158847 D|060312444 097787454 +000000742 000146509 000189291 D|096847543 076284583 +000000742 000155211 000229436 D|094481741 067473839 +000000742 000191582 000241421 D|032227980 097705697 +000000742 000226924 000252246 D|010209096 061867506 +000000742 000240973 000254459 D|007401743 008032573 +000000742 000253676 000255306 D|003197806 053859781 +000000742 000283583 000258223 D|076764312 014571974 +000000742 000291582 000271978 D|059994719 051882746 +000000742 000310588 000289770 D|056835631 006578897 +000000742 000335582 000311643 D|050514392 085952236 +000000742 000368078 000314989 D|039301661 009151162 +000000742 000371621 000319982 D|072837135 021179745 +000000742 000386430 000327560 D|043434996 019344062 +000000742 000405190 000344452 D|033501086 095549198 +000000742 000407994 000415073 D|064359554 058677741 +000000742 000462712 000472831 D|054335732 002992648 +000000742 000470283 000487632 D|065103441 076925421 +000000742 000488022 000538011 D|033393722 088830863 +000000742 000498828 000563025 D|004034652 034961919 +000000742 000508419 000587135 D|099279170 072861360 +000000742 000519465 000591042 D|037060748 096413194 +000000742 000520096 000599161 D|036912663 058574395 +000000742 000565658 000611231 D|015707064 053259728 +000000742 000577116 000647586 D|002268934 069885965 +000000742 000597940 000667524 D|042885857 064565575 +000000742 000600293 000670030 D|050438470 036502090 +000000742 000607265 000691801 D|099787788 085052787 +000000742 000617288 000709366 D|083246670 012296580 +000000742 000662766 000710003 D|011016732 075939989 +000000742 000666554 000810864 D|086147622 065060784 +000000742 000698210 000813520 D|077432835 030565051 +000000742 000724152 000837354 D|033293209 015580478 +000000742 000769193 000841042 D|012410921 051864447 +000000742 000794097 000876818 D|083323877 050824799 +000000742 000806954 000882850 D|088814585 051005916 +000000742 000855277 000893147 D|035746670 031897214 +000000742 000900038 000910211 D|016789594 026755144 +000000742 000937307 000956763 D|041612822 037537586 +000000742 000950956 000956771 D|065787308 087852918 +000000742 000955673 000965787 D|045921848 097527857 +000000742 000983401 000997884 D|086758114 044238266 +000000743 000028021 000004564 D|034286167 047453630 +000000743 000039221 000036824 D|030778907 021498289 +000000743 000085937 000072965 D|056450109 076373373 +000000743 000137871 000088303 D|097020239 000750803 +000000743 000154115 000142491 D|052200522 004609519 +000000743 000159673 000176471 D|066273717 002117345 +000000743 000160297 000185655 D|025931374 080435785 +000000743 000192851 000204781 D|092345197 055575580 +000000743 000194048 000205349 D|050419571 082521714 +000000743 000216498 000209533 D|077314427 051031924 +000000743 000227615 000240024 D|083667530 059820348 +000000743 000234935 000263495 D|079003198 014180490 +000000743 000240885 000277319 D|068060851 023430343 +000000743 000252665 000278466 D|076878628 018971078 +000000743 000266945 000296444 D|082462463 007589518 +000000743 000268698 000347666 D|099742935 025887096 +000000743 000299136 000361852 D|098009233 010839548 +000000743 000301665 000367880 D|020884374 030487691 +000000743 000318789 000381927 D|020535426 056955392 +000000743 000374240 000407626 D|077581535 060666357 +000000743 000418641 000418956 D|041489713 068779297 +000000743 000430748 000421177 D|027907883 013521335 +000000743 000450738 000427343 D|013296584 084242155 +000000743 000477202 000433488 D|098906938 012856438 +000000743 000508786 000434265 D|055560123 076147730 +000000743 000548963 000470462 D|079325618 030366741 +000000743 000574331 000475020 D|005299304 072476852 +000000743 000584359 000495290 D|018534448 078375736 +000000743 000629291 000509382 D|025631789 012691787 +000000743 000647832 000515585 D|016247308 099269442 +000000743 000669461 000552953 D|044089639 087028218 +000000743 000671764 000555122 D|063370411 008357206 +000000743 000700276 000558439 D|050123354 097518143 +000000743 000706474 000562962 D|000800316 006039700 +000000743 000709437 000582949 D|038060870 025444229 +000000743 000709675 000585151 D|037741001 049950197 +000000743 000715069 000593425 D|060843879 082803182 +000000743 000717932 000653727 D|074180734 042526468 +000000743 000731565 000668005 D|077611516 093173235 +000000743 000747392 000698914 D|073610423 051160226 +000000743 000748179 000720123 D|039706517 043273776 +000000743 000813678 000755532 D|071227212 042536936 +000000743 000834849 000765907 D|041224476 089542399 +000000743 000848249 000854429 D|014112415 029241061 +000000743 000863205 000903569 D|055985919 083241387 +000000743 000878981 000904956 D|085956596 049936482 +000000743 000888123 000913941 D|000170596 059208244 +000000743 000904827 000916455 D|024113346 034369669 +000000743 000945434 000921383 D|060905713 098923716 +000000743 000964255 000947264 D|099239306 070313929 +000000744 000016650 000000474 D|068255988 074018904 +000000744 000017473 000002768 D|084224759 003918118 +000000744 000032440 000021878 D|005465253 093349614 +000000744 000048502 000054252 D|094576920 047781838 +000000744 000085511 000103792 D|042667515 067118716 +000000744 000124325 000108299 D|023982907 016126987 +000000744 000126522 000130519 D|069774227 032743050 +000000744 000128659 000145267 D|045667265 040552075 +000000744 000166564 000149905 D|010091057 016014527 +000000744 000213890 000153092 D|030095277 020815267 +000000744 000228371 000155621 D|073301846 006218833 +000000744 000230321 000155749 D|062431378 075479855 +000000744 000253314 000156182 D|025056223 054877022 +000000744 000259002 000161381 D|063283732 042163565 +000000744 000264140 000164107 D|056307304 051222289 +000000744 000302310 000167285 D|032996976 047639791 +000000744 000312575 000237666 D|030561717 021663407 +000000744 000321914 000263962 D|091880962 025309444 +000000744 000336757 000272158 D|073520912 022216147 +000000744 000341510 000293830 D|012547490 093750826 +000000744 000353461 000297865 D|000495013 029680720 +000000744 000354296 000298441 D|008350225 000814827 +000000744 000365630 000351753 D|049220506 052403554 +000000744 000369897 000399519 D|008956814 007317240 +000000744 000379339 000418700 D|066259273 060593904 +000000744 000386649 000426865 D|050931220 021692995 +000000744 000411311 000434826 D|090224376 099060763 +000000744 000411447 000438571 D|047545556 081580310 +000000744 000412321 000447850 D|058687458 097210525 +000000744 000426452 000477209 D|064830498 040592980 +000000744 000429042 000526357 D|010877782 012131175 +000000744 000458215 000533259 D|074524585 038334549 +000000744 000484533 000542408 D|054979232 084971252 +000000744 000492394 000572332 D|039371118 008561344 +000000744 000513516 000592911 D|014913019 092712144 +000000744 000551690 000605083 D|096074216 043881164 +000000744 000597638 000659131 D|079491587 065662632 +000000744 000600317 000676597 D|071580499 061309298 +000000744 000613122 000688183 D|044407975 098408559 +000000744 000613772 000712379 D|007236410 059070173 +000000744 000674559 000712786 D|029328999 009068547 +000000744 000774263 000767594 D|000979080 002983376 +000000744 000792835 000812972 D|094854637 044241013 +000000744 000807035 000853576 D|011683932 076593898 +000000744 000808306 000896429 D|043096911 018684015 +000000744 000829130 000928091 D|056910768 009344522 +000000744 000888473 000938229 D|017822559 089095465 +000000744 000955020 000947316 D|000098133 073890317 +000000744 000962199 000967971 D|093350010 059202220 +000000744 000979778 000991834 D|057608079 049394005 +000000745 000020420 000009882 D|000821198 015633958 +000000745 000023812 000030993 D|033763135 058164160 +000000745 000025582 000051573 D|013083153 095317842 +000000745 000036762 000079382 D|055324929 027394166 +000000745 000087468 000123860 D|094790455 033356855 +000000745 000088554 000175092 D|004693608 006369216 +000000745 000111734 000209010 D|025093410 070056872 +000000745 000150136 000216999 D|075886508 010796015 +000000745 000152468 000239986 D|095592951 017160497 +000000745 000160507 000242533 D|036694365 026778429 +000000745 000173313 000249857 D|047424028 079285756 +000000745 000235904 000263655 D|060557515 002806624 +000000745 000293241 000321212 D|024445005 000141199 +000000745 000295035 000348984 D|066131499 093509168 +000000745 000356912 000351101 D|063877905 075058511 +000000745 000366074 000395238 D|042332624 066414881 +000000745 000366540 000417273 D|041553292 034618152 +000000745 000408207 000525142 D|069678636 037321898 +000000745 000457993 000533904 D|071683761 024933740 +000000745 000519171 000560566 D|062617351 074157353 +000000745 000522067 000569896 D|060952345 034649199 +000000745 000558218 000573069 D|077263661 001569653 +000000745 000561234 000592262 D|062869128 034835278 +000000745 000563889 000607559 D|038791363 090156797 +000000745 000577500 000612778 D|012859432 008861003 +000000745 000583012 000614294 D|071304072 061836340 +000000745 000625342 000642345 D|097722461 071632795 +000000745 000637899 000652111 D|037495622 023986208 +000000745 000638854 000713890 D|027793806 072105413 +000000745 000697309 000724755 D|090852345 060831451 +000000745 000718838 000731708 D|041448222 093966769 +000000745 000746599 000732981 D|074116254 013164640 +000000745 000746959 000746730 D|040066327 006245566 +000000745 000748735 000747059 D|095089731 026164743 +000000745 000760205 000750302 D|038354118 059524831 +000000745 000778795 000771564 D|073619285 038316051 +000000745 000787530 000805690 D|001846572 083180742 +000000745 000801033 000836751 D|073557446 050139417 +000000745 000816936 000845054 D|052350024 023114702 +000000745 000866212 000845999 D|051015985 027718288 +000000745 000876530 000866177 D|027156000 046251702 +000000745 000878121 000869632 D|022283528 078581852 +000000745 000895000 000871569 D|045753940 038016452 +000000745 000913031 000887266 D|001802759 038776494 +000000745 000943213 000888847 D|013121072 088655901 +000000745 000955682 000908469 D|075708683 023658742 +000000745 000963056 000929913 D|039646691 032194068 +000000745 000981376 000930433 D|058970500 034298290 +000000745 000996702 000948042 D|013679605 048534697 +000000745 000998302 000959856 D|076884577 007970009 +000000746 000015189 000005906 D|033276858 035802082 +000000746 000037188 000035253 D|041909054 028232081 +000000746 000047034 000095991 D|041216103 012851619 +000000746 000052506 000101350 D|001070980 099109724 +000000746 000067152 000171907 D|067847732 094566296 +000000746 000068123 000172895 D|083300799 034301119 +000000746 000071730 000174232 D|066153770 096279821 +000000746 000138627 000178325 D|055896483 091325003 +000000746 000143900 000186217 D|031193878 081550117 +000000746 000146934 000187347 D|069687475 024589492 +000000746 000162454 000188226 D|052053048 094718103 +000000746 000192519 000203255 D|085146655 024327680 +000000746 000198203 000206605 D|011573980 079599354 +000000746 000200554 000234358 D|091772253 021638365 +000000746 000213212 000283009 D|079978292 043733076 +000000746 000220707 000308587 D|048223179 059439360 +000000746 000249329 000310390 D|054333260 070270148 +000000746 000268481 000385196 D|070506148 012110832 +000000746 000338946 000391271 D|016052527 017848630 +000000746 000379948 000395565 D|028010815 053888131 +000000746 000401625 000397724 D|094171222 088024555 +000000746 000415179 000402993 D|081122902 090567612 +000000746 000442950 000416972 D|041956301 054658718 +000000746 000463019 000419625 D|050368553 034235668 +000000746 000488878 000515723 D|036213737 044475903 +000000746 000504601 000524114 D|032406929 089469176 +000000746 000505674 000560180 D|023497113 016036054 +000000746 000529591 000587360 D|031002996 003674527 +000000746 000543963 000624801 D|004486025 077093137 +000000746 000606787 000626733 D|079059747 027637823 +000000746 000632403 000639277 D|069406878 092462216 +000000746 000636076 000644159 D|032007069 066142739 +000000746 000668351 000649035 D|043180902 002221409 +000000746 000688171 000654279 D|001949974 034088731 +000000746 000705846 000673925 D|078376076 023582064 +000000746 000732834 000700703 D|005577578 030391424 +000000746 000742950 000705625 D|068789431 034475166 +000000746 000748885 000712021 D|046771828 001855198 +000000746 000751826 000725038 D|018128162 057495102 +000000746 000758058 000770033 D|031325722 014885818 +000000746 000762761 000781075 D|026596595 015738318 +000000746 000772257 000781244 D|039110846 057702695 +000000746 000779576 000804728 D|075775964 015711472 +000000746 000833596 000827833 D|042125743 062088401 +000000746 000840355 000861081 D|092599048 040131665 +000000746 000877276 000869576 D|025386238 067091089 +000000746 000883467 000886984 D|027864763 087516168 +000000746 000888911 000956873 D|014056773 018624471 +000000746 000893933 000976096 D|004760735 008650368 +000000746 000919375 000993545 D|009105970 075816127 +000000747 000017522 000048124 D|009778176 060805067 +000000747 000028775 000054499 D|099040281 056540742 +000000747 000046781 000056701 D|077112329 033641724 +000000747 000054381 000082476 D|014054575 062053731 +000000747 000062546 000105298 D|034869956 092389950 +000000747 000064769 000112327 D|066305169 009081284 +000000747 000092909 000112885 D|014151465 077066173 +000000747 000098221 000132154 D|030716722 084816034 +000000747 000105224 000133083 D|048605612 072269125 +000000747 000144196 000141076 D|046811342 008565311 +000000747 000153572 000146680 D|040591114 033109057 +000000747 000171389 000186523 D|086202357 072288483 +000000747 000180410 000242019 D|081334187 018085070 +000000747 000187754 000267347 D|090392361 077291212 +000000747 000202381 000281255 D|008567853 007533495 +000000747 000219766 000296781 D|090123492 008014278 +000000747 000237184 000298416 D|016555762 092833295 +000000747 000244935 000371296 D|042936704 043157972 +000000747 000260258 000378072 D|005538432 056253128 +000000747 000290952 000427130 D|058417585 020271649 +000000747 000334507 000427647 D|010650842 097572686 +000000747 000343509 000433747 D|008702803 033466128 +000000747 000356933 000440219 D|088897855 091105311 +000000747 000403561 000515140 D|028027647 020485600 +000000747 000405837 000518621 D|077893174 002789168 +000000747 000487245 000567479 D|080776891 016215132 +000000747 000526050 000575871 D|038706440 014234394 +000000747 000553332 000615646 D|027572794 097188321 +000000747 000569924 000617744 D|094794813 060243579 +000000747 000573244 000635461 D|073881846 084681517 +000000747 000598767 000648281 D|078397384 065335033 +000000747 000626532 000664498 D|040797943 093814815 +000000747 000665018 000680124 D|073072686 078310179 +000000747 000713364 000695309 D|070837059 034504767 +000000747 000748807 000766262 D|076397927 098241752 +000000747 000749724 000789657 D|014955987 037548749 +000000747 000750440 000790499 D|040689187 059581269 +000000747 000752952 000790946 D|065575151 016134670 +000000747 000763561 000799843 D|022243192 020492760 +000000747 000768974 000829377 D|071838756 071002414 +000000747 000771807 000848788 D|084942342 014718849 +000000747 000832515 000889167 D|044811706 082040483 +000000747 000841616 000891224 D|063247239 087312783 +000000747 000884718 000891727 D|002568196 038041704 +000000747 000899337 000931519 D|006181228 040001242 +000000747 000902936 000933013 D|056510980 070202020 +000000747 000910058 000937251 D|087485900 061300154 +000000747 000964259 000938271 D|002099482 059014238 +000000747 000975340 000977886 D|070961324 008464157 +000000747 000989789 000994394 D|040372280 014000285 +000000748 000021987 000011731 D|068655004 095890897 +000000748 000026042 000018989 D|059270892 089203510 +000000748 000042240 000040401 D|072588954 025738696 +000000748 000073474 000040837 D|036113034 046607145 +000000748 000087324 000059587 D|029258339 076285153 +000000748 000136090 000077573 D|015215539 017494454 +000000748 000136816 000089097 D|027688876 061548384 +000000748 000157831 000089594 D|079099229 040566193 +000000748 000166728 000126422 D|097631038 003563551 +000000748 000204395 000131179 D|045539146 027022727 +000000748 000231884 000133870 D|052989952 034852063 +000000748 000298800 000143690 D|006075978 090519642 +000000748 000301211 000156172 D|071147375 011415392 +000000748 000307717 000167173 D|094300338 055713799 +000000748 000314313 000198682 D|077166770 026098179 +000000748 000324279 000250482 D|051030903 033971342 +000000748 000325913 000272911 D|062244228 091058857 +000000748 000412016 000293587 D|004536438 057328554 +000000748 000416552 000320824 D|002158833 032091030 +000000748 000425857 000325787 D|075697742 047213208 +000000748 000430778 000331619 D|001108079 067778570 +000000748 000436439 000354158 D|055938661 082610656 +000000748 000454764 000377941 D|039765355 070179170 +000000748 000484693 000457030 D|089481998 034986304 +000000748 000488262 000457924 D|083149004 028798758 +000000748 000511299 000483654 D|024660350 037761429 +000000748 000558342 000542016 D|050537100 091387532 +000000748 000568768 000564455 D|040584252 022173046 +000000748 000576160 000566432 D|007706631 000614305 +000000748 000605514 000612127 D|061039462 096157182 +000000748 000611723 000641675 D|012474173 055535864 +000000748 000630875 000643654 D|089632120 071380107 +000000748 000713467 000753427 D|066056942 040050896 +000000748 000742952 000766350 D|094379071 059431226 +000000748 000750584 000781480 D|054669690 017936590 +000000748 000774493 000799438 D|095238164 020991838 +000000748 000776489 000804119 D|027982928 000118873 +000000748 000805570 000829840 D|095136875 003532864 +000000748 000832511 000834230 D|035752088 092146481 +000000748 000834846 000845459 D|019486672 073159777 +000000748 000836607 000858333 D|056496936 074543980 +000000748 000870604 000886655 D|050472320 028700700 +000000748 000871874 000900997 D|022066922 066796023 +000000748 000918789 000909788 D|066080099 032438914 +000000748 000939626 000916926 D|046449324 085616344 +000000748 000944725 000916938 D|084395682 071015579 +000000748 000956113 000940911 D|000172786 048234501 +000000748 000977850 000960170 D|001927658 086836859 +000000748 000991770 000963753 D|024208309 094156916 +000000748 000999042 000985491 D|059453193 041924819 +000000749 000003227 000001383 D|021010550 021055622 +000000749 000055753 000006743 D|025119415 041881420 +000000749 000068813 000011119 D|028583801 033376338 +000000749 000105088 000026209 D|071446174 095265850 +000000749 000113118 000040966 D|081864613 032289786 +000000749 000119594 000041283 D|050122834 075494657 +000000749 000144414 000045349 D|010521673 050181250 +000000749 000148012 000072381 D|071647112 099554081 +000000749 000166256 000144802 D|059573888 013623242 +000000749 000170455 000212755 D|092418270 065662476 +000000749 000180681 000213876 D|096251882 017895388 +000000749 000189087 000235944 D|096176141 044179017 +000000749 000227165 000254995 D|070894894 077150299 +000000749 000244519 000287601 D|074179731 011411574 +000000749 000270439 000306421 D|053120532 085534176 +000000749 000287219 000308940 D|029600916 006564385 +000000749 000289504 000315255 D|001399804 057205826 +000000749 000324337 000318802 D|052351928 002165912 +000000749 000327904 000330804 D|052711735 065270285 +000000749 000329115 000343206 D|076610564 076305148 +000000749 000407543 000363153 D|042203296 022014860 +000000749 000437090 000385369 D|027159955 037109838 +000000749 000442151 000403941 D|027170236 039274304 +000000749 000464403 000405947 D|037414223 043118250 +000000749 000493450 000427527 D|042922217 017296517 +000000749 000534539 000456043 D|067669929 004780250 +000000749 000535683 000466648 D|068540120 017976624 +000000749 000574210 000475838 D|067449344 019751801 +000000749 000579161 000507403 D|088837968 037419212 +000000749 000581514 000519386 D|054028817 015203467 +000000749 000624651 000543108 D|047132461 024075087 +000000749 000700357 000543621 D|073712004 082263700 +000000749 000705642 000560783 D|086066873 094307757 +000000749 000723692 000655141 D|060042124 061084193 +000000749 000724955 000661299 D|057458047 070233934 +000000749 000750028 000666164 D|040151126 083141134 +000000749 000750932 000677173 D|031784827 034908231 +000000749 000752924 000703334 D|092221456 072806359 +000000749 000767125 000752112 D|022795647 063597506 +000000749 000776272 000767578 D|007814729 049216199 +000000749 000804492 000774844 D|068706827 057312262 +000000749 000810427 000775305 D|071043555 061031356 +000000749 000821492 000778490 D|096933538 077382544 +000000749 000824272 000790159 D|057330680 081529803 +000000749 000844347 000825005 D|060057349 038077335 +000000749 000864665 000863216 D|081022727 077241709 +000000749 000869957 000877154 D|026560407 067263707 +000000749 000911365 000889596 D|004769312 023158757 +000000749 000926989 000893529 D|036517083 056220478 +000000749 000990206 000977065 D|029629789 078244429 +000000750 000007604 000012019 D|038890679 082096848 +000000750 000050919 000109911 D|097109300 087296489 +000000750 000100393 000122176 D|018153382 028960341 +000000750 000128454 000135845 D|078428407 042022994 +000000750 000149356 000172651 D|072955994 096007931 +000000750 000182399 000173484 D|050570560 040532478 +000000750 000206253 000175315 D|069315108 023465421 +000000750 000237645 000190355 D|042431428 009267281 +000000750 000247006 000195339 D|092115862 095567589 +000000750 000252651 000195807 D|026257764 061306994 +000000750 000287210 000220719 D|017051644 058320901 +000000750 000299897 000234301 D|082414282 030073294 +000000750 000313583 000235340 D|025864500 061226802 +000000750 000320172 000258295 D|048711865 048558605 +000000750 000349703 000290332 D|082906256 091899748 +000000750 000405251 000311268 D|060060220 074740703 +000000750 000405542 000317743 D|008339360 082069827 +000000750 000405547 000344103 D|019258957 049789805 +000000750 000417080 000347097 D|066471718 074872424 +000000750 000425732 000347122 D|076945495 083266853 +000000750 000431591 000392361 D|013769011 087122698 +000000750 000435218 000415078 D|036018378 090586279 +000000750 000438526 000448262 D|023635509 092381763 +000000750 000444223 000462800 D|080618687 038444258 +000000750 000498004 000471691 D|080501772 074411685 +000000750 000506303 000501185 D|043670458 008870161 +000000750 000544430 000542151 D|003541736 043480488 +000000750 000546115 000549227 D|044817637 026365674 +000000750 000561834 000613382 D|083916388 021238105 +000000750 000587300 000628541 D|072951101 098714778 +000000750 000605946 000645912 D|057682767 023645095 +000000750 000607592 000655908 D|020456590 064301769 +000000750 000614767 000662493 D|010005711 034625523 +000000750 000648765 000707386 D|053142272 027158414 +000000750 000651666 000742299 D|060151283 094097089 +000000750 000660934 000793280 D|001111334 066998315 +000000750 000687790 000820546 D|061452279 037810571 +000000750 000690876 000828957 D|072362305 052169544 +000000750 000695137 000830659 D|022343072 069673689 +000000750 000713020 000861379 D|018967584 049474726 +000000750 000725547 000871569 D|000031677 084463834 +000000750 000825108 000890855 D|071787964 037862993 +000000750 000844847 000893098 D|040286775 018567608 +000000750 000857520 000894555 D|086696942 033663360 +000000750 000866602 000906602 D|038313051 015327342 +000000750 000881240 000911657 D|022508130 022412180 +000000750 000906961 000977047 D|056612581 040284771 +000000750 000920187 000981823 D|037112490 008255661 +000000750 000980446 000994395 D|073193176 019639699 +000000750 000980636 000995032 D|012352331 044373653 +000000751 000013310 000050356 D|082684246 002026283 +000000751 000025553 000057817 D|059238896 097445134 +000000751 000039444 000080743 D|069762372 006211106 +000000751 000080947 000109853 D|004916926 037165895 +000000751 000090796 000128781 D|017145062 003678536 +000000751 000118089 000132877 D|016944275 050367651 +000000751 000152672 000141676 D|084384133 091456156 +000000751 000152950 000166183 D|060063295 010437107 +000000751 000156990 000175690 D|081213111 044960894 +000000751 000166494 000193299 D|002103396 024257651 +000000751 000199938 000224971 D|048697002 008639637 +000000751 000202626 000252828 D|059454991 084498606 +000000751 000267529 000263690 D|032525876 058589011 +000000751 000268718 000267333 D|094769041 014283688 +000000751 000278837 000277219 D|080391908 095981817 +000000751 000286358 000284321 D|046962808 059075129 +000000751 000289155 000287763 D|054613046 039934635 +000000751 000307623 000309674 D|079769931 078243889 +000000751 000309109 000326141 D|082107596 006945373 +000000751 000323541 000327731 D|016847069 028562925 +000000751 000328319 000328133 D|096060536 054588238 +000000751 000334718 000360271 D|094454205 018023237 +000000751 000336988 000377676 D|048493446 060310874 +000000751 000365027 000394411 D|094339055 073053801 +000000751 000427815 000400267 D|030973441 089309057 +000000751 000449981 000439669 D|081080244 064772692 +000000751 000466479 000439910 D|077284791 087627308 +000000751 000495921 000522746 D|050594381 082311205 +000000751 000529697 000524144 D|026116136 034316582 +000000751 000539923 000545842 D|079541675 035731040 +000000751 000550714 000613506 D|070414089 024027744 +000000751 000552726 000656822 D|060664383 060959497 +000000751 000559473 000660065 D|080210551 005813066 +000000751 000578382 000681676 D|001314076 004932503 +000000751 000666755 000682631 D|044067812 077536259 +000000751 000701700 000686370 D|013551171 010075993 +000000751 000728692 000687350 D|017975104 081865674 +000000751 000735786 000694449 D|002787261 041758810 +000000751 000787110 000708848 D|077108969 099451493 +000000751 000803700 000800641 D|091488247 050126467 +000000751 000810604 000805856 D|057010882 050097413 +000000751 000839214 000824059 D|095960013 016610730 +000000751 000856272 000852942 D|036769707 031284985 +000000751 000897187 000871875 D|089517774 027186991 +000000751 000919649 000875633 D|092483914 023036562 +000000751 000920518 000890553 D|023209486 093557076 +000000751 000953333 000919217 D|068113834 097641451 +000000751 000958114 000922145 D|087349009 071622652 +000000751 000979939 000972626 D|063473022 028527338 +000000751 000985415 000977797 D|042370303 039286564 +000000752 000037430 000015516 D|041805057 095340158 +000000752 000051850 000039612 D|029695269 086441160 +000000752 000056033 000084595 D|028015547 025393965 +000000752 000058035 000107095 D|046446510 090898237 +000000752 000075366 000147011 D|093228979 010727028 +000000752 000090056 000177945 D|057015420 096681863 +000000752 000097317 000203697 D|090536193 082840369 +000000752 000104227 000224274 D|027299413 041503595 +000000752 000106849 000246061 D|077212279 004716919 +000000752 000138647 000275435 D|053947809 013968875 +000000752 000148340 000298874 D|086581754 069547773 +000000752 000148369 000307897 D|095338686 068524097 +000000752 000176940 000311705 D|079197863 050186103 +000000752 000181384 000314941 D|097058934 023673225 +000000752 000202581 000329926 D|041659698 033934744 +000000752 000223879 000330069 D|090151655 098088628 +000000752 000228715 000330410 D|014234406 075097595 +000000752 000265601 000354977 D|058600245 096969358 +000000752 000273374 000380662 D|017904382 081583842 +000000752 000303821 000403041 D|020409518 078812437 +000000752 000316874 000425856 D|093438758 031677887 +000000752 000321744 000471392 D|066531870 067489089 +000000752 000379635 000504622 D|054513113 088674066 +000000752 000390253 000531920 D|005663430 016611640 +000000752 000399845 000550169 D|055836322 003211410 +000000752 000419892 000575842 D|058707431 092353532 +000000752 000422152 000581629 D|035722261 048191399 +000000752 000475167 000596738 D|090075838 031086566 +000000752 000483850 000599971 D|065117094 033165351 +000000752 000486290 000608860 D|014337545 079403166 +000000752 000492106 000617017 D|090462412 035660340 +000000752 000503819 000705996 D|049155377 053393781 +000000752 000508697 000711949 D|094426617 030970453 +000000752 000516322 000720871 D|050568943 061070180 +000000752 000526859 000721676 D|045925761 071084195 +000000752 000547549 000725131 D|050220188 042294138 +000000752 000627683 000730274 D|074160254 002948957 +000000752 000688194 000740713 D|069684194 080184783 +000000752 000711091 000768489 D|047951826 084166276 +000000752 000716459 000787985 D|054125426 055949884 +000000752 000716793 000805926 D|018962056 006110777 +000000752 000737188 000816398 D|094080307 063430255 +000000752 000771856 000821709 D|039164131 097582559 +000000752 000805261 000859905 D|097334744 006899916 +000000752 000815967 000880094 D|027103540 021937923 +000000752 000816850 000881122 D|052539666 032667668 +000000752 000886853 000909047 D|011642172 051398977 +000000752 000952492 000911965 D|075001273 035475314 +000000752 000966540 000919800 D|090326668 062531283 +000000752 000969007 000981945 D|049791733 007747903 +000000753 000025088 000065305 D|018664573 039524684 +000000753 000063812 000085308 D|070327268 082269831 +000000753 000078509 000093516 D|075579730 010452101 +000000753 000091840 000101987 D|080127337 032385341 +000000753 000125609 000103957 D|063939290 014167458 +000000753 000127118 000153311 D|086836117 086888862 +000000753 000132537 000157147 D|052399125 026405429 +000000753 000138203 000159063 D|097349619 073365052 +000000753 000197714 000169298 D|091178171 084854650 +000000753 000234105 000177672 D|063510330 028776922 +000000753 000235841 000188192 D|004391118 098402149 +000000753 000269447 000244327 D|067063887 006071223 +000000753 000306239 000249622 D|016347056 046998313 +000000753 000325374 000256041 D|077637157 006432093 +000000753 000339720 000267120 D|020275696 084972922 +000000753 000340374 000298330 D|005093866 052989632 +000000753 000352895 000298539 D|031066905 072334034 +000000753 000362144 000309705 D|066537016 048151848 +000000753 000369310 000344213 D|055135697 028435073 +000000753 000379122 000385574 D|089860332 003927779 +000000753 000382118 000404172 D|052668945 040534956 +000000753 000398773 000452242 D|069696731 002661910 +000000753 000418028 000480335 D|012715040 097107882 +000000753 000482070 000495103 D|008195517 086031622 +000000753 000491187 000500147 D|011149946 027517818 +000000753 000498170 000501476 D|099136427 076810916 +000000753 000507573 000520156 D|002651198 044207592 +000000753 000510664 000582200 D|061764128 077443793 +000000753 000514957 000596628 D|035638886 016798475 +000000753 000528252 000659928 D|063857318 013845152 +000000753 000541771 000661529 D|006466643 078460779 +000000753 000581178 000678175 D|004761116 007896340 +000000753 000591035 000715085 D|094746242 099997513 +000000753 000651950 000727508 D|050542748 020882983 +000000753 000728188 000762077 D|085208630 046428274 +000000753 000734421 000779613 D|068481373 012484783 +000000753 000753977 000782881 D|067855701 078530205 +000000753 000755664 000786843 D|055127886 068695399 +000000753 000790387 000793630 D|021826837 045823248 +000000753 000831860 000825496 D|059359283 016655001 +000000753 000846608 000871594 D|017684728 039836666 +000000753 000877273 000882752 D|048533158 004121362 +000000753 000885948 000894925 D|055659225 096610657 +000000753 000905155 000895936 D|012688135 016755337 +000000753 000922824 000946078 D|018784477 088132930 +000000753 000933337 000952931 D|068023188 000741725 +000000753 000963394 000965554 D|074601250 051250262 +000000753 000989725 000968691 D|010977506 004116529 +000000753 000993566 000991131 D|056129071 035392131 +000000753 000997494 000993797 D|063581861 023902834 +000000754 000014470 000006582 D|031105247 054238708 +000000754 000019388 000008165 D|009688443 006931685 +000000754 000024972 000008702 D|085822017 022214416 +000000754 000033994 000034188 D|043438239 076851585 +000000754 000058439 000035098 D|048766111 053686418 +000000754 000110739 000041239 D|049558202 025680616 +000000754 000115299 000041586 D|023202997 002741563 +000000754 000151660 000066080 D|055005103 043322235 +000000754 000160967 000108743 D|030880968 076996480 +000000754 000186625 000171908 D|008736862 068671351 +000000754 000228696 000175197 D|046330657 033071096 +000000754 000268342 000245005 D|036831358 061920526 +000000754 000279494 000245681 D|093661598 024172804 +000000754 000287839 000272355 D|002887346 043006046 +000000754 000291782 000293291 D|096134910 041676089 +000000754 000308953 000308232 D|013774526 025329844 +000000754 000309225 000327566 D|089027038 083895017 +000000754 000333411 000353811 D|095231722 004294318 +000000754 000348673 000359536 D|058145898 087414121 +000000754 000408573 000378132 D|090152699 092301424 +000000754 000426231 000394398 D|025014439 046743134 +000000754 000432799 000399546 D|050478957 077780354 +000000754 000452438 000452938 D|099333448 032740801 +000000754 000461059 000461195 D|014966112 002181679 +000000754 000472755 000463170 D|091374510 040204260 +000000754 000508203 000534284 D|037993848 066788598 +000000754 000509027 000560367 D|010605766 044275595 +000000754 000535743 000596866 D|017032131 006984344 +000000754 000541217 000606199 D|055223931 007226526 +000000754 000568954 000615957 D|080353492 035158838 +000000754 000582313 000617218 D|029718093 015988443 +000000754 000623561 000654692 D|055591210 029703655 +000000754 000624273 000678720 D|008576828 063425971 +000000754 000636410 000686384 D|005717953 030693085 +000000754 000692965 000698523 D|050463108 043861947 +000000754 000751771 000706037 D|063588731 011272097 +000000754 000774643 000718094 D|096155789 087507599 +000000754 000802014 000720802 D|049526909 076918530 +000000754 000837685 000757773 D|052754584 061752958 +000000754 000839360 000768454 D|071749684 049394270 +000000754 000847043 000771394 D|056008286 035276092 +000000754 000850448 000787665 D|039383265 096098228 +000000754 000881320 000799648 D|085509405 064512844 +000000754 000885781 000808485 D|003391739 066399914 +000000754 000897498 000826596 D|049434544 039743379 +000000754 000930953 000841103 D|071657328 035255954 +000000754 000969148 000894087 D|014151848 006216394 +000000754 000969596 000917057 D|022896501 072196015 +000000754 000971880 000942734 D|022643286 013492927 +000000754 000976594 000975905 D|033800282 065571636 +000000755 000022341 000000358 D|014070910 016489867 +000000755 000091771 000003558 D|080143395 082520855 +000000755 000102207 000003699 D|019027902 098661998 +000000755 000146790 000060289 D|050879746 089413275 +000000755 000148924 000075644 D|000632213 027284758 +000000755 000163696 000093722 D|032212726 055872786 +000000755 000177662 000112544 D|004288347 089924377 +000000755 000188190 000124760 D|074110918 097436263 +000000755 000197478 000147785 D|004893355 018136465 +000000755 000203443 000149234 D|003813106 096273559 +000000755 000304037 000160998 D|099473720 061387094 +000000755 000308396 000165338 D|077684059 083945524 +000000755 000346501 000204842 D|070477424 062875628 +000000755 000355979 000221338 D|008885787 076202518 +000000755 000373127 000222945 D|086550459 062910931 +000000755 000397719 000227797 D|027398859 025962266 +000000755 000398795 000232935 D|057691503 025916771 +000000755 000428375 000284823 D|018919424 090665402 +000000755 000437815 000285324 D|085764737 050631180 +000000755 000448600 000295817 D|004368528 063389861 +000000755 000470845 000315345 D|098898709 018833245 +000000755 000481964 000336161 D|000115173 061563563 +000000755 000508538 000391491 D|093705095 019361368 +000000755 000548156 000402343 D|071052918 088836440 +000000755 000598756 000410362 D|094124113 020599156 +000000755 000599037 000441100 D|011189619 046211834 +000000755 000630612 000443513 D|077681078 026051889 +000000755 000635656 000453082 D|076750299 073992660 +000000755 000652037 000469831 D|081418506 073697851 +000000755 000683448 000478642 D|030988562 097325673 +000000755 000709695 000482251 D|087811401 090746534 +000000755 000726609 000494000 D|041153836 042242260 +000000755 000750489 000540997 D|058296032 080397745 +000000755 000756520 000593258 D|035126384 005955671 +000000755 000766918 000602208 D|047496723 077813503 +000000755 000786615 000673910 D|038270025 054562420 +000000755 000795013 000721797 D|041407969 012828887 +000000755 000849818 000753253 D|057381283 047862374 +000000755 000865616 000786596 D|028471666 069235759 +000000755 000880887 000796466 D|039016432 025968940 +000000755 000889386 000801460 D|057688693 022739314 +000000755 000890129 000857267 D|094693049 077453721 +000000755 000891456 000881590 D|004822339 056121741 +000000755 000933982 000892441 D|040862808 089978270 +000000755 000956274 000904893 D|097995754 005746221 +000000755 000956505 000906293 D|017746287 038735881 +000000755 000960453 000915871 D|078950987 078728353 +000000755 000973080 000937286 D|000322665 083699455 +000000755 000974478 000990541 D|052990688 052554898 +000000755 000984487 000996798 D|030405035 025068781 +000000756 000004256 000000450 D|029093275 089442199 +000000756 000088572 000008930 D|040924377 010032188 +000000756 000100598 000012344 D|005712201 021422341 +000000756 000134446 000030647 D|001583875 033034769 +000000756 000181635 000040316 D|013623808 063855840 +000000756 000185382 000041967 D|067894660 041263870 +000000756 000199963 000051853 D|070727248 089578518 +000000756 000200766 000108200 D|011570230 066617298 +000000756 000209928 000112479 D|010517264 098743313 +000000756 000211445 000135733 D|075336465 055187266 +000000756 000233707 000151710 D|038835524 074823926 +000000756 000239684 000166580 D|006717649 035159564 +000000756 000252698 000200122 D|044664961 031289123 +000000756 000278076 000208906 D|014021781 007984105 +000000756 000290324 000230778 D|041759268 046233106 +000000756 000304078 000281729 D|009909183 033120213 +000000756 000318465 000287157 D|013943975 027232067 +000000756 000318606 000372963 D|078037448 046192186 +000000756 000379739 000397415 D|031666627 014132297 +000000756 000393400 000410645 D|014892988 005557893 +000000756 000421521 000427785 D|028784620 054145425 +000000756 000423242 000434117 D|062519661 013643828 +000000756 000459529 000452447 D|081727651 039219734 +000000756 000466429 000478845 D|091605180 059851630 +000000756 000545170 000516568 D|011982055 049306485 +000000756 000546848 000532626 D|052233942 091400124 +000000756 000551550 000548247 D|058587388 014550279 +000000756 000580294 000552710 D|012483091 060688943 +000000756 000590361 000569712 D|029267462 054512730 +000000756 000592793 000582944 D|019793715 018132345 +000000756 000631957 000596680 D|058567445 038042509 +000000756 000684505 000607371 D|047815293 035002939 +000000756 000689108 000633013 D|051990180 046716232 +000000756 000723205 000635198 D|009087856 076655784 +000000756 000744326 000643472 D|043464801 017162182 +000000756 000765611 000668200 D|017253054 066813824 +000000756 000771506 000724969 D|066316989 073924109 +000000756 000799435 000799961 D|086477176 013438397 +000000756 000802147 000812941 D|001132629 060667876 +000000756 000813424 000815189 D|010868562 071032093 +000000756 000819856 000825675 D|069091332 098009146 +000000756 000851098 000842063 D|021757794 079645409 +000000756 000860411 000849226 D|037397836 083695921 +000000756 000864640 000865647 D|051636325 044764752 +000000756 000893674 000871952 D|051950602 049043009 +000000756 000896105 000879509 D|031267186 003783476 +000000756 000905614 000884143 D|054617983 057613860 +000000756 000916192 000925435 D|066532916 009788529 +000000756 000967032 000965124 D|007009289 095190318 +000000756 000983359 000967458 D|077499408 053331344 +000000757 000000050 000009034 D|090939807 082352180 +000000757 000023922 000012714 D|062198591 044675751 +000000757 000032030 000021137 D|037349155 059744604 +000000757 000050144 000022925 D|078908750 036276528 +000000757 000050486 000037072 D|084887062 071625051 +000000757 000051794 000079213 D|094601339 048149624 +000000757 000067777 000083802 D|075598517 042574212 +000000757 000100986 000131579 D|050441429 073757453 +000000757 000137951 000133448 D|032609712 055683172 +000000757 000176537 000204804 D|077696011 067091088 +000000757 000198361 000209731 D|082325748 071475894 +000000757 000206486 000228807 D|000316607 072760535 +000000757 000207469 000249539 D|037240634 021054153 +000000757 000286889 000253829 D|071608088 033172884 +000000757 000294847 000262380 D|082367979 049537129 +000000757 000326750 000269423 D|057774324 052468893 +000000757 000332191 000297664 D|027684467 042705444 +000000757 000332284 000331716 D|091943404 066939866 +000000757 000334840 000361109 D|088263779 013738627 +000000757 000364994 000386066 D|067172272 061145048 +000000757 000397174 000388450 D|079086885 085259358 +000000757 000403480 000406522 D|007767119 085236204 +000000757 000426325 000440955 D|053741329 064286989 +000000757 000435176 000458806 D|076984673 079859414 +000000757 000469497 000483840 D|009852069 076778086 +000000757 000485728 000484012 D|041336942 087945825 +000000757 000499694 000529769 D|093072498 053211947 +000000757 000514436 000538008 D|010842499 009594934 +000000757 000538126 000561032 D|035926414 064537355 +000000757 000577928 000583776 D|039572491 052653241 +000000757 000609978 000593618 D|055852472 060384111 +000000757 000623144 000603782 D|096826745 063985949 +000000757 000647198 000664697 D|059641781 085750782 +000000757 000675972 000705534 D|061990803 018505469 +000000757 000745911 000713752 D|002429207 041161463 +000000757 000747090 000721497 D|022987664 071189239 +000000757 000757834 000727203 D|023469902 098429765 +000000757 000770536 000736245 D|045930050 018255054 +000000757 000771324 000769467 D|035671363 016169485 +000000757 000793944 000790865 D|088828727 051604899 +000000757 000815185 000798254 D|004429753 079628510 +000000757 000877721 000836194 D|073561880 069403505 +000000757 000877869 000844482 D|020988591 061470402 +000000757 000882815 000844811 D|063743574 038681149 +000000757 000902111 000856359 D|084038438 061836182 +000000757 000913985 000866921 D|033107089 077563577 +000000757 000954761 000881354 D|088634022 071342867 +000000757 000965109 000887477 D|072012911 071845602 +000000757 000988104 000893629 D|054234631 039284457 +000000757 000998555 000929966 D|024695467 004868598 +000000758 000017760 000005899 D|088236825 090847303 +000000758 000023425 000012170 D|043067806 040708785 +000000758 000043532 000022791 D|009610110 087076582 +000000758 000153242 000022828 D|043060858 017987998 +000000758 000171941 000056431 D|097040879 097329678 +000000758 000185049 000069465 D|027210901 046332956 +000000758 000186164 000080945 D|052475418 023504694 +000000758 000189980 000102285 D|073353558 073255155 +000000758 000210734 000151252 D|052597306 001642239 +000000758 000224298 000156657 D|069724539 015234479 +000000758 000246329 000178574 D|088774103 048205688 +000000758 000259449 000183688 D|079865782 007495126 +000000758 000270247 000207445 D|032603332 084042350 +000000758 000302415 000238508 D|099897087 072865986 +000000758 000345721 000278957 D|082180541 013189836 +000000758 000364956 000286131 D|062659634 042208007 +000000758 000376578 000301047 D|011349643 040410181 +000000758 000427965 000311692 D|036856191 052208861 +000000758 000435811 000326829 D|077360100 019915681 +000000758 000470301 000346113 D|049037371 046782687 +000000758 000490825 000385067 D|077184079 060023059 +000000758 000493647 000404510 D|099050278 009827912 +000000758 000516948 000418664 D|050122096 038881245 +000000758 000523218 000424320 D|092369090 081414385 +000000758 000531286 000424326 D|082478936 087577027 +000000758 000555550 000430907 D|014674168 069185550 +000000758 000557254 000435296 D|093220618 059443804 +000000758 000558031 000446674 D|070252132 043810063 +000000758 000642533 000493475 D|057958760 000926792 +000000758 000676570 000495049 D|065156171 026114321 +000000758 000708521 000507137 D|017966646 037747327 +000000758 000713195 000543585 D|020971133 010824130 +000000758 000729334 000617751 D|004567063 087948129 +000000758 000770501 000668618 D|050582843 041699380 +000000758 000802448 000673585 D|004847780 093575043 +000000758 000824482 000691309 D|048741917 090760351 +000000758 000833661 000760929 D|065927652 099234534 +000000758 000841354 000776097 D|091140401 092726600 +000000758 000852994 000826764 D|063924305 010918027 +000000758 000896291 000828211 D|063852858 027529515 +000000758 000900075 000831051 D|051253454 045599597 +000000758 000906705 000869841 D|024718796 076047254 +000000758 000933769 000891030 D|013834886 092646461 +000000758 000944759 000892305 D|087622257 030905141 +000000758 000947462 000902708 D|010610085 007616416 +000000758 000948582 000905141 D|007801050 057605478 +000000758 000957200 000918357 D|028614836 072587154 +000000758 000964170 000939585 D|038602920 024092493 +000000758 000978966 000987087 D|081560603 038201878 +000000758 000980788 000990055 D|063955904 034796905 +000000759 000000923 000008709 D|062269394 001642335 +000000759 000011217 000017650 D|044465301 080326830 +000000759 000021325 000041330 D|014560524 080745680 +000000759 000028858 000060359 D|055960590 022067806 +000000759 000043662 000087087 D|073915695 074975603 +000000759 000053894 000110017 D|079842089 091237944 +000000759 000070348 000132412 D|070911610 058270153 +000000759 000080296 000240718 D|041475271 057371045 +000000759 000085820 000291930 D|038761866 094763504 +000000759 000118193 000306986 D|055041464 070122835 +000000759 000128484 000311209 D|072300134 091605331 +000000759 000148878 000338744 D|039367533 034790460 +000000759 000158014 000352507 D|097517260 014924261 +000000759 000164865 000377965 D|003686158 057372901 +000000759 000214453 000403650 D|030989137 061430044 +000000759 000255719 000407387 D|068339699 042818302 +000000759 000271879 000430577 D|028781153 044554981 +000000759 000276525 000467486 D|090719497 075654133 +000000759 000302506 000522485 D|084035003 068926110 +000000759 000328047 000534481 D|079396332 044394504 +000000759 000329453 000550576 D|027727309 047186501 +000000759 000330263 000561960 D|008639544 007293531 +000000759 000347049 000567872 D|021623424 060753658 +000000759 000410687 000580378 D|048275113 067629800 +000000759 000411743 000587241 D|000893522 070027744 +000000759 000428819 000588678 D|094711604 060763427 +000000759 000447277 000619457 D|086700174 039628850 +000000759 000464062 000638724 D|020461289 009663807 +000000759 000485872 000640405 D|006111898 083302871 +000000759 000498614 000653356 D|072457118 030502263 +000000759 000505209 000686331 D|082563825 099111048 +000000759 000512957 000698232 D|027987423 051972537 +000000759 000526461 000702344 D|086034432 008982733 +000000759 000546708 000712492 D|024916369 069526197 +000000759 000592216 000720851 D|084238888 094284187 +000000759 000622704 000727215 D|089204729 074692560 +000000759 000668815 000764222 D|072916352 020032323 +000000759 000689645 000776826 D|009118513 089100517 +000000759 000693153 000781010 D|065614018 019243481 +000000759 000699712 000800492 D|008960564 099497232 +000000759 000703462 000812496 D|030087744 089469087 +000000759 000794163 000814415 D|095507878 086503293 +000000759 000841360 000837929 D|068225896 025018980 +000000759 000846189 000850456 D|025710500 066125751 +000000759 000874201 000885782 D|016112839 098026081 +000000759 000902302 000908647 D|003915942 089322460 +000000759 000916442 000910474 D|091956946 036410683 +000000759 000943297 000911949 D|045413553 049558372 +000000759 000948676 000915225 D|073730612 064833998 +000000759 000974550 000933657 D|069220051 017230789 +000000760 000010124 000019867 D|089461532 052778011 +000000760 000049203 000063525 D|070902163 037588415 +000000760 000058164 000077003 D|091003357 031621100 +000000760 000083559 000090403 D|013153641 082623897 +000000760 000114208 000102643 D|033383301 077574612 +000000760 000149783 000132223 D|081357667 062859751 +000000760 000154199 000186660 D|017819043 039990803 +000000760 000164814 000211801 D|032106098 027222314 +000000760 000186339 000241206 D|007299791 059210949 +000000760 000221031 000245421 D|001266947 039469931 +000000760 000243074 000246979 D|010639418 060129747 +000000760 000317162 000248669 D|003341607 006282804 +000000760 000340912 000252016 D|033795046 046525506 +000000760 000344834 000266502 D|012415233 075055293 +000000760 000346130 000280716 D|091437044 064095425 +000000760 000370232 000336415 D|082241065 078619378 +000000760 000397348 000360097 D|099230602 021669464 +000000760 000405293 000392921 D|035128128 024099178 +000000760 000408427 000434581 D|081013582 013983013 +000000760 000422982 000463660 D|034627383 049459875 +000000760 000426367 000465054 D|017863706 034882333 +000000760 000434567 000515903 D|088606098 051827245 +000000760 000470530 000515905 D|051917641 095905470 +000000760 000472164 000524665 D|065300489 002400992 +000000760 000489569 000526832 D|010398231 042500620 +000000760 000542554 000526881 D|075354416 024765188 +000000760 000552196 000537700 D|015499777 032011081 +000000760 000556718 000599914 D|075808891 069655913 +000000760 000566485 000636185 D|023986365 098001594 +000000760 000577988 000645749 D|030927520 058673067 +000000760 000584944 000677488 D|031351844 049121046 +000000760 000697301 000683643 D|009272385 056212283 +000000760 000735698 000696347 D|054103249 080743428 +000000760 000741673 000755657 D|018266216 020823407 +000000760 000742657 000763025 D|011235898 076382611 +000000760 000762153 000770190 D|073941437 041829948 +000000760 000767336 000781494 D|001659247 085388928 +000000760 000770375 000827203 D|068920186 080494822 +000000760 000778163 000828101 D|073457488 014368347 +000000760 000783892 000846384 D|087515514 088974949 +000000760 000806633 000847945 D|028789932 031389112 +000000760 000833145 000857233 D|037593718 092253511 +000000760 000847980 000895632 D|025102536 009940126 +000000760 000884705 000905048 D|017051651 016160935 +000000760 000921839 000905851 D|077341665 083283166 +000000760 000928330 000922098 D|035045895 025751523 +000000760 000936251 000935316 D|040117978 048597993 +000000760 000977460 000950076 D|076867100 039861500 +000000760 000988328 000973983 D|097658232 057996526 +000000760 000993176 000997399 D|015406615 017565949 +000000761 000011842 000004613 D|049972743 019774231 +000000761 000012535 000017343 D|015939990 084140939 +000000761 000029288 000095943 D|002477309 040951626 +000000761 000037461 000115110 D|046042894 082226908 +000000761 000058160 000143301 D|053321204 079370527 +000000761 000078738 000176474 D|011182561 017994667 +000000761 000152151 000187976 D|045217134 033763967 +000000761 000157479 000224226 D|017781116 020250036 +000000761 000167565 000278548 D|045442711 007103794 +000000761 000167741 000287996 D|046600533 022090214 +000000761 000190116 000311622 D|045790702 014734941 +000000761 000191711 000313846 D|034824862 032700950 +000000761 000211143 000319161 D|016861855 076234915 +000000761 000220585 000324069 D|081940112 078975559 +000000761 000222035 000337588 D|097205943 090163999 +000000761 000261115 000353606 D|051155271 015984071 +000000761 000316939 000413033 D|019023536 011424906 +000000761 000338807 000414564 D|070607088 046012233 +000000761 000383123 000415671 D|008386037 051838672 +000000761 000396417 000427880 D|065058624 032698620 +000000761 000414363 000428072 D|092778737 053371385 +000000761 000431988 000457053 D|010977344 062983506 +000000761 000452739 000466866 D|063917483 002938317 +000000761 000470391 000472506 D|052632213 032260072 +000000761 000493235 000482425 D|017798991 040986470 +000000761 000505662 000495552 D|007344704 057474908 +000000761 000533308 000511795 D|079707243 090825462 +000000761 000534944 000513072 D|069346558 006153520 +000000761 000576749 000607924 D|097753287 015988959 +000000761 000582991 000608864 D|093485114 047316501 +000000761 000585485 000617352 D|054522179 070556766 +000000761 000648117 000655121 D|042309457 092536584 +000000761 000670280 000656911 D|084255288 071177350 +000000761 000684101 000660763 D|040278341 039196713 +000000761 000685850 000699475 D|065403796 021168233 +000000761 000692319 000700272 D|012049502 072113329 +000000761 000706602 000700605 D|042991273 057731058 +000000761 000706747 000746326 D|042763319 033980573 +000000761 000713370 000761636 D|051004830 080291134 +000000761 000765140 000784151 D|039566587 065083567 +000000761 000779003 000819582 D|069265348 023748343 +000000761 000803116 000837110 D|015395207 003265971 +000000761 000821624 000838280 D|049897262 088883694 +000000761 000822286 000842194 D|041789070 023659982 +000000761 000830413 000913684 D|018981652 070203110 +000000761 000839611 000925706 D|039927684 014112895 +000000761 000856312 000968498 D|011826357 026133869 +000000761 000882939 000987880 D|001860659 025387796 +000000761 000906237 000988009 D|020395029 041745872 +000000761 000951496 000992743 D|095196289 061594173 +000000762 000002128 000007874 D|079323886 078141931 +000000762 000047890 000028747 D|053744946 002332308 +000000762 000049386 000099126 D|014918527 068546756 +000000762 000103501 000177292 D|087708634 042659776 +000000762 000138822 000192557 D|001031803 051468220 +000000762 000166596 000237540 D|015262243 004860234 +000000762 000171992 000267416 D|054272327 003428774 +000000762 000193098 000303028 D|084159242 040155208 +000000762 000211631 000319382 D|072722926 070375542 +000000762 000215713 000334902 D|039236740 001208636 +000000762 000228751 000379483 D|093877971 004041553 +000000762 000229109 000428568 D|049434932 074430256 +000000762 000232575 000472035 D|036002729 036518776 +000000762 000332402 000473302 D|025190874 047074948 +000000762 000338187 000478482 D|014795370 078744543 +000000762 000344838 000480936 D|095892736 062694704 +000000762 000374034 000483888 D|023398326 058930312 +000000762 000384402 000503898 D|006268320 083550897 +000000762 000394260 000509543 D|084224147 069637720 +000000762 000418378 000511716 D|080243459 052964185 +000000762 000462218 000517639 D|092688156 004289971 +000000762 000466946 000518934 D|098822043 009488759 +000000762 000476910 000530644 D|063901455 087888497 +000000762 000498974 000541881 D|027446825 048419875 +000000762 000499900 000556318 D|017642341 024940729 +000000762 000501658 000557582 D|058432512 078058510 +000000762 000509910 000574253 D|029419926 054421644 +000000762 000522127 000574737 D|031853349 087737985 +000000762 000569535 000584239 D|006343908 074172510 +000000762 000582799 000600354 D|096918549 031378937 +000000762 000607283 000603451 D|091673548 083524259 +000000762 000618497 000612553 D|059179055 015677181 +000000762 000642681 000614552 D|085908915 081093424 +000000762 000683500 000700678 D|099629197 000545461 +000000762 000689820 000701502 D|060944035 097782719 +000000762 000694709 000706675 D|021868567 046041006 +000000762 000728047 000709862 D|015455778 017901011 +000000762 000750093 000709865 D|089466865 084649038 +000000762 000756505 000717664 D|004924255 036036389 +000000762 000769771 000756863 D|003331304 018452394 +000000762 000834510 000786223 D|049481175 020985350 +000000762 000835041 000786660 D|034070785 012533116 +000000762 000835045 000796585 D|002087383 058044766 +000000762 000864041 000814153 D|050401231 086821000 +000000762 000879077 000843406 D|027579691 076251354 +000000762 000882812 000850317 D|001563930 044284412 +000000762 000882836 000865190 D|052491901 050603691 +000000762 000932735 000879602 D|082009868 012845693 +000000762 000935075 000914002 D|037196890 019725833 +000000762 000965370 000939355 D|024747117 086806827 +000000763 000018773 000020393 D|001543743 019415749 +000000763 000052031 000064571 D|077339289 097387288 +000000763 000063549 000069175 D|054229004 036128811 +000000763 000087417 000102241 D|007357744 040434379 +000000763 000100145 000105352 D|043488444 010804267 +000000763 000102227 000108381 D|073444016 057913030 +000000763 000108256 000126878 D|022167059 093760231 +000000763 000135354 000133799 D|052372379 056821429 +000000763 000161333 000162131 D|023401620 099630233 +000000763 000174349 000188472 D|083130377 079963892 +000000763 000186077 000197323 D|037504959 020574724 +000000763 000191759 000205068 D|076561563 039658851 +000000763 000212762 000216854 D|025038301 018058222 +000000763 000229314 000222251 D|021902740 024725425 +000000763 000233919 000236946 D|023951277 011524208 +000000763 000245873 000259884 D|073820563 008442794 +000000763 000267884 000272576 D|044523505 090315146 +000000763 000289253 000308628 D|001486051 032458560 +000000763 000366457 000317817 D|032750508 054352893 +000000763 000376989 000348846 D|097487906 035361056 +000000763 000412199 000469782 D|082179349 031564807 +000000763 000413715 000484911 D|008059167 095075408 +000000763 000431922 000489269 D|037861281 059567187 +000000763 000440740 000515115 D|098946219 022373509 +000000763 000447452 000519537 D|054028342 032878547 +000000763 000529910 000524728 D|068748188 097039699 +000000763 000537320 000556130 D|074684949 010493768 +000000763 000553899 000574463 D|014808572 080255069 +000000763 000578136 000589132 D|034185633 083711055 +000000763 000589222 000590997 D|028785100 006854688 +000000763 000595817 000604820 D|059673162 092604949 +000000763 000623876 000613685 D|051532324 044078860 +000000763 000631728 000618725 D|057337913 032042034 +000000763 000644906 000638917 D|074664576 089606891 +000000763 000657022 000648151 D|072663746 067874042 +000000763 000660963 000720934 D|090202125 027368471 +000000763 000714751 000726998 D|010286900 051272061 +000000763 000732621 000811952 D|051362083 053133542 +000000763 000739090 000822273 D|016069252 087977643 +000000763 000745890 000823200 D|005592186 075447077 +000000763 000756439 000868682 D|030508650 054889846 +000000763 000760727 000872501 D|021973933 075947611 +000000763 000764559 000880872 D|024629506 029563533 +000000763 000774326 000909295 D|067986748 096402929 +000000763 000781605 000914431 D|082464707 016464612 +000000763 000791870 000919890 D|013500973 009873833 +000000763 000799178 000949261 D|097064575 059030434 +000000763 000802289 000951356 D|038576651 070726869 +000000763 000880603 000980602 D|042681212 051552226 +000000763 000968889 000999678 D|007062964 024217000 +000000764 000002877 000025529 D|094684520 046011721 +000000764 000005687 000048765 D|008576226 067103090 +000000764 000006749 000071231 D|074869902 072869360 +000000764 000024229 000075443 D|067038672 074900362 +000000764 000065502 000114537 D|048368227 097011162 +000000764 000120291 000121337 D|049609290 051947537 +000000764 000138685 000138523 D|084807289 016376615 +000000764 000140843 000168000 D|023163544 018966884 +000000764 000141467 000178582 D|042025618 030228993 +000000764 000185058 000204603 D|029329635 067060022 +000000764 000188292 000223403 D|044103576 046337271 +000000764 000197910 000257907 D|078210640 022549810 +000000764 000207537 000284770 D|057715682 085199255 +000000764 000213452 000294990 D|038103088 007761271 +000000764 000262707 000303943 D|002456218 047194221 +000000764 000275835 000315199 D|050492257 031005443 +000000764 000289766 000380645 D|070928263 016302100 +000000764 000307224 000385220 D|065793874 084418421 +000000764 000312443 000402346 D|098386081 066190757 +000000764 000391989 000403311 D|017574272 008574358 +000000764 000396987 000405614 D|082271704 024676212 +000000764 000408047 000415482 D|001324020 004236920 +000000764 000436788 000426579 D|055694269 049769894 +000000764 000447658 000428471 D|082638356 065669696 +000000764 000489402 000455844 D|010788663 064908501 +000000764 000493605 000469877 D|082019872 087045448 +000000764 000506555 000472282 D|060057755 082360782 +000000764 000508267 000473029 D|091888108 006603563 +000000764 000562300 000502936 D|094895316 056665344 +000000764 000562819 000586371 D|076677734 021684667 +000000764 000565880 000605277 D|083242965 093307506 +000000764 000587546 000610315 D|048115175 066158331 +000000764 000604237 000639549 D|097499066 050803573 +000000764 000609540 000648418 D|033992469 068895705 +000000764 000650395 000652016 D|066138309 035073279 +000000764 000704202 000658557 D|061802512 008053160 +000000764 000710694 000682558 D|090262891 001000588 +000000764 000759667 000703700 D|048200371 036569595 +000000764 000778918 000703744 D|045977509 003997617 +000000764 000781832 000722667 D|061270133 048000946 +000000764 000789016 000757021 D|014916078 086515681 +000000764 000796418 000762790 D|069888625 064928472 +000000764 000809007 000780293 D|074800441 027914517 +000000764 000832181 000823658 D|032152126 026997458 +000000764 000843577 000854628 D|087143819 084263363 +000000764 000844028 000867944 D|057850833 058217630 +000000764 000910551 000898735 D|059458939 033292520 +000000764 000921709 000918659 D|083940534 049034876 +000000764 000972930 000944049 D|069681397 069731654 +000000764 000989648 000963013 D|097331762 032818384 +000000765 000025568 000050520 D|063434335 044876904 +000000765 000031965 000068756 D|081718755 083747888 +000000765 000045849 000090323 D|047480785 041446088 +000000765 000052138 000114732 D|007290021 073868882 +000000765 000072558 000127011 D|083423444 049519441 +000000765 000087841 000127776 D|064831411 029910538 +000000765 000101365 000129045 D|070493993 000964286 +000000765 000107008 000151547 D|046975805 086946460 +000000765 000129299 000164380 D|083687192 094877058 +000000765 000194197 000175519 D|083043665 033155303 +000000765 000195932 000177207 D|014130638 093145281 +000000765 000202298 000178529 D|053680955 090601939 +000000765 000234456 000189199 D|011994760 082230742 +000000765 000293809 000217179 D|086570990 079959762 +000000765 000297662 000226126 D|023638622 028459298 +000000765 000300993 000240139 D|073814024 089689413 +000000765 000301136 000280954 D|037821596 094176381 +000000765 000303341 000290631 D|075450399 060030721 +000000765 000346926 000300905 D|027161233 036258116 +000000765 000354034 000307439 D|043580930 001276374 +000000765 000367977 000309982 D|059127580 042104915 +000000765 000368400 000350326 D|083203372 066945730 +000000765 000400473 000429195 D|082059209 001154277 +000000765 000419031 000440399 D|096564510 016018612 +000000765 000441995 000465774 D|071761093 052229593 +000000765 000447930 000496894 D|068676688 003982153 +000000765 000451233 000563393 D|013905065 021034447 +000000765 000474723 000569873 D|025834308 025218496 +000000765 000482919 000579573 D|002311749 000425307 +000000765 000500692 000604376 D|038039328 031847143 +000000765 000522996 000615661 D|033659693 043884189 +000000765 000536073 000627744 D|025744471 041440012 +000000765 000600218 000634505 D|080993764 044078576 +000000765 000601302 000656902 D|009472142 046793387 +000000765 000620808 000681102 D|042992064 007620782 +000000765 000644455 000717693 D|024560846 060177947 +000000765 000714062 000721262 D|097789511 017205380 +000000765 000751981 000723820 D|097414963 056376136 +000000765 000752493 000757134 D|082419708 022520534 +000000765 000754197 000761788 D|078202188 042287430 +000000765 000771767 000784197 D|072946159 025511983 +000000765 000797732 000791488 D|048739338 001841215 +000000765 000820179 000813033 D|079933262 082797861 +000000765 000841214 000817917 D|060989233 037005719 +000000765 000866061 000849735 D|005424824 019868098 +000000765 000899792 000858348 D|078208192 049963802 +000000765 000903714 000901776 D|029137849 090503321 +000000765 000910031 000977991 D|054807076 092803766 +000000765 000953244 000980996 D|078968330 018905507 +000000765 000955050 000986264 D|020955779 085629675 +000000766 000048811 000056405 D|042427542 002734923 +000000766 000058710 000064670 D|011538151 072212062 +000000766 000064582 000076555 D|025712719 039878277 +000000766 000083905 000077716 D|099674020 068499985 +000000766 000118517 000083735 D|040794285 009230272 +000000766 000155995 000091708 D|032289620 062625498 +000000766 000159154 000115188 D|049090818 054706056 +000000766 000194213 000128253 D|007647880 067425553 +000000766 000203810 000199497 D|003291678 035506007 +000000766 000223069 000204010 D|078125676 080247680 +000000766 000300467 000206245 D|087535394 044022961 +000000766 000335560 000219608 D|073172834 014810624 +000000766 000339599 000230135 D|087355140 055029271 +000000766 000407160 000276704 D|085732635 093327125 +000000766 000417022 000295681 D|007307437 074116014 +000000766 000449995 000296116 D|047701241 037360490 +000000766 000508613 000299129 D|095782215 029580113 +000000766 000518366 000314822 D|093949273 055650096 +000000766 000520470 000322938 D|097002450 098943397 +000000766 000538146 000327794 D|058516306 066917444 +000000766 000542942 000354982 D|014910543 003618535 +000000766 000573521 000410305 D|038968612 040705159 +000000766 000599083 000456840 D|019612269 084446977 +000000766 000605026 000534877 D|036175336 027440490 +000000766 000634636 000543929 D|030246987 045190120 +000000766 000650375 000552655 D|099990146 009444879 +000000766 000650575 000597731 D|099510020 094629673 +000000766 000657431 000640709 D|008012134 037866594 +000000766 000677353 000651042 D|002729781 045302025 +000000766 000677840 000689846 D|063821455 013585944 +000000766 000681979 000737400 D|051950671 019280488 +000000766 000751828 000739773 D|060947071 044796049 +000000766 000765256 000752551 D|098559265 074686577 +000000766 000821662 000755121 D|046592482 040999146 +000000766 000821782 000760549 D|008277414 099308906 +000000766 000846418 000779867 D|029705378 070369449 +000000766 000869601 000783981 D|024498001 081893951 +000000766 000871666 000794075 D|025950610 017279404 +000000766 000887851 000799637 D|014164752 004467898 +000000766 000889527 000810649 D|077663834 021128424 +000000766 000893316 000822388 D|071788690 064091695 +000000766 000905671 000849865 D|092174958 033959881 +000000766 000939669 000866542 D|097671144 039634067 +000000766 000941574 000869497 D|092738115 052407830 +000000766 000942769 000907308 D|005813664 047607386 +000000766 000943020 000919038 D|027590123 078075697 +000000766 000944062 000919517 D|050886047 061307236 +000000766 000949462 000932664 D|034089972 007564809 +000000766 000985718 000990024 D|000207041 012508160 +000000766 000993599 000991177 D|097247325 032282003 +000000767 000012485 000013818 D|016424343 098408009 +000000767 000023705 000016355 D|099874659 059703720 +000000767 000041993 000054027 D|055622268 058727685 +000000767 000051574 000056024 D|086462914 078529842 +000000767 000076197 000061849 D|021184834 006148299 +000000767 000114829 000066454 D|010141684 059574611 +000000767 000131841 000074797 D|063437407 069557820 +000000767 000136699 000085630 D|094958090 018105292 +000000767 000251911 000137686 D|032109791 024315311 +000000767 000252579 000151930 D|000269269 088693073 +000000767 000271315 000177481 D|052208040 074394893 +000000767 000292686 000200157 D|070360424 047390498 +000000767 000309785 000207105 D|014565245 071904579 +000000767 000310487 000224950 D|034993180 095810701 +000000767 000325037 000229227 D|092506744 030747486 +000000767 000350104 000263399 D|032266200 068412054 +000000767 000353512 000272563 D|086185606 097507234 +000000767 000378310 000291526 D|037081268 091169698 +000000767 000388196 000310233 D|020855959 045216451 +000000767 000424731 000311082 D|032092727 059808524 +000000767 000456469 000331281 D|045207031 053850243 +000000767 000478516 000351432 D|003196291 087818566 +000000767 000487877 000375554 D|073034308 048637148 +000000767 000499675 000385772 D|091156457 013869621 +000000767 000504392 000392560 D|097420052 034014483 +000000767 000515989 000397169 D|015540075 010266811 +000000767 000536430 000402977 D|073253119 037817219 +000000767 000540385 000413212 D|022677311 078940269 +000000767 000541610 000445389 D|095444948 086129572 +000000767 000545477 000451607 D|011429344 001639387 +000000767 000546403 000480939 D|007655579 082926756 +000000767 000548360 000528424 D|023630187 049615153 +000000767 000561558 000555140 D|013220579 074310050 +000000767 000620340 000574910 D|083085697 074768957 +000000767 000622493 000576989 D|012089072 017841629 +000000767 000642771 000598624 D|095705096 045205767 +000000767 000673710 000639729 D|012175582 000851351 +000000767 000698973 000699083 D|066652729 005807361 +000000767 000722508 000725416 D|030830856 040899331 +000000767 000770039 000772106 D|020779185 092288234 +000000767 000780109 000777206 D|093320984 012217810 +000000767 000802881 000806343 D|099158871 004112703 +000000767 000804373 000851718 D|000937629 085240481 +000000767 000867452 000859390 D|032264902 033328456 +000000767 000878328 000871201 D|061862890 057985267 +000000767 000902104 000918309 D|046318546 031302896 +000000767 000924433 000946620 D|036653656 007248551 +000000767 000929390 000973757 D|037629708 000371615 +000000767 000931183 000983819 D|076615505 090525583 +000000767 000937046 000997839 D|080734990 045010297 +000000768 000007822 000004230 D|034433031 040313894 +000000768 000014957 000025977 D|020080634 029937072 +000000768 000049420 000026341 D|055433328 036213616 +000000768 000053827 000083472 D|028879385 025054302 +000000768 000077674 000121874 D|066841335 060758720 +000000768 000164185 000169092 D|017798328 036243384 +000000768 000195076 000177471 D|007148188 002236909 +000000768 000200064 000184290 D|095781414 074388422 +000000768 000228682 000201238 D|053217950 004810926 +000000768 000295774 000229703 D|094866924 099182832 +000000768 000313432 000235492 D|006515150 064518407 +000000768 000313519 000272451 D|098408662 039908619 +000000768 000317712 000283071 D|040814805 095732824 +000000768 000318791 000300742 D|064031843 056925362 +000000768 000356866 000306791 D|055905759 058340665 +000000768 000401730 000326518 D|018155370 016081889 +000000768 000413393 000333307 D|071417521 070962819 +000000768 000418380 000360724 D|064503785 016191048 +000000768 000452732 000373686 D|092168411 037593453 +000000768 000483302 000378020 D|020144504 057673062 +000000768 000582546 000380307 D|095369488 017054842 +000000768 000596400 000402884 D|091992753 076069686 +000000768 000598995 000427064 D|048996666 069880491 +000000768 000635235 000491648 D|095547484 053474157 +000000768 000638168 000536194 D|033592603 011586071 +000000768 000680149 000555588 D|048212931 055394837 +000000768 000710149 000572835 D|048703714 069981779 +000000768 000722972 000600595 D|012997047 026245363 +000000768 000741587 000617624 D|017676090 089303730 +000000768 000745553 000632735 D|075752800 079887316 +000000768 000753563 000649656 D|060646545 063034177 +000000768 000769486 000679363 D|062284302 025981792 +000000768 000777611 000694679 D|078153994 058820365 +000000768 000815453 000695168 D|082961693 043410360 +000000768 000817447 000703814 D|033343449 062838964 +000000768 000834863 000707051 D|008781351 013005404 +000000768 000839604 000716023 D|009121502 038217699 +000000768 000869695 000728303 D|046351022 012018282 +000000768 000873692 000762444 D|028208588 080760170 +000000768 000874454 000772575 D|091130729 021371636 +000000768 000898419 000849322 D|071877224 076478345 +000000768 000903109 000855051 D|006870308 053924301 +000000768 000919678 000904917 D|071282266 023984878 +000000768 000943781 000906323 D|094647455 080507240 +000000768 000952286 000931072 D|018566693 051254881 +000000768 000957804 000934066 D|023970600 069762576 +000000768 000975836 000936591 D|056767947 072159659 +000000768 000977182 000974590 D|071614556 054586305 +000000768 000996280 000977098 D|042675135 068308283 +000000768 000997834 000980928 D|070784120 070478045 +000000769 000005844 000012674 D|003837600 096888144 +000000769 000010026 000014339 D|072905988 068865762 +000000769 000054554 000040913 D|076097420 079906876 +000000769 000073843 000060939 D|026167544 000648595 +000000769 000086383 000070996 D|005156394 012723515 +000000769 000091520 000096263 D|071460835 077384639 +000000769 000113553 000170190 D|001148029 096553421 +000000769 000121346 000212981 D|066374437 008384240 +000000769 000140497 000284676 D|014481248 047407161 +000000769 000201233 000302804 D|062900618 024244146 +000000769 000205212 000316369 D|045077476 064279864 +000000769 000266109 000324829 D|097910721 017274120 +000000769 000351875 000327640 D|047034166 035644702 +000000769 000373204 000368843 D|065228326 028086843 +000000769 000383899 000373435 D|092667382 011595057 +000000769 000444179 000410949 D|025414302 091789597 +000000769 000447656 000433406 D|078303759 017752904 +000000769 000450412 000475500 D|098969681 096623767 +000000769 000450531 000495024 D|004682214 020310098 +000000769 000556272 000528917 D|067151752 040063186 +000000769 000584368 000533167 D|017172853 000834035 +000000769 000618652 000562388 D|096419422 001987955 +000000769 000623689 000593374 D|076461515 014883390 +000000769 000646111 000597480 D|084546536 006041598 +000000769 000652508 000612685 D|010651745 096864731 +000000769 000659998 000643346 D|065808991 082536216 +000000769 000681853 000648283 D|055439699 095376876 +000000769 000691626 000652081 D|039222233 086390021 +000000769 000693610 000753073 D|083990060 062747253 +000000769 000704624 000759028 D|094920146 063898319 +000000769 000723601 000770273 D|078194855 033232053 +000000769 000737077 000791628 D|092554637 066636232 +000000769 000797940 000803239 D|041854282 067230018 +000000769 000807572 000824528 D|092492886 075096413 +000000769 000818938 000838365 D|084135659 071922180 +000000769 000829068 000838585 D|000955866 068151951 +000000769 000849989 000842975 D|034380963 068114142 +000000769 000858734 000845141 D|036034755 070555901 +000000769 000876374 000854466 D|070906297 060792215 +000000769 000892484 000857638 D|005522225 075626678 +000000769 000911827 000860174 D|020345174 045312569 +000000769 000922682 000870140 D|061952789 095107967 +000000769 000922989 000901164 D|035882976 009244400 +000000769 000926729 000917497 D|027134957 041609395 +000000769 000950499 000937606 D|094640821 030130542 +000000769 000963453 000965476 D|063905621 012242459 +000000769 000981240 000977330 D|059827089 023816796 +000000769 000989269 000984638 D|040461296 077540735 +000000769 000993872 000991140 D|000840552 098416155 +000000769 000994506 000999692 D|036594099 039897259 +000000770 000041221 000023989 D|002509212 027547257 +000000770 000047518 000029456 D|090012262 052283692 +000000770 000056061 000044780 D|081970704 018298289 +000000770 000057633 000064508 D|004680361 018969828 +000000770 000099091 000073896 D|006508926 068889935 +000000770 000153790 000085817 D|064440597 018130268 +000000770 000173038 000097315 D|061060376 008839478 +000000770 000188218 000125815 D|094253360 087355162 +000000770 000257220 000154128 D|016536438 099376693 +000000770 000270956 000168094 D|071448296 082486251 +000000770 000307666 000178747 D|013683836 031596901 +000000770 000315298 000202119 D|042101806 029634971 +000000770 000366592 000243085 D|054751401 016187267 +000000770 000375669 000260105 D|010845903 073469979 +000000770 000393830 000277395 D|006966681 060509370 +000000770 000405295 000287641 D|017828067 043556406 +000000770 000417263 000290731 D|099562225 015381487 +000000770 000423617 000318387 D|091038040 069859820 +000000770 000441647 000319316 D|047885178 063399633 +000000770 000444870 000337455 D|037048055 016373902 +000000770 000452674 000351173 D|093523322 042462856 +000000770 000463375 000358588 D|004430299 045078492 +000000770 000476522 000362767 D|002204577 078367623 +000000770 000514533 000396580 D|045387778 058450870 +000000770 000534705 000414007 D|081621398 090469539 +000000770 000564458 000427328 D|051773094 031594885 +000000770 000567052 000429954 D|034010685 021781199 +000000770 000652694 000432801 D|018034377 058560799 +000000770 000691417 000442685 D|034195166 011163545 +000000770 000692927 000530422 D|060113183 041832202 +000000770 000708499 000557463 D|071028746 006490416 +000000770 000738970 000597230 D|074628538 041535051 +000000770 000740549 000615567 D|079112940 023831411 +000000770 000769290 000615578 D|060177869 016736926 +000000770 000779189 000626886 D|086300029 026449743 +000000770 000816994 000630769 D|070919739 045378283 +000000770 000835731 000643060 D|019388418 023195952 +000000770 000846003 000645018 D|015271595 058706365 +000000770 000855461 000666873 D|060400329 057742761 +000000770 000873870 000722584 D|023246951 020534934 +000000770 000892722 000730273 D|045740555 049329600 +000000770 000893177 000784305 D|086989490 019627391 +000000770 000916288 000798510 D|005790406 047765350 +000000770 000928078 000804810 D|076587135 085669156 +000000770 000956088 000875641 D|026993374 051682396 +000000770 000958045 000879630 D|051760164 017448760 +000000770 000964111 000912166 D|072766039 008351032 +000000770 000984800 000925037 D|023105805 095217391 +000000770 000990140 000927023 D|045617855 090051610 +000000770 000992231 000990037 D|000057156 020462474 +000000771 000001443 000032766 D|041177502 002477620 +000000771 000006647 000053849 D|023214670 051637671 +000000771 000020633 000066219 D|047102810 056730855 +000000771 000079626 000083710 D|088750960 099243567 +000000771 000081468 000143710 D|024793993 062930935 +000000771 000110652 000144934 D|013253327 073079610 +000000771 000128764 000165127 D|055803524 080040559 +000000771 000144300 000168976 D|011040411 001889390 +000000771 000149159 000207076 D|030530777 067474923 +000000771 000162619 000209260 D|016007650 042397956 +000000771 000207578 000243792 D|013153610 001753268 +000000771 000214161 000273129 D|074737650 049383857 +000000771 000230992 000290538 D|081132318 036534162 +000000771 000236511 000321450 D|077574046 098099685 +000000771 000278779 000380769 D|049771440 062479048 +000000771 000281603 000389008 D|010582151 097621244 +000000771 000285913 000412661 D|068224425 022981740 +000000771 000298642 000455675 D|039957553 068032715 +000000771 000319638 000471960 D|004489409 027454526 +000000771 000321350 000477680 D|090130217 021261856 +000000771 000365916 000516836 D|080097818 087374129 +000000771 000380308 000557355 D|013632654 030659707 +000000771 000423126 000560855 D|094473568 037610692 +000000771 000426773 000570312 D|040147207 096504383 +000000771 000436363 000579992 D|007685475 079097360 +000000771 000444593 000590344 D|029060032 031616876 +000000771 000457109 000592061 D|079344205 025481809 +000000771 000463373 000611718 D|051524515 072827455 +000000771 000481781 000622905 D|091391085 017339538 +000000771 000487219 000635292 D|007308748 041134165 +000000771 000496299 000693863 D|023594575 022998139 +000000771 000508682 000696055 D|065753242 069013607 +000000771 000511989 000697144 D|035299709 068928934 +000000771 000521647 000712341 D|081150240 020420105 +000000771 000524263 000721994 D|052811128 013207004 +000000771 000536618 000764763 D|080457266 046115049 +000000771 000560884 000784121 D|090032724 052479981 +000000771 000562369 000790086 D|073474387 078634417 +000000771 000586172 000793880 D|098076721 091768004 +000000771 000601760 000824937 D|092635406 032077677 +000000771 000627128 000825523 D|027444831 010257946 +000000771 000643153 000827440 D|099054095 036871057 +000000771 000733648 000836541 D|078846810 058790653 +000000771 000750097 000864264 D|099293320 048941884 +000000771 000762934 000878727 D|080322569 047873477 +000000771 000771989 000919805 D|008442760 098930324 +000000771 000802790 000922603 D|005349832 085425939 +000000771 000927204 000930579 D|060636928 033626105 +000000771 000947977 000969329 D|000094598 071460460 +000000771 000970807 000994980 D|066204110 067150309 +000000772 000033487 000007185 D|064690509 071294540 +000000772 000035062 000009754 D|026511329 087814743 +000000772 000058023 000010763 D|072560110 026181344 +000000772 000082835 000036848 D|069800231 017764385 +000000772 000109530 000069587 D|093989119 042328627 +000000772 000113438 000089392 D|067467346 098698414 +000000772 000113826 000108222 D|043473796 050900032 +000000772 000160459 000168652 D|065065971 075195380 +000000772 000182267 000192883 D|078088022 060662119 +000000772 000185896 000214118 D|028513206 006664417 +000000772 000196515 000214487 D|045811273 097175728 +000000772 000220040 000216014 D|009111523 094902738 +000000772 000275807 000237303 D|002159783 025833502 +000000772 000306000 000256829 D|015777235 031679263 +000000772 000311028 000270334 D|006643111 027366864 +000000772 000344559 000341496 D|091740813 039279992 +000000772 000350385 000342245 D|001346034 056201948 +000000772 000365169 000345576 D|007083128 023538492 +000000772 000416982 000349577 D|001185812 093845876 +000000772 000425491 000350804 D|077118944 006119291 +000000772 000447348 000374233 D|068243357 026179539 +000000772 000453688 000382268 D|082878823 072860924 +000000772 000456391 000412179 D|086978124 055592189 +000000772 000461977 000412971 D|064472947 008361877 +000000772 000546561 000422938 D|062084586 054882051 +000000772 000547225 000430712 D|044550991 036834728 +000000772 000555345 000487945 D|011598132 034195002 +000000772 000564209 000494353 D|051607113 060687998 +000000772 000573352 000498322 D|064743140 048283309 +000000772 000579190 000508503 D|099651422 052178910 +000000772 000585460 000513394 D|030163467 004321657 +000000772 000636243 000563150 D|040686006 070355275 +000000772 000640318 000592142 D|078335877 034130377 +000000772 000644742 000594382 D|015009415 078282916 +000000772 000651746 000611485 D|068501264 059743419 +000000772 000689755 000623573 D|096430868 041911404 +000000772 000714909 000631787 D|012921099 020107640 +000000772 000715928 000659512 D|067795864 092953041 +000000772 000769950 000687218 D|087685092 036722318 +000000772 000809811 000715703 D|021294485 034931962 +000000772 000819443 000718671 D|089332931 062709930 +000000772 000821667 000803939 D|074425356 059639044 +000000772 000856520 000811108 D|020234503 030999990 +000000772 000876548 000813573 D|065893432 000172981 +000000772 000891944 000836825 D|056527976 038315336 +000000772 000946902 000844492 D|057425680 001124044 +000000772 000949217 000862401 D|074743456 031748833 +000000772 000973563 000873214 D|028924205 000410721 +000000772 000991867 000905178 D|020180623 034501943 +000000772 000992854 000958256 D|059102851 036172035 +000000773 000007184 000010748 D|026073933 052143779 +000000773 000030826 000019261 D|028925771 047750254 +000000773 000046370 000057404 D|085946576 058535375 +000000773 000054882 000072217 D|092060446 013843457 +000000773 000058398 000107615 D|015622003 028895630 +000000773 000114768 000131881 D|097993013 089689431 +000000773 000119502 000138821 D|055263590 014213561 +000000773 000152904 000148725 D|082470143 066578350 +000000773 000168793 000229340 D|077115525 004060670 +000000773 000278561 000236974 D|009328486 065835460 +000000773 000317612 000244068 D|022270335 069769977 +000000773 000334433 000248125 D|061213986 015532503 +000000773 000342756 000297577 D|083429295 004471510 +000000773 000344050 000304862 D|097849258 090657786 +000000773 000401394 000341454 D|061946387 017819602 +000000773 000411852 000352978 D|068475271 035022982 +000000773 000418922 000353375 D|006839295 041846626 +000000773 000445879 000360157 D|060806251 023995290 +000000773 000481327 000385747 D|018731547 009574330 +000000773 000500544 000394606 D|052649195 035137245 +000000773 000509571 000425358 D|032445270 093892799 +000000773 000512808 000425941 D|082386141 002050185 +000000773 000526402 000431231 D|018783250 072915754 +000000773 000532000 000477264 D|050240574 062748971 +000000773 000544441 000483322 D|076223795 043826987 +000000773 000548103 000530228 D|078214832 086501236 +000000773 000577409 000559166 D|068914988 021661946 +000000773 000581862 000570565 D|047576129 052605016 +000000773 000590284 000580520 D|084698845 054960354 +000000773 000611879 000598634 D|010109144 064670893 +000000773 000635135 000644503 D|038966334 081410188 +000000773 000673666 000647658 D|064201187 076454587 +000000773 000683483 000712269 D|095662238 027411882 +000000773 000695576 000760644 D|019215402 007845295 +000000773 000695636 000760898 D|044102870 094269447 +000000773 000710725 000761473 D|014030058 029066567 +000000773 000746450 000808466 D|048764266 061830236 +000000773 000764358 000828537 D|006737116 051505972 +000000773 000781936 000832296 D|097380216 029551127 +000000773 000853465 000833409 D|012127892 041328566 +000000773 000863159 000851483 D|015107695 032764295 +000000773 000872016 000877361 D|003601296 041568199 +000000773 000878467 000883278 D|035800540 048477334 +000000773 000896011 000893035 D|078437218 019597090 +000000773 000896564 000901607 D|014962898 028018436 +000000773 000937636 000918840 D|028951937 002897516 +000000773 000942241 000930095 D|051175204 081869620 +000000773 000983828 000972918 D|063556383 091847055 +000000773 000987926 000988198 D|011958109 073844159 +000000773 000990000 000990496 D|012360693 074051471 +000000774 000002138 000011774 D|077088116 090280760 +000000774 000007780 000014632 D|076635112 000780844 +000000774 000012559 000029168 D|029871096 049125212 +000000774 000042937 000062422 D|055932984 086790730 +000000774 000048804 000094463 D|084940314 000786673 +000000774 000071259 000136642 D|045803676 065246118 +000000774 000092171 000149101 D|000862966 050386768 +000000774 000117585 000167618 D|086730480 079784120 +000000774 000117692 000175653 D|040425832 086551171 +000000774 000144286 000176877 D|053945264 000645308 +000000774 000160801 000224832 D|041855769 062293769 +000000774 000177097 000231671 D|078169671 003758193 +000000774 000178684 000247409 D|016463362 027940444 +000000774 000223212 000289555 D|081550454 011458041 +000000774 000227686 000298253 D|066665367 055037471 +000000774 000236223 000323445 D|056310158 011331095 +000000774 000241729 000330643 D|063992181 064725356 +000000774 000248407 000340662 D|049586611 092768001 +000000774 000299559 000370095 D|012171813 045773293 +000000774 000302552 000374053 D|015429149 032850470 +000000774 000309640 000376003 D|082164348 096225324 +000000774 000322036 000381259 D|055441361 028172786 +000000774 000322442 000435830 D|047407088 021729593 +000000774 000328126 000436259 D|043321981 076849964 +000000774 000354305 000439745 D|095495064 026363563 +000000774 000365586 000440731 D|097933973 097027570 +000000774 000420068 000443262 D|033792647 042719865 +000000774 000420532 000450709 D|076141966 082693850 +000000774 000422723 000473496 D|005992385 005813490 +000000774 000452098 000484575 D|063131179 089326172 +000000774 000482291 000490420 D|063029370 010796601 +000000774 000497582 000498464 D|009752945 051761211 +000000774 000507704 000551226 D|043421744 046906279 +000000774 000541399 000563238 D|062245018 069452934 +000000774 000545621 000585323 D|026900765 012491445 +000000774 000548735 000587988 D|042134820 091110288 +000000774 000569507 000589435 D|072340662 067870317 +000000774 000622948 000613186 D|024388106 066368243 +000000774 000629786 000696153 D|015577494 043524714 +000000774 000687229 000713275 D|059932886 092017866 +000000774 000687841 000737263 D|066160424 052489417 +000000774 000730244 000765790 D|063057125 025983870 +000000774 000752159 000900940 D|082946827 098834474 +000000774 000775931 000903513 D|049178673 050226988 +000000774 000802545 000904045 D|001170163 025216101 +000000774 000837514 000940051 D|010653790 072106460 +000000774 000851263 000947931 D|080893756 090971380 +000000774 000852018 000961678 D|044852099 093941186 +000000774 000868032 000983903 D|063975307 050804710 +000000774 000991175 000994688 D|088407827 078039370 +000000775 000013514 000004023 D|040429904 032107361 +000000775 000017080 000012872 D|064439100 086352783 +000000775 000024108 000045669 D|018631822 051179543 +000000775 000029302 000069668 D|078532421 054629881 +000000775 000086309 000073627 D|030079122 014919839 +000000775 000109243 000082742 D|034263040 031930466 +000000775 000140749 000088445 D|014545792 064078076 +000000775 000145953 000096527 D|093188631 055915056 +000000775 000154523 000109031 D|091985067 097029311 +000000775 000156009 000110948 D|007225384 008443173 +000000775 000157136 000134755 D|060413490 025713662 +000000775 000169114 000177879 D|054573279 018669906 +000000775 000178477 000194009 D|000545087 023828512 +000000775 000180556 000199230 D|062827354 021018044 +000000775 000188942 000204986 D|089599612 073263658 +000000775 000221764 000216333 D|033728733 081971550 +000000775 000227551 000287701 D|049201941 047718908 +000000775 000252168 000326179 D|010411140 062130590 +000000775 000276561 000329810 D|065356048 034986835 +000000775 000284755 000344344 D|040656324 008498876 +000000775 000310362 000356879 D|018641408 042963243 +000000775 000331756 000381434 D|082819406 099206234 +000000775 000333118 000409870 D|054507640 015393182 +000000775 000372129 000427102 D|056762397 061199320 +000000775 000394368 000434313 D|006389387 032032914 +000000775 000410745 000467864 D|055680731 060177930 +000000775 000463999 000490438 D|030813078 061470334 +000000775 000465077 000544083 D|099141437 025429311 +000000775 000480786 000544733 D|050592706 085207618 +000000775 000507020 000588973 D|097615676 077131965 +000000775 000551651 000589053 D|089254585 042304019 +000000775 000564594 000589789 D|034960474 007182962 +000000775 000582754 000682065 D|028785666 044891780 +000000775 000584778 000688062 D|030171238 041201074 +000000775 000623501 000690001 D|016933056 021475239 +000000775 000626644 000691676 D|033926717 085568530 +000000775 000631027 000702371 D|006688014 092433231 +000000775 000648071 000711713 D|007272253 086993886 +000000775 000656891 000731795 D|035386873 068596309 +000000775 000741468 000750451 D|029701607 036798030 +000000775 000757496 000753818 D|058241301 099968403 +000000775 000805581 000761786 D|028388920 011078047 +000000775 000820339 000764571 D|092405423 040114694 +000000775 000832176 000775325 D|022145245 090428728 +000000775 000843771 000858017 D|011808641 013597369 +000000775 000901127 000862531 D|013936393 070346957 +000000775 000933458 000882700 D|055799510 058017799 +000000775 000940577 000912442 D|013008201 063701529 +000000775 000963426 000921209 D|040863851 096386719 +000000775 000989670 000935950 D|027912628 080792845 +000000776 000002465 000007562 D|029654167 052672976 +000000776 000016728 000007818 D|077294227 068567705 +000000776 000105310 000012464 D|025436177 027209028 +000000776 000118766 000019464 D|036063388 052249855 +000000776 000126750 000040504 D|077026945 050257605 +000000776 000133729 000105759 D|002505157 055941652 +000000776 000156909 000119087 D|027219612 038270004 +000000776 000179064 000152923 D|042850872 050652238 +000000776 000251506 000161303 D|095778286 026930726 +000000776 000278450 000162771 D|029355225 076803665 +000000776 000286691 000212628 D|074649030 082376523 +000000776 000313824 000263835 D|055194563 089574334 +000000776 000348826 000270286 D|078146101 014976259 +000000776 000404800 000293897 D|095378802 092688186 +000000776 000422342 000324091 D|018361393 059765279 +000000776 000426742 000336477 D|037191182 077018263 +000000776 000454376 000341203 D|067017765 022637441 +000000776 000454863 000343544 D|095330029 028574232 +000000776 000475384 000353409 D|082398105 068697556 +000000776 000475573 000356254 D|002224516 066027461 +000000776 000475625 000364415 D|015792504 000861632 +000000776 000516613 000366064 D|046122368 006524079 +000000776 000544072 000367701 D|070424870 069759010 +000000776 000546316 000382130 D|075553444 079191564 +000000776 000558329 000389681 D|021693235 063486664 +000000776 000561618 000434147 D|031553587 078261048 +000000776 000563158 000480299 D|072599120 036260628 +000000776 000608177 000487413 D|091108428 053305981 +000000776 000630857 000499694 D|046455143 020735174 +000000776 000635263 000596623 D|078511617 069231115 +000000776 000637789 000638888 D|086559814 024652473 +000000776 000639160 000652342 D|098939508 024378954 +000000776 000657714 000666563 D|038391203 016684911 +000000776 000660506 000706623 D|088570730 041735732 +000000776 000677166 000714060 D|079359835 031833246 +000000776 000705588 000720920 D|044132856 032682488 +000000776 000712012 000751726 D|031103446 072359089 +000000776 000714223 000754723 D|092244573 024452952 +000000776 000715216 000768078 D|038157327 046678855 +000000776 000747895 000788331 D|059494989 078392865 +000000776 000756370 000807542 D|071606965 018929423 +000000776 000778547 000831431 D|099575509 053816884 +000000776 000822057 000868574 D|014992943 002367682 +000000776 000879732 000880424 D|049071677 017244109 +000000776 000890835 000886231 D|010318037 055709143 +000000776 000920688 000902481 D|043167339 080121717 +000000776 000926309 000931080 D|080950959 093952080 +000000776 000938021 000959572 D|042981736 098303628 +000000776 000948361 000982742 D|048088878 024926351 +000000776 000971987 000986920 D|077363434 061536318 +000000777 000002941 000018349 D|032768159 063323914 +000000777 000035491 000042366 D|000891542 012549320 +000000777 000041945 000055151 D|045684252 041695455 +000000777 000100102 000105731 D|052024354 037060771 +000000777 000108563 000125268 D|077366751 014763079 +000000777 000124949 000187431 D|087136535 059345268 +000000777 000128180 000192450 D|041988033 007986956 +000000777 000142669 000237702 D|089132726 064686933 +000000777 000165917 000241190 D|067589235 042874021 +000000777 000186498 000322730 D|048275134 076652745 +000000777 000209466 000328672 D|053629964 074104168 +000000777 000237785 000334645 D|069569183 080453910 +000000777 000249682 000352710 D|066490798 087398554 +000000777 000252218 000363998 D|039247770 002941235 +000000777 000254524 000371513 D|014002296 057118614 +000000777 000306671 000373082 D|059313231 072416301 +000000777 000308915 000392027 D|085126868 099891881 +000000777 000366743 000394656 D|002024090 081794252 +000000777 000379954 000397251 D|056326511 091110249 +000000777 000399009 000432771 D|048512951 030287949 +000000777 000401792 000460903 D|059847709 001786784 +000000777 000414519 000473503 D|041555287 015416732 +000000777 000464387 000480315 D|014027522 080784653 +000000777 000467508 000492143 D|063054402 048058595 +000000777 000475325 000506804 D|024485872 045867797 +000000777 000480571 000510110 D|088059533 064818967 +000000777 000489393 000562638 D|002166341 058787770 +000000777 000494376 000586540 D|099687891 054221343 +000000777 000504682 000588376 D|061367203 017999485 +000000777 000506434 000625095 D|092963086 044040838 +000000777 000548437 000632714 D|094303635 090024963 +000000777 000579928 000635404 D|088253733 091024911 +000000777 000585196 000654033 D|042131178 026232475 +000000777 000628628 000654624 D|010724836 052795037 +000000777 000668860 000686726 D|009374449 082630559 +000000777 000671709 000686736 D|078057905 084871323 +000000777 000692486 000716285 D|075070689 018930604 +000000777 000726814 000731749 D|041866073 064996215 +000000777 000784584 000748199 D|054933161 069546301 +000000777 000837398 000761563 D|048220339 067369100 +000000777 000840505 000801889 D|042852537 071924666 +000000777 000865697 000846498 D|068759709 052155101 +000000777 000872132 000866672 D|085636976 094686684 +000000777 000881112 000890957 D|048708856 080921027 +000000777 000895966 000891473 D|043327933 029828603 +000000777 000909421 000923577 D|015106526 015208365 +000000777 000951219 000929529 D|099131538 076519113 +000000777 000953304 000932400 D|025105660 029775537 +000000777 000974311 000958142 D|037710792 016520901 +000000777 000979963 000962898 D|049244277 000712814 +000000778 000013337 000038759 D|001081400 066206006 +000000778 000062518 000103600 D|094099010 044962787 +000000778 000066176 000122924 D|012443925 053186254 +000000778 000066419 000126838 D|069552722 008040228 +000000778 000071137 000132101 D|028476517 057634372 +000000778 000085404 000137134 D|038120298 006973549 +000000778 000107004 000150781 D|038851361 066213839 +000000778 000111760 000166513 D|068851620 083716421 +000000778 000116264 000166847 D|008246546 035653219 +000000778 000119120 000169537 D|097088360 012325551 +000000778 000177009 000192091 D|007320040 009891008 +000000778 000178379 000215245 D|076492216 078173442 +000000778 000240134 000222433 D|039363540 003071743 +000000778 000244175 000235370 D|058653663 065278616 +000000778 000247201 000236701 D|025901660 055246398 +000000778 000287568 000281184 D|067031105 033577169 +000000778 000308193 000303063 D|038199657 066400671 +000000778 000341965 000336761 D|097231348 090071315 +000000778 000348511 000370334 D|089676822 036925420 +000000778 000350313 000392213 D|039916286 035412123 +000000778 000352340 000394365 D|042085828 052214086 +000000778 000366149 000437190 D|089976607 062835191 +000000778 000376173 000442402 D|089433523 056807966 +000000778 000377975 000448692 D|031959470 028768669 +000000778 000420904 000544943 D|041162213 022130123 +000000778 000463049 000562167 D|027723588 091002690 +000000778 000475124 000575376 D|042865763 076462409 +000000778 000476335 000585821 D|083822046 074538775 +000000778 000495406 000593358 D|021282206 018881960 +000000778 000542799 000596213 D|052219748 052842094 +000000778 000561289 000606334 D|050031373 039311817 +000000778 000609209 000625191 D|089280794 000768962 +000000778 000610689 000632141 D|070901333 002350473 +000000778 000617470 000647802 D|087128111 014624775 +000000778 000627565 000655253 D|054613042 036897356 +000000778 000630823 000687943 D|025109719 033787350 +000000778 000643629 000728128 D|069490148 062166792 +000000778 000657605 000729969 D|092535987 001093806 +000000778 000666150 000731335 D|065140812 025699213 +000000778 000679774 000760826 D|019283617 020215791 +000000778 000703067 000795444 D|080307605 026017190 +000000778 000735680 000818486 D|099212904 035320168 +000000778 000735738 000860740 D|089152918 025229263 +000000778 000741376 000880528 D|011188845 044943244 +000000778 000840889 000938479 D|080739568 060110838 +000000778 000894795 000939583 D|004993634 047631249 +000000778 000906214 000963138 D|092754004 037554746 +000000778 000937507 000964812 D|083390413 062606500 +000000778 000969048 000987534 D|065279842 020350319 +000000778 000994494 000993790 D|087820223 010806477 +000000779 000007971 000040463 D|080422190 075688707 +000000779 000008339 000059816 D|022652732 082787491 +000000779 000037484 000064742 D|008187355 055464841 +000000779 000041788 000071615 D|011779233 077006243 +000000779 000048300 000091654 D|049098581 084866571 +000000779 000069666 000092252 D|083501937 083207977 +000000779 000070111 000176808 D|016723445 035729124 +000000779 000073865 000184355 D|016761209 009517096 +000000779 000081068 000192445 D|051658907 020027896 +000000779 000082705 000192898 D|032365871 084602509 +000000779 000084674 000206009 D|022854954 065286393 +000000779 000157338 000239264 D|074536189 089890021 +000000779 000160755 000330482 D|049044665 044814495 +000000779 000180740 000346640 D|042444331 037815643 +000000779 000182806 000356569 D|052694401 038865966 +000000779 000193001 000368080 D|057905095 087928861 +000000779 000282549 000384014 D|034338793 031503819 +000000779 000285766 000387036 D|007558884 025919744 +000000779 000287128 000387491 D|066978574 088132244 +000000779 000290142 000409256 D|082816380 033082321 +000000779 000309435 000423979 D|026261914 061889271 +000000779 000332282 000437512 D|050474059 028452870 +000000779 000358067 000497210 D|024228682 038031565 +000000779 000386869 000537923 D|066388033 023013388 +000000779 000404176 000553174 D|099967195 035808070 +000000779 000407874 000567821 D|017284936 081493698 +000000779 000437531 000573424 D|078878462 068792438 +000000779 000449953 000580565 D|012563198 021616279 +000000779 000479494 000618212 D|032238762 024006324 +000000779 000520682 000632417 D|007834922 096758396 +000000779 000602307 000639911 D|054990169 094985065 +000000779 000636773 000680539 D|044659875 049807931 +000000779 000663404 000703007 D|025799578 092222789 +000000779 000688697 000761006 D|049307659 063514513 +000000779 000689223 000774570 D|008182210 026429436 +000000779 000695182 000790640 D|064734214 051303040 +000000779 000695428 000813618 D|001875029 069747318 +000000779 000729572 000843281 D|062148812 098385580 +000000779 000750781 000849403 D|041045838 045744970 +000000779 000753624 000860106 D|098295668 006125929 +000000779 000760976 000861588 D|034933524 078809019 +000000779 000830276 000881250 D|081589087 088887175 +000000779 000911646 000902201 D|067019252 033804443 +000000779 000921289 000920545 D|083360692 031326604 +000000779 000943639 000922859 D|045835002 022693916 +000000779 000962971 000926920 D|015926359 070964531 +000000779 000964914 000951827 D|003904306 025545849 +000000779 000973043 000973561 D|087825794 023741776 +000000779 000973269 000995717 D|010020216 095684980 +000000779 000983333 000997178 D|008260822 000830163 +000000780 000047229 000027637 D|054693917 043412399 +000000780 000104704 000056885 D|014184491 037727909 +000000780 000105920 000097112 D|099759581 006477220 +000000780 000131674 000107316 D|034849989 053231299 +000000780 000134386 000109799 D|036334662 028045151 +000000780 000142155 000126098 D|064684039 075038406 +000000780 000200160 000129176 D|068569100 063803067 +000000780 000215635 000130345 D|041262973 020584924 +000000780 000230057 000134037 D|001657778 052625189 +000000780 000245746 000154881 D|005952376 055917571 +000000780 000246738 000180193 D|063347982 050280919 +000000780 000273200 000180446 D|078392857 053465877 +000000780 000322504 000182908 D|050398572 013111727 +000000780 000347155 000207610 D|078534678 075294898 +000000780 000380268 000294216 D|074018618 082629878 +000000780 000387309 000309641 D|075523314 047926701 +000000780 000396712 000333492 D|092642735 073001532 +000000780 000398970 000346752 D|049013851 096691710 +000000780 000401061 000363295 D|026232449 070151904 +000000780 000405603 000434202 D|032288523 006800805 +000000780 000429232 000485649 D|009281537 003856897 +000000780 000436554 000494439 D|066272358 059712420 +000000780 000444836 000508840 D|022990468 082989605 +000000780 000450310 000517384 D|061207816 033468554 +000000780 000504523 000540989 D|099511980 068323015 +000000780 000557583 000584046 D|085477123 095650983 +000000780 000566606 000592257 D|028767920 006351856 +000000780 000574039 000604296 D|012959179 032329169 +000000780 000584969 000627143 D|077980833 013247460 +000000780 000587140 000629576 D|070545091 095863534 +000000780 000590273 000645446 D|040433433 012932408 +000000780 000610810 000667593 D|041032069 022534743 +000000780 000613342 000669996 D|006313965 099792987 +000000780 000621272 000680809 D|069668125 085327982 +000000780 000658225 000715949 D|092215106 014463597 +000000780 000684107 000749619 D|024546171 098051553 +000000780 000729960 000750317 D|045075034 063699247 +000000780 000749234 000768008 D|043123610 034280502 +000000780 000779087 000785567 D|056054512 059248604 +000000780 000782981 000804992 D|045919466 099459102 +000000780 000803486 000850396 D|020484769 088527088 +000000780 000857187 000882447 D|056781257 019606524 +000000780 000863344 000897457 D|040011943 055044172 +000000780 000878565 000903316 D|071229374 038562776 +000000780 000896565 000910610 D|076037453 097115603 +000000780 000929900 000924034 D|070974032 047809526 +000000780 000933589 000939208 D|075161945 023286140 +000000780 000969364 000943684 D|088629074 072505118 +000000780 000993990 000969024 D|091054561 065734769 +000000780 000997368 000982145 D|067333766 039826884 +000000781 000016842 000018860 D|024103995 026507922 +000000781 000017374 000025173 D|069147579 069155603 +000000781 000026341 000054245 D|040982343 021005758 +000000781 000036774 000080398 D|008140618 015388808 +000000781 000081039 000096001 D|066235665 097885938 +000000781 000086043 000125807 D|050916761 001927853 +000000781 000123354 000150584 D|018327012 023773448 +000000781 000139805 000159716 D|088344492 038968089 +000000781 000144727 000162250 D|062942175 049501632 +000000781 000160736 000199898 D|053094211 014666777 +000000781 000223571 000202284 D|052739067 025248064 +000000781 000224778 000213226 D|006398542 082929244 +000000781 000228636 000246572 D|036924755 065095479 +000000781 000240149 000264703 D|013437541 066399104 +000000781 000244196 000287264 D|007617857 041175133 +000000781 000246321 000296134 D|059364809 024103996 +000000781 000248333 000296592 D|017931667 053038866 +000000781 000273004 000301431 D|015053866 070954970 +000000781 000285199 000302323 D|097232894 037449208 +000000781 000287194 000305990 D|046626608 089116603 +000000781 000339041 000308831 D|080259346 085062598 +000000781 000374220 000334627 D|067838750 067685275 +000000781 000379378 000335837 D|073799266 048631666 +000000781 000393829 000342740 D|037823844 031090284 +000000781 000417988 000347279 D|073556458 005150349 +000000781 000420247 000361850 D|014194113 024093668 +000000781 000427103 000391762 D|068649213 091379092 +000000781 000451161 000410239 D|049862563 000768590 +000000781 000468498 000414806 D|079864907 018301011 +000000781 000472298 000520117 D|041529014 081412615 +000000781 000583442 000525700 D|090495827 085898111 +000000781 000612634 000559073 D|060459482 065617077 +000000781 000617943 000581118 D|068925442 005673606 +000000781 000630959 000591796 D|068261176 001980028 +000000781 000654717 000612138 D|016909714 034164865 +000000781 000714053 000627297 D|071250413 004229077 +000000781 000748468 000652484 D|085376434 083823043 +000000781 000759411 000714095 D|037218588 001353039 +000000781 000790338 000719544 D|049282012 003452573 +000000781 000797075 000730452 D|039336645 044149230 +000000781 000802670 000776511 D|090077422 022532029 +000000781 000804209 000778557 D|096494220 038302025 +000000781 000805194 000825964 D|011397892 029502513 +000000781 000812121 000889144 D|043326791 072911732 +000000781 000880829 000890478 D|000057040 087090224 +000000781 000880983 000893498 D|077485505 084965281 +000000781 000888401 000925161 D|027762899 087895514 +000000781 000929981 000934185 D|033932686 068354089 +000000781 000938049 000961472 D|003461525 082826859 +000000781 000999583 000978809 D|072028190 022645969 +000000782 000039663 000019593 D|081348739 020016541 +000000782 000041850 000054648 D|035271232 082868254 +000000782 000065385 000054967 D|045446493 080058021 +000000782 000079042 000069445 D|052138861 038836164 +000000782 000149127 000078472 D|061809094 073984180 +000000782 000185867 000088160 D|021268417 012787257 +000000782 000190453 000088377 D|001603458 092965400 +000000782 000201979 000102399 D|088785023 012966129 +000000782 000203652 000103116 D|007995883 042186457 +000000782 000209215 000117240 D|081733848 059323359 +000000782 000247590 000120486 D|087916854 001780884 +000000782 000273460 000141826 D|000832639 049743222 +000000782 000322731 000152395 D|076532691 016096524 +000000782 000329887 000161257 D|067054075 074303874 +000000782 000369897 000188561 D|051400215 006350080 +000000782 000396573 000250787 D|063416646 036271181 +000000782 000416328 000256018 D|019896672 027419472 +000000782 000418498 000258856 D|006199096 027087621 +000000782 000431023 000306861 D|011054714 081781158 +000000782 000441289 000310666 D|072541517 032391547 +000000782 000448636 000342146 D|085435529 098909311 +000000782 000457556 000352164 D|019095034 077501217 +000000782 000505285 000428193 D|095842819 071288822 +000000782 000524184 000437686 D|036162956 024535026 +000000782 000537728 000450013 D|041743766 016369919 +000000782 000568294 000513147 D|069097283 024965091 +000000782 000579045 000520792 D|082381599 054543308 +000000782 000581200 000522522 D|099137101 052705628 +000000782 000621922 000539245 D|011954615 081603987 +000000782 000633638 000540207 D|065539821 033069071 +000000782 000643032 000557242 D|096698574 020921065 +000000782 000644325 000577219 D|009059244 077999234 +000000782 000651451 000581609 D|048812294 086399211 +000000782 000682854 000585907 D|013841139 071032673 +000000782 000684529 000621763 D|053244195 068831557 +000000782 000691297 000625505 D|081340337 018064882 +000000782 000701578 000652219 D|003644793 018912118 +000000782 000732687 000659465 D|016010688 023350811 +000000782 000750752 000663327 D|046420372 017985633 +000000782 000793679 000685515 D|068211145 008362755 +000000782 000802876 000736236 D|098612486 058515130 +000000782 000831793 000758889 D|085699080 015702712 +000000782 000835036 000802119 D|083809099 059284347 +000000782 000885531 000807021 D|026893396 007036611 +000000782 000916086 000868786 D|062835149 047841144 +000000782 000943304 000882998 D|094524146 008453185 +000000782 000948779 000897003 D|016830260 030288575 +000000782 000956624 000905179 D|029007852 001158263 +000000782 000973665 000963973 D|090061984 036818691 +000000782 000985014 000987726 D|083518080 012786025 +000000783 000012307 000007972 D|047071022 097052192 +000000783 000040078 000017551 D|028450698 045896042 +000000783 000040900 000020864 D|053389189 078186455 +000000783 000058027 000070389 D|055279691 060543440 +000000783 000073796 000077290 D|082187416 089641751 +000000783 000087076 000095745 D|038423329 079522733 +000000783 000103996 000138883 D|001480360 011335923 +000000783 000115062 000183507 D|084469524 061328269 +000000783 000143301 000190387 D|043754384 095950908 +000000783 000148404 000226743 D|020670666 027489659 +000000783 000151782 000251450 D|079036663 056011152 +000000783 000198574 000266483 D|062575972 022579973 +000000783 000205743 000289406 D|025179740 084097448 +000000783 000210172 000331129 D|076856432 017033427 +000000783 000255498 000362479 D|007324360 034611205 +000000783 000277072 000394815 D|066435869 091565533 +000000783 000290076 000397655 D|075671730 026430584 +000000783 000292955 000419328 D|036058213 048153645 +000000783 000329351 000423795 D|047113081 082231547 +000000783 000372104 000470733 D|025808535 041682205 +000000783 000453778 000474556 D|065247043 000169847 +000000783 000490355 000493752 D|099372668 010065718 +000000783 000500724 000508323 D|025555359 083545528 +000000783 000500753 000511435 D|015877831 089089891 +000000783 000501025 000546797 D|003538152 094259222 +000000783 000530879 000602954 D|048127340 066525710 +000000783 000535285 000622522 D|000226978 065240393 +000000783 000576397 000633992 D|048399351 074665895 +000000783 000608353 000669130 D|048053784 009171302 +000000783 000652730 000670631 D|088627753 089106805 +000000783 000664640 000674452 D|066214611 037932247 +000000783 000707261 000724788 D|005171222 014818880 +000000783 000712922 000748763 D|006696408 019345470 +000000783 000723124 000759842 D|017449160 064633090 +000000783 000725732 000763297 D|026034140 090023819 +000000783 000761736 000787602 D|022744199 056489386 +000000783 000762180 000793122 D|065393017 096171925 +000000783 000770218 000793721 D|026682704 067113996 +000000783 000771671 000814929 D|031311139 028581101 +000000783 000775800 000901394 D|031196088 035848876 +000000783 000807099 000914097 D|041864085 026599043 +000000783 000811013 000917754 D|054157357 054578342 +000000783 000844197 000922964 D|058231620 044398257 +000000783 000861393 000928077 D|070282984 096579385 +000000783 000881515 000931172 D|096728456 089083261 +000000783 000946405 000934654 D|062559071 052363614 +000000783 000955125 000955001 D|039023537 043473460 +000000783 000955649 000960894 D|041228139 033901002 +000000783 000981349 000969348 D|008277127 071556417 +000000783 000984302 000984014 D|004145443 087419161 +000000784 000039629 000004801 D|032104077 049385773 +000000784 000058566 000008755 D|075391687 042611997 +000000784 000066736 000040128 D|012567692 058149762 +000000784 000082463 000050442 D|056521838 098648312 +000000784 000085052 000103537 D|087233645 023629306 +000000784 000103664 000163217 D|086961993 028770102 +000000784 000160079 000167747 D|019918776 001552549 +000000784 000178037 000180187 D|058642674 057292805 +000000784 000194026 000190461 D|055575867 031294556 +000000784 000198731 000212338 D|037342439 055128409 +000000784 000213741 000260118 D|067016354 074147102 +000000784 000266782 000299997 D|060527182 033759833 +000000784 000325643 000333202 D|006146897 040092672 +000000784 000359551 000346966 D|028028438 020103774 +000000784 000374093 000372531 D|056261657 015986531 +000000784 000375722 000373953 D|035486385 088089170 +000000784 000392468 000391279 D|043659319 048853903 +000000784 000416787 000395400 D|062414597 070078119 +000000784 000444931 000418011 D|054462382 027526038 +000000784 000460390 000425025 D|097978479 001480607 +000000784 000491908 000433944 D|029165508 097452462 +000000784 000505168 000447101 D|041698033 095952146 +000000784 000526477 000447966 D|005967623 047371163 +000000784 000532925 000490191 D|021292087 021787097 +000000784 000552004 000525119 D|005437863 073915283 +000000784 000552199 000553862 D|084399075 027192829 +000000784 000600655 000568700 D|031832734 065523125 +000000784 000602836 000592585 D|061347328 073409491 +000000784 000620668 000601778 D|019161188 090141679 +000000784 000629274 000602337 D|088093537 074679964 +000000784 000630228 000613386 D|094996131 065748120 +000000784 000635252 000632532 D|073025046 046691635 +000000784 000647793 000688141 D|047530653 061495178 +000000784 000653588 000688412 D|052809992 097897349 +000000784 000689193 000717104 D|068796824 081019292 +000000784 000719365 000752664 D|001503697 047594891 +000000784 000736566 000787692 D|062002576 042199664 +000000784 000757284 000790394 D|078667186 007215850 +000000784 000763385 000809884 D|028583839 062273897 +000000784 000791766 000823642 D|028443336 021863815 +000000784 000808565 000827379 D|079472373 090390335 +000000784 000813272 000846657 D|037030870 003537018 +000000784 000820864 000870618 D|052267846 024930183 +000000784 000855656 000914568 D|018605118 076530228 +000000784 000897806 000939239 D|091411173 054906665 +000000784 000939293 000941243 D|011778681 088813069 +000000784 000948235 000956574 D|009441386 014546471 +000000784 000955748 000981790 D|035921785 046793012 +000000784 000968520 000982027 D|093135739 013279091 +000000784 000995970 000983080 D|028829801 081603278 +000000785 000094593 000002477 D|059437292 044293370 +000000785 000109928 000012482 D|012651194 007314182 +000000785 000115258 000025929 D|085718138 068339347 +000000785 000134204 000073888 D|005735055 058657870 +000000785 000156743 000094067 D|010323104 070346570 +000000785 000190853 000094777 D|064447441 085931203 +000000785 000228772 000123953 D|071537139 025259635 +000000785 000230964 000162720 D|042815406 032534398 +000000785 000239330 000189897 D|053921015 059158415 +000000785 000295791 000223255 D|064077773 039356976 +000000785 000302792 000265509 D|095172319 009673330 +000000785 000307433 000299200 D|032036593 099907946 +000000785 000324432 000315429 D|061269696 048039593 +000000785 000335598 000369289 D|031543575 011318787 +000000785 000342414 000401877 D|086946629 071683550 +000000785 000343359 000427564 D|009976624 034814930 +000000785 000377351 000518424 D|065859232 025231002 +000000785 000391541 000523478 D|074517318 044362443 +000000785 000408959 000524896 D|046827818 058947549 +000000785 000410087 000569708 D|021977488 074858330 +000000785 000453220 000588007 D|000073092 053040569 +000000785 000466720 000601875 D|093884583 045299135 +000000785 000479007 000621457 D|038426742 010604601 +000000785 000493739 000654088 D|093339833 099171126 +000000785 000596768 000663616 D|011278848 099329753 +000000785 000617114 000671162 D|083308718 094449261 +000000785 000623027 000675342 D|039082659 047397699 +000000785 000652231 000709392 D|009752074 094245224 +000000785 000679287 000710589 D|019234183 004103488 +000000785 000681129 000738344 D|052792115 037540502 +000000785 000698828 000757140 D|077553937 077825641 +000000785 000700700 000757555 D|091994459 033613138 +000000785 000714298 000779254 D|041033262 085805345 +000000785 000724875 000798446 D|093147274 001914500 +000000785 000727515 000827989 D|052797576 070878945 +000000785 000760285 000834260 D|096785037 033787087 +000000785 000763015 000850948 D|071675595 056779407 +000000785 000763737 000853945 D|069980087 026757434 +000000785 000778415 000857959 D|061026321 022338701 +000000785 000795606 000865000 D|000275660 015060102 +000000785 000799749 000870012 D|046224078 007958075 +000000785 000848267 000884102 D|003341127 060116116 +000000785 000873926 000891112 D|070419623 095142194 +000000785 000901547 000892159 D|027956093 061346042 +000000785 000910559 000906425 D|017218901 081691546 +000000785 000943377 000916024 D|094663307 003202062 +000000785 000968684 000936850 D|075534114 075271623 +000000785 000973727 000937269 D|016453334 004581868 +000000785 000979847 000981602 D|055456183 015633798 +000000785 000989116 000990061 D|038553734 021920835 +000000786 000023154 000011766 D|023300438 077059256 +000000786 000032744 000027225 D|082270028 005401768 +000000786 000058435 000034040 D|022057188 084857198 +000000786 000095486 000039320 D|007947745 050877178 +000000786 000106129 000074085 D|047454497 041215506 +000000786 000109530 000082241 D|070335654 047867351 +000000786 000120837 000129375 D|079882249 066454113 +000000786 000155365 000130847 D|015279335 064153841 +000000786 000157762 000200017 D|062401136 073680712 +000000786 000175702 000212479 D|035430427 021458462 +000000786 000208622 000217237 D|024616418 013062673 +000000786 000213985 000219243 D|039737525 067660042 +000000786 000223826 000236806 D|097040968 076982208 +000000786 000233042 000241463 D|005244639 008945224 +000000786 000252188 000252829 D|049453738 068620808 +000000786 000256776 000272878 D|051419381 025112368 +000000786 000279286 000281067 D|064618725 034337046 +000000786 000316327 000284351 D|006630786 007958955 +000000786 000322944 000287742 D|033390494 094730067 +000000786 000340649 000301197 D|052036549 071197636 +000000786 000355014 000324732 D|043274228 074053723 +000000786 000371131 000332652 D|018006943 091918613 +000000786 000393173 000358943 D|098345730 035023644 +000000786 000417924 000402245 D|071697822 011411111 +000000786 000452049 000404110 D|063544050 001279458 +000000786 000457601 000434674 D|095373643 073134322 +000000786 000459174 000437073 D|046048575 038485643 +000000786 000469850 000451895 D|088637630 081629926 +000000786 000523544 000466669 D|035663178 000289052 +000000786 000557016 000503193 D|030604577 044158796 +000000786 000567729 000545309 D|010743874 003169977 +000000786 000570756 000554880 D|005076675 001787968 +000000786 000571812 000589077 D|081322715 026928618 +000000786 000581515 000602931 D|027859547 001501975 +000000786 000585129 000633197 D|030869192 003424745 +000000786 000646730 000662736 D|020499567 053658606 +000000786 000678463 000681065 D|040846083 065176539 +000000786 000681512 000711490 D|000699478 015487714 +000000786 000682968 000719814 D|096049055 007553295 +000000786 000743158 000721179 D|044113248 054879608 +000000786 000780594 000748915 D|077670864 054578156 +000000786 000811385 000797791 D|004951291 086100779 +000000786 000850060 000805759 D|003471740 061630495 +000000786 000869724 000811252 D|015840794 065233184 +000000786 000907697 000821483 D|002983193 090865939 +000000786 000910824 000925416 D|091285300 092757221 +000000786 000919412 000969111 D|037902066 020579421 +000000786 000933025 000975998 D|050928800 055833339 +000000786 000953548 000995978 D|065231168 048489071 +000000786 000973247 000998139 D|052946776 060404687 +000000787 000030138 000013979 D|073080535 077739392 +000000787 000043613 000031548 D|034013938 082953344 +000000787 000050498 000031809 D|061132812 008303441 +000000787 000130183 000062952 D|013502982 032485164 +000000787 000185887 000103365 D|068331628 057194737 +000000787 000187658 000148865 D|051818457 014956798 +000000787 000207005 000200571 D|081580801 056767000 +000000787 000212397 000232583 D|047084250 098058921 +000000787 000214046 000256804 D|080129055 046262889 +000000787 000217782 000270176 D|071118677 047602283 +000000787 000235275 000295906 D|033120273 072900857 +000000787 000241708 000354584 D|010784956 070521893 +000000787 000308098 000366265 D|086812595 052241244 +000000787 000325112 000375854 D|066205883 043545583 +000000787 000365808 000385337 D|039008728 099757829 +000000787 000395763 000427967 D|044078718 079670813 +000000787 000404968 000430100 D|079464612 038902002 +000000787 000444281 000473336 D|086152431 092927081 +000000787 000452284 000482241 D|067979676 029897951 +000000787 000452762 000486148 D|031118906 082610961 +000000787 000473878 000514407 D|018192680 000389493 +000000787 000489843 000536859 D|083864553 044194982 +000000787 000524498 000538699 D|061303928 021176429 +000000787 000595020 000554056 D|073584147 025647310 +000000787 000618217 000571236 D|058344470 084738010 +000000787 000620680 000572126 D|043251692 003751141 +000000787 000623021 000576808 D|073617335 024765761 +000000787 000624100 000584838 D|024464718 022877453 +000000787 000641893 000611277 D|009795484 075460444 +000000787 000648346 000615047 D|013955036 062911833 +000000787 000667984 000645352 D|054412037 044303857 +000000787 000702822 000650906 D|095816805 041777233 +000000787 000726352 000652636 D|024683276 042333789 +000000787 000737672 000706308 D|066393719 033465327 +000000787 000738128 000717009 D|082314283 042884444 +000000787 000759042 000726315 D|027515643 043678076 +000000787 000779716 000778864 D|076988038 004216731 +000000787 000782830 000783481 D|055176473 018860581 +000000787 000825580 000785296 D|028195016 096810163 +000000787 000835136 000791553 D|051368026 027313982 +000000787 000855865 000834527 D|098905835 050395971 +000000787 000930546 000885233 D|057091681 013910662 +000000787 000931366 000888010 D|052142957 000289959 +000000787 000937956 000892144 D|029326664 081190206 +000000787 000965946 000907262 D|044282266 022642916 +000000787 000968413 000936028 D|010892110 093103209 +000000787 000970147 000941736 D|039461919 003047669 +000000787 000981461 000980406 D|085034398 032853280 +000000787 000989488 000982067 D|091938252 031218182 +000000787 000997290 000999611 D|006651579 099118884 +000000788 000024057 000005208 D|048366023 047192655 +000000788 000060915 000015979 D|082896776 093866949 +000000788 000070232 000032147 D|025875652 086557547 +000000788 000122297 000048680 D|093004993 060625064 +000000788 000145742 000066872 D|067547720 054695471 +000000788 000147314 000081135 D|036181913 089144232 +000000788 000148628 000098581 D|056165337 084657692 +000000788 000211081 000142440 D|010322140 049611095 +000000788 000215727 000144099 D|057659843 021662930 +000000788 000217930 000179708 D|067732949 052883299 +000000788 000218992 000189166 D|063836692 020796357 +000000788 000229568 000211536 D|008382363 054924156 +000000788 000248277 000218410 D|077494713 087826218 +000000788 000257907 000275946 D|026288656 084153562 +000000788 000276847 000310185 D|002746203 030437101 +000000788 000279961 000339984 D|087519936 080645990 +000000788 000303094 000397949 D|028391587 093147467 +000000788 000320735 000405190 D|006691435 063677817 +000000788 000325318 000414760 D|069126895 005302336 +000000788 000357718 000419569 D|056669688 029033090 +000000788 000372197 000423109 D|081713921 069877847 +000000788 000383894 000433948 D|037705446 028224730 +000000788 000386861 000442115 D|069162758 072835735 +000000788 000395708 000455300 D|018862286 074496111 +000000788 000410126 000460027 D|042516212 049252309 +000000788 000412994 000468861 D|089766751 075065961 +000000788 000420818 000512720 D|016165172 096819315 +000000788 000464130 000531308 D|061718441 054800718 +000000788 000491740 000546452 D|026195348 021911689 +000000788 000530771 000550286 D|019202751 069361815 +000000788 000562792 000551662 D|025516366 042392737 +000000788 000633076 000562164 D|009207464 019957008 +000000788 000641472 000605293 D|066018368 034379419 +000000788 000648358 000628501 D|067069405 013202862 +000000788 000651983 000647940 D|012555595 058065547 +000000788 000677999 000649349 D|042589486 060447076 +000000788 000682145 000675900 D|058738223 039154748 +000000788 000704342 000677149 D|016692509 011702804 +000000788 000730222 000678942 D|075267816 019566055 +000000788 000747350 000707121 D|020317813 092676006 +000000788 000760915 000838002 D|017029985 064215479 +000000788 000763465 000846600 D|009183409 036613646 +000000788 000812183 000850244 D|054039153 028882430 +000000788 000828192 000855128 D|070795264 051663117 +000000788 000868622 000861418 D|091638704 098056774 +000000788 000877942 000861757 D|038607522 031768564 +000000788 000880112 000893942 D|002919594 063568191 +000000788 000910151 000895336 D|058300884 075217087 +000000788 000915602 000900511 D|076682733 088720325 +000000788 000989079 000975839 D|078997189 061190685 +000000789 000003946 000007252 D|025421682 009930233 +000000789 000014192 000013625 D|019427245 080699602 +000000789 000022249 000023875 D|079111032 019477489 +000000789 000053486 000052523 D|030747813 024386159 +000000789 000054685 000111138 D|068197209 073484213 +000000789 000057711 000119711 D|049653222 033619297 +000000789 000087976 000142269 D|079097270 020796547 +000000789 000092344 000195011 D|052321214 070951506 +000000789 000094472 000207871 D|029378597 079285301 +000000789 000114814 000257656 D|010737173 015785535 +000000789 000121246 000266342 D|024876014 000670644 +000000789 000158883 000276634 D|032471559 059509692 +000000789 000186485 000332908 D|004088241 082012866 +000000789 000210888 000337094 D|060395486 056512089 +000000789 000226965 000347988 D|014225107 002624454 +000000789 000229241 000368880 D|079949225 011838357 +000000789 000232917 000400375 D|060784876 005011692 +000000789 000234128 000411273 D|044095636 038944973 +000000789 000236332 000412802 D|052323041 086767010 +000000789 000252381 000438976 D|079623533 000930411 +000000789 000261974 000447935 D|049325680 091087220 +000000789 000284375 000463587 D|045898406 024411822 +000000789 000300306 000470074 D|004285551 055129434 +000000789 000324459 000547296 D|062154441 034013101 +000000789 000326467 000551358 D|093505441 038059531 +000000789 000349281 000554067 D|010751392 032809080 +000000789 000350664 000600913 D|016991230 072398549 +000000789 000366059 000608237 D|005026491 009744082 +000000789 000366488 000620668 D|010340347 016464710 +000000789 000386038 000678984 D|070561444 089345026 +000000789 000388090 000730400 D|011238067 061918193 +000000789 000416199 000750620 D|027690874 001364046 +000000789 000488935 000758080 D|088851701 035123272 +000000789 000494486 000767267 D|004669300 098476434 +000000789 000501851 000777612 D|067479081 033113072 +000000789 000558004 000818888 D|000688549 000691945 +000000789 000597116 000820209 D|068160410 015403685 +000000789 000612975 000840480 D|088691670 076587848 +000000789 000618089 000855004 D|078440045 086399740 +000000789 000632342 000868335 D|075165240 018379504 +000000789 000675572 000880839 D|086834132 094112887 +000000789 000694564 000881919 D|052669530 048587530 +000000789 000738332 000894831 D|053865467 065994119 +000000789 000765634 000909230 D|062943960 034865619 +000000789 000782481 000943883 D|008130264 052098126 +000000789 000849284 000962640 D|040607706 034029306 +000000789 000853967 000975861 D|029535886 027883406 +000000789 000859201 000985568 D|010953032 068650932 +000000789 000937674 000989119 D|059532862 053093051 +000000789 000990943 000996638 D|010255076 068670457 +000000790 000001745 000016080 D|091708069 093625255 +000000790 000024500 000019565 D|092700131 068837245 +000000790 000025312 000029421 D|090840261 068102222 +000000790 000025576 000043487 D|011572539 089154302 +000000790 000070374 000096963 D|096989844 057258057 +000000790 000115052 000112044 D|078594701 037651667 +000000790 000117046 000156149 D|038469531 049275808 +000000790 000126378 000196841 D|036810618 066166530 +000000790 000147573 000229586 D|085737982 025673911 +000000790 000171369 000246564 D|078188896 088345177 +000000790 000198970 000246813 D|045784244 046888468 +000000790 000206734 000252929 D|081968579 087758034 +000000790 000207894 000254682 D|036500500 006494921 +000000790 000208686 000266802 D|071849972 010792946 +000000790 000215143 000286467 D|084226319 098926536 +000000790 000230684 000309934 D|094077845 015463431 +000000790 000329316 000346773 D|095313361 045428522 +000000790 000338139 000359975 D|000768172 021313705 +000000790 000360763 000384043 D|095638472 059555848 +000000790 000376205 000394295 D|074269033 048696836 +000000790 000436448 000424259 D|089257046 051839406 +000000790 000470006 000426858 D|008954250 085265656 +000000790 000486060 000428184 D|051832825 074269757 +000000790 000506957 000430068 D|044162619 028705152 +000000790 000507073 000441548 D|031803435 006214679 +000000790 000514504 000446237 D|060073073 075683466 +000000790 000517376 000461774 D|035056044 018329042 +000000790 000530585 000482022 D|047170660 082023924 +000000790 000540951 000488356 D|081300426 035108486 +000000790 000562600 000525609 D|097592704 080439239 +000000790 000597499 000546252 D|087002083 071359155 +000000790 000599639 000573540 D|004968999 035075949 +000000790 000615154 000575050 D|069947860 016692314 +000000790 000656071 000596276 D|051446005 053279689 +000000790 000676086 000603736 D|041097515 091152517 +000000790 000695118 000632651 D|080369111 073602916 +000000790 000697229 000636686 D|017714911 064228791 +000000790 000698924 000732334 D|092686149 007136302 +000000790 000743105 000782250 D|085913560 014819632 +000000790 000747324 000837641 D|011598913 002297715 +000000790 000755596 000869007 D|018479555 058751974 +000000790 000844170 000940199 D|042786692 080305052 +000000790 000852399 000943405 D|081628360 025881355 +000000790 000861987 000965953 D|000671267 034142525 +000000790 000862572 000968570 D|025288753 090816151 +000000790 000877760 000973430 D|070784093 028625341 +000000790 000888600 000978120 D|087699381 032202607 +000000790 000912267 000985816 D|095003512 054613858 +000000790 000942705 000987570 D|078479577 040360871 +000000790 000995145 000999737 D|027971223 023795785 +000000791 000005884 000061198 D|052004946 065625884 +000000791 000007117 000069568 D|042614093 068270256 +000000791 000011037 000105388 D|031422695 054585248 +000000791 000011499 000132101 D|053403417 088734514 +000000791 000037116 000150398 D|058902739 025157338 +000000791 000057747 000200439 D|011773370 085277009 +000000791 000076058 000209092 D|081091431 003941099 +000000791 000107656 000220914 D|013108173 060949758 +000000791 000108202 000226275 D|085295791 002236854 +000000791 000137838 000247171 D|038715107 022485883 +000000791 000160265 000258384 D|060434806 070178285 +000000791 000210414 000267098 D|082023229 055228831 +000000791 000212836 000300576 D|027594602 059546485 +000000791 000218497 000324206 D|050582423 042211215 +000000791 000246509 000360216 D|049922025 091780053 +000000791 000262457 000387621 D|030518056 014919827 +000000791 000356456 000396616 D|044958307 023665477 +000000791 000368549 000408590 D|024457775 002232978 +000000791 000377017 000423135 D|061003015 081393209 +000000791 000386870 000423772 D|073071532 068299311 +000000791 000402158 000429462 D|020640935 074265976 +000000791 000408946 000461613 D|013151960 078033976 +000000791 000421226 000471349 D|017126329 064530427 +000000791 000439679 000496898 D|016310026 081952774 +000000791 000441661 000521635 D|007092310 017614946 +000000791 000501807 000551303 D|074394764 095596925 +000000791 000530368 000553749 D|035374464 053061138 +000000791 000562875 000578907 D|084061135 073757979 +000000791 000569837 000619812 D|068856922 049528413 +000000791 000695477 000628178 D|049981094 044250394 +000000791 000698638 000629482 D|010005357 021463304 +000000791 000699729 000639003 D|026000353 078618450 +000000791 000705736 000639027 D|009540411 088584870 +000000791 000723640 000650140 D|063218868 050590294 +000000791 000731868 000675092 D|022846747 038280265 +000000791 000738851 000694733 D|053109452 025380328 +000000791 000757485 000696006 D|097913689 048432397 +000000791 000785240 000704808 D|020371868 068583225 +000000791 000794063 000721485 D|034770543 004904690 +000000791 000798276 000728042 D|024355156 089308792 +000000791 000838295 000735523 D|024491687 025407571 +000000791 000849065 000763149 D|009200416 076412970 +000000791 000858477 000764881 D|030835662 016789535 +000000791 000864275 000773667 D|066258273 055425938 +000000791 000874816 000784527 D|095297793 090331515 +000000791 000903456 000830889 D|020457689 092438237 +000000791 000922814 000843215 D|035012434 053731875 +000000791 000930895 000931467 D|035298636 013850440 +000000791 000964739 000939249 D|099477091 036284590 +000000791 000990221 000960943 D|052875967 093916151 +000000792 000015478 000005956 D|037930018 045410860 +000000792 000026365 000013485 D|012212281 008460365 +000000792 000033651 000029186 D|041644508 045497024 +000000792 000044046 000049057 D|047861948 046680587 +000000792 000072950 000058651 D|056924257 092844285 +000000792 000091547 000104796 D|092990288 044235078 +000000792 000100543 000132951 D|025886683 091812639 +000000792 000146727 000178082 D|014204369 086447306 +000000792 000152097 000188880 D|028175693 093435206 +000000792 000152275 000189870 D|067093816 093971080 +000000792 000169046 000201488 D|007681030 056210518 +000000792 000169994 000209982 D|055064593 088362171 +000000792 000172586 000248334 D|085544852 032447466 +000000792 000233052 000275554 D|007029283 034153580 +000000792 000249554 000294163 D|006105492 001626958 +000000792 000264023 000367807 D|028322790 015257851 +000000792 000310114 000385342 D|057102922 048920656 +000000792 000315936 000445808 D|046007772 013529003 +000000792 000320396 000449179 D|038954615 049667074 +000000792 000337306 000475428 D|034213355 012093790 +000000792 000359233 000525933 D|055049206 092968118 +000000792 000389045 000545623 D|035759874 098897048 +000000792 000420537 000552610 D|005337366 011838072 +000000792 000461229 000559045 D|049439753 073767062 +000000792 000466882 000569110 D|081445976 032771646 +000000792 000498031 000579532 D|088052268 063609683 +000000792 000529179 000582704 D|091720133 009072579 +000000792 000561705 000592233 D|021823587 006149393 +000000792 000573818 000593097 D|033956908 062088397 +000000792 000611284 000609262 D|081087628 056463965 +000000792 000611530 000649649 D|047779152 071636400 +000000792 000666140 000670941 D|017600166 003791205 +000000792 000686868 000671115 D|012593365 025862797 +000000792 000731636 000676859 D|085152123 035938308 +000000792 000737498 000694851 D|031029078 076499908 +000000792 000752880 000699200 D|006432799 085323366 +000000792 000767545 000712263 D|038292424 080207570 +000000792 000791978 000746616 D|046001600 081317786 +000000792 000820253 000784866 D|011788413 033378133 +000000792 000825546 000792459 D|090759716 019765842 +000000792 000853910 000792880 D|015355545 063345902 +000000792 000871254 000814562 D|028370613 057718651 +000000792 000879738 000858367 D|095540297 051827902 +000000792 000908212 000879093 D|095761927 054389960 +000000792 000923681 000887002 D|073249640 065285683 +000000792 000945169 000889104 D|025442615 029895604 +000000792 000961469 000906071 D|043257900 016696340 +000000792 000979400 000925807 D|085714755 048380586 +000000792 000989852 000952876 D|073661621 018907968 +000000792 000999332 000990327 D|040549550 080875212 +000000793 000032536 000038786 D|047045251 050402542 +000000793 000047614 000045230 D|065727236 058364749 +000000793 000051961 000047901 D|072888262 023737770 +000000793 000153133 000059387 D|040744537 007604054 +000000793 000168057 000068294 D|050435506 060962943 +000000793 000175416 000118824 D|062553140 059029646 +000000793 000178195 000122702 D|050343356 080809324 +000000793 000199154 000122907 D|036729832 089854596 +000000793 000205117 000123429 D|013822538 085035061 +000000793 000222153 000144636 D|065275060 081935267 +000000793 000238145 000155297 D|061542467 081648213 +000000793 000254904 000175977 D|012943102 086331244 +000000793 000284250 000184137 D|029092493 005943187 +000000793 000324509 000201897 D|097067326 077349733 +000000793 000360913 000204574 D|048369149 029612637 +000000793 000366077 000218738 D|017452066 021871373 +000000793 000392569 000219651 D|064382283 069012175 +000000793 000410029 000229466 D|002779112 068950008 +000000793 000425267 000244456 D|088965106 016187966 +000000793 000429476 000270830 D|096031075 031174313 +000000793 000430381 000286561 D|016575268 070838381 +000000793 000435667 000291640 D|005944771 009050953 +000000793 000447614 000300486 D|020373146 056082206 +000000793 000455623 000350405 D|011755274 056656086 +000000793 000456880 000364423 D|049162536 037125112 +000000793 000479102 000391803 D|007628682 015590637 +000000793 000492793 000397832 D|004699298 049883447 +000000793 000504635 000414305 D|040247836 028927964 +000000793 000562572 000422495 D|048737703 093508811 +000000793 000576737 000434960 D|097165822 069991847 +000000793 000582542 000520666 D|008002783 010284279 +000000793 000607399 000550389 D|060516457 022796798 +000000793 000671122 000554977 D|009390423 076818348 +000000793 000673787 000559855 D|003652384 054777690 +000000793 000719157 000583160 D|050499042 025328889 +000000793 000752401 000618515 D|061103716 024385289 +000000793 000754427 000624898 D|061788378 054930437 +000000793 000774669 000643084 D|026651202 084659831 +000000793 000826304 000645792 D|061879011 075707366 +000000793 000867380 000700506 D|020218872 075040416 +000000793 000889160 000703661 D|030887661 013705138 +000000793 000898078 000707616 D|070364998 064400441 +000000793 000911591 000715042 D|058071284 061599385 +000000793 000914410 000730261 D|052889693 089630644 +000000793 000918617 000762376 D|064523304 085297730 +000000793 000928179 000864320 D|020754718 021666960 +000000793 000950822 000875469 D|072797509 045503304 +000000793 000959117 000912402 D|090476059 068086494 +000000793 000966853 000927972 D|004126616 090936112 +000000793 000977122 000955824 D|097835085 031428239 +000000794 000024210 000107188 D|030148716 035249208 +000000794 000029128 000113361 D|043904878 035579695 +000000794 000045830 000134693 D|073092892 010061466 +000000794 000076284 000158681 D|001594791 005129357 +000000794 000109214 000218925 D|098746817 070695592 +000000794 000118648 000256395 D|095481530 063821297 +000000794 000121032 000259179 D|041161465 061464797 +000000794 000177952 000276415 D|078907510 087708747 +000000794 000179497 000307179 D|024085970 061592183 +000000794 000188235 000323743 D|023784737 069408492 +000000794 000192849 000353813 D|010166159 004456413 +000000794 000238704 000357305 D|071015516 082321633 +000000794 000242963 000363740 D|002059193 047063730 +000000794 000243035 000377039 D|071956165 034067683 +000000794 000250884 000404143 D|020218452 052389889 +000000794 000259253 000419862 D|056988154 026853834 +000000794 000287125 000430503 D|022871792 042749007 +000000794 000406091 000443836 D|058775425 035030361 +000000794 000423418 000482020 D|065348611 000353865 +000000794 000435186 000516105 D|065977058 005744501 +000000794 000473696 000546479 D|037963929 018603661 +000000794 000474794 000557692 D|007869761 053987579 +000000794 000488562 000568055 D|023717663 019212470 +000000794 000545313 000572889 D|058610176 046548227 +000000794 000548254 000576744 D|016873198 038465068 +000000794 000587587 000587302 D|071254897 045402147 +000000794 000599881 000622175 D|035579725 030215458 +000000794 000606229 000664057 D|091088819 074552028 +000000794 000614455 000669699 D|029815374 071719934 +000000794 000660553 000688039 D|038202824 007351355 +000000794 000694942 000690789 D|017852692 070135158 +000000794 000708467 000701484 D|074802656 063081892 +000000794 000722724 000717361 D|088065744 011602534 +000000794 000729179 000723150 D|073939977 090328017 +000000794 000737707 000723988 D|047139452 050816197 +000000794 000752805 000743888 D|053234075 004081481 +000000794 000753935 000760188 D|056068791 067622559 +000000794 000817096 000764367 D|062254952 098846702 +000000794 000848630 000765698 D|019226017 063065129 +000000794 000862445 000774898 D|059760189 033663592 +000000794 000900045 000810623 D|038291443 083041578 +000000794 000905590 000832649 D|090457466 078048546 +000000794 000917997 000900793 D|079147426 088678079 +000000794 000963540 000926808 D|004306075 033897650 +000000794 000965158 000933436 D|058145655 002779970 +000000794 000967020 000954011 D|098950244 028265376 +000000794 000973431 000981688 D|043730448 007504449 +000000794 000978301 000982279 D|062076707 016437089 +000000794 000980426 000982299 D|002153725 004136324 +000000794 000986949 000982919 D|042533584 009931439 +000000795 000008594 000027653 D|053783223 022820951 +000000795 000009728 000029921 D|052079653 010842910 +000000795 000019574 000031914 D|046424535 000213239 +000000795 000035014 000054045 D|004225478 044066226 +000000795 000040870 000054472 D|072633418 020607875 +000000795 000043667 000066920 D|079043225 015348524 +000000795 000073245 000081273 D|038860510 036300566 +000000795 000082339 000101422 D|040583076 021332705 +000000795 000099673 000105859 D|052002596 049968114 +000000795 000128443 000183448 D|092116612 059010099 +000000795 000135711 000185804 D|088334239 004895154 +000000795 000137287 000219960 D|082177540 091795159 +000000795 000146886 000226452 D|052245399 071729822 +000000795 000152219 000243572 D|096977689 044565448 +000000795 000207342 000293747 D|046692384 093874066 +000000795 000226465 000296505 D|040665660 070284918 +000000795 000274269 000313154 D|054500720 065180672 +000000795 000278778 000334388 D|022510085 069416194 +000000795 000280064 000353043 D|004104455 046834524 +000000795 000290332 000423085 D|032030250 017458223 +000000795 000301811 000440531 D|086221985 036274467 +000000795 000361509 000465001 D|064724401 061174860 +000000795 000382334 000510273 D|079497058 042471761 +000000795 000397806 000511547 D|048803170 054686516 +000000795 000418190 000541641 D|034389027 092910433 +000000795 000446173 000567432 D|006025060 026273647 +000000795 000457481 000572087 D|064706194 040324554 +000000795 000512248 000603970 D|033550687 055671430 +000000795 000522820 000605292 D|049809588 082048163 +000000795 000530899 000611650 D|035979123 022321561 +000000795 000576431 000622390 D|050932432 024217136 +000000795 000576645 000628595 D|086414460 049759127 +000000795 000651338 000637218 D|022113814 062456348 +000000795 000657583 000697669 D|054725709 093991836 +000000795 000676800 000747042 D|088867113 043972319 +000000795 000700822 000808502 D|083698209 098281888 +000000795 000718844 000810895 D|016942223 078056492 +000000795 000740230 000812346 D|033510850 056778428 +000000795 000749340 000821171 D|015258766 083193429 +000000795 000773300 000847769 D|024616209 047282013 +000000795 000780944 000863272 D|051269350 018672156 +000000795 000788794 000875568 D|041218583 075925554 +000000795 000807017 000897550 D|070037101 029533902 +000000795 000830314 000906570 D|070054765 020286819 +000000795 000862438 000910676 D|026060477 048223698 +000000795 000920011 000928452 D|097461259 048955500 +000000795 000925731 000929588 D|088364522 080042468 +000000795 000936464 000930840 D|069063862 036033015 +000000795 000938323 000954969 D|007790006 062292826 +000000795 000941639 000995777 D|065424163 040130351 +000000796 000005248 000006724 D|056048900 016107165 +000000796 000047431 000022465 D|040052011 099333724 +000000796 000101237 000051168 D|025367148 064978902 +000000796 000104781 000054792 D|069626146 023281689 +000000796 000135677 000071551 D|092187023 020281733 +000000796 000166602 000100667 D|081247873 070877445 +000000796 000186808 000118410 D|020346131 012480085 +000000796 000200507 000173887 D|030894422 018640743 +000000796 000212049 000191374 D|069300425 000062708 +000000796 000219921 000214883 D|049466579 032442507 +000000796 000220869 000230810 D|019638967 006236517 +000000796 000245190 000232538 D|010450171 081767539 +000000796 000272061 000234626 D|081026513 097347400 +000000796 000312297 000247940 D|039579944 001559623 +000000796 000373363 000251788 D|035741818 021177656 +000000796 000428105 000252022 D|020911720 052286556 +000000796 000430355 000257700 D|013312137 025697647 +000000796 000458284 000261349 D|029436362 018185862 +000000796 000486803 000270849 D|042440603 097229192 +000000796 000543430 000279291 D|058818397 051277992 +000000796 000560871 000291205 D|064591515 007835751 +000000796 000564636 000291589 D|060044237 018932871 +000000796 000568580 000293054 D|098756446 069558561 +000000796 000597116 000331978 D|084313081 076946746 +000000796 000613463 000428900 D|039555556 094934170 +000000796 000617757 000432500 D|033678049 062303500 +000000796 000626166 000439331 D|054182130 005854031 +000000796 000637128 000448269 D|081877188 084947662 +000000796 000637771 000485326 D|094919593 023429237 +000000796 000645331 000509971 D|029414132 025042179 +000000796 000652551 000525917 D|076297609 000001460 +000000796 000655289 000599264 D|021318167 043464331 +000000796 000669204 000615655 D|020246223 011144248 +000000796 000683136 000645086 D|090321639 018793192 +000000796 000705477 000657076 D|074052464 093071749 +000000796 000720905 000704705 D|019665679 075165159 +000000796 000728689 000705689 D|002895356 096296855 +000000796 000744061 000731976 D|082032053 001075255 +000000796 000748743 000766241 D|051855207 094003815 +000000796 000775363 000784348 D|087053604 077019254 +000000796 000793820 000812954 D|017381847 055513131 +000000796 000801545 000821871 D|034312883 003292288 +000000796 000821217 000823227 D|078061955 074750915 +000000796 000827094 000858615 D|010676486 045512174 +000000796 000832542 000867185 D|008507695 017626489 +000000796 000842064 000895767 D|053522969 017483542 +000000796 000850005 000911364 D|040136180 074707793 +000000796 000880844 000919613 D|093128359 077490441 +000000796 000911271 000931134 D|091577909 083524854 +000000796 000969749 000976802 D|086235801 083563176 +000000797 000002972 000000896 D|005846342 053087880 +000000797 000005761 000019590 D|066135032 032032835 +000000797 000061152 000066539 D|038344824 093687938 +000000797 000132533 000113336 D|057604814 055270047 +000000797 000141579 000129669 D|080744619 011469282 +000000797 000162828 000164789 D|087392365 064796410 +000000797 000166829 000193453 D|015550758 007847977 +000000797 000182275 000200695 D|039486960 069275715 +000000797 000248914 000200743 D|088552275 036148680 +000000797 000269966 000218456 D|048082243 065457433 +000000797 000279138 000231914 D|029274923 039995491 +000000797 000289027 000246237 D|084628988 061829457 +000000797 000303479 000261611 D|007912527 045242403 +000000797 000310446 000328269 D|029883320 019382838 +000000797 000324644 000341200 D|040395105 014105664 +000000797 000348256 000401233 D|021064716 029467365 +000000797 000350965 000426503 D|098152958 056338592 +000000797 000356744 000514207 D|095791939 052564789 +000000797 000374537 000517816 D|063652687 009439713 +000000797 000375440 000530903 D|078674684 007472957 +000000797 000416474 000538002 D|072984490 067860623 +000000797 000430134 000542511 D|068450333 033155381 +000000797 000451008 000548665 D|037909356 010757381 +000000797 000461989 000553203 D|028991701 055178477 +000000797 000532785 000562146 D|092149167 080134155 +000000797 000606790 000593893 D|032538924 039706704 +000000797 000625392 000630934 D|038846141 057047139 +000000797 000640010 000635252 D|095888713 078762918 +000000797 000681388 000636896 D|006688287 019068920 +000000797 000689993 000640999 D|042635266 057380168 +000000797 000703410 000658296 D|070149141 060229688 +000000797 000705224 000666200 D|088293002 070405543 +000000797 000707180 000669355 D|046969929 056925185 +000000797 000713132 000672967 D|004016120 022230263 +000000797 000766648 000681727 D|024550006 043843594 +000000797 000786593 000706785 D|007910579 036711919 +000000797 000821898 000711289 D|091868197 036988276 +000000797 000823185 000718166 D|073299053 064169379 +000000797 000830202 000756699 D|097815517 079129450 +000000797 000835356 000771280 D|009250403 076139261 +000000797 000841305 000772129 D|019107584 080982176 +000000797 000859972 000788314 D|081053396 056400052 +000000797 000876770 000797721 D|049030910 098443934 +000000797 000907999 000805653 D|022307164 031089020 +000000797 000938967 000829597 D|072699063 032550573 +000000797 000960406 000838838 D|063829752 088019216 +000000797 000988712 000876709 D|075837302 062921663 +000000797 000990611 000939877 D|019470396 089235281 +000000797 000992421 000942348 D|029963246 000677524 +000000797 000999358 000995444 D|002705455 061476477 +000000798 000010519 000016457 D|040298909 081649956 +000000798 000046722 000019812 D|038979368 058474671 +000000798 000082061 000041722 D|034466270 046735651 +000000798 000114797 000044322 D|032334879 001935268 +000000798 000132854 000068481 D|053743804 061002107 +000000798 000150807 000069015 D|077097336 011281478 +000000798 000158891 000070797 D|010244954 010467204 +000000798 000162326 000178353 D|090473696 011363387 +000000798 000163372 000182428 D|034015394 027561281 +000000798 000168480 000184997 D|059758837 039909351 +000000798 000178953 000215783 D|025930635 021202128 +000000798 000198555 000241225 D|082964272 081908406 +000000798 000265283 000268915 D|000659329 009077754 +000000798 000266737 000279373 D|057174145 083142224 +000000798 000275573 000290918 D|070876402 078567207 +000000798 000278334 000292855 D|040402907 094945418 +000000798 000281303 000295510 D|072068591 063616755 +000000798 000318251 000313524 D|082287448 036367000 +000000798 000420958 000315570 D|013437973 089193148 +000000798 000471307 000329168 D|070867508 002861870 +000000798 000499159 000330704 D|042764426 088842205 +000000798 000501856 000349888 D|065075791 057317911 +000000798 000515785 000352203 D|075768215 018754976 +000000798 000535027 000367178 D|046575559 033304029 +000000798 000554292 000367188 D|030648008 083194413 +000000798 000561102 000385781 D|079488366 030440560 +000000798 000577081 000388183 D|016096688 081216399 +000000798 000581714 000440055 D|056763639 096413003 +000000798 000586801 000451259 D|049622577 031139621 +000000798 000632774 000495232 D|028013094 008836681 +000000798 000644305 000543312 D|069386812 044928791 +000000798 000645741 000549184 D|008945558 088356514 +000000798 000689106 000566240 D|052642857 057712768 +000000798 000756563 000591634 D|041856794 098200443 +000000798 000774630 000672230 D|038081378 065152735 +000000798 000793174 000730673 D|059102963 010319894 +000000798 000807940 000781527 D|056368715 092531992 +000000798 000807967 000782023 D|078082909 047462304 +000000798 000829952 000810223 D|069455688 094516778 +000000798 000840785 000816491 D|068076092 032149084 +000000798 000847712 000833159 D|012897408 081740607 +000000798 000864796 000862651 D|029044973 004292777 +000000798 000876902 000862920 D|053965250 071575466 +000000798 000878830 000872000 D|075656795 039686580 +000000798 000889377 000926648 D|010818036 036947397 +000000798 000901957 000932892 D|042768937 040671315 +000000798 000916223 000944935 D|057097471 086013178 +000000798 000931188 000951515 D|074749537 007263660 +000000798 000946461 000980846 D|027125608 056689212 +000000798 000965736 000981414 D|071784240 098820529 +000000799 000047457 000022617 D|044172308 077639243 +000000799 000109527 000027380 D|094335656 069812030 +000000799 000119136 000076199 D|038704770 017300636 +000000799 000122859 000077788 D|022553614 007117757 +000000799 000140511 000092103 D|072550868 040170057 +000000799 000142861 000107627 D|075093657 048790736 +000000799 000156601 000114433 D|041028305 039421225 +000000799 000165440 000211193 D|082600421 020107303 +000000799 000194668 000238465 D|024853863 079729170 +000000799 000199006 000246336 D|042335436 083825572 +000000799 000201348 000252012 D|055272919 032463853 +000000799 000235126 000256890 D|064440808 015576344 +000000799 000265891 000314690 D|016960245 060831208 +000000799 000269985 000333763 D|034824388 026962303 +000000799 000333305 000338517 D|090450950 019348969 +000000799 000367515 000361487 D|028272628 030365493 +000000799 000378909 000364556 D|024696856 063760250 +000000799 000381092 000375810 D|027571426 038289671 +000000799 000382661 000376755 D|019736209 053889481 +000000799 000446152 000401816 D|052126962 056805295 +000000799 000468891 000402923 D|011831931 083388609 +000000799 000549415 000449260 D|030284693 004913091 +000000799 000549471 000454011 D|000342333 038607267 +000000799 000557319 000472932 D|035668070 083937974 +000000799 000564840 000473571 D|031421050 022956672 +000000799 000599948 000490542 D|024744898 049049739 +000000799 000614298 000493156 D|040492951 020543577 +000000799 000615400 000548893 D|079024818 064958233 +000000799 000623842 000568634 D|008274872 003311750 +000000799 000644222 000582103 D|028186118 068262682 +000000799 000648144 000589991 D|050919944 025940851 +000000799 000667080 000601430 D|089410363 055321656 +000000799 000679296 000627572 D|075137149 054480445 +000000799 000685768 000689939 D|022582759 072206913 +000000799 000689687 000690040 D|010040311 037243293 +000000799 000731727 000690945 D|014988708 088563137 +000000799 000747263 000730194 D|084607863 075813022 +000000799 000750483 000756547 D|043259186 047917907 +000000799 000762372 000795222 D|019186101 042113689 +000000799 000770461 000799550 D|026777983 087460501 +000000799 000787942 000827429 D|036635355 023130562 +000000799 000797804 000837179 D|055868744 050747227 +000000799 000825413 000843871 D|088316862 025161032 +000000799 000833540 000846601 D|093796235 020761228 +000000799 000849120 000856381 D|031413921 093060408 +000000799 000878015 000857177 D|098976777 092187426 +000000799 000906649 000865396 D|020511946 036018608 +000000799 000939188 000880721 D|082689389 019598221 +000000799 000954326 000915247 D|001121822 014510426 +000000799 000958200 000988204 D|075492136 033325524 +000000800 000006694 000008978 D|082323448 076382631 +000000800 000008948 000024398 D|003839469 055261119 +000000800 000041768 000080386 D|027065722 017686066 +000000800 000158358 000103044 D|052827905 094229250 +000000800 000182933 000122278 D|008834567 050280500 +000000800 000187776 000126981 D|050251969 076977812 +000000800 000188973 000137273 D|056671357 073486042 +000000800 000253116 000151423 D|015528275 065441066 +000000800 000254994 000199753 D|051858527 028167775 +000000800 000258893 000272153 D|065371770 093661596 +000000800 000261911 000292176 D|089844211 013970632 +000000800 000274174 000294825 D|047322151 099050075 +000000800 000319238 000302976 D|044115597 053416428 +000000800 000337529 000308260 D|019178880 088532841 +000000800 000348635 000328324 D|000500891 013188648 +000000800 000389351 000341932 D|070033730 058745376 +000000800 000394986 000417057 D|028116255 032468845 +000000800 000453373 000425791 D|046719985 019456877 +000000800 000460128 000432960 D|071453480 079514314 +000000800 000469967 000462326 D|075059231 055326762 +000000800 000481795 000469401 D|092765477 092412167 +000000800 000491521 000480518 D|005728153 049516226 +000000800 000500563 000487174 D|021274837 062864301 +000000800 000545775 000530716 D|005603081 031866159 +000000800 000562278 000531874 D|062833294 094443956 +000000800 000575907 000541376 D|022604283 020713108 +000000800 000597881 000547796 D|087938725 019979483 +000000800 000616616 000549159 D|008271317 022682639 +000000800 000617598 000612491 D|081077024 047361196 +000000800 000623631 000629178 D|054358785 040206634 +000000800 000638559 000682243 D|035818872 021346418 +000000800 000662508 000682640 D|033681809 013017168 +000000800 000668073 000700510 D|076122359 033821630 +000000800 000692684 000723683 D|063835644 069167698 +000000800 000701567 000751010 D|027759750 009028641 +000000800 000778368 000752305 D|066993410 020297754 +000000800 000799799 000757694 D|083319065 036114046 +000000800 000810337 000827323 D|051501631 070230916 +000000800 000825162 000827922 D|041765943 053005584 +000000800 000853636 000829611 D|072992525 092600850 +000000800 000856464 000900404 D|016999692 055462503 +000000800 000861364 000903718 D|041106327 067271625 +000000800 000871661 000904619 D|008665660 099202222 +000000800 000872713 000909105 D|082515495 016661294 +000000800 000883572 000950213 D|077430791 084967747 +000000800 000917579 000974362 D|038088372 009396850 +000000800 000931063 000995002 D|078587813 052760105 +000000800 000955942 000996756 D|087827097 096725427 +000000800 000965399 000997307 D|064016819 011309008 +000000800 000986885 000998218 D|062517623 086554495 +000000801 000013569 000041735 D|094229141 024104575 +000000801 000013989 000060651 D|036392116 009212714 +000000801 000085448 000091329 D|045227753 091216733 +000000801 000088112 000112108 D|064887117 047335755 +000000801 000089121 000121687 D|048227361 067960273 +000000801 000097783 000129044 D|057209265 099720857 +000000801 000100801 000169019 D|045877969 090833675 +000000801 000138402 000196227 D|061809095 040438356 +000000801 000154348 000215799 D|030635688 082192494 +000000801 000169234 000216316 D|049976252 058024783 +000000801 000182477 000219476 D|014956822 086053043 +000000801 000196810 000224500 D|071197540 058835705 +000000801 000243282 000244044 D|040241702 057919203 +000000801 000245007 000283931 D|092841593 024019839 +000000801 000253422 000289949 D|086016261 067911078 +000000801 000276297 000296349 D|052643010 048526889 +000000801 000279740 000296921 D|041808368 064041462 +000000801 000339769 000301486 D|062037462 047494407 +000000801 000355477 000302599 D|003730055 013522105 +000000801 000355714 000319004 D|092317312 035435791 +000000801 000370004 000360043 D|019229065 052758104 +000000801 000371154 000360206 D|028909816 087987342 +000000801 000424491 000383751 D|036101310 082056725 +000000801 000436448 000398101 D|049498756 080134624 +000000801 000466157 000488036 D|065527555 003895648 +000000801 000518644 000491068 D|036038312 050039901 +000000801 000526053 000495074 D|027140409 074173810 +000000801 000544467 000507476 D|051738174 046711939 +000000801 000574593 000512532 D|033288732 081390618 +000000801 000585737 000523446 D|036879443 036764993 +000000801 000589509 000585325 D|083725618 081198710 +000000801 000660505 000587880 D|069385920 077965791 +000000801 000670305 000605461 D|037080201 091997165 +000000801 000678507 000617065 D|053362761 002090491 +000000801 000702679 000643899 D|044132076 008380225 +000000801 000710746 000650737 D|013538516 079658671 +000000801 000724588 000653292 D|080491548 015061023 +000000801 000738818 000657421 D|044501437 091156537 +000000801 000757363 000659872 D|018811443 095898204 +000000801 000793573 000681213 D|088732641 097295464 +000000801 000819177 000702375 D|044590234 001754373 +000000801 000823191 000749501 D|064943477 060205770 +000000801 000840268 000790938 D|042023070 002274806 +000000801 000862508 000815252 D|018204960 074800072 +000000801 000873999 000854612 D|068623409 025265366 +000000801 000885524 000869859 D|042562871 086669221 +000000801 000943640 000929874 D|050664901 079492525 +000000801 000951143 000968925 D|088666172 069722273 +000000801 000976255 000978314 D|038022211 044786212 +000000801 000976703 000997320 D|058280962 006225890 +000000802 000013102 000053492 D|008793793 045385845 +000000802 000014038 000067515 D|068082021 018249454 +000000802 000033296 000075245 D|014426836 068752662 +000000802 000110511 000088727 D|098518434 043057391 +000000802 000126496 000093064 D|082029874 005094412 +000000802 000132038 000107759 D|097427622 054834331 +000000802 000133091 000111937 D|001864939 026589298 +000000802 000143764 000119249 D|002855232 099501994 +000000802 000184930 000122603 D|086951416 009053423 +000000802 000187499 000136976 D|070416729 033931803 +000000802 000222735 000153363 D|016679757 044590326 +000000802 000228450 000154548 D|044716205 014164792 +000000802 000236078 000155973 D|052739423 001042296 +000000802 000236568 000165395 D|044392475 041375037 +000000802 000239518 000201695 D|061917824 023980819 +000000802 000250223 000205300 D|053336972 004877181 +000000802 000268681 000234579 D|070256729 077207886 +000000802 000292264 000302210 D|084329506 005039186 +000000802 000299776 000304672 D|037693063 056618561 +000000802 000326884 000354628 D|058033197 028852288 +000000802 000339892 000380152 D|062811800 047494703 +000000802 000356344 000406040 D|010850521 043678816 +000000802 000356479 000449758 D|065489424 048362683 +000000802 000358184 000450409 D|084401652 082359285 +000000802 000364018 000496324 D|036855068 006775506 +000000802 000377861 000511175 D|050762514 083925786 +000000802 000411265 000523396 D|075797821 055310524 +000000802 000415313 000541846 D|023032852 009446613 +000000802 000430755 000600862 D|030104014 004605982 +000000802 000458843 000604236 D|010493645 077027830 +000000802 000471555 000633827 D|031248004 007863999 +000000802 000487174 000648952 D|035565398 047580228 +000000802 000489741 000666756 D|031074464 005564597 +000000802 000561581 000673691 D|082819642 026248194 +000000802 000568783 000674781 D|050362090 011877871 +000000802 000575485 000685207 D|096565247 039107560 +000000802 000708046 000688957 D|074245467 061970681 +000000802 000736973 000689293 D|099248463 093768718 +000000802 000742704 000689480 D|003883907 002698292 +000000802 000782787 000690961 D|023103741 076422348 +000000802 000796833 000784878 D|033559004 045314354 +000000802 000803933 000790739 D|005540927 060096639 +000000802 000810808 000841375 D|017167931 018730855 +000000802 000811066 000877464 D|005866213 015845181 +000000802 000847638 000924734 D|044372868 028435182 +000000802 000863406 000927351 D|051320279 051332792 +000000802 000876773 000932186 D|058441381 043552292 +000000802 000922001 000948882 D|063498491 045570591 +000000802 000927347 000950594 D|015692373 027672896 +000000802 000934893 000956960 D|077046007 026261757 +000000803 000061254 000038317 D|093706504 040578238 +000000803 000098030 000043251 D|090131884 018905852 +000000803 000100324 000054085 D|080199281 085798734 +000000803 000104674 000060302 D|059639573 076012618 +000000803 000126197 000061380 D|067119081 054221495 +000000803 000127762 000096778 D|052566952 050682743 +000000803 000137264 000151227 D|014285154 042249639 +000000803 000140926 000187855 D|046775388 044161996 +000000803 000145078 000192440 D|048672172 010305380 +000000803 000160617 000248523 D|092403962 050985656 +000000803 000182295 000252144 D|094450748 050930375 +000000803 000196455 000283229 D|054927678 031771043 +000000803 000236420 000300843 D|067155229 027585266 +000000803 000295297 000308430 D|022605875 011189730 +000000803 000332567 000331557 D|051967116 075204476 +000000803 000359457 000347408 D|008791168 003577470 +000000803 000361511 000347927 D|064007606 011772488 +000000803 000374308 000348090 D|034544985 098011183 +000000803 000388881 000394338 D|087469240 031298899 +000000803 000391023 000403119 D|050076409 092697205 +000000803 000397401 000465026 D|093630474 098379013 +000000803 000443882 000499902 D|079284115 069741801 +000000803 000555296 000525606 D|071116514 096868853 +000000803 000561696 000561175 D|013638061 091210385 +000000803 000573523 000597860 D|060983568 034782612 +000000803 000573574 000613403 D|018696519 006590099 +000000803 000605144 000622661 D|041973024 039169268 +000000803 000647021 000630822 D|061980184 046047869 +000000803 000656883 000632242 D|050569210 087097423 +000000803 000675560 000674903 D|051522646 049738413 +000000803 000692024 000677751 D|019953862 089583201 +000000803 000697092 000693606 D|079512474 068989365 +000000803 000699376 000696591 D|021850614 058649547 +000000803 000728103 000704209 D|042585302 079030851 +000000803 000731869 000721015 D|048927829 012086373 +000000803 000751444 000721899 D|023275887 074395356 +000000803 000795097 000723447 D|068050986 011219059 +000000803 000805971 000751734 D|075869900 071743260 +000000803 000806773 000758878 D|053442661 010755593 +000000803 000819434 000787792 D|095495851 010240399 +000000803 000825300 000793699 D|025017145 035330174 +000000803 000826874 000809377 D|053170982 067826711 +000000803 000854341 000878596 D|005472103 048341869 +000000803 000859739 000913108 D|020920836 033509758 +000000803 000880488 000940578 D|038668965 026937721 +000000803 000940082 000949809 D|005118272 007651155 +000000803 000948942 000952785 D|056242598 004375058 +000000803 000956219 000967683 D|083816523 038329906 +000000803 000971622 000971933 D|060907422 044818648 +000000803 000995436 000985508 D|012720072 086012753 +000000804 000027632 000034605 D|017343227 032750635 +000000804 000034899 000083063 D|087383592 034053177 +000000804 000078814 000090917 D|066396415 049397973 +000000804 000081694 000118591 D|034451672 031993111 +000000804 000112538 000121736 D|030834128 026503637 +000000804 000123696 000146369 D|053356232 009752815 +000000804 000175020 000159164 D|014445351 026683799 +000000804 000190440 000167542 D|082112509 099860449 +000000804 000199550 000172843 D|038589450 094926931 +000000804 000240065 000185339 D|010355207 022018236 +000000804 000256459 000198549 D|027191256 060436080 +000000804 000260506 000204613 D|065486139 075693179 +000000804 000297375 000206224 D|096267572 045168044 +000000804 000304872 000251815 D|097691171 016082269 +000000804 000310087 000272695 D|091720057 017641685 +000000804 000315006 000313303 D|021906877 099180545 +000000804 000336072 000316645 D|016542141 043043794 +000000804 000344262 000320318 D|026533664 064981023 +000000804 000351483 000321003 D|044749603 041359256 +000000804 000354955 000339408 D|010188249 040998920 +000000804 000356335 000357324 D|028582530 068433596 +000000804 000369213 000364739 D|032933256 070420743 +000000804 000418914 000374820 D|048445158 056293857 +000000804 000420706 000381621 D|079629632 075032358 +000000804 000447599 000389036 D|066291066 080577063 +000000804 000479339 000403019 D|076649381 003205477 +000000804 000482472 000430117 D|080795799 073918845 +000000804 000490530 000450200 D|035645499 056267927 +000000804 000491408 000461849 D|073634291 092527593 +000000804 000502531 000474405 D|053619097 039044381 +000000804 000518594 000499523 D|079882562 025126044 +000000804 000519211 000539718 D|065072169 088783162 +000000804 000565282 000614551 D|013304625 077550029 +000000804 000590746 000617393 D|016259090 035917582 +000000804 000641983 000666380 D|068195975 098801172 +000000804 000687024 000677227 D|075511292 072910740 +000000804 000689743 000683553 D|049509695 049099795 +000000804 000691045 000694759 D|057951505 028031643 +000000804 000721963 000724111 D|087562555 076070988 +000000804 000757680 000763640 D|059010619 006439204 +000000804 000759028 000773072 D|076909373 040810612 +000000804 000781600 000845953 D|028667057 064466121 +000000804 000818098 000883780 D|065415808 044643370 +000000804 000845343 000904465 D|081707940 021078624 +000000804 000881511 000907663 D|041866972 043395200 +000000804 000891164 000910053 D|039665715 050180948 +000000804 000908416 000910081 D|004131720 015813304 +000000804 000919665 000912728 D|099878921 044717761 +000000804 000920638 000955597 D|005399881 039062303 +000000804 000955165 000965620 D|017347417 016985772 +000000805 000003119 000024278 D|007907474 015469950 +000000805 000004880 000029948 D|089007093 062488069 +000000805 000064412 000042652 D|061769855 083795957 +000000805 000090709 000047551 D|010839719 029507479 +000000805 000131185 000064133 D|015313010 039467394 +000000805 000160121 000124727 D|053170750 024367120 +000000805 000186844 000151207 D|098827750 004445611 +000000805 000187352 000195592 D|085525281 058373557 +000000805 000188643 000197812 D|046048467 037690197 +000000805 000218385 000213730 D|021439688 075668482 +000000805 000225204 000224473 D|027876541 026140466 +000000805 000249833 000251921 D|016660633 020579813 +000000805 000253211 000254213 D|087073080 057186219 +000000805 000255866 000263090 D|019117121 029206467 +000000805 000260447 000280064 D|096067474 077372816 +000000805 000288827 000314174 D|093381965 088017367 +000000805 000312501 000329159 D|097557956 009903676 +000000805 000326865 000340273 D|013889739 075293606 +000000805 000344822 000341553 D|054659994 096848596 +000000805 000347335 000342678 D|088339085 031259656 +000000805 000390116 000361882 D|008436376 022879083 +000000805 000407791 000498896 D|078590652 062732419 +000000805 000425601 000612840 D|033635185 032612098 +000000805 000447001 000628259 D|028140680 020720694 +000000805 000461090 000648674 D|091006814 064645417 +000000805 000523095 000679129 D|016605767 032193364 +000000805 000565522 000690397 D|068558801 048115375 +000000805 000599894 000699449 D|005466127 000228853 +000000805 000607462 000725386 D|033610095 016407690 +000000805 000635264 000747040 D|007996039 040161559 +000000805 000636440 000747192 D|041539182 055955183 +000000805 000636458 000760510 D|063716416 093948344 +000000805 000647692 000768060 D|058390040 004943426 +000000805 000658758 000790484 D|084824341 044916261 +000000805 000677436 000798074 D|074561326 099862532 +000000805 000712105 000800673 D|098966266 026356272 +000000805 000756390 000807835 D|085059936 040017376 +000000805 000759466 000820658 D|057350391 079039146 +000000805 000771750 000839814 D|025527856 043312351 +000000805 000798867 000841900 D|058733585 080008330 +000000805 000820549 000844571 D|095981605 029176729 +000000805 000832641 000844835 D|081360946 078469693 +000000805 000838403 000879845 D|094385246 039729006 +000000805 000839012 000883890 D|044096698 041213161 +000000805 000875254 000885489 D|013028937 077727214 +000000805 000885359 000917753 D|005006760 076459500 +000000805 000897691 000936537 D|060571250 065617693 +000000805 000911678 000941394 D|046110457 095809699 +000000805 000954441 000959416 D|098775385 088588064 +000000805 000981617 000999489 D|047532625 028621437 +000000806 000076235 000000543 D|066904281 050829850 +000000806 000076877 000008934 D|066029242 093458227 +000000806 000160241 000010206 D|034621433 007976927 +000000806 000170251 000027422 D|014961624 034309885 +000000806 000206367 000070303 D|090464690 014722837 +000000806 000219948 000094333 D|062984354 020179248 +000000806 000301697 000119537 D|032502385 087553988 +000000806 000302875 000140873 D|081908240 062255458 +000000806 000308503 000161184 D|061585813 065785500 +000000806 000317183 000174411 D|096439087 079640909 +000000806 000317906 000178692 D|015694164 057607759 +000000806 000323053 000207248 D|057545987 035715635 +000000806 000372026 000220681 D|034574690 073497401 +000000806 000374850 000275029 D|032247904 059435255 +000000806 000377204 000322408 D|019762797 013816516 +000000806 000388710 000329119 D|013412382 027178104 +000000806 000424477 000330617 D|012574816 053917843 +000000806 000425603 000358054 D|009067681 020241382 +000000806 000429950 000366612 D|012649765 074215201 +000000806 000436242 000442775 D|065465337 098227844 +000000806 000443166 000443352 D|026105223 005567187 +000000806 000447039 000449667 D|007722308 033697867 +000000806 000464768 000454960 D|006270087 093862698 +000000806 000501776 000471861 D|069834065 070508277 +000000806 000530386 000496392 D|012768244 068900314 +000000806 000540109 000500954 D|099836305 084934578 +000000806 000548856 000527802 D|082638115 003925299 +000000806 000556588 000591997 D|009441256 006119033 +000000806 000589037 000600082 D|010869291 075953755 +000000806 000628300 000602000 D|071602965 015852141 +000000806 000651155 000605161 D|005624326 056919028 +000000806 000680895 000655111 D|048704132 060421119 +000000806 000681964 000684292 D|096244192 051861935 +000000806 000702906 000699311 D|089135536 095496188 +000000806 000721515 000702269 D|047639075 096504855 +000000806 000726442 000718686 D|092488869 093803374 +000000806 000732689 000734491 D|050788683 025783512 +000000806 000837602 000739424 D|040128052 033009471 +000000806 000846151 000740123 D|099156982 012440179 +000000806 000851448 000751178 D|067060758 029677925 +000000806 000863456 000771638 D|084794823 004242118 +000000806 000875370 000778937 D|061385314 082131998 +000000806 000879947 000810068 D|032442237 018377066 +000000806 000894861 000854983 D|045909668 008482103 +000000806 000906044 000868880 D|039116175 040225369 +000000806 000913206 000876625 D|052990205 092381742 +000000806 000949874 000914983 D|067113196 048944249 +000000806 000957368 000980660 D|078973310 081590770 +000000806 000964497 000985732 D|092804981 029184136 +000000806 000997573 000993308 D|007331645 008346574 +000000807 000003650 000000915 D|060986213 026366014 +000000807 000009820 000011641 D|038705299 089141271 +000000807 000015930 000058585 D|069782145 057197633 +000000807 000066525 000108047 D|043778462 024617325 +000000807 000137132 000121652 D|082531235 036255859 +000000807 000176422 000127420 D|040492719 024958855 +000000807 000228166 000130306 D|017144829 088721885 +000000807 000250177 000149327 D|049794038 089819903 +000000807 000258893 000176562 D|004169455 005800451 +000000807 000258926 000214566 D|046602076 047286615 +000000807 000283553 000234399 D|070059002 018188737 +000000807 000285293 000264856 D|041768114 086428462 +000000807 000289133 000306368 D|041869277 080788503 +000000807 000298741 000328880 D|063440457 022754784 +000000807 000323332 000329613 D|094330670 013375722 +000000807 000324407 000356866 D|070313242 003245277 +000000807 000343407 000402196 D|004550630 026074489 +000000807 000350849 000402933 D|089699851 004095422 +000000807 000397777 000435215 D|006738295 059138371 +000000807 000412907 000438095 D|018580365 006899845 +000000807 000444614 000449192 D|088817476 083980879 +000000807 000461717 000456934 D|099779024 006705117 +000000807 000464085 000467007 D|046603381 061402188 +000000807 000472747 000468324 D|061416479 049720120 +000000807 000516572 000493718 D|099995854 098517116 +000000807 000520109 000555952 D|020651978 051087932 +000000807 000528371 000590452 D|056033846 053376625 +000000807 000528639 000610467 D|074481146 049631570 +000000807 000554729 000616395 D|079954917 043938653 +000000807 000588700 000632462 D|069717057 086752745 +000000807 000597764 000642822 D|032901195 043130436 +000000807 000619697 000667797 D|011873567 046749447 +000000807 000624795 000668745 D|088464491 071557152 +000000807 000636813 000677712 D|096709128 054523615 +000000807 000656269 000681410 D|010793254 085774876 +000000807 000669167 000682057 D|038999035 022451636 +000000807 000691585 000727404 D|022296058 057578691 +000000807 000696345 000744472 D|027563870 077405831 +000000807 000716484 000772988 D|093891490 099292564 +000000807 000733138 000793849 D|051923739 082757791 +000000807 000744999 000818002 D|008381110 053321391 +000000807 000763300 000838070 D|073432666 021410673 +000000807 000782023 000901748 D|032466897 046782485 +000000807 000786841 000914669 D|014487567 078642816 +000000807 000789009 000920892 D|012774237 027936483 +000000807 000794679 000946911 D|081420725 081189438 +000000807 000803676 000949009 D|090330011 054263884 +000000807 000803716 000969805 D|089758660 051327891 +000000807 000961292 000973141 D|059568603 027412026 +000000807 000980237 000992995 D|041882658 090810650 +000000808 000020832 000009500 D|075830010 094667224 +000000808 000056771 000014607 D|045940387 008428399 +000000808 000070383 000021238 D|083352799 023380224 +000000808 000079294 000026152 D|044317105 068387467 +000000808 000093318 000077952 D|069927356 018122337 +000000808 000096194 000081876 D|021849629 073101171 +000000808 000102676 000113846 D|013392466 086704980 +000000808 000296383 000125559 D|070157587 009832200 +000000808 000300463 000129168 D|034790719 062064899 +000000808 000300639 000162039 D|020862250 070087173 +000000808 000339326 000168213 D|061646343 052122823 +000000808 000348703 000180448 D|084333519 051864814 +000000808 000353331 000218494 D|054085873 017009164 +000000808 000380254 000252664 D|023700942 057903025 +000000808 000386096 000277791 D|014549988 026245284 +000000808 000411835 000323599 D|061789390 062760433 +000000808 000419736 000331258 D|002841281 085771995 +000000808 000421257 000352289 D|029953634 095371080 +000000808 000421815 000358074 D|029495884 091808004 +000000808 000439075 000390103 D|029954370 022876865 +000000808 000457867 000390609 D|043339034 099434644 +000000808 000505196 000464449 D|020927138 035533687 +000000808 000523773 000473990 D|066915495 025322217 +000000808 000530049 000478627 D|094965019 064653159 +000000808 000531709 000488634 D|003456400 008617363 +000000808 000559005 000503966 D|033720783 022044735 +000000808 000610783 000520740 D|045065223 056600306 +000000808 000632969 000541373 D|091499931 027676057 +000000808 000640833 000551807 D|085234557 046462710 +000000808 000643189 000555199 D|026449552 030221023 +000000808 000655395 000570937 D|040017920 024875035 +000000808 000685340 000583005 D|074715950 008670560 +000000808 000685777 000584562 D|085058143 072457042 +000000808 000727253 000601751 D|071997825 050505183 +000000808 000844833 000654570 D|040057748 021996937 +000000808 000847119 000698731 D|014568612 012881702 +000000808 000859398 000701368 D|062133543 006743214 +000000808 000869253 000736658 D|014965308 077053197 +000000808 000875468 000747896 D|048822131 091946856 +000000808 000909732 000749682 D|060374905 097582780 +000000808 000912727 000763220 D|078474191 062555196 +000000808 000924232 000778487 D|057097831 081656644 +000000808 000937895 000815504 D|083954255 094904271 +000000808 000946168 000829555 D|077872306 088688318 +000000808 000951365 000840628 D|001990123 093020777 +000000808 000953732 000894805 D|086211681 017193188 +000000808 000960826 000898211 D|046821819 064737459 +000000808 000963597 000932187 D|037977263 052041969 +000000808 000975684 000934417 D|093645796 086780623 +000000808 000989429 000994457 D|093710473 044584039 +000000809 000003750 000007840 D|039246324 072838625 +000000809 000025417 000035182 D|043328663 037031548 +000000809 000064281 000046606 D|014879825 052103564 +000000809 000093766 000050591 D|097428371 012495727 +000000809 000095115 000086147 D|058365321 090793155 +000000809 000109925 000106547 D|024207038 071629385 +000000809 000155636 000209137 D|050861694 026108895 +000000809 000180019 000210495 D|008350537 030517116 +000000809 000199509 000277797 D|029376723 033183477 +000000809 000206665 000278434 D|006064316 033441118 +000000809 000220080 000312497 D|020042883 005357477 +000000809 000223771 000324653 D|091084189 032941655 +000000809 000255064 000345393 D|038843264 017962199 +000000809 000266911 000352371 D|068145126 072396136 +000000809 000314451 000353181 D|072097968 071476012 +000000809 000334066 000355413 D|056730798 023644124 +000000809 000353604 000363794 D|054616288 059963188 +000000809 000390510 000368813 D|082038834 023039976 +000000809 000405321 000388862 D|064013378 001725463 +000000809 000408632 000390260 D|025737557 019688241 +000000809 000414434 000392293 D|061648536 068014422 +000000809 000423153 000410556 D|085915488 099489463 +000000809 000450515 000539591 D|012966105 033159836 +000000809 000452542 000597531 D|025594130 030156668 +000000809 000458780 000641714 D|095593050 090901632 +000000809 000462759 000653568 D|005361311 089604717 +000000809 000475390 000657982 D|082309314 021278642 +000000809 000476783 000695002 D|097931104 093195644 +000000809 000504763 000698825 D|018077729 057358909 +000000809 000517541 000701655 D|048244088 081366560 +000000809 000522419 000708810 D|009089329 090595930 +000000809 000523524 000717206 D|078082878 032124088 +000000809 000583172 000762932 D|038015662 034635820 +000000809 000654795 000768484 D|023436522 015828319 +000000809 000664142 000771799 D|022934595 025459361 +000000809 000666988 000804999 D|036748215 031160464 +000000809 000680236 000830229 D|028672016 045398831 +000000809 000684387 000855400 D|051978853 026185711 +000000809 000724896 000860559 D|033083801 052298665 +000000809 000747441 000871331 D|025008257 091564639 +000000809 000769848 000877981 D|010701110 053726197 +000000809 000803084 000890613 D|007645178 006829199 +000000809 000812315 000901328 D|090022796 096597914 +000000809 000870642 000903042 D|045305995 070951153 +000000809 000871227 000905363 D|030099408 059220755 +000000809 000912363 000908810 D|088313062 014639646 +000000809 000918305 000919157 D|031824401 023736461 +000000809 000927047 000946764 D|026085796 065690998 +000000809 000955523 000971855 D|048890089 003936901 +000000809 000960830 000998319 D|029825869 082998830 +000000810 000036453 000037239 D|020430656 073318040 +000000810 000055544 000067744 D|016116277 068838413 +000000810 000072710 000094179 D|010123451 012075225 +000000810 000101610 000114089 D|004075498 057888696 +000000810 000139017 000147853 D|007923490 093407957 +000000810 000145697 000156119 D|024479672 021293543 +000000810 000155040 000159645 D|054756339 097236223 +000000810 000173832 000181435 D|041486748 012799235 +000000810 000174344 000203556 D|048828473 020462119 +000000810 000191220 000206746 D|023047320 002562037 +000000810 000250957 000226485 D|044317016 079757319 +000000810 000279735 000233786 D|058557905 057788182 +000000810 000283861 000234631 D|066935117 041469369 +000000810 000323458 000240378 D|022486360 085525437 +000000810 000326610 000256844 D|071452464 018195012 +000000810 000336911 000276769 D|087857468 068670997 +000000810 000339936 000281434 D|036336868 066679847 +000000810 000370464 000309003 D|005080229 093942886 +000000810 000391547 000377091 D|089855700 067281598 +000000810 000398068 000381191 D|092592463 068258648 +000000810 000422316 000430721 D|072597920 053616577 +000000810 000422944 000435590 D|000076231 073195066 +000000810 000456945 000443395 D|029892300 026004012 +000000810 000476155 000458935 D|089279175 087114147 +000000810 000491780 000542378 D|017773606 060546799 +000000810 000509874 000548606 D|074867409 056641362 +000000810 000535216 000572031 D|035059299 090566593 +000000810 000577880 000587256 D|039593774 016212498 +000000810 000587131 000617454 D|024426448 060703094 +000000810 000618224 000628451 D|028688236 093170368 +000000810 000618332 000656402 D|006480451 015575914 +000000810 000626905 000669011 D|096284624 085492432 +000000810 000650741 000685823 D|068714393 078742031 +000000810 000698490 000685853 D|038451008 007443104 +000000810 000708687 000714553 D|007918778 063303975 +000000810 000730279 000753245 D|013408558 062285919 +000000810 000754739 000777130 D|016240360 059882841 +000000810 000757395 000780198 D|003021139 011275577 +000000810 000784189 000787868 D|019031792 004108159 +000000810 000785847 000795766 D|036533502 052953480 +000000810 000791163 000802940 D|054231308 079042325 +000000810 000795651 000807846 D|031416070 053963227 +000000810 000798390 000822787 D|085715502 000129625 +000000810 000848157 000857064 D|026566515 081389779 +000000810 000849024 000918955 D|062439381 013532728 +000000810 000851910 000977658 D|091160785 069214691 +000000810 000888938 000978534 D|019324934 063500805 +000000810 000932711 000984037 D|069727218 014615118 +000000810 000946568 000985161 D|028186824 030135708 +000000810 000947886 000992478 D|036454761 017705554 +000000811 000014407 000102205 D|008181517 020077590 +000000811 000024848 000114771 D|091044591 053419761 +000000811 000025271 000172567 D|072148299 087866065 +000000811 000032831 000192420 D|084346736 064705367 +000000811 000057980 000230377 D|047586528 004476492 +000000811 000067749 000230621 D|020324767 053950085 +000000811 000069909 000235046 D|046304036 068399415 +000000811 000074775 000240583 D|040119249 032696856 +000000811 000085681 000278587 D|035709152 005784432 +000000811 000099740 000300508 D|070291555 035874157 +000000811 000107711 000305707 D|026022953 051391580 +000000811 000111952 000320850 D|085885200 019571248 +000000811 000115208 000334009 D|088622303 045720058 +000000811 000132719 000339389 D|059133410 028029068 +000000811 000153263 000372730 D|018650415 050656069 +000000811 000170000 000391017 D|005867447 013153071 +000000811 000201867 000418668 D|094630475 072629633 +000000811 000242756 000448915 D|002243729 052634106 +000000811 000249753 000459318 D|087316418 074195745 +000000811 000263545 000471592 D|059564384 031868451 +000000811 000264003 000503617 D|022220343 018718979 +000000811 000267461 000505471 D|058648280 061307172 +000000811 000305274 000507710 D|063382342 041252495 +000000811 000307856 000516165 D|059704274 041017384 +000000811 000316572 000531152 D|002509384 097134903 +000000811 000343594 000540483 D|082248864 028985716 +000000811 000349613 000571879 D|050511390 041693098 +000000811 000369042 000574140 D|036327200 067827073 +000000811 000378613 000598778 D|059111606 031267597 +000000811 000409949 000615363 D|053315809 085439804 +000000811 000414940 000630360 D|006364089 035240640 +000000811 000436348 000653638 D|047525665 088653007 +000000811 000478209 000700498 D|006222679 092423914 +000000811 000479354 000703544 D|018370411 039457650 +000000811 000497727 000740486 D|022710086 060459309 +000000811 000519673 000741264 D|075336264 035568478 +000000811 000524052 000787330 D|059742895 066945186 +000000811 000550563 000799637 D|099122185 010915190 +000000811 000583344 000814536 D|079188721 051549779 +000000811 000635655 000831491 D|042822507 086519553 +000000811 000675795 000850260 D|043171027 036839847 +000000811 000733635 000851437 D|097730925 036772222 +000000811 000800642 000863163 D|012623920 087308847 +000000811 000811501 000872870 D|051537494 049916282 +000000811 000853632 000886119 D|060558507 080154469 +000000811 000859470 000888724 D|038555879 041913577 +000000811 000872533 000892610 D|081987063 048552920 +000000811 000880797 000913533 D|068786003 017515202 +000000811 000922187 000989818 D|023283873 046152633 +000000811 000933893 000992326 D|039946847 019335127 +000000812 000012468 000007922 D|024658938 035150750 +000000812 000024940 000023694 D|065688362 051321783 +000000812 000030197 000037383 D|089574335 029557973 +000000812 000034884 000058208 D|021511002 006461151 +000000812 000045650 000090323 D|006663800 013475714 +000000812 000063667 000113267 D|088995246 069700154 +000000812 000074254 000121455 D|004316695 086728457 +000000812 000077947 000141783 D|086700034 005802511 +000000812 000111845 000159314 D|022323274 081383968 +000000812 000119955 000168896 D|022184621 072657241 +000000812 000133412 000180278 D|066336319 069944969 +000000812 000165678 000200204 D|064235697 030290314 +000000812 000180653 000209773 D|008215924 081258777 +000000812 000211121 000224018 D|026048009 049054915 +000000812 000217341 000250745 D|031469153 000333074 +000000812 000224907 000341407 D|043100675 064282545 +000000812 000241448 000379421 D|010640112 086079419 +000000812 000349090 000399167 D|008196005 009845772 +000000812 000364002 000407764 D|027511062 085805366 +000000812 000381086 000418427 D|048269620 051095149 +000000812 000409939 000435920 D|046617883 015636492 +000000812 000427997 000489169 D|013698201 057622577 +000000812 000437748 000496447 D|031822929 099574567 +000000812 000456718 000499327 D|026990229 061950583 +000000812 000496526 000530060 D|046750401 015482730 +000000812 000517153 000556147 D|095447609 051548265 +000000812 000557602 000556650 D|045136347 025993076 +000000812 000570665 000579289 D|058357805 064772835 +000000812 000595863 000580709 D|078368202 091083519 +000000812 000600683 000593113 D|068870220 036605661 +000000812 000614796 000625099 D|020548698 005147950 +000000812 000622324 000641674 D|091939441 087431518 +000000812 000647646 000647885 D|055154144 084245406 +000000812 000672056 000665696 D|093378360 065838545 +000000812 000681283 000668681 D|056313345 002143712 +000000812 000691247 000677355 D|062613545 059707500 +000000812 000767244 000689044 D|039723286 069844294 +000000812 000786679 000695084 D|028936612 058889618 +000000812 000801811 000718069 D|066264060 090402553 +000000812 000810728 000734708 D|017994882 044064367 +000000812 000836983 000736540 D|008654688 041258230 +000000812 000870259 000754491 D|003883872 011545584 +000000812 000881170 000762985 D|006163820 090503405 +000000812 000906443 000780343 D|073162633 025596280 +000000812 000935829 000793290 D|094602768 029906659 +000000812 000940134 000812314 D|005871232 055997915 +000000812 000950182 000830907 D|046134069 083435200 +000000812 000966902 000861105 D|057454055 059164747 +000000812 000995526 000955264 D|051136038 015023493 +000000812 000999304 000992359 D|078258981 003786633 +000000813 000014308 000001043 D|010134136 013977834 +000000813 000103804 000013992 D|022659442 053310209 +000000813 000113590 000031688 D|033055451 077780949 +000000813 000156378 000034081 D|008910940 000055870 +000000813 000158305 000040735 D|085004954 092214537 +000000813 000168820 000087198 D|065830097 035053923 +000000813 000178471 000106407 D|054760675 001316503 +000000813 000182943 000179498 D|082184468 076680333 +000000813 000187345 000190455 D|045418913 092211886 +000000813 000190038 000195553 D|034428387 027747569 +000000813 000226250 000212620 D|019449910 044620205 +000000813 000246068 000243578 D|049213647 019758623 +000000813 000292696 000243868 D|047358348 039449709 +000000813 000306335 000247360 D|003184102 072689805 +000000813 000307393 000300910 D|040692549 059155624 +000000813 000312201 000334425 D|087293196 005261320 +000000813 000324607 000344492 D|003542896 091842647 +000000813 000347422 000344871 D|068972424 058500002 +000000813 000390967 000345632 D|091439626 067573873 +000000813 000391571 000347327 D|048872908 040925735 +000000813 000406106 000403441 D|085577978 017986330 +000000813 000433562 000425612 D|058364346 037320075 +000000813 000434272 000431294 D|096239948 070662990 +000000813 000497045 000455090 D|038722048 089470905 +000000813 000514036 000483799 D|039114130 046257978 +000000813 000514827 000503620 D|074529574 076553134 +000000813 000559082 000515227 D|046953723 009447951 +000000813 000586480 000581201 D|004998109 042148640 +000000813 000591117 000608158 D|006115144 028773595 +000000813 000635287 000609630 D|007340274 064572419 +000000813 000700834 000636920 D|036617370 043762280 +000000813 000731059 000649721 D|022013488 098738439 +000000813 000736658 000682802 D|033353557 088232188 +000000813 000738881 000706003 D|033053651 022564378 +000000813 000745369 000738400 D|026234944 030969524 +000000813 000780536 000753841 D|014769452 039128989 +000000813 000794161 000791141 D|059938542 019978974 +000000813 000795764 000794352 D|037727360 005893845 +000000813 000819008 000797583 D|000571797 058865006 +000000813 000827212 000816187 D|007391949 052423546 +000000813 000836549 000817493 D|005264704 051440574 +000000813 000864271 000830291 D|035862753 045150568 +000000813 000865708 000853836 D|044352309 034885820 +000000813 000874480 000857212 D|073947903 078426413 +000000813 000895189 000862911 D|057077188 019655791 +000000813 000896789 000889332 D|023715858 092103153 +000000813 000915642 000968131 D|097197744 084707793 +000000813 000916323 000976286 D|081068159 065581378 +000000813 000933870 000983867 D|032490241 071906444 +000000813 000984119 000992448 D|087795811 093334252 +000000814 000006678 000036674 D|099993033 013761338 +000000814 000028226 000046573 D|010080867 074711329 +000000814 000028881 000046586 D|085292334 026662811 +000000814 000097782 000069650 D|023489864 089807269 +000000814 000129205 000080440 D|099682685 043380119 +000000814 000130791 000097996 D|086120774 074160741 +000000814 000153660 000145860 D|062434121 098079585 +000000814 000191740 000156987 D|041939287 009356308 +000000814 000217733 000186009 D|076466669 097840752 +000000814 000240388 000190041 D|017583426 089350538 +000000814 000297863 000201584 D|043276759 047966060 +000000814 000337158 000203550 D|014783742 051950539 +000000814 000340381 000244265 D|089985654 032430516 +000000814 000354879 000259110 D|006672196 059548591 +000000814 000359252 000262768 D|030623132 047585409 +000000814 000376440 000267377 D|071719122 090740711 +000000814 000379991 000285568 D|046228064 039493140 +000000814 000409246 000302126 D|025519526 056935325 +000000814 000429457 000319985 D|080972069 090729107 +000000814 000436482 000328288 D|056268478 012859586 +000000814 000438246 000331044 D|037164303 059599553 +000000814 000450072 000333141 D|042659551 009356745 +000000814 000469942 000376555 D|083631477 045153498 +000000814 000478418 000414768 D|011590140 049261903 +000000814 000497677 000471669 D|008596307 036343083 +000000814 000506667 000515313 D|077237320 090897016 +000000814 000523653 000542868 D|017275628 034830972 +000000814 000548014 000561001 D|032676509 012300012 +000000814 000572469 000565919 D|000485795 014044259 +000000814 000578714 000611736 D|078152387 096869936 +000000814 000582605 000620231 D|069481084 004678746 +000000814 000585459 000634171 D|005888363 037201537 +000000814 000588355 000656816 D|026195997 085168382 +000000814 000595965 000657039 D|079740736 084104849 +000000814 000605458 000700953 D|064005278 022467230 +000000814 000657916 000725297 D|046366078 035064057 +000000814 000677082 000725356 D|085508763 048467990 +000000814 000682429 000748818 D|094361654 014059151 +000000814 000685138 000771377 D|099743741 052059929 +000000814 000704201 000786325 D|053700953 071140504 +000000814 000745508 000799810 D|019401583 046650036 +000000814 000771797 000806715 D|097545058 095520747 +000000814 000840814 000864211 D|081826104 097644707 +000000814 000854877 000877267 D|073754374 091858243 +000000814 000907084 000894646 D|013876869 060806251 +000000814 000913933 000909495 D|077083918 062402082 +000000814 000935462 000941147 D|011663245 031296604 +000000814 000942352 000949314 D|079089049 007803196 +000000814 000950947 000983958 D|089503637 047292499 +000000814 000981731 000992123 D|085103131 086260593 +000000815 000010764 000008911 D|077590135 007355839 +000000815 000053794 000019460 D|018135338 070757157 +000000815 000095409 000023719 D|048707247 011466131 +000000815 000121833 000097526 D|086598183 077975812 +000000815 000133022 000099572 D|020229041 090235997 +000000815 000135136 000136168 D|041550042 027672501 +000000815 000152724 000139454 D|045679711 036492368 +000000815 000162922 000142993 D|039127516 085717014 +000000815 000163614 000151167 D|004055870 052051453 +000000815 000197000 000160277 D|042533849 088314354 +000000815 000214645 000178299 D|001084842 074378867 +000000815 000240517 000259829 D|023686643 017383679 +000000815 000241251 000260507 D|011131223 007780146 +000000815 000245295 000278304 D|020442596 079489898 +000000815 000268462 000304786 D|034982912 092388941 +000000815 000282915 000308027 D|094721311 035112695 +000000815 000298652 000343382 D|089522812 034004519 +000000815 000346239 000353305 D|087596837 070628146 +000000815 000362018 000387284 D|026693307 049955253 +000000815 000383557 000388544 D|018798434 079849340 +000000815 000390253 000401058 D|061426683 040375533 +000000815 000410338 000444073 D|063168619 017562828 +000000815 000438653 000447297 D|080015072 023398893 +000000815 000439550 000450405 D|008933673 008720186 +000000815 000505580 000453917 D|067624268 057014823 +000000815 000514388 000458722 D|065595341 075756728 +000000815 000517283 000472187 D|051753012 096464578 +000000815 000542626 000487474 D|021732933 068250839 +000000815 000548859 000493187 D|034566858 027904208 +000000815 000577207 000498637 D|005377258 021976910 +000000815 000579486 000514673 D|004906526 033118769 +000000815 000595880 000580832 D|048287731 044189219 +000000815 000660642 000599310 D|076416957 030904279 +000000815 000665666 000601634 D|063358449 051174509 +000000815 000687671 000615415 D|045337952 028165413 +000000815 000696808 000621912 D|090670511 039258182 +000000815 000699344 000644317 D|000435445 085068582 +000000815 000731093 000651840 D|061218775 035724477 +000000815 000752786 000656755 D|037603929 007535738 +000000815 000775394 000679146 D|072713167 069032630 +000000815 000776672 000712987 D|085704765 058722792 +000000815 000798128 000730828 D|041279190 061804030 +000000815 000798217 000735204 D|020202376 088343904 +000000815 000818746 000798849 D|077566988 068023142 +000000815 000891112 000808453 D|031091298 062813568 +000000815 000901079 000816903 D|041851119 029612989 +000000815 000907610 000840545 D|095382373 051140604 +000000815 000938790 000851835 D|079326075 070774326 +000000815 000952315 000927381 D|071392550 002300507 +000000815 000974195 000930229 D|090902506 086082307 +000000816 000007428 000004519 D|051046065 081948151 +000000816 000024968 000068449 D|090667566 001484199 +000000816 000032969 000077688 D|023215945 088693955 +000000816 000072550 000150096 D|028532439 087302230 +000000816 000106472 000203633 D|051061460 074255573 +000000816 000118311 000215965 D|008962483 091241690 +000000816 000131287 000216882 D|078310123 003558939 +000000816 000142745 000222887 D|044960181 029168042 +000000816 000173993 000257545 D|084877030 077766478 +000000816 000191883 000270525 D|092184108 019438523 +000000816 000193060 000288276 D|066909777 087254825 +000000816 000197171 000320351 D|031943194 020539277 +000000816 000212839 000324018 D|049829500 089129555 +000000816 000215353 000350241 D|033127521 027775064 +000000816 000237496 000359074 D|046078777 087354005 +000000816 000247053 000382843 D|048103566 076883506 +000000816 000268721 000403678 D|058673756 015206255 +000000816 000285143 000434951 D|080209546 037624444 +000000816 000303918 000452287 D|085321881 070900775 +000000816 000313938 000469067 D|025981678 094777252 +000000816 000354306 000469289 D|039311537 048666494 +000000816 000358746 000504061 D|026436045 076694214 +000000816 000359652 000536766 D|092220566 080436523 +000000816 000390851 000539810 D|040963761 008138488 +000000816 000431358 000571683 D|098242852 002643561 +000000816 000444135 000583345 D|096596738 086708542 +000000816 000537478 000678763 D|067293202 065878435 +000000816 000546546 000719200 D|081622164 093228746 +000000816 000553424 000719412 D|037619894 099048731 +000000816 000569344 000752554 D|073805418 096072950 +000000816 000574996 000769253 D|038052854 057095841 +000000816 000579248 000790289 D|000655459 031818270 +000000816 000579656 000790362 D|074832930 087589521 +000000816 000580679 000806926 D|097957902 070445980 +000000816 000603859 000817588 D|063006663 024396208 +000000816 000622480 000828767 D|051547723 089616301 +000000816 000629701 000830098 D|070787806 023731425 +000000816 000705227 000864930 D|059589001 036210184 +000000816 000714468 000870552 D|036934786 051288777 +000000816 000734876 000883834 D|073043928 016675497 +000000816 000742736 000890974 D|090234759 056377071 +000000816 000748760 000892197 D|006117416 009711827 +000000816 000809848 000913056 D|068612186 067914999 +000000816 000821339 000925943 D|034614338 063347499 +000000816 000822390 000929762 D|024540564 000161461 +000000816 000826498 000960389 D|017628480 098222241 +000000816 000851826 000968047 D|020937863 069123175 +000000816 000861454 000970884 D|065789818 096523490 +000000816 000861579 000973174 D|076522473 053046397 +000000816 000862796 000978018 D|066095839 080562843 +000000817 000036199 000004635 D|094086107 000855491 +000000817 000043430 000077005 D|033346447 008179842 +000000817 000055911 000087714 D|083441371 095617029 +000000817 000064368 000124314 D|048099139 012704145 +000000817 000077126 000209986 D|007744248 025267221 +000000817 000102020 000210255 D|022801453 045689524 +000000817 000112067 000233706 D|087451937 039973809 +000000817 000150334 000284070 D|090452250 012897111 +000000817 000166889 000316138 D|032452683 029627635 +000000817 000173392 000318597 D|011960692 031144434 +000000817 000185232 000389184 D|053239226 090289956 +000000817 000218893 000414339 D|087773497 032899968 +000000817 000228267 000438999 D|070876359 053426617 +000000817 000265016 000441579 D|098559986 035033025 +000000817 000265187 000458256 D|022552596 090930049 +000000817 000269145 000481928 D|012438180 090963930 +000000817 000283666 000534786 D|052300228 031632383 +000000817 000295641 000558638 D|022116761 036319647 +000000817 000300053 000560362 D|034187311 039488413 +000000817 000447980 000562048 D|025003887 000168101 +000000817 000465441 000568624 D|026111545 012951927 +000000817 000515624 000593474 D|004182267 001916650 +000000817 000523668 000600594 D|018206565 056244012 +000000817 000524444 000609698 D|034957596 091467515 +000000817 000545839 000624021 D|052202811 084150355 +000000817 000572983 000627545 D|038821272 077193901 +000000817 000591672 000671531 D|090586290 096702587 +000000817 000621762 000677454 D|078086428 085615720 +000000817 000634761 000679554 D|092127275 037193025 +000000817 000639299 000730325 D|081345914 003267203 +000000817 000652770 000731477 D|042935637 067514581 +000000817 000658577 000736960 D|001817199 020825229 +000000817 000677926 000746238 D|042419743 081481676 +000000817 000683641 000774744 D|083350266 093126280 +000000817 000687361 000817486 D|011460792 060663565 +000000817 000722900 000819481 D|070947682 071849063 +000000817 000765983 000827055 D|070680162 000369551 +000000817 000775298 000839128 D|047724241 065332518 +000000817 000799827 000842597 D|031153149 023226137 +000000817 000808037 000887865 D|088491726 015235944 +000000817 000837613 000890403 D|063760710 090580635 +000000817 000848387 000900676 D|066730179 012327189 +000000817 000857150 000923418 D|026678377 063805773 +000000817 000878896 000927166 D|033985624 027355911 +000000817 000903671 000946901 D|076665005 027509801 +000000817 000918122 000967107 D|068205916 039246148 +000000817 000923468 000968803 D|088714049 019869912 +000000817 000962489 000975155 D|029245584 037629187 +000000817 000997306 000983507 D|093030530 060360756 +000000817 000999452 000996789 D|019010874 068290109 +000000818 000023745 000006408 D|013688458 032210308 +000000818 000037718 000006792 D|002556938 054081706 +000000818 000042447 000040264 D|095053191 021712389 +000000818 000048813 000049991 D|007024048 013759567 +000000818 000096464 000057019 D|014832856 085778210 +000000818 000130997 000058414 D|025139553 065655992 +000000818 000145272 000083393 D|049741534 063533477 +000000818 000152718 000086595 D|085095057 061369729 +000000818 000155946 000094191 D|032915796 089668928 +000000818 000170763 000101614 D|013895194 056007053 +000000818 000182208 000127401 D|032624432 087291539 +000000818 000187624 000141980 D|051539374 056895642 +000000818 000225902 000144370 D|041112549 050322271 +000000818 000231321 000180486 D|043747032 039364646 +000000818 000244533 000190742 D|064868238 010385718 +000000818 000245413 000216205 D|020806838 096485794 +000000818 000246877 000274554 D|068565478 077216073 +000000818 000265601 000285329 D|094973405 028836327 +000000818 000354421 000287259 D|023370230 049122233 +000000818 000367354 000310237 D|049147263 000890925 +000000818 000369130 000310338 D|052206433 066242233 +000000818 000383459 000317584 D|093333859 000478598 +000000818 000389719 000359211 D|043464202 017199474 +000000818 000402825 000369690 D|023767220 028242194 +000000818 000427159 000404770 D|020785301 026668234 +000000818 000431588 000425777 D|003025097 041904884 +000000818 000433944 000494876 D|041758515 048031547 +000000818 000448642 000514272 D|014816427 024490196 +000000818 000472810 000531522 D|068493621 028313604 +000000818 000473377 000558314 D|047936095 025553044 +000000818 000574998 000569698 D|064217970 091655275 +000000818 000609620 000583384 D|043775501 076888817 +000000818 000609655 000625813 D|028110911 073044090 +000000818 000658439 000636293 D|018405168 064380690 +000000818 000678917 000638654 D|009277897 057817947 +000000818 000706760 000670465 D|090923180 097885642 +000000818 000715931 000692574 D|036474432 047274827 +000000818 000716644 000695934 D|082484056 033549041 +000000818 000748378 000726851 D|054961964 098073866 +000000818 000763754 000786484 D|003195645 009538397 +000000818 000767821 000814149 D|038953836 043272670 +000000818 000791690 000823323 D|008903301 035762878 +000000818 000889642 000828404 D|020031760 053954739 +000000818 000901752 000838402 D|079217853 066023885 +000000818 000910848 000862115 D|065078233 093289484 +000000818 000911413 000869744 D|045897441 064852453 +000000818 000937486 000880157 D|070890466 064116218 +000000818 000963382 000916050 D|098749090 043453035 +000000818 000990972 000916247 D|043840105 066163488 +000000818 000993937 000954642 D|099296464 066687526 +000000819 000009026 000003392 D|090535673 097786865 +000000819 000012212 000029619 D|021863464 008522338 +000000819 000013081 000031724 D|006291455 010853179 +000000819 000086550 000035810 D|021219818 090928906 +000000819 000103746 000053667 D|060157353 067942727 +000000819 000111904 000059771 D|054742283 070567126 +000000819 000123679 000061007 D|026532959 009515474 +000000819 000155634 000088492 D|037844101 075370596 +000000819 000157528 000115922 D|006612382 094569342 +000000819 000158290 000166517 D|008309926 046265397 +000000819 000165449 000186353 D|004377319 079494959 +000000819 000290478 000197654 D|025370605 048899776 +000000819 000291791 000242440 D|065758049 084635604 +000000819 000296433 000286849 D|047658158 087406878 +000000819 000308542 000293136 D|003454908 006412588 +000000819 000339086 000329509 D|087559095 010461110 +000000819 000362428 000388503 D|097935574 087047621 +000000819 000405262 000417127 D|010484828 083939431 +000000819 000423393 000428369 D|008191784 002212849 +000000819 000427460 000459949 D|076249067 091111610 +000000819 000428367 000466650 D|075062635 026842227 +000000819 000432672 000483572 D|010683762 050396017 +000000819 000456636 000496259 D|090636318 015243845 +000000819 000491657 000506513 D|006908115 032857352 +000000819 000499772 000514715 D|003610326 018451369 +000000819 000500394 000546116 D|033751995 055300162 +000000819 000526150 000569626 D|009006838 032019792 +000000819 000593161 000596333 D|017019799 044782111 +000000819 000601533 000607253 D|094599854 099195360 +000000819 000603836 000610540 D|068798792 036517608 +000000819 000622331 000642229 D|005627235 008386636 +000000819 000641100 000646824 D|090468422 040186145 +000000819 000662892 000653054 D|081262735 007281615 +000000819 000706460 000679684 D|088062539 065270743 +000000819 000721365 000685656 D|000134462 015824402 +000000819 000731049 000721177 D|003811319 018478090 +000000819 000757799 000767578 D|089905640 004851755 +000000819 000759157 000783656 D|080940061 013636289 +000000819 000781059 000791266 D|089329885 039271704 +000000819 000800903 000820069 D|022991679 058316868 +000000819 000841237 000831480 D|016189041 028323539 +000000819 000843305 000838685 D|008633276 034054214 +000000819 000848950 000847237 D|011074164 015152878 +000000819 000874009 000891737 D|071328355 062511906 +000000819 000917682 000920934 D|058136804 055592174 +000000819 000933277 000930974 D|001220030 021317212 +000000819 000935915 000941774 D|059344160 029924781 +000000819 000957606 000984493 D|007168994 091963932 +000000819 000967969 000985149 D|077257572 048054757 +000000819 000968946 000999631 D|045527342 034562660 +000000820 000008234 000080848 D|071541914 076292561 +000000820 000012606 000101082 D|092036489 084951677 +000000820 000057757 000143867 D|035844456 018435879 +000000820 000088991 000144001 D|029438847 093494954 +000000820 000098112 000147733 D|017988409 067253142 +000000820 000098925 000178415 D|000005611 020364257 +000000820 000123071 000189311 D|037300899 017294867 +000000820 000135748 000235563 D|078007898 015868195 +000000820 000154181 000271600 D|084195931 092636109 +000000820 000168403 000286253 D|008379589 002443278 +000000820 000176367 000314715 D|079464651 043361033 +000000820 000227364 000318445 D|080340748 034958740 +000000820 000232424 000326036 D|059558567 068796989 +000000820 000245802 000357044 D|001094926 007255236 +000000820 000251948 000368236 D|030123016 028217060 +000000820 000281560 000397521 D|090010670 038842099 +000000820 000288579 000420977 D|039535479 096459554 +000000820 000307213 000431930 D|003896854 095593050 +000000820 000324728 000432813 D|083220921 022990555 +000000820 000341500 000433194 D|017564796 057011759 +000000820 000370331 000439698 D|017368036 087763106 +000000820 000405636 000479274 D|054033958 078702712 +000000820 000423979 000514677 D|037754729 044824407 +000000820 000434596 000557715 D|084522894 018181062 +000000820 000468538 000591250 D|038822503 098416976 +000000820 000492021 000593284 D|034661254 080672536 +000000820 000509251 000629777 D|015421063 014580105 +000000820 000528216 000641668 D|084653553 083405177 +000000820 000577250 000643504 D|086817210 077524900 +000000820 000586377 000647399 D|001630825 019270569 +000000820 000616778 000672471 D|066653669 049790531 +000000820 000619732 000694987 D|042130172 084225940 +000000820 000624451 000697573 D|048069394 029056257 +000000820 000627652 000714981 D|064126175 089662077 +000000820 000658099 000717281 D|038135430 033093872 +000000820 000670105 000735960 D|099457855 040650802 +000000820 000674678 000743061 D|027602180 000930187 +000000820 000710907 000743491 D|065616212 004652014 +000000820 000721159 000777722 D|008140363 015094525 +000000820 000795777 000785039 D|014624176 096969261 +000000820 000802456 000800358 D|063360592 016770460 +000000820 000836942 000868603 D|061913321 095968965 +000000820 000863079 000877008 D|059742525 004332190 +000000820 000913961 000884376 D|018334998 019721288 +000000820 000919777 000893316 D|071763496 036310916 +000000820 000925205 000894745 D|073107489 065678815 +000000820 000932720 000915067 D|031305445 050419052 +000000820 000964598 000918032 D|078719551 095590323 +000000820 000968278 000988060 D|029287044 021935053 +000000820 000979277 000988061 D|066490201 066876222 +000000821 000007292 000001998 D|069650441 019086701 +000000821 000013955 000027911 D|038037570 041012176 +000000821 000048694 000049838 D|009230040 023706805 +000000821 000075868 000077407 D|003967333 077314842 +000000821 000096763 000107805 D|006718738 061170461 +000000821 000096834 000110299 D|091642681 059527534 +000000821 000117675 000115463 D|099457189 088121222 +000000821 000147325 000120516 D|012617475 097455631 +000000821 000149691 000186689 D|060623993 074381684 +000000821 000155540 000193153 D|023585694 048702042 +000000821 000158816 000195449 D|014900051 063469365 +000000821 000248784 000200580 D|076537191 076645805 +000000821 000272655 000204697 D|095732646 044080796 +000000821 000288441 000259284 D|067077315 049596227 +000000821 000289133 000269312 D|048187436 064203626 +000000821 000289137 000275498 D|034174069 007565387 +000000821 000289978 000298966 D|039000526 040569487 +000000821 000297779 000349108 D|065645144 044524197 +000000821 000322579 000430192 D|051673250 093822810 +000000821 000343313 000472008 D|030084152 061641750 +000000821 000379802 000473025 D|092472307 095544792 +000000821 000394740 000491827 D|054814562 032118394 +000000821 000415068 000509512 D|045057025 014478086 +000000821 000463850 000513853 D|064372213 091451905 +000000821 000555474 000528405 D|053283085 088654866 +000000821 000566735 000550281 D|060737963 089197841 +000000821 000582615 000561477 D|060875796 066878742 +000000821 000616554 000581828 D|070283858 087529635 +000000821 000623140 000599023 D|029878841 036832772 +000000821 000623191 000618953 D|085320706 084736652 +000000821 000630114 000629449 D|087972295 001911890 +000000821 000701333 000633435 D|013636122 007775529 +000000821 000706939 000647917 D|064246955 051348912 +000000821 000712388 000653036 D|005492983 013040266 +000000821 000714421 000656972 D|014765213 036145037 +000000821 000719073 000659323 D|086403219 087445992 +000000821 000721092 000666225 D|063090275 095877564 +000000821 000726521 000671623 D|020478489 039277871 +000000821 000746782 000678053 D|081941059 092772883 +000000821 000762097 000698988 D|024748419 010038075 +000000821 000806968 000719187 D|067507070 067807336 +000000821 000827831 000740929 D|051946914 048589202 +000000821 000843513 000754226 D|060089888 022016005 +000000821 000879107 000758482 D|039205324 091454810 +000000821 000954103 000766704 D|024353961 010995829 +000000821 000954803 000787452 D|017809284 082204658 +000000821 000959193 000797141 D|091102917 052415508 +000000821 000974104 000859642 D|012794268 091476071 +000000821 000982338 000884327 D|099901120 094462282 +000000821 000988098 000999549 D|056482275 061815293 +000000822 000011036 000028670 D|019274220 075525312 +000000822 000038072 000053056 D|027976615 097505890 +000000822 000039284 000070655 D|004368974 019057657 +000000822 000086292 000092120 D|092134626 034479293 +000000822 000102549 000105220 D|092404817 098707793 +000000822 000170313 000105955 D|065188813 035754773 +000000822 000173014 000118715 D|053562392 023634707 +000000822 000185481 000153034 D|090052905 088855525 +000000822 000186155 000166729 D|087445301 041729781 +000000822 000193940 000203475 D|085810230 043556321 +000000822 000204453 000215421 D|052822411 073505039 +000000822 000240310 000288192 D|010345499 065026403 +000000822 000247233 000289754 D|069220693 077886666 +000000822 000251762 000312394 D|013407654 069175156 +000000822 000252531 000319548 D|098461405 048094154 +000000822 000314610 000321139 D|028186867 046210996 +000000822 000319659 000321610 D|065677037 050239602 +000000822 000355057 000372350 D|034329977 083806094 +000000822 000355113 000387964 D|011381752 051706985 +000000822 000376861 000421410 D|089121123 073513094 +000000822 000382633 000424322 D|096117758 047096631 +000000822 000401650 000452849 D|091552448 094664187 +000000822 000449879 000460338 D|073222033 062989691 +000000822 000482219 000466517 D|090983565 067639210 +000000822 000494329 000487017 D|040763916 077861908 +000000822 000506752 000491454 D|080567390 015349334 +000000822 000523332 000558120 D|093485586 001501293 +000000822 000548650 000599386 D|087645186 049543968 +000000822 000615631 000620914 D|042059214 062970426 +000000822 000617122 000668427 D|062990686 028281550 +000000822 000633461 000681938 D|021193764 027247667 +000000822 000658734 000687523 D|024794905 067825525 +000000822 000685993 000690303 D|071464639 062756104 +000000822 000708779 000695706 D|093884333 020682858 +000000822 000732571 000705574 D|045100166 019409782 +000000822 000745432 000734910 D|055445874 091965457 +000000822 000761836 000765685 D|049606277 082172228 +000000822 000770406 000770315 D|016801038 039120477 +000000822 000778212 000783169 D|020401066 087048223 +000000822 000833249 000794719 D|004705890 047536319 +000000822 000851534 000799547 D|051922284 032510747 +000000822 000856126 000817581 D|028958116 038152219 +000000822 000858879 000830449 D|031306813 010076821 +000000822 000871244 000863404 D|086003693 033503369 +000000822 000895988 000870322 D|041301811 029202425 +000000822 000905907 000886773 D|090910291 000185999 +000000822 000920277 000890880 D|066256565 032889892 +000000822 000924714 000921547 D|068684333 019740172 +000000822 000926616 000940732 D|028503868 080373405 +000000822 000940102 000942739 D|025237882 033333242 +000000823 000016174 000027374 D|046762368 017100489 +000000823 000030196 000040442 D|098674960 008412120 +000000823 000031549 000075091 D|093419025 049440429 +000000823 000036387 000089737 D|027951381 009301156 +000000823 000036691 000112801 D|054469103 016532715 +000000823 000049552 000129832 D|003771677 053418486 +000000823 000050362 000147595 D|037031418 037859155 +000000823 000051578 000156240 D|061067730 056555817 +000000823 000069721 000162793 D|054384217 036531233 +000000823 000115189 000173711 D|003179555 032656575 +000000823 000149845 000204722 D|059205045 032266246 +000000823 000267731 000212922 D|023487062 008631392 +000000823 000270717 000213645 D|022258581 082149517 +000000823 000289732 000215696 D|097863015 072104849 +000000823 000314497 000229919 D|060509713 014808009 +000000823 000330277 000241448 D|037395783 042849925 +000000823 000368979 000278387 D|067784490 023070638 +000000823 000369457 000343885 D|025791440 086443659 +000000823 000383199 000345149 D|071358105 047555602 +000000823 000401384 000352235 D|081937340 069364955 +000000823 000420863 000413710 D|012229604 041215651 +000000823 000441618 000417564 D|087766484 066830810 +000000823 000455309 000440832 D|088085761 060342060 +000000823 000475967 000463777 D|014177869 078066466 +000000823 000479805 000490930 D|022682946 013052430 +000000823 000499781 000527250 D|070534967 075634785 +000000823 000505890 000537557 D|055011155 073803622 +000000823 000506711 000566555 D|030959914 014409865 +000000823 000507328 000595106 D|055458064 053282888 +000000823 000554076 000636925 D|040672537 068144888 +000000823 000565233 000637896 D|059440933 093919808 +000000823 000607883 000667388 D|005145516 046259655 +000000823 000669736 000675885 D|016117688 038839428 +000000823 000695196 000692135 D|047817935 081662773 +000000823 000747140 000709050 D|070119912 001903898 +000000823 000752741 000713391 D|083705937 038560149 +000000823 000776806 000746655 D|088249171 043121300 +000000823 000817248 000756709 D|008772036 077387498 +000000823 000817932 000789825 D|013141152 048348452 +000000823 000849730 000792562 D|013690694 015916477 +000000823 000854448 000798103 D|035061562 057084284 +000000823 000854814 000820470 D|032438862 002785473 +000000823 000866695 000823809 D|053330542 085340235 +000000823 000870324 000835550 D|027485983 074779897 +000000823 000883351 000859891 D|083742094 033138004 +000000823 000884968 000863367 D|070126646 057044582 +000000823 000909677 000951541 D|054886501 068437260 +000000823 000911352 000964823 D|007585563 095361945 +000000823 000950696 000984030 D|023427032 090017997 +000000823 000961964 000986085 D|088326349 086671232 +000000824 000011108 000043033 D|015799781 009804420 +000000824 000011243 000047112 D|030256990 081016174 +000000824 000031601 000062195 D|026774109 086020920 +000000824 000059597 000065993 D|028091997 069291785 +000000824 000072158 000066024 D|052840398 098171264 +000000824 000076563 000067754 D|009177748 037417331 +000000824 000089926 000073625 D|072748152 089599773 +000000824 000146238 000075820 D|083261501 092369953 +000000824 000152387 000133438 D|025282180 097351271 +000000824 000183850 000144240 D|057301437 024961029 +000000824 000194150 000151181 D|085025500 081903878 +000000824 000229994 000159549 D|066463206 024821855 +000000824 000237001 000197063 D|016332715 053785202 +000000824 000273920 000217606 D|010894721 036571905 +000000824 000322411 000242851 D|098941788 087504851 +000000824 000326324 000244892 D|034586265 042002579 +000000824 000333111 000259402 D|003162584 081499957 +000000824 000343490 000264550 D|077657935 004546250 +000000824 000363824 000264657 D|022378485 023287937 +000000824 000369301 000267734 D|065796621 047908824 +000000824 000371960 000272058 D|060977896 027451601 +000000824 000439587 000288934 D|073025894 066359674 +000000824 000447785 000312506 D|090276114 066848403 +000000824 000457799 000337827 D|047888692 029822299 +000000824 000473034 000372848 D|085766165 086371102 +000000824 000477158 000388471 D|040129916 055954395 +000000824 000529319 000425447 D|063686341 043178038 +000000824 000538106 000440042 D|068748483 084162351 +000000824 000551506 000462801 D|070885631 056070369 +000000824 000561614 000504532 D|075201345 074358115 +000000824 000574779 000524874 D|015379258 000754426 +000000824 000600085 000527453 D|056431078 092125034 +000000824 000600734 000594151 D|025542995 032158410 +000000824 000623505 000610041 D|067396607 047239282 +000000824 000625346 000696426 D|081980297 088016285 +000000824 000639100 000716746 D|060242167 086223758 +000000824 000662269 000719611 D|042406562 022774296 +000000824 000684175 000751855 D|063910320 042623070 +000000824 000751255 000765053 D|011677705 068579789 +000000824 000753806 000770273 D|050838889 079701128 +000000824 000760837 000774450 D|054034473 045139450 +000000824 000804123 000792815 D|095255903 098179010 +000000824 000817759 000793157 D|091369449 089966525 +000000824 000836015 000811363 D|050095024 010509466 +000000824 000886977 000828645 D|067371133 005977102 +000000824 000890666 000849599 D|047178728 036986496 +000000824 000924137 000856814 D|058135985 017063937 +000000824 000934550 000876217 D|080853811 062061566 +000000824 000935549 000931497 D|068333828 025347683 +000000824 000990951 000987862 D|037688416 065011769 +000000825 000029414 000044452 D|043039944 018681443 +000000825 000046072 000070251 D|048185526 061138860 +000000825 000049067 000107129 D|064440142 077285725 +000000825 000051395 000115829 D|025761739 043308178 +000000825 000061090 000191838 D|001989386 091622134 +000000825 000073193 000192361 D|057819467 076139527 +000000825 000074918 000204842 D|073924459 074250301 +000000825 000079285 000205978 D|044718578 033665050 +000000825 000085700 000232238 D|060750383 048864280 +000000825 000098200 000263404 D|044424895 084932807 +000000825 000126721 000267292 D|035035696 025225514 +000000825 000129767 000269945 D|072094487 078295516 +000000825 000147689 000308440 D|075990555 078070781 +000000825 000195407 000324776 D|081268506 005530210 +000000825 000196564 000364503 D|011465098 030370534 +000000825 000202979 000383039 D|017747437 045782272 +000000825 000232249 000387257 D|062350568 063036306 +000000825 000246323 000394169 D|072996563 019237458 +000000825 000252488 000402500 D|054505328 081793237 +000000825 000282793 000434096 D|089465994 060888415 +000000825 000288855 000440547 D|021328250 053215352 +000000825 000292661 000441330 D|052575310 056962280 +000000825 000318659 000470410 D|070503447 019545197 +000000825 000337161 000470645 D|015068717 015100095 +000000825 000372626 000492274 D|067028007 001860075 +000000825 000387626 000529994 D|083035436 026722174 +000000825 000389798 000547828 D|069798136 025386771 +000000825 000392756 000551454 D|073991156 005422948 +000000825 000411072 000555504 D|058732145 008537505 +000000825 000430242 000561582 D|092055550 099451794 +000000825 000447975 000579333 D|096934039 057010639 +000000825 000457208 000614918 D|097335232 052179898 +000000825 000474686 000628387 D|056047944 091101883 +000000825 000554417 000657478 D|017556266 043180088 +000000825 000578222 000714093 D|083897119 053324071 +000000825 000605542 000770917 D|098650503 068806022 +000000825 000625862 000793924 D|023552322 040518435 +000000825 000630330 000797897 D|052643291 050788482 +000000825 000634112 000802043 D|010516644 082686126 +000000825 000701615 000802462 D|037865743 000862676 +000000825 000761765 000812215 D|057921281 024058581 +000000825 000773714 000822520 D|082558022 087132688 +000000825 000774828 000822711 D|007572606 069804611 +000000825 000811513 000846822 D|058744928 000396642 +000000825 000836576 000907912 D|098289444 043822386 +000000825 000918905 000911702 D|032528901 049864963 +000000825 000921328 000939934 D|059172713 050928106 +000000825 000966414 000954420 D|076822538 072497542 +000000825 000969267 000957718 D|034906637 010351725 +000000825 000978256 000958539 D|041333261 037977367 +000000826 000083276 000023344 D|021535299 039945742 +000000826 000103864 000030158 D|050998665 029889750 +000000826 000111853 000031247 D|070893124 050949180 +000000826 000152670 000097900 D|085371186 060529363 +000000826 000209876 000126968 D|088693390 017670271 +000000826 000221545 000131536 D|032931822 073200937 +000000826 000268531 000151883 D|071026973 001327458 +000000826 000277596 000154727 D|038328191 007283953 +000000826 000278226 000162844 D|098982960 067880971 +000000826 000284662 000171700 D|014845950 040775853 +000000826 000285960 000211793 D|019247782 000612026 +000000826 000314453 000220951 D|047161634 077388017 +000000826 000328191 000236897 D|034522315 010732010 +000000826 000338236 000258804 D|040431337 092382679 +000000826 000352189 000266576 D|044540085 013658284 +000000826 000363798 000275323 D|086924124 000240061 +000000826 000375946 000286129 D|027916374 008586007 +000000826 000379443 000309764 D|074068535 057612723 +000000826 000395642 000310802 D|058885920 092620628 +000000826 000410723 000311424 D|096038064 025481263 +000000826 000421644 000320832 D|072123477 036617598 +000000826 000423081 000329459 D|019370841 062198277 +000000826 000442193 000344886 D|006667724 036653113 +000000826 000443069 000414955 D|055881645 025892369 +000000826 000458996 000434216 D|021234850 029068599 +000000826 000477558 000446641 D|083241666 053070966 +000000826 000477908 000485530 D|024483180 020434026 +000000826 000490266 000520507 D|077140009 029392751 +000000826 000507477 000524670 D|054557472 062090147 +000000826 000518414 000550375 D|071776004 082583353 +000000826 000525403 000578972 D|046392660 019095063 +000000826 000589929 000580183 D|042078683 003719202 +000000826 000589934 000583493 D|040566844 077473869 +000000826 000591679 000600027 D|031586631 076285291 +000000826 000637641 000607026 D|058781788 007028765 +000000826 000678209 000611474 D|069901894 073428226 +000000826 000681303 000614880 D|012173155 054551785 +000000826 000694446 000657595 D|075866266 054404686 +000000826 000741462 000669991 D|071167264 047686807 +000000826 000743653 000688190 D|062369366 098007943 +000000826 000750500 000689478 D|008697534 086046088 +000000826 000764809 000733379 D|054054857 001972613 +000000826 000765933 000823710 D|013676313 018648701 +000000826 000787328 000845679 D|072825112 031019684 +000000826 000796492 000903194 D|086172659 044321371 +000000826 000826546 000921082 D|018718717 094093792 +000000826 000826946 000932063 D|063970283 010137709 +000000826 000861360 000962880 D|044637214 008016058 +000000826 000881440 000970144 D|066983511 095737531 +000000826 000996638 000995206 D|051977214 097450209 +000000827 000003099 000028992 D|078078270 079392413 +000000827 000019457 000071463 D|019707456 098790223 +000000827 000022057 000083967 D|099905540 072101655 +000000827 000037385 000109234 D|080379736 092388856 +000000827 000042308 000111682 D|079512884 061782047 +000000827 000057909 000117292 D|050659444 098299676 +000000827 000061159 000130163 D|061757098 008979056 +000000827 000069790 000145947 D|052399675 072795390 +000000827 000072675 000188132 D|080589978 012810447 +000000827 000111107 000196258 D|047393616 018181452 +000000827 000124069 000264932 D|045314646 016222733 +000000827 000138991 000267656 D|074825076 055020836 +000000827 000147866 000322745 D|097074898 079020341 +000000827 000206683 000333566 D|099181089 005099945 +000000827 000211794 000345524 D|054208965 071872758 +000000827 000212768 000384001 D|098111126 039634128 +000000827 000235907 000396054 D|037806865 086026813 +000000827 000255372 000417575 D|053542462 083429402 +000000827 000262156 000419618 D|044293543 021276824 +000000827 000300382 000432213 D|050373947 078178825 +000000827 000356555 000433697 D|047820504 095595891 +000000827 000412563 000436724 D|027872755 045472832 +000000827 000419082 000450978 D|050976478 039635906 +000000827 000422973 000487020 D|022594971 017450698 +000000827 000424286 000549436 D|042711481 015377131 +000000827 000442940 000571522 D|016909097 027445747 +000000827 000506628 000608764 D|086318965 095348118 +000000827 000585010 000622900 D|009470733 064034287 +000000827 000595396 000627509 D|016576707 000397665 +000000827 000600751 000643875 D|055934214 060280831 +000000827 000602755 000649531 D|043354537 015330307 +000000827 000636848 000661714 D|059444972 061307079 +000000827 000667622 000692597 D|082986182 064846845 +000000827 000698971 000696155 D|011710794 011166807 +000000827 000709131 000736952 D|066939205 046144684 +000000827 000724343 000752813 D|053258385 052099173 +000000827 000733316 000758975 D|054521549 019831160 +000000827 000747131 000795306 D|014408021 056000469 +000000827 000748253 000822673 D|062931744 007473770 +000000827 000750628 000833531 D|099004234 078657307 +000000827 000754436 000839347 D|055835354 001843539 +000000827 000772626 000878800 D|056611786 062529566 +000000827 000788467 000879457 D|050414297 060979164 +000000827 000803971 000886000 D|022366584 030401254 +000000827 000807037 000913497 D|034707108 043834486 +000000827 000837456 000924745 D|047890867 020896118 +000000827 000848836 000945574 D|023893647 073114208 +000000827 000849048 000960159 D|022697871 036770192 +000000827 000923500 000969480 D|068648101 087342554 +000000827 000957804 000988713 D|016193470 037291930 +000000828 000019069 000038674 D|036617862 093390105 +000000828 000030724 000040736 D|094443002 084313349 +000000828 000038958 000058197 D|056172257 033927311 +000000828 000101293 000072031 D|013539377 049842061 +000000828 000146377 000102284 D|060528710 088116168 +000000828 000157548 000120871 D|013115460 016655579 +000000828 000192196 000123575 D|020526038 017730481 +000000828 000198487 000137719 D|001640371 078139846 +000000828 000205330 000142574 D|021527579 057130104 +000000828 000228169 000216588 D|025001271 027673970 +000000828 000289528 000250885 D|079560267 085664786 +000000828 000300108 000319572 D|020347806 090216770 +000000828 000313690 000345953 D|084514331 052837566 +000000828 000321291 000356025 D|090308800 068116899 +000000828 000340295 000381100 D|031759352 066633214 +000000828 000343590 000397223 D|090029570 014715764 +000000828 000347541 000410854 D|067838288 005306429 +000000828 000349222 000428474 D|033530983 084526675 +000000828 000352101 000448736 D|073392943 072378673 +000000828 000355554 000450133 D|066861586 097952370 +000000828 000360024 000489686 D|042841562 041664983 +000000828 000365195 000492207 D|017308381 043758209 +000000828 000385278 000494061 D|091486823 075921783 +000000828 000454356 000506484 D|041753958 030882341 +000000828 000483246 000507909 D|083281773 085092739 +000000828 000495135 000544609 D|096326386 045162851 +000000828 000511268 000561465 D|010238190 092315605 +000000828 000534763 000580304 D|053646822 069268746 +000000828 000542341 000581949 D|031311172 032777988 +000000828 000567554 000624138 D|068483192 056843886 +000000828 000647736 000643983 D|031341686 099093174 +000000828 000668088 000726168 D|061720983 024886900 +000000828 000679799 000727435 D|059092932 044888241 +000000828 000707531 000739544 D|011654332 087629478 +000000828 000710841 000785614 D|007847458 069830993 +000000828 000730647 000785852 D|017236545 097163286 +000000828 000751280 000791185 D|092719747 018846679 +000000828 000763108 000799751 D|041387062 049822130 +000000828 000772207 000800410 D|063922331 008384065 +000000828 000791691 000818804 D|075887918 057479330 +000000828 000800559 000830048 D|021261009 093004996 +000000828 000807855 000834576 D|058898341 060947616 +000000828 000831853 000904696 D|067743720 086628721 +000000828 000834747 000929304 D|056708734 023528710 +000000828 000951660 000935816 D|017336391 081997019 +000000828 000954481 000948564 D|045007307 000364994 +000000828 000976313 000949490 D|095850917 037766788 +000000828 000988691 000966583 D|002622836 024736604 +000000828 000991680 000970463 D|050471916 011756541 +000000828 000994946 000984653 D|024777545 014179227 +000000829 000054607 000009110 D|056444809 055109301 +000000829 000068521 000013982 D|073979765 058407225 +000000829 000070453 000025034 D|065329538 007867489 +000000829 000091520 000059689 D|005742819 026198101 +000000829 000102743 000081321 D|070961981 024497755 +000000829 000114506 000108333 D|086163353 081333002 +000000829 000114973 000122486 D|079525914 077095616 +000000829 000117290 000128765 D|095067231 060827706 +000000829 000149090 000135192 D|029268095 032466808 +000000829 000152388 000152319 D|035505559 080867266 +000000829 000192752 000185519 D|018022293 020878460 +000000829 000201312 000194388 D|003527898 000553488 +000000829 000208164 000206040 D|051507481 029632985 +000000829 000226584 000218614 D|068613068 023681737 +000000829 000255559 000235321 D|038615259 006994306 +000000829 000266845 000285505 D|038762325 041338100 +000000829 000271154 000289694 D|063546654 052470615 +000000829 000271229 000297458 D|074630249 048481886 +000000829 000289207 000317180 D|076343780 033298935 +000000829 000297650 000401781 D|001121971 052037210 +000000829 000303392 000428226 D|084330377 077893658 +000000829 000327406 000428474 D|009947708 022745365 +000000829 000371852 000455934 D|032944381 035453714 +000000829 000393196 000492449 D|097445819 068687812 +000000829 000450447 000495969 D|001130847 090074395 +000000829 000486357 000508485 D|033992772 092815673 +000000829 000552356 000520276 D|063786789 094440608 +000000829 000583160 000526232 D|017979443 013137191 +000000829 000604088 000579413 D|095008833 039156816 +000000829 000605979 000596065 D|049852045 037057640 +000000829 000635028 000621658 D|079189682 002838218 +000000829 000650076 000662862 D|084036873 004267460 +000000829 000657886 000662870 D|031751659 078541823 +000000829 000702585 000684712 D|057751324 094981094 +000000829 000709810 000707457 D|053554749 055956657 +000000829 000717641 000734336 D|005170210 028023718 +000000829 000726144 000741639 D|011834467 020498522 +000000829 000752182 000750951 D|086951137 013824374 +000000829 000756385 000754573 D|033971050 064326272 +000000829 000792248 000765877 D|023736845 009695664 +000000829 000804217 000789905 D|038898283 049781165 +000000829 000889925 000794570 D|095828105 026478661 +000000829 000890386 000887807 D|030811226 076461681 +000000829 000921787 000889589 D|097546495 053647599 +000000829 000929418 000896005 D|006798280 057019842 +000000829 000929848 000911903 D|069862414 023772173 +000000829 000952376 000912216 D|047306594 032102971 +000000829 000983325 000919366 D|019671635 031149086 +000000829 000994858 000931254 D|026379022 016611933 +000000829 000997835 000971629 D|022297669 057188296 +000000830 000045139 000011293 D|009352869 059154890 +000000830 000076532 000014464 D|071020308 033985572 +000000830 000079586 000038553 D|004093885 063241887 +000000830 000089666 000078904 D|089258589 056122655 +000000830 000092695 000099196 D|065281438 031504780 +000000830 000157605 000106056 D|062440439 079009599 +000000830 000162528 000128803 D|006530731 030088423 +000000830 000166883 000133310 D|010394462 011813817 +000000830 000180564 000165141 D|007767643 047539606 +000000830 000223626 000177732 D|038644315 094075336 +000000830 000239448 000201352 D|098964038 031230847 +000000830 000262821 000231907 D|034709755 025896606 +000000830 000286002 000238458 D|066903471 040341766 +000000830 000326506 000292611 D|025345678 079538162 +000000830 000340949 000308099 D|060659567 051198350 +000000830 000346778 000335004 D|004614534 035437541 +000000830 000346952 000350112 D|002324491 029087330 +000000830 000378492 000350986 D|075436538 050654174 +000000830 000391071 000354790 D|000822462 008697278 +000000830 000409972 000359592 D|079720759 026966241 +000000830 000422899 000370811 D|030830409 080375020 +000000830 000453974 000420315 D|037033424 021730698 +000000830 000490101 000461207 D|032271477 053494563 +000000830 000502953 000463245 D|010578311 017361721 +000000830 000525216 000469389 D|094125602 037654154 +000000830 000548462 000510913 D|055390949 050370304 +000000830 000553069 000548516 D|063014506 076439449 +000000830 000558667 000569102 D|000663717 062340430 +000000830 000589304 000589302 D|099373865 028203410 +000000830 000604092 000589658 D|053591959 023381132 +000000830 000614162 000601210 D|096913699 067489032 +000000830 000638557 000603634 D|087498863 062719803 +000000830 000698384 000615854 D|006304080 055700337 +000000830 000717407 000626907 D|003622169 023706539 +000000830 000747155 000627237 D|046216941 091402841 +000000830 000752599 000630475 D|033620518 080388539 +000000830 000771430 000647310 D|025558509 079711165 +000000830 000783379 000648004 D|084772921 092570550 +000000830 000785560 000692278 D|082042334 010781694 +000000830 000789313 000712503 D|039352615 010001750 +000000830 000822679 000792633 D|094867231 044600733 +000000830 000827378 000795191 D|053229770 064746298 +000000830 000874490 000796248 D|040166133 078893222 +000000830 000892241 000803019 D|009666725 009045507 +000000830 000898500 000893261 D|094076147 020112281 +000000830 000906590 000915387 D|015831195 030261627 +000000830 000922887 000917855 D|065981352 052178595 +000000830 000956151 000980443 D|081510658 045455008 +000000830 000965158 000985427 D|055937987 041667425 +000000830 000965398 000999693 D|099160048 090810873 +000000831 000026289 000017007 D|069356891 098128771 +000000831 000066567 000062135 D|014333822 075136255 +000000831 000074177 000073509 D|015266601 056500546 +000000831 000082955 000075210 D|032598539 030917476 +000000831 000110908 000078770 D|094874995 007031767 +000000831 000144287 000091341 D|021840317 009620095 +000000831 000150931 000126885 D|045269984 023218838 +000000831 000169628 000128956 D|010743863 057230139 +000000831 000186469 000147113 D|031129548 024343006 +000000831 000243658 000154383 D|085025424 087869369 +000000831 000298971 000174243 D|074428422 094487071 +000000831 000344749 000192554 D|000357576 057047280 +000000831 000368573 000196072 D|030967898 049434188 +000000831 000395523 000204924 D|096355096 023798978 +000000831 000399559 000241023 D|010417915 033624784 +000000831 000404388 000264045 D|007963549 065490912 +000000831 000406193 000291236 D|027418191 062246580 +000000831 000407462 000345610 D|015248646 053628227 +000000831 000421324 000388113 D|060560268 059804626 +000000831 000427651 000435939 D|000317863 064848588 +000000831 000429333 000440060 D|067866557 002856271 +000000831 000469961 000470577 D|067120754 058312585 +000000831 000483835 000503236 D|054892031 004462112 +000000831 000500764 000541270 D|059457124 012983069 +000000831 000511363 000554799 D|074405919 040448941 +000000831 000567880 000555107 D|028709995 053250415 +000000831 000613956 000598040 D|027668802 028227300 +000000831 000620257 000604221 D|089481559 022159716 +000000831 000643688 000630634 D|021516142 040258515 +000000831 000661770 000633947 D|032730461 042033190 +000000831 000686123 000648780 D|073124381 001567375 +000000831 000700450 000656740 D|077895954 072986060 +000000831 000714555 000675341 D|004850108 037643953 +000000831 000714917 000684577 D|030798400 067933286 +000000831 000736050 000690985 D|074960591 022561922 +000000831 000745483 000712505 D|051291032 067087849 +000000831 000762430 000729779 D|034499020 072980978 +000000831 000824396 000746554 D|004157032 056243211 +000000831 000837830 000749872 D|031638359 065240507 +000000831 000842315 000764605 D|036209924 033856380 +000000831 000845006 000784398 D|058906501 011331004 +000000831 000867359 000815440 D|091428670 069933396 +000000831 000887976 000830654 D|043070732 086404077 +000000831 000892087 000886023 D|013312141 057505390 +000000831 000912029 000912971 D|096035273 071965077 +000000831 000914167 000926141 D|079071567 054667635 +000000831 000925515 000933266 D|085840591 064846254 +000000831 000926278 000969003 D|057636991 024910239 +000000831 000995715 000983194 D|046710596 006612703 +000000831 000999830 000987353 D|069719678 014108102 +000000832 000018799 000009978 D|022759742 049076641 +000000832 000049819 000043991 D|069217142 097541874 +000000832 000077711 000056448 D|056242873 030258333 +000000832 000078810 000073461 D|066972453 072677896 +000000832 000095265 000078342 D|052068124 041295883 +000000832 000115760 000083223 D|096948205 004319745 +000000832 000121907 000116890 D|076910033 021840763 +000000832 000164308 000125040 D|085447789 056674147 +000000832 000176404 000145843 D|072996537 096019304 +000000832 000202704 000156577 D|087100139 017983214 +000000832 000217132 000172706 D|018352998 022308981 +000000832 000226802 000174422 D|056382858 035677151 +000000832 000241220 000175564 D|038776566 075493091 +000000832 000281325 000178148 D|020649924 012872240 +000000832 000305403 000249840 D|093023600 058625749 +000000832 000312498 000252237 D|080752690 077346074 +000000832 000319264 000268757 D|002597229 074106659 +000000832 000324165 000335132 D|066430159 020890922 +000000832 000342322 000364176 D|041163834 005028469 +000000832 000380208 000377718 D|083322396 050356957 +000000832 000386657 000435353 D|072203545 097526891 +000000832 000399674 000450746 D|090172560 087487147 +000000832 000414351 000476387 D|079382370 064640397 +000000832 000428801 000494278 D|016828243 036567966 +000000832 000430897 000508155 D|028628996 041161244 +000000832 000446246 000536509 D|099532354 039940621 +000000832 000535557 000559264 D|077998191 033431055 +000000832 000584758 000560893 D|075383210 013238769 +000000832 000597231 000561964 D|096338686 076244041 +000000832 000603505 000565231 D|019876114 029733135 +000000832 000623020 000575483 D|079644700 049461563 +000000832 000631092 000583558 D|003476121 058178425 +000000832 000642794 000587892 D|076101754 083055524 +000000832 000659242 000601231 D|039281812 009198171 +000000832 000663270 000658763 D|093772541 083985940 +000000832 000675863 000710616 D|042888259 046844292 +000000832 000728899 000715539 D|065014088 020172921 +000000832 000737587 000740561 D|077066279 005808517 +000000832 000737610 000790739 D|097323362 020914271 +000000832 000753799 000806710 D|089169791 095790547 +000000832 000776082 000835629 D|033623328 086606986 +000000832 000788731 000835653 D|048653524 050194360 +000000832 000840520 000840594 D|050956641 076532972 +000000832 000880836 000880812 D|080772495 065186607 +000000832 000887935 000882891 D|030526782 038769302 +000000832 000915438 000902895 D|086273152 093857123 +000000832 000957571 000903869 D|078042572 096721643 +000000832 000985771 000919414 D|085497589 072861282 +000000832 000995508 000945182 D|004306288 027029056 +000000832 000995699 000962823 D|031328349 099106105 +000000833 000013706 000002573 D|063287835 019188121 +000000833 000014705 000004765 D|073026945 071358420 +000000833 000022918 000013367 D|090435931 096312574 +000000833 000058692 000014641 D|019566494 036263066 +000000833 000060571 000016252 D|016079049 035837156 +000000833 000081675 000026257 D|052454341 089313414 +000000833 000126945 000026410 D|017596646 009380028 +000000833 000133242 000050940 D|054017701 093203366 +000000833 000146831 000072949 D|038361928 040025540 +000000833 000188028 000079414 D|095325139 009527269 +000000833 000194991 000081567 D|091112972 041806890 +000000833 000204443 000144778 D|098115760 048368988 +000000833 000242198 000147969 D|089701638 096820255 +000000833 000257902 000265835 D|043240768 067724259 +000000833 000260262 000277672 D|088605853 050692691 +000000833 000271416 000306523 D|060158978 053100855 +000000833 000279863 000341068 D|011570744 073301127 +000000833 000303249 000355878 D|084107401 084952007 +000000833 000349563 000381062 D|087866019 082490777 +000000833 000394198 000395124 D|072023668 080692021 +000000833 000409967 000408454 D|023249898 030979682 +000000833 000411337 000467909 D|097072414 012736313 +000000833 000423617 000468220 D|065147106 092811238 +000000833 000493219 000480402 D|068471186 028029686 +000000833 000592029 000483742 D|014835837 050680372 +000000833 000596789 000488669 D|000311539 023399003 +000000833 000612438 000499999 D|093142446 036521691 +000000833 000624362 000517740 D|007385863 094927694 +000000833 000642215 000531252 D|002055423 075816580 +000000833 000643475 000639486 D|058056481 031512505 +000000833 000657650 000642435 D|086139120 073647586 +000000833 000674126 000652435 D|046956586 004836039 +000000833 000676357 000712222 D|085819872 001921292 +000000833 000683523 000715798 D|095442631 068343107 +000000833 000687522 000724103 D|005025842 051335222 +000000833 000742775 000735111 D|068144022 049251501 +000000833 000747483 000822225 D|096765021 052970825 +000000833 000764795 000824563 D|078218144 031871075 +000000833 000788703 000838710 D|003266226 052585504 +000000833 000845356 000841270 D|076882725 019669096 +000000833 000860698 000845672 D|062272589 086532837 +000000833 000863174 000860457 D|084601246 036017275 +000000833 000883395 000867167 D|048011891 031393374 +000000833 000889015 000868829 D|084203009 075008573 +000000833 000924372 000944139 D|097303786 005364790 +000000833 000933112 000946842 D|023630619 067751707 +000000833 000947128 000986003 D|027361353 054544894 +000000833 000949008 000987596 D|030501252 051208081 +000000833 000969418 000992966 D|052271742 041728749 +000000833 000985155 000994719 D|025984014 010066285 +000000834 000014003 000001192 D|035012364 009795914 +000000834 000042447 000010477 D|012668479 021340750 +000000834 000053212 000024015 D|070748520 059590992 +000000834 000099035 000058704 D|084727494 000895605 +000000834 000151973 000098872 D|037945978 014232892 +000000834 000178498 000105631 D|016436026 037106375 +000000834 000195274 000114350 D|065142412 028168843 +000000834 000196292 000115182 D|092357072 097036662 +000000834 000204528 000123840 D|002981260 042844780 +000000834 000235525 000127533 D|066990014 093593531 +000000834 000238429 000133133 D|002332944 032395219 +000000834 000252773 000150515 D|096601286 006050280 +000000834 000257017 000154662 D|083487569 088571434 +000000834 000270854 000244266 D|061667739 047669902 +000000834 000285994 000249675 D|008507494 048836742 +000000834 000286901 000296362 D|011802556 093030867 +000000834 000289311 000298901 D|050739698 063857775 +000000834 000293558 000323725 D|093617770 051583252 +000000834 000312954 000348173 D|034184176 091381029 +000000834 000353900 000350966 D|001704511 036595103 +000000834 000387589 000351385 D|092027943 017714748 +000000834 000405817 000359184 D|053369798 005000548 +000000834 000425694 000380798 D|078879013 016230076 +000000834 000446425 000396586 D|008671630 021221607 +000000834 000468611 000450448 D|019079665 039486252 +000000834 000490076 000451627 D|082789085 090999247 +000000834 000501586 000470935 D|091819480 052549731 +000000834 000513850 000479680 D|069850411 098380127 +000000834 000548410 000514097 D|098078963 017884893 +000000834 000567008 000542948 D|016716871 066250611 +000000834 000570542 000549843 D|087307260 086908171 +000000834 000583032 000568769 D|016977042 027000119 +000000834 000623573 000590212 D|099831820 010350289 +000000834 000654335 000641033 D|089331527 067003200 +000000834 000657469 000650731 D|007357563 065730121 +000000834 000669979 000662121 D|034633559 063061003 +000000834 000707216 000710320 D|036668620 043208209 +000000834 000713889 000711596 D|003476826 032074564 +000000834 000759839 000726773 D|053067688 074445164 +000000834 000808093 000752637 D|068361854 017123853 +000000834 000811362 000759093 D|081491606 035831038 +000000834 000814201 000765192 D|019708109 026274000 +000000834 000818756 000771092 D|072370223 002356303 +000000834 000830459 000772694 D|079712151 021609296 +000000834 000835142 000780701 D|010750016 080496928 +000000834 000854778 000797622 D|001441987 011307790 +000000834 000861922 000828186 D|097472004 061057640 +000000834 000864567 000847404 D|076963180 007297854 +000000834 000959730 000889261 D|038260078 024475226 +000000834 000987013 000893402 D|079816484 045813031 +000000835 000005891 000005771 D|094366012 062223685 +000000835 000041005 000014256 D|065069149 000196331 +000000835 000071414 000017737 D|013699915 006889344 +000000835 000072333 000028518 D|094674987 068091752 +000000835 000084625 000040862 D|047529662 021220084 +000000835 000095400 000043252 D|095821163 063831827 +000000835 000128726 000063639 D|077569526 081586322 +000000835 000145774 000151569 D|023028594 085004841 +000000835 000206402 000156496 D|060982158 025069373 +000000835 000211898 000184482 D|095193530 030072907 +000000835 000218286 000203339 D|047341705 096987669 +000000835 000219696 000205206 D|018319323 019803052 +000000835 000248168 000233288 D|048304892 076232564 +000000835 000274066 000299222 D|020606297 068966499 +000000835 000302145 000303266 D|052005922 001488674 +000000835 000303656 000358204 D|008024293 051244783 +000000835 000309082 000367686 D|062431373 028147177 +000000835 000316928 000383276 D|041470350 019759283 +000000835 000328125 000399856 D|059272369 039096528 +000000835 000334783 000403092 D|099741750 078700519 +000000835 000371308 000403899 D|028146459 083445208 +000000835 000404471 000416178 D|034206686 059901488 +000000835 000424242 000432879 D|040888181 048079934 +000000835 000432049 000438558 D|095680000 002433821 +000000835 000442475 000458008 D|071411478 082386021 +000000835 000480192 000497663 D|007745503 048365259 +000000835 000562143 000509416 D|040350830 052883731 +000000835 000570148 000530513 D|047076821 036819880 +000000835 000577032 000532976 D|006180883 066075044 +000000835 000584605 000586528 D|083458367 029520675 +000000835 000588624 000602453 D|056306039 021477908 +000000835 000593061 000615267 D|035100119 097096297 +000000835 000640401 000617920 D|020344977 065919117 +000000835 000647072 000630088 D|065238761 027909350 +000000835 000708268 000645043 D|038778133 073913693 +000000835 000708286 000650889 D|076765029 088602599 +000000835 000721088 000667060 D|095728863 003327855 +000000835 000735051 000701018 D|036305253 027000180 +000000835 000737632 000704604 D|089219225 053988857 +000000835 000762126 000750440 D|038585562 042481652 +000000835 000778121 000758651 D|039689563 080559870 +000000835 000778549 000778855 D|086338311 015249701 +000000835 000812363 000813774 D|007600832 034326362 +000000835 000881548 000815903 D|056340135 079678823 +000000835 000887902 000820593 D|081612859 004336427 +000000835 000900333 000843792 D|088100703 038495699 +000000835 000923988 000860711 D|060560848 097908562 +000000835 000932430 000871029 D|066047911 069584933 +000000835 000960142 000871765 D|000763861 015327217 +000000835 000995131 000958142 D|051505843 078857518 +000000836 000074489 000000418 D|065625883 087392042 +000000836 000107287 000014545 D|082647728 013811684 +000000836 000129045 000014873 D|036032758 091407476 +000000836 000180970 000016198 D|029213926 009387222 +000000836 000198731 000026194 D|079024685 062495101 +000000836 000226807 000035080 D|011880729 025036739 +000000836 000241141 000038857 D|001195473 060561535 +000000836 000242253 000050928 D|088742719 098681423 +000000836 000243892 000068232 D|068133645 028092607 +000000836 000265931 000074341 D|072671873 045171579 +000000836 000273485 000112713 D|070529002 076868446 +000000836 000295479 000113115 D|029081014 041228248 +000000836 000303843 000217176 D|002740845 035812570 +000000836 000305876 000217834 D|056948695 024858605 +000000836 000317391 000253801 D|074748962 096823986 +000000836 000342986 000264473 D|067952200 005871489 +000000836 000376670 000325508 D|046407927 010917797 +000000836 000417361 000406405 D|079729644 038508787 +000000836 000435396 000419939 D|050959695 019990390 +000000836 000440097 000423383 D|056349709 036114680 +000000836 000450585 000429530 D|063421579 089695414 +000000836 000485641 000448282 D|049205504 084848595 +000000836 000513693 000465873 D|099668526 072646562 +000000836 000516937 000492807 D|060255763 054879617 +000000836 000534948 000505081 D|010260353 002493246 +000000836 000540758 000526781 D|050534731 045385071 +000000836 000576835 000544909 D|003311282 067162712 +000000836 000587336 000553761 D|008046994 009611172 +000000836 000598644 000556137 D|094954078 084618367 +000000836 000599136 000559186 D|071174969 060670878 +000000836 000609133 000560051 D|002532216 047062076 +000000836 000617011 000588915 D|083528773 087787123 +000000836 000643871 000602142 D|077148964 072689246 +000000836 000672418 000616217 D|048893187 078151586 +000000836 000682495 000698435 D|094111344 041313204 +000000836 000693245 000703540 D|012219450 046194931 +000000836 000716404 000713740 D|082828121 049201200 +000000836 000773937 000734538 D|031883585 005825527 +000000836 000815404 000746400 D|077300166 041780490 +000000836 000830752 000751045 D|090465467 079831301 +000000836 000842674 000795915 D|099377801 074792793 +000000836 000843760 000808748 D|036793824 028534719 +000000836 000859242 000810870 D|026629919 086591517 +000000836 000873511 000839069 D|066748253 054888658 +000000836 000904121 000853395 D|038140803 063585726 +000000836 000927027 000881347 D|040363204 038972365 +000000836 000943192 000908136 D|052275866 078834018 +000000836 000947439 000973069 D|022503156 039013259 +000000836 000974857 000978690 D|009941941 099543984 +000000836 000999048 000990957 D|099218989 013551409 +000000837 000045890 000035413 D|055188355 020275852 +000000837 000082958 000039890 D|068423037 041035623 +000000837 000120969 000069202 D|066689104 020220859 +000000837 000146404 000097086 D|071801319 064790572 +000000837 000156075 000099283 D|063437056 076823453 +000000837 000199333 000113566 D|082742672 003073419 +000000837 000209048 000117882 D|088078140 067499013 +000000837 000209846 000122262 D|085817521 083166613 +000000837 000221878 000157553 D|076445358 012400833 +000000837 000241795 000177598 D|056265440 087141584 +000000837 000262453 000191335 D|019040648 025264716 +000000837 000290740 000199563 D|072411240 082876537 +000000837 000302499 000220597 D|087467656 071263760 +000000837 000311007 000265986 D|064291159 091575811 +000000837 000322144 000306598 D|043059925 039121173 +000000837 000331751 000308659 D|063850455 011313056 +000000837 000362088 000331452 D|095148360 082598592 +000000837 000398405 000355604 D|095558040 040772624 +000000837 000411199 000366559 D|037507109 077216557 +000000837 000412355 000434958 D|014364786 022298151 +000000837 000416412 000435621 D|069313903 095910216 +000000837 000443864 000475061 D|067999982 057492879 +000000837 000470372 000485570 D|008925513 055448245 +000000837 000513209 000487526 D|067910410 031524554 +000000837 000522390 000501214 D|083358759 058652877 +000000837 000537565 000513711 D|015939707 042299746 +000000837 000538671 000520523 D|062965010 047033594 +000000837 000539609 000548443 D|057686230 033396696 +000000837 000554384 000557674 D|030025584 082183300 +000000837 000556856 000566022 D|009371932 034836887 +000000837 000599208 000626105 D|058238983 049847798 +000000837 000608484 000706038 D|068419390 068923854 +000000837 000629679 000712343 D|032414445 001518174 +000000837 000650413 000764734 D|005334308 094849314 +000000837 000655450 000764856 D|010879776 058373408 +000000837 000661416 000766425 D|023457517 046635868 +000000837 000662198 000795832 D|028233127 011969569 +000000837 000670260 000799614 D|035448028 048578783 +000000837 000674343 000807986 D|037599458 042461218 +000000837 000687003 000813539 D|006737891 095894043 +000000837 000705123 000834189 D|078662806 001794464 +000000837 000733846 000835763 D|085182059 061864979 +000000837 000791695 000862435 D|001358534 089580197 +000000837 000816981 000867370 D|093110374 085299319 +000000837 000869297 000871733 D|023412704 077049298 +000000837 000885520 000885302 D|065886837 099921890 +000000837 000889107 000942742 D|085603102 007649009 +000000837 000917147 000950028 D|007926065 050934677 +000000837 000989416 000977752 D|065793059 073145946 +000000837 000993295 000979476 D|042452380 011322017 +000000838 000011022 000002558 D|061847830 087682535 +000000838 000025614 000026450 D|003314623 030895224 +000000838 000038597 000050751 D|057153190 072887912 +000000838 000046764 000087198 D|023645594 065610826 +000000838 000072119 000103995 D|092785078 000913472 +000000838 000082686 000108841 D|004614876 061508959 +000000838 000098066 000108865 D|071643474 080891858 +000000838 000135515 000122326 D|044427670 097256149 +000000838 000175821 000126358 D|033299231 080064348 +000000838 000191199 000152342 D|042067487 026266011 +000000838 000194025 000178075 D|012478344 048353274 +000000838 000201982 000205424 D|079923799 021430805 +000000838 000206416 000215671 D|092726784 018978769 +000000838 000260779 000242866 D|034017975 056362522 +000000838 000273389 000250342 D|026055633 033505500 +000000838 000311576 000262772 D|032634391 000257669 +000000838 000330401 000294219 D|093628260 088459623 +000000838 000335247 000300360 D|073758368 006266155 +000000838 000343472 000310240 D|072683872 009674504 +000000838 000353800 000321971 D|034889992 077594631 +000000838 000385466 000367696 D|055819357 072427249 +000000838 000424227 000395191 D|014119961 005167380 +000000838 000449176 000414679 D|032739629 097424846 +000000838 000450531 000441400 D|058599675 014648625 +000000838 000451831 000446357 D|041426811 027021298 +000000838 000463730 000461056 D|060920757 056716026 +000000838 000464667 000486385 D|094891887 030167099 +000000838 000466191 000520467 D|027922002 058375504 +000000838 000476616 000528387 D|007816908 047764727 +000000838 000479544 000558999 D|029470903 031605719 +000000838 000496576 000594895 D|012846619 076753326 +000000838 000535197 000605351 D|019490964 010864356 +000000838 000568410 000606758 D|088967349 047646526 +000000838 000569351 000643744 D|085506821 034131369 +000000838 000570275 000662468 D|037142577 048473196 +000000838 000612672 000674759 D|092671667 000840812 +000000838 000705343 000711460 D|097403104 039184677 +000000838 000706336 000717613 D|021005674 095923895 +000000838 000729874 000727851 D|007467289 011715569 +000000838 000788459 000744125 D|024530696 091530855 +000000838 000795756 000753461 D|043353102 008223471 +000000838 000829813 000762042 D|064341451 083935757 +000000838 000830551 000780761 D|091375633 050835487 +000000838 000865893 000800916 D|036260926 026073528 +000000838 000872272 000825734 D|070042889 066898958 +000000838 000893186 000840793 D|013585950 047289940 +000000838 000927318 000852206 D|028881161 021915596 +000000838 000964708 000871067 D|069137477 046170260 +000000838 000974493 000919582 D|069971564 024838008 +000000838 000989575 000957375 D|060588581 012677447 +000000839 000006741 000038634 D|030328767 029585674 +000000839 000021897 000057366 D|094221317 078687541 +000000839 000030607 000062469 D|078769039 053124682 +000000839 000033334 000069597 D|089703352 087614449 +000000839 000041903 000074437 D|085318272 074840512 +000000839 000052559 000077473 D|088740559 056587258 +000000839 000054569 000097103 D|096436797 005119981 +000000839 000054960 000146024 D|077250629 067413084 +000000839 000063141 000172906 D|054133236 032925554 +000000839 000069433 000193129 D|086875270 006690060 +000000839 000080580 000198899 D|061742415 074954084 +000000839 000156109 000202555 D|020105415 041508539 +000000839 000171243 000227490 D|026070063 090652210 +000000839 000178202 000242800 D|015836688 062109533 +000000839 000179579 000243788 D|035165677 072494064 +000000839 000259865 000273684 D|017474027 061421596 +000000839 000321759 000281278 D|081578034 039549112 +000000839 000335382 000282305 D|047519422 001666840 +000000839 000373543 000327671 D|087455288 060191063 +000000839 000395978 000343021 D|080655384 096934904 +000000839 000415470 000349834 D|056584115 048666470 +000000839 000416198 000372562 D|055926278 065853738 +000000839 000478993 000390347 D|011275542 085170003 +000000839 000484065 000414358 D|097867707 083910440 +000000839 000534696 000421654 D|026496080 043595575 +000000839 000545611 000441051 D|064070590 065909701 +000000839 000552943 000443097 D|006791863 019612831 +000000839 000562421 000497840 D|041060937 086171040 +000000839 000567061 000504840 D|070552249 080678502 +000000839 000627535 000566222 D|001171229 050722216 +000000839 000664959 000570727 D|080860881 013252651 +000000839 000670309 000571028 D|003409083 016077652 +000000839 000699220 000577227 D|006259473 048290459 +000000839 000710268 000607213 D|097890057 018769222 +000000839 000731498 000615868 D|089311078 022536811 +000000839 000767209 000654465 D|080473078 040460171 +000000839 000770481 000657841 D|046672594 088778025 +000000839 000771071 000665819 D|021099473 032246600 +000000839 000778452 000674950 D|082097955 073181053 +000000839 000807449 000749671 D|010744348 053439437 +000000839 000837912 000780410 D|025084346 062942188 +000000839 000847759 000798240 D|098424790 051515889 +000000839 000888035 000851041 D|043817423 051814732 +000000839 000889772 000895591 D|072761659 034840287 +000000839 000926648 000901765 D|039902404 080600330 +000000839 000946146 000909524 D|012446899 084149884 +000000839 000978370 000924025 D|023214746 079385415 +000000839 000980277 000926874 D|082517265 044554802 +000000839 000985857 000934125 D|013352171 094473381 +000000839 000993876 000938503 D|085778888 027011941 +000000840 000015871 000007925 D|060911607 041272882 +000000840 000020884 000017764 D|008350486 099709081 +000000840 000028602 000027669 D|013332531 079185801 +000000840 000047829 000044054 D|033961047 058207047 +000000840 000050017 000058143 D|096655824 037742194 +000000840 000074342 000061597 D|083533611 066755094 +000000840 000146440 000085777 D|082752710 030810468 +000000840 000155210 000091947 D|065124449 038340269 +000000840 000171888 000101020 D|072098529 078501039 +000000840 000226282 000126503 D|091952343 045852673 +000000840 000241632 000135948 D|046387638 067987375 +000000840 000248835 000137253 D|042588615 095349731 +000000840 000257249 000154256 D|029819457 003105929 +000000840 000297408 000169806 D|078315050 053750770 +000000840 000319981 000176948 D|070685900 009658835 +000000840 000360173 000203593 D|052776325 069017485 +000000840 000364750 000205604 D|044820277 082491701 +000000840 000385305 000240092 D|090154850 072593763 +000000840 000392782 000242627 D|013031506 011874685 +000000840 000404241 000307781 D|083623833 025896341 +000000840 000413009 000310467 D|095311084 042127658 +000000840 000416216 000330434 D|017624405 038549037 +000000840 000421712 000335201 D|098772583 021318515 +000000840 000430683 000366857 D|077940575 018001794 +000000840 000431829 000395563 D|020063177 053041160 +000000840 000434485 000408564 D|008835896 093534662 +000000840 000454988 000429983 D|028055281 016280162 +000000840 000456943 000476953 D|015918225 011014324 +000000840 000472591 000480736 D|086585968 037018790 +000000840 000487957 000508958 D|001545911 028879401 +000000840 000492507 000522153 D|016822121 058294594 +000000840 000500774 000533435 D|001294656 073711828 +000000840 000510854 000536387 D|034757145 024177324 +000000840 000527709 000564722 D|027852128 040187514 +000000840 000531411 000603939 D|070562328 079818931 +000000840 000560083 000626276 D|058579532 095106752 +000000840 000564594 000630621 D|085526124 057557608 +000000840 000566712 000648081 D|055238265 029617812 +000000840 000571889 000657033 D|060932809 061854208 +000000840 000654415 000664057 D|027354746 077367990 +000000840 000681205 000704542 D|065350615 024937840 +000000840 000701880 000720070 D|085168181 063035500 +000000840 000714658 000731037 D|035928216 082406127 +000000840 000758511 000808644 D|024154080 025470035 +000000840 000810866 000819937 D|068669092 013360163 +000000840 000812858 000867727 D|091810707 000595369 +000000840 000822643 000915053 D|010804592 034368356 +000000840 000843969 000921452 D|018119835 068480098 +000000840 000856990 000968070 D|079712083 015306270 +000000840 000949323 000978163 D|031807525 090783559 +000000841 000018197 000022449 D|044259622 091352415 +000000841 000034778 000028395 D|069944658 001832613 +000000841 000050327 000090443 D|040081599 099410098 +000000841 000093409 000091796 D|053010859 046085760 +000000841 000116744 000093821 D|086738804 057196988 +000000841 000152002 000121652 D|023212290 088422244 +000000841 000171065 000128254 D|012385573 072008024 +000000841 000182119 000148187 D|043852137 073687843 +000000841 000197907 000208847 D|055632655 013242653 +000000841 000199680 000218253 D|026688935 044863286 +000000841 000206044 000227600 D|010130637 068351181 +000000841 000207032 000228969 D|029364527 098051638 +000000841 000238698 000246884 D|052338212 067511052 +000000841 000253967 000292894 D|068026939 027952915 +000000841 000277698 000299406 D|045793786 080345274 +000000841 000297135 000307044 D|023130158 058879780 +000000841 000311406 000311260 D|062378730 078289539 +000000841 000323243 000314278 D|097613482 059341052 +000000841 000334073 000345450 D|039264293 000880158 +000000841 000389605 000358602 D|035326277 007520917 +000000841 000399657 000413957 D|057627413 045705446 +000000841 000477073 000442070 D|005536838 071931277 +000000841 000485476 000446957 D|003451969 090440352 +000000841 000485936 000456714 D|053727785 002018332 +000000841 000543163 000458644 D|073950357 052821633 +000000841 000564488 000495958 D|038220834 034820855 +000000841 000568989 000512555 D|062136249 085026297 +000000841 000570345 000549911 D|006283091 023434890 +000000841 000575245 000554298 D|079466384 005655034 +000000841 000577874 000554336 D|035258776 059099192 +000000841 000578079 000594280 D|011525634 074468485 +000000841 000580672 000618460 D|072171993 071032570 +000000841 000600419 000621327 D|050116040 082246028 +000000841 000605076 000650194 D|013152834 013412679 +000000841 000643620 000652686 D|033761696 034571538 +000000841 000711102 000700927 D|029789683 050527499 +000000841 000754267 000749455 D|051091602 088204370 +000000841 000767554 000786520 D|027979217 037878677 +000000841 000771353 000791473 D|022037775 012496274 +000000841 000821988 000808480 D|048611634 066190535 +000000841 000826167 000818552 D|088801356 036901476 +000000841 000895969 000836136 D|056889493 035746051 +000000841 000902677 000839663 D|047903011 016730684 +000000841 000920864 000863649 D|067076409 004559478 +000000841 000928835 000865546 D|054923225 039924592 +000000841 000938147 000891480 D|062572559 058827037 +000000841 000940564 000958637 D|048548584 025030306 +000000841 000955118 000965814 D|040606903 051162472 +000000841 000974286 000991421 D|099820498 003043158 +000000841 000989033 000997292 D|037979728 091599653 +000000842 000025881 000006298 D|071766622 064881038 +000000842 000027004 000023749 D|009480368 061562813 +000000842 000046078 000024072 D|067426929 036194615 +000000842 000054075 000035380 D|013721713 026669321 +000000842 000082782 000036080 D|010063336 050117946 +000000842 000107558 000090738 D|028632835 070508759 +000000842 000119343 000091645 D|010210902 093113348 +000000842 000154417 000111938 D|054167970 040461102 +000000842 000204673 000114585 D|052479262 055258085 +000000842 000224008 000120475 D|075294472 099214385 +000000842 000229955 000152067 D|085364001 065027490 +000000842 000259617 000169387 D|079370136 024405351 +000000842 000265354 000239997 D|068358896 020370601 +000000842 000280613 000248012 D|027478280 074985281 +000000842 000309526 000291609 D|025588869 012807486 +000000842 000324682 000292025 D|073298477 049284606 +000000842 000326477 000338056 D|082005531 093784805 +000000842 000348613 000342358 D|082603335 085591596 +000000842 000354710 000366657 D|001047959 067842831 +000000842 000383982 000370231 D|004499932 000346027 +000000842 000384879 000417351 D|070233091 014285363 +000000842 000387341 000459189 D|083234226 063918660 +000000842 000475307 000488276 D|053261011 046404480 +000000842 000481020 000494166 D|096816003 016377216 +000000842 000531765 000516757 D|077036751 039537672 +000000842 000553689 000517022 D|003822601 011018597 +000000842 000568549 000570843 D|055316125 099322497 +000000842 000633824 000575799 D|005817266 034557573 +000000842 000644943 000603384 D|051064058 018980775 +000000842 000658113 000604505 D|000522396 037741399 +000000842 000671716 000613007 D|034445549 071070542 +000000842 000680308 000616757 D|031167222 019270678 +000000842 000690290 000622165 D|049202194 090330201 +000000842 000692228 000675295 D|068533825 057555655 +000000842 000700694 000680613 D|090256125 095958084 +000000842 000703747 000698465 D|002404994 030912970 +000000842 000704940 000730873 D|057409908 017398104 +000000842 000753069 000733295 D|041640783 076495888 +000000842 000774702 000748432 D|084779624 058668433 +000000842 000807179 000772662 D|065495580 049230051 +000000842 000828735 000814621 D|035146565 032560643 +000000842 000848920 000841661 D|038593944 082873217 +000000842 000892164 000877304 D|004364981 072795494 +000000842 000894329 000904238 D|056944172 036824633 +000000842 000912780 000925283 D|010564262 099741570 +000000842 000931772 000945887 D|077846630 001412410 +000000842 000935502 000947480 D|072378642 036649442 +000000842 000939969 000967269 D|052262077 047649841 +000000842 000954694 000974239 D|047251701 004111704 +000000842 000969731 000995773 D|073949026 022592800 +000000843 000020028 000059776 D|085018870 069519237 +000000843 000056599 000108116 D|015399994 025942296 +000000843 000085525 000145090 D|007097494 030469018 +000000843 000093327 000184226 D|086547283 042152635 +000000843 000104597 000241868 D|051899891 027352408 +000000843 000106411 000265432 D|026618034 009739148 +000000843 000136771 000273485 D|038729887 056486937 +000000843 000147131 000274992 D|000487218 093989188 +000000843 000152322 000350700 D|083972856 065301944 +000000843 000157574 000356863 D|015374673 066795510 +000000843 000242547 000357812 D|079594994 003637270 +000000843 000264549 000379908 D|016951538 007646871 +000000843 000267390 000415330 D|083082084 071566533 +000000843 000277800 000423274 D|014935851 072549148 +000000843 000289427 000436388 D|058072189 030655491 +000000843 000306754 000441985 D|027458054 086646154 +000000843 000332691 000452502 D|035376021 092541195 +000000843 000371928 000470658 D|099084805 098462853 +000000843 000395440 000481477 D|087877289 093851113 +000000843 000413752 000504721 D|021364615 079865006 +000000843 000420763 000547231 D|089451520 083468537 +000000843 000421070 000562390 D|093543203 076085693 +000000843 000457869 000564084 D|045533322 030710304 +000000843 000555845 000573139 D|090389628 050431235 +000000843 000559086 000581317 D|049855968 021145701 +000000843 000567446 000584424 D|078192432 016541953 +000000843 000579788 000605165 D|073923550 039407502 +000000843 000608281 000621284 D|004935856 005818260 +000000843 000639235 000628734 D|024244131 027156350 +000000843 000647806 000629335 D|085651154 043640970 +000000843 000669245 000631415 D|017140333 032280873 +000000843 000706200 000634724 D|044139879 081431454 +000000843 000715857 000635773 D|023673672 016622034 +000000843 000718565 000643294 D|090892067 007517762 +000000843 000721911 000678791 D|050783001 026590134 +000000843 000802661 000690880 D|058869509 097624223 +000000843 000803630 000698257 D|051493556 078698017 +000000843 000809025 000709409 D|056426405 019129886 +000000843 000809259 000719769 D|064879719 034304619 +000000843 000816551 000725810 D|037435087 085440907 +000000843 000850658 000770003 D|097280989 029846975 +000000843 000854793 000775403 D|086316498 043432711 +000000843 000860128 000782013 D|038670873 015346894 +000000843 000898704 000828934 D|064256729 007955927 +000000843 000916772 000861998 D|050334449 026043764 +000000843 000927339 000873417 D|075849225 036154203 +000000843 000967503 000902007 D|069752738 051452482 +000000843 000967507 000932132 D|064347546 018809241 +000000843 000973133 000943202 D|052025196 091112133 +000000843 000987008 000982647 D|046070623 036806171 +000000844 000058269 000042538 D|097517190 021473997 +000000844 000063586 000053425 D|042978706 036800244 +000000844 000069416 000059835 D|004571275 031805925 +000000844 000090810 000098203 D|084955162 075406287 +000000844 000157582 000098767 D|045476693 026866693 +000000844 000184015 000099825 D|064505412 081663430 +000000844 000188480 000101100 D|066045561 073920083 +000000844 000202363 000123854 D|081403562 071303669 +000000844 000211770 000126910 D|090041457 000384358 +000000844 000248310 000201341 D|059970535 064854952 +000000844 000248663 000204018 D|066619804 021561845 +000000844 000249987 000226319 D|052560354 005117292 +000000844 000299211 000228135 D|008949878 095072204 +000000844 000306537 000232868 D|075853122 073151865 +000000844 000318297 000241645 D|053926028 026638197 +000000844 000332310 000273355 D|031675926 084359061 +000000844 000337231 000285347 D|072497421 054008122 +000000844 000337643 000285780 D|071812382 068424763 +000000844 000374987 000290363 D|078324784 057222330 +000000844 000380268 000311498 D|009196845 098711267 +000000844 000421153 000356493 D|026295710 021456656 +000000844 000424874 000402424 D|062368730 061916115 +000000844 000426313 000420255 D|064195566 035292082 +000000844 000505984 000473317 D|014605462 037536200 +000000844 000516346 000474569 D|001891766 058009938 +000000844 000522939 000513131 D|015884910 043558725 +000000844 000526742 000523890 D|020963004 041415649 +000000844 000533190 000534106 D|045486256 061973620 +000000844 000552979 000584541 D|075767517 020068392 +000000844 000560669 000594594 D|031120362 015031350 +000000844 000566782 000602029 D|064436173 062066965 +000000844 000596449 000649562 D|004460070 075103294 +000000844 000599767 000658525 D|009854123 021232122 +000000844 000603990 000680669 D|048954981 094971758 +000000844 000609614 000689918 D|038447304 042695643 +000000844 000665411 000691460 D|021680302 073029894 +000000844 000698065 000706274 D|044479108 096927274 +000000844 000706682 000748349 D|090553653 084704703 +000000844 000732132 000792597 D|098649938 022413020 +000000844 000741209 000793200 D|040480429 075193115 +000000844 000764707 000804688 D|025053913 075728682 +000000844 000772418 000818093 D|041476133 057718360 +000000844 000794662 000843761 D|096149904 073895963 +000000844 000806918 000868077 D|016913876 098739024 +000000844 000816108 000896165 D|093399167 055360382 +000000844 000834990 000908689 D|082471324 079100108 +000000844 000932473 000929713 D|097406006 075615615 +000000844 000935892 000944156 D|059364550 090315326 +000000844 000968271 000966284 D|028484658 016173898 +000000844 000997807 000974821 D|024720595 069683301 +000000845 000011208 000010644 D|046523490 040308199 +000000845 000028764 000023298 D|012954689 095079924 +000000845 000032405 000042303 D|044013768 047175727 +000000845 000038734 000044732 D|058640314 079676260 +000000845 000062110 000063053 D|029936917 029915827 +000000845 000119690 000064718 D|040851584 093790335 +000000845 000135674 000069413 D|046689932 021098245 +000000845 000146707 000080651 D|087227547 043926875 +000000845 000164213 000086555 D|005450169 047593307 +000000845 000168962 000088694 D|010644636 091558263 +000000845 000173646 000102683 D|069548921 038254280 +000000845 000196037 000118369 D|020617184 023269102 +000000845 000252303 000126758 D|073233066 090945748 +000000845 000258015 000131634 D|071762964 084143312 +000000845 000275797 000134083 D|037521069 038140448 +000000845 000276854 000141459 D|077447464 062895571 +000000845 000293709 000151111 D|010546328 075622300 +000000845 000301591 000152463 D|031894773 025973143 +000000845 000354022 000182261 D|058149377 049139397 +000000845 000357171 000191337 D|076287734 093158884 +000000845 000372114 000207416 D|049805558 004277504 +000000845 000387866 000231014 D|098472221 020655365 +000000845 000397899 000232708 D|078118201 067978000 +000000845 000431295 000243956 D|018579265 001028746 +000000845 000436656 000353664 D|005564608 087321891 +000000845 000462053 000360857 D|089135989 011676457 +000000845 000493307 000378634 D|036207661 056422422 +000000845 000497009 000404714 D|047446665 073927018 +000000845 000497126 000405988 D|090033098 075476286 +000000845 000512419 000419470 D|000459530 072389965 +000000845 000533746 000442913 D|004097683 083644958 +000000845 000533952 000449121 D|070750666 065222423 +000000845 000538439 000461295 D|069496991 077124175 +000000845 000557993 000510180 D|007482975 048519652 +000000845 000576250 000542739 D|054324227 022720778 +000000845 000590397 000556475 D|025107293 037079366 +000000845 000606540 000582946 D|058502358 011285153 +000000845 000628178 000629878 D|069567565 077908840 +000000845 000695003 000650645 D|011010536 037147011 +000000845 000698155 000666378 D|035885819 098491438 +000000845 000740234 000671284 D|050249896 079167969 +000000845 000749050 000700359 D|062091132 055314186 +000000845 000749053 000739035 D|034425995 000213927 +000000845 000780398 000748560 D|059458805 047496244 +000000845 000798927 000837058 D|020614156 077716287 +000000845 000830121 000845232 D|024136793 094352551 +000000845 000858981 000869283 D|076331035 058455453 +000000845 000877332 000897701 D|056805263 046772313 +000000845 000936211 000945354 D|012699842 031168191 +000000845 000967391 000973177 D|093722562 041149998 +000000846 000052943 000027744 D|047482545 021430570 +000000846 000069557 000033022 D|059880018 091594670 +000000846 000091687 000036426 D|061967709 097774862 +000000846 000094782 000045758 D|070533355 087106769 +000000846 000110005 000058945 D|013083650 085431717 +000000846 000125199 000109412 D|013186820 077807298 +000000846 000164182 000177624 D|001266845 023604304 +000000846 000258841 000194747 D|020676477 074639001 +000000846 000272744 000198378 D|083358919 068677577 +000000846 000276953 000231251 D|088661968 073031332 +000000846 000329978 000231367 D|014869282 006927369 +000000846 000360502 000237051 D|057902225 050185786 +000000846 000364565 000351126 D|061152613 057940713 +000000846 000382240 000355450 D|015879916 084093242 +000000846 000409428 000360559 D|064191247 089926502 +000000846 000418155 000374238 D|048823620 002727411 +000000846 000440872 000389658 D|007575723 023399487 +000000846 000442312 000402452 D|080918128 084570328 +000000846 000469811 000439235 D|078876302 075642371 +000000846 000485239 000440161 D|027657971 068565534 +000000846 000486066 000488855 D|046272092 000471764 +000000846 000492666 000532828 D|064636894 063685685 +000000846 000493101 000559501 D|069966814 010233044 +000000846 000503789 000560314 D|075378041 040568049 +000000846 000514750 000564953 D|076260138 010601448 +000000846 000544837 000569618 D|063250432 010529497 +000000846 000552760 000581837 D|060225617 016020439 +000000846 000553253 000608547 D|019878733 063428784 +000000846 000566503 000623980 D|023599371 093220020 +000000846 000589075 000659219 D|023668587 006840947 +000000846 000625471 000677747 D|008128038 052632313 +000000846 000628816 000693154 D|087537737 028213279 +000000846 000660007 000725432 D|092784533 044152429 +000000846 000663287 000746800 D|028426001 012906977 +000000846 000703619 000803052 D|027744073 075973776 +000000846 000714340 000845480 D|026900898 074756381 +000000846 000726532 000846595 D|027153922 071572136 +000000846 000773821 000858680 D|002999791 043895461 +000000846 000795013 000866685 D|052589580 012764217 +000000846 000811767 000869965 D|019639288 064833560 +000000846 000826173 000910750 D|058990289 022144457 +000000846 000830731 000914552 D|043565865 048778095 +000000846 000870151 000921679 D|067294505 016239744 +000000846 000907832 000925724 D|031190118 046303653 +000000846 000912925 000932394 D|062503262 040600364 +000000846 000915322 000941558 D|034689709 065555421 +000000846 000933337 000967690 D|089651584 052584184 +000000846 000971881 000971589 D|020660049 067861573 +000000846 000987082 000989720 D|024451740 004798105 +000000846 000988219 000992592 D|097877881 093454161 +000000847 000010568 000011196 D|036853500 046692758 +000000847 000071130 000025159 D|006302000 059714820 +000000847 000084506 000025673 D|004069867 016391919 +000000847 000110825 000067672 D|038320433 081022089 +000000847 000112189 000103312 D|009667096 041552030 +000000847 000203481 000103749 D|065259549 074575239 +000000847 000218056 000132258 D|042905915 062561683 +000000847 000278315 000150344 D|026639646 069444579 +000000847 000285257 000171208 D|004015678 090509131 +000000847 000293085 000181113 D|034462240 095849205 +000000847 000301062 000184269 D|012890761 078269964 +000000847 000309904 000194406 D|064058060 051084751 +000000847 000324381 000209681 D|033225759 088901599 +000000847 000350409 000278175 D|010641289 051998407 +000000847 000353493 000304058 D|013454194 007788466 +000000847 000375238 000344523 D|030622817 089853360 +000000847 000392495 000346469 D|094387673 000015779 +000000847 000415955 000369968 D|026059372 037576342 +000000847 000424645 000371892 D|090755775 043720855 +000000847 000434299 000399281 D|013482122 076603680 +000000847 000473135 000428941 D|088725748 053774678 +000000847 000474801 000494180 D|098821597 046611802 +000000847 000511611 000499220 D|081644258 098540911 +000000847 000536666 000503500 D|089286002 045148386 +000000847 000541547 000511212 D|091265832 035073964 +000000847 000564343 000585116 D|094038579 048104398 +000000847 000579645 000606111 D|088082162 082623401 +000000847 000626448 000640664 D|098363204 041035187 +000000847 000628534 000655996 D|020728763 047975203 +000000847 000638577 000660359 D|024409643 020564943 +000000847 000646054 000706887 D|030188255 011674605 +000000847 000659404 000713308 D|048649057 011795241 +000000847 000676596 000720810 D|035045539 059080888 +000000847 000723801 000728047 D|082019650 061160707 +000000847 000747902 000730560 D|095234440 019202483 +000000847 000803819 000735802 D|019944371 036105762 +000000847 000810889 000745322 D|020377966 032695155 +000000847 000816296 000755324 D|003340343 009300496 +000000847 000824627 000772139 D|003245294 076803669 +000000847 000827769 000781102 D|052877253 073420431 +000000847 000858104 000790077 D|073921048 083208544 +000000847 000879882 000805410 D|090600785 080821966 +000000847 000896038 000824549 D|073426739 091883651 +000000847 000915166 000857807 D|014528475 027719887 +000000847 000919750 000859325 D|025559193 053728918 +000000847 000931191 000891726 D|020526061 022903400 +000000847 000935499 000900144 D|016969036 090847776 +000000847 000941738 000924165 D|069553297 032958220 +000000847 000987184 000926856 D|030146014 096693538 +000000847 000995900 000987103 D|072134610 086017614 +000000848 000016121 000016521 D|042357197 058669882 +000000848 000019007 000021104 D|060423165 071900863 +000000848 000050172 000074996 D|055327001 017265637 +000000848 000064399 000098602 D|076009244 006498953 +000000848 000073151 000130639 D|043482205 079539542 +000000848 000144150 000149374 D|022066823 016020679 +000000848 000167910 000169230 D|096837116 019623458 +000000848 000173734 000205376 D|077403054 097094101 +000000848 000239970 000257062 D|061895046 013209411 +000000848 000250696 000260903 D|000521252 063275346 +000000848 000257677 000273769 D|063960729 027031924 +000000848 000285826 000316335 D|001998740 004466623 +000000848 000303788 000321040 D|070710644 018147559 +000000848 000310755 000328702 D|091519968 070030879 +000000848 000337408 000346733 D|038364831 045699956 +000000848 000345647 000367155 D|025873688 026402944 +000000848 000346149 000376761 D|084252549 087790619 +000000848 000381518 000381017 D|053565216 098013717 +000000848 000401868 000413312 D|009234323 004868279 +000000848 000409494 000437301 D|052940369 041024372 +000000848 000445630 000457382 D|054050606 048403040 +000000848 000480265 000467577 D|048747337 058836100 +000000848 000488366 000486787 D|087573267 017098726 +000000848 000506578 000525772 D|030633066 054927232 +000000848 000549031 000542645 D|081115966 095447609 +000000848 000549454 000558878 D|090208879 091844681 +000000848 000557736 000591888 D|080592641 059436296 +000000848 000587645 000596173 D|032970402 093323825 +000000848 000597796 000598035 D|019508336 018455332 +000000848 000612521 000658488 D|012274580 010560760 +000000848 000638575 000659801 D|044390090 028665009 +000000848 000648367 000689653 D|012845268 017276154 +000000848 000654633 000700139 D|076137597 070679921 +000000848 000720178 000718121 D|000876294 057876481 +000000848 000743547 000737140 D|004380172 014655973 +000000848 000771368 000739475 D|080345874 091607655 +000000848 000822759 000779650 D|098435320 090663381 +000000848 000832725 000794037 D|040397378 031648104 +000000848 000834219 000802162 D|048118895 085000838 +000000848 000841012 000803747 D|097402051 096909344 +000000848 000852718 000815949 D|075209101 012327103 +000000848 000854237 000850588 D|061914711 099117718 +000000848 000863934 000850959 D|031740476 083940986 +000000848 000875204 000853346 D|088846143 029497926 +000000848 000915241 000854962 D|070486294 025616128 +000000848 000915356 000863347 D|090108208 061241515 +000000848 000924540 000898627 D|068266785 037542617 +000000848 000952015 000953869 D|042317067 070216342 +000000848 000960773 000967119 D|005207841 075280318 +000000848 000984872 000993647 D|096624540 078888035 +000000849 000001647 000012553 D|020495954 025211043 +000000849 000049096 000018851 D|090626052 087689284 +000000849 000098146 000019446 D|088419009 085202820 +000000849 000119724 000042720 D|055655949 078931429 +000000849 000124428 000042824 D|024843230 063796301 +000000849 000139314 000080901 D|096187662 035873678 +000000849 000147065 000089488 D|072216233 002793518 +000000849 000174746 000109538 D|030979650 006428628 +000000849 000185957 000111399 D|045089520 033133505 +000000849 000189930 000158703 D|035553762 088976907 +000000849 000191376 000184683 D|078761563 045952982 +000000849 000245736 000191080 D|081253164 004170953 +000000849 000247633 000218130 D|089540583 075852391 +000000849 000251550 000272681 D|099416139 005193549 +000000849 000257205 000274939 D|037053123 053317760 +000000849 000275424 000281427 D|045409580 022236010 +000000849 000289164 000287587 D|085157787 099683108 +000000849 000298122 000292804 D|033463047 045796211 +000000849 000369859 000306187 D|049624035 056909758 +000000849 000390042 000310026 D|026263671 067198789 +000000849 000436026 000412968 D|030085985 076275750 +000000849 000487226 000414324 D|047358406 053557087 +000000849 000505167 000416927 D|092115520 001504445 +000000849 000522238 000423333 D|006253744 097244110 +000000849 000527037 000451141 D|099065726 096525401 +000000849 000544401 000456216 D|011734285 081414155 +000000849 000560040 000470452 D|077946367 081527451 +000000849 000582786 000477624 D|054274237 082808791 +000000849 000595927 000488752 D|045370442 029393459 +000000849 000599992 000519780 D|054478908 007696581 +000000849 000640108 000523703 D|071580484 034630703 +000000849 000651632 000525106 D|096893909 028661951 +000000849 000706977 000536576 D|003822258 067082755 +000000849 000713457 000601396 D|057955657 023148320 +000000849 000779226 000603088 D|088254167 008962145 +000000849 000798206 000610257 D|016228180 087085413 +000000849 000800682 000624095 D|023316533 048939324 +000000849 000821674 000632183 D|028309354 020980081 +000000849 000822925 000652590 D|006122853 058445318 +000000849 000848701 000685207 D|021670624 040258618 +000000849 000854169 000737307 D|004949462 088523301 +000000849 000865959 000751522 D|011446871 065192974 +000000849 000866258 000772914 D|069416953 078321242 +000000849 000874760 000813639 D|059983465 003160664 +000000849 000913405 000817781 D|091658521 025316394 +000000849 000915001 000844428 D|041415069 037157122 +000000849 000974713 000885204 D|066711897 018753686 +000000849 000977253 000902952 D|020297852 098506712 +000000849 000983369 000909811 D|056743850 042554573 +000000849 000984693 000983512 D|029283399 062989250 +000000850 000002022 000015227 D|069041012 050601543 +000000850 000041851 000034372 D|078978394 043370072 +000000850 000046078 000039716 D|067400763 086537597 +000000850 000047851 000040158 D|035211738 030650336 +000000850 000069471 000061485 D|048473586 096874170 +000000850 000143206 000061707 D|066394692 017977934 +000000850 000216677 000076808 D|041221489 051068552 +000000850 000223946 000083260 D|067087014 094020929 +000000850 000242061 000112660 D|008558222 053959131 +000000850 000295400 000121218 D|057426242 065433012 +000000850 000306852 000135777 D|022546850 077593224 +000000850 000331970 000145549 D|021512327 001022421 +000000850 000343119 000232218 D|020304523 021162484 +000000850 000367622 000254857 D|003266876 011407058 +000000850 000378965 000259830 D|059879928 070638434 +000000850 000409475 000271559 D|080177443 021967399 +000000850 000413979 000274769 D|001673791 035677748 +000000850 000425085 000277559 D|000540141 049195118 +000000850 000443204 000299582 D|068222361 007867101 +000000850 000452207 000323995 D|066677073 085466998 +000000850 000454953 000331282 D|041542118 085300201 +000000850 000482355 000331300 D|059368935 059284821 +000000850 000487449 000336428 D|048791477 093052309 +000000850 000521307 000371946 D|008064467 052625417 +000000850 000546788 000469365 D|057955477 004311698 +000000850 000553497 000481425 D|098424402 003843270 +000000850 000573221 000484048 D|006540061 057785182 +000000850 000593096 000487111 D|028608656 062864286 +000000850 000629598 000506136 D|031059682 064847906 +000000850 000710761 000507584 D|075733042 012966074 +000000850 000726180 000514681 D|073013550 082462551 +000000850 000729827 000543911 D|089102561 015554913 +000000850 000730899 000608122 D|030028895 073721174 +000000850 000738996 000662927 D|079706746 025872454 +000000850 000748020 000664491 D|099782893 081726159 +000000850 000805150 000706990 D|045466279 058878061 +000000850 000815418 000714654 D|068700822 044926331 +000000850 000825977 000717508 D|096622950 055126754 +000000850 000867395 000741398 D|071883157 064250437 +000000850 000874522 000757354 D|027337144 035613516 +000000850 000879342 000821221 D|049128814 020722200 +000000850 000883258 000830619 D|058564186 044181928 +000000850 000914685 000869366 D|052007888 079439318 +000000850 000926210 000881814 D|008190563 096262481 +000000850 000926515 000889270 D|078354216 079676239 +000000850 000930203 000905973 D|035682757 012729072 +000000850 000958930 000912884 D|063686030 076473773 +000000850 000961486 000923042 D|081816977 039847489 +000000850 000986202 000936939 D|050436725 094246334 +000000850 000990083 000974521 D|020932039 067315007 +000000851 000012777 000000996 D|039390753 084029578 +000000851 000017410 000025628 D|073676960 077459694 +000000851 000028715 000094050 D|068483100 093901075 +000000851 000037190 000138943 D|005420783 052457164 +000000851 000105270 000148976 D|017792154 009214375 +000000851 000154970 000155396 D|042360309 086786542 +000000851 000169834 000183856 D|011263310 029807253 +000000851 000176714 000191008 D|022516656 042692018 +000000851 000205129 000196609 D|028138805 034119766 +000000851 000205329 000202628 D|008933131 057788240 +000000851 000207356 000207290 D|031338391 072003094 +000000851 000219476 000231625 D|046698425 095301799 +000000851 000233785 000237708 D|061956481 008481009 +000000851 000244283 000251474 D|083641655 035903664 +000000851 000291667 000264360 D|002385145 035480810 +000000851 000294834 000362687 D|051349047 066158976 +000000851 000309159 000383207 D|046006633 084873674 +000000851 000315183 000395606 D|002199121 096312898 +000000851 000320674 000401318 D|047120855 069308184 +000000851 000335952 000451671 D|091767244 054393869 +000000851 000354322 000457876 D|073145453 080823738 +000000851 000383567 000489750 D|040994704 044758900 +000000851 000424935 000560387 D|061022144 088015332 +000000851 000425145 000565579 D|036707064 037553724 +000000851 000437215 000570366 D|047695197 011025727 +000000851 000463134 000574805 D|002904191 003977501 +000000851 000484070 000636432 D|078476091 053888023 +000000851 000489397 000661060 D|012341296 037215564 +000000851 000521957 000666547 D|049697163 079870776 +000000851 000582925 000677273 D|095219661 090919723 +000000851 000590238 000695318 D|000051136 099055584 +000000851 000611552 000702258 D|084288673 003640080 +000000851 000634993 000719707 D|080676408 081371621 +000000851 000642810 000739166 D|033016226 029753199 +000000851 000671249 000742809 D|056698377 032212156 +000000851 000676850 000788758 D|006349216 019377998 +000000851 000687543 000791163 D|024178329 009545631 +000000851 000748400 000814376 D|041773055 030806008 +000000851 000751502 000824321 D|088625432 001796429 +000000851 000753905 000825948 D|095434498 037040248 +000000851 000788362 000831073 D|063408992 086484763 +000000851 000790319 000835055 D|065839393 047990142 +000000851 000814657 000857238 D|043250611 095258495 +000000851 000823695 000864098 D|000147337 034824024 +000000851 000847609 000891405 D|065384911 032722089 +000000851 000861608 000904387 D|083227182 067360359 +000000851 000944910 000920321 D|000506194 019179118 +000000851 000971505 000956267 D|000834131 075381459 +000000851 000986393 000972582 D|041806004 017475435 +000000851 000990704 000977404 D|013227290 021072397 +000000852 000011355 000042365 D|074091454 004098387 +000000852 000045569 000043352 D|006408919 094321657 +000000852 000056401 000046081 D|014085756 019861780 +000000852 000081156 000064493 D|063690954 042052189 +000000852 000114789 000083118 D|033033466 035178363 +000000852 000146946 000151542 D|050703911 047537851 +000000852 000156683 000158809 D|032996894 009713832 +000000852 000160897 000159919 D|038300592 046012397 +000000852 000206080 000163156 D|005310523 064442267 +000000852 000231042 000234398 D|038630968 034714930 +000000852 000240546 000254607 D|020190131 090798019 +000000852 000253732 000277365 D|015950626 000900243 +000000852 000271223 000279877 D|033171906 034674356 +000000852 000303669 000302353 D|020059872 048578847 +000000852 000304324 000316230 D|013266240 070618553 +000000852 000327956 000324668 D|060583307 044564396 +000000852 000339603 000334940 D|025559345 035602817 +000000852 000348146 000341422 D|026260462 094612267 +000000852 000358536 000366301 D|047146310 091965798 +000000852 000395639 000381084 D|054489764 071168567 +000000852 000426953 000382192 D|018965255 027626513 +000000852 000453673 000401608 D|020260328 021631387 +000000852 000455400 000412295 D|099124745 010520754 +000000852 000464208 000426194 D|073748980 013633688 +000000852 000508640 000453076 D|019376098 073497330 +000000852 000554595 000459267 D|037299093 054596661 +000000852 000559638 000460659 D|002664431 097776147 +000000852 000560444 000487543 D|005632728 043698524 +000000852 000568112 000524130 D|012765709 003726500 +000000852 000579893 000534960 D|063988811 012394402 +000000852 000634580 000540724 D|059381559 060940959 +000000852 000642616 000540740 D|021540505 002207682 +000000852 000646918 000550337 D|071843445 018065590 +000000852 000667951 000570059 D|073611526 035647437 +000000852 000670047 000583661 D|016650995 044227706 +000000852 000672594 000596990 D|061849753 025109931 +000000852 000694891 000602233 D|013187183 069165178 +000000852 000713517 000614607 D|005982671 025277811 +000000852 000714775 000633230 D|034556687 073719846 +000000852 000725287 000654175 D|001132273 052718249 +000000852 000728548 000676519 D|031815938 066807056 +000000852 000733327 000692395 D|018627419 090223065 +000000852 000788453 000723088 D|093473157 065568606 +000000852 000825776 000767482 D|003565822 012918404 +000000852 000858849 000857193 D|089227273 056305247 +000000852 000859700 000861351 D|065337418 069578619 +000000852 000871555 000914047 D|035947920 087616416 +000000852 000928055 000953925 D|039158394 041029265 +000000852 000936303 000966646 D|027242176 096646888 +000000852 000985778 000978484 D|053895191 023480687 +000000853 000027122 000011545 D|064445861 025188124 +000000853 000068941 000017398 D|053729229 065222210 +000000853 000115121 000021143 D|067915978 087456143 +000000853 000125242 000092836 D|046875285 013176703 +000000853 000126013 000096930 D|009246352 025153128 +000000853 000129119 000131755 D|067142407 026981276 +000000853 000172144 000132422 D|070551679 046295666 +000000853 000173283 000136852 D|092158647 064632584 +000000853 000192871 000144550 D|009960250 067293910 +000000853 000198823 000176454 D|052946914 093598976 +000000853 000211306 000194047 D|075426785 085708878 +000000853 000216717 000205950 D|077876199 007591777 +000000853 000234591 000220397 D|098717013 001592276 +000000853 000237404 000225754 D|046624924 021051035 +000000853 000257300 000238005 D|036730803 033259356 +000000853 000261153 000253061 D|073136309 049070638 +000000853 000262199 000268828 D|063225907 090135582 +000000853 000276049 000303374 D|088254523 090069409 +000000853 000298474 000310491 D|055560191 001839562 +000000853 000308481 000357546 D|072696566 014219148 +000000853 000316446 000442751 D|035680285 012876688 +000000853 000344485 000461009 D|028247716 049139741 +000000853 000356088 000472533 D|000887807 076437136 +000000853 000376764 000512273 D|042334067 042167159 +000000853 000423542 000559079 D|005023182 034083952 +000000853 000433600 000560620 D|042929278 083736787 +000000853 000460329 000561465 D|032352702 052234479 +000000853 000520911 000572431 D|022517081 007574511 +000000853 000557148 000573178 D|043334814 099739193 +000000853 000589921 000579621 D|008748206 065772062 +000000853 000589954 000580983 D|093898233 015459796 +000000853 000617332 000614299 D|076107436 048854970 +000000853 000659883 000617321 D|037359406 082778536 +000000853 000667520 000630292 D|095705816 012925097 +000000853 000715900 000661775 D|099403207 003623548 +000000853 000720250 000674743 D|052359805 094394695 +000000853 000745606 000677003 D|055342050 093183760 +000000853 000773255 000694720 D|081625528 065478930 +000000853 000782505 000695624 D|066456082 088004309 +000000853 000804684 000706457 D|016523557 053314859 +000000853 000806945 000715654 D|080397154 083231295 +000000853 000819584 000778281 D|058564365 040005134 +000000853 000834939 000810113 D|078443260 017541136 +000000853 000867203 000817221 D|070669152 042826683 +000000853 000871231 000841885 D|021217957 076985906 +000000853 000878578 000882972 D|028150794 093863076 +000000853 000894205 000887500 D|018916896 060500335 +000000853 000951574 000919734 D|096640083 093843052 +000000853 000959102 000920280 D|069710565 017346709 +000000853 000978442 000958782 D|024002748 005571109 +000000854 000035540 000000351 D|086583694 058394265 +000000854 000041134 000005578 D|091135271 064698652 +000000854 000047626 000015945 D|073946400 094335347 +000000854 000063865 000028262 D|099730335 074280198 +000000854 000124376 000044249 D|049868734 086288684 +000000854 000124453 000084278 D|076374695 074928381 +000000854 000125441 000095509 D|081463619 048793655 +000000854 000156932 000125257 D|002590622 016773944 +000000854 000160211 000187427 D|039519927 059131066 +000000854 000171226 000216514 D|067758461 053892948 +000000854 000190371 000315616 D|057013189 065907329 +000000854 000193170 000326753 D|079085302 016173925 +000000854 000208133 000396622 D|079426091 019362230 +000000854 000213257 000399495 D|068352586 027655986 +000000854 000242307 000402814 D|024640101 072710148 +000000854 000251532 000421990 D|015283796 094746712 +000000854 000281503 000453046 D|049603118 080660109 +000000854 000311215 000457821 D|003812201 005151488 +000000854 000359847 000476742 D|055950645 096477536 +000000854 000397092 000540662 D|076290000 023175920 +000000854 000403120 000541862 D|051590543 051880125 +000000854 000418836 000544220 D|064253225 086525034 +000000854 000421169 000544665 D|023189599 088117560 +000000854 000424685 000564001 D|067425086 004401462 +000000854 000428979 000594172 D|091021286 045203442 +000000854 000440852 000607704 D|082160921 011096543 +000000854 000448381 000634147 D|086977084 015985463 +000000854 000495952 000660154 D|097247997 049227386 +000000854 000503967 000719793 D|018024359 020965174 +000000854 000567939 000771578 D|025331426 030801851 +000000854 000580379 000797600 D|076242813 079724902 +000000854 000624748 000820835 D|001960762 051275036 +000000854 000648193 000829371 D|022001292 021609728 +000000854 000694180 000848664 D|050057952 084374128 +000000854 000701551 000853632 D|099197853 069602730 +000000854 000713255 000853675 D|027719996 097101280 +000000854 000717046 000870552 D|003649372 021205571 +000000854 000757993 000880504 D|028828432 094638282 +000000854 000783156 000894824 D|047100840 046284811 +000000854 000817613 000935898 D|041845741 016512276 +000000854 000871001 000936789 D|043339519 031839491 +000000854 000877906 000940684 D|006464734 079048099 +000000854 000908465 000948518 D|098854044 080812284 +000000854 000914212 000952217 D|055386868 027981656 +000000854 000936078 000961039 D|086673159 005168948 +000000854 000949114 000964238 D|024592771 025800920 +000000854 000954616 000965537 D|087700337 005109106 +000000854 000960258 000981706 D|027755273 095299010 +000000854 000967455 000987500 D|046185120 092062175 +000000854 000981412 000988506 D|051748895 099511583 +000000855 000044519 000015463 D|094008547 075486010 +000000855 000083617 000091841 D|058809441 050561729 +000000855 000094170 000106536 D|009874964 061758292 +000000855 000111069 000118862 D|094036837 008549662 +000000855 000155784 000120883 D|025571547 046858641 +000000855 000177371 000121487 D|057705775 059957078 +000000855 000219662 000163266 D|097456232 029991667 +000000855 000233838 000184415 D|001078368 056920094 +000000855 000235261 000223924 D|015715237 007337704 +000000855 000239176 000269144 D|073465334 076766524 +000000855 000283032 000273568 D|040276055 085500999 +000000855 000294261 000286980 D|019220695 058394306 +000000855 000302013 000305589 D|098396643 048533576 +000000855 000302281 000312812 D|024293102 097421668 +000000855 000347682 000314880 D|062996545 087793674 +000000855 000378827 000349130 D|066901607 060273724 +000000855 000401088 000365063 D|045117564 045976931 +000000855 000409883 000369500 D|015147507 015861173 +000000855 000414269 000385575 D|023793959 026221536 +000000855 000441332 000387221 D|032745009 063259046 +000000855 000452595 000402563 D|055085018 014598827 +000000855 000472540 000404528 D|032687229 001524904 +000000855 000479247 000422158 D|028804356 066830403 +000000855 000505677 000467743 D|071075704 014218469 +000000855 000555744 000476418 D|083006299 080743929 +000000855 000617552 000498642 D|082299312 001672697 +000000855 000669069 000511265 D|090775302 073836514 +000000855 000674782 000517831 D|071123343 034802914 +000000855 000714604 000525452 D|077338311 083996091 +000000855 000748300 000550228 D|091112844 075318413 +000000855 000763365 000596016 D|052142855 094216506 +000000855 000764720 000602347 D|062615701 034379628 +000000855 000789843 000635603 D|052805076 024622768 +000000855 000801252 000651136 D|037890221 098061876 +000000855 000802604 000656498 D|036465646 099912546 +000000855 000808227 000695446 D|018811606 068948727 +000000855 000823986 000721339 D|032059866 063321787 +000000855 000843102 000725236 D|066853839 044410988 +000000855 000855953 000726545 D|052817566 008581936 +000000855 000859054 000740733 D|007158316 098253923 +000000855 000874059 000854080 D|059654132 061572937 +000000855 000874502 000876924 D|050185395 068260499 +000000855 000885175 000878731 D|000437661 058745074 +000000855 000908529 000879846 D|003282281 002689524 +000000855 000916956 000905162 D|093999951 020295447 +000000855 000937075 000905573 D|053812669 031245805 +000000855 000954861 000921330 D|010367033 032796676 +000000855 000959045 000978819 D|045304615 047480490 +000000855 000992981 000981384 D|005863812 025145452 +000000855 000994376 000989062 D|052130970 029728547 +000000856 000002986 000070026 D|039684185 038968724 +000000856 000008909 000096318 D|093028889 078551410 +000000856 000034210 000109502 D|032773601 015994935 +000000856 000048797 000111437 D|052672909 063263314 +000000856 000052742 000123178 D|058388076 022534856 +000000856 000079455 000156970 D|050058681 074724828 +000000856 000099191 000205791 D|075842937 017374985 +000000856 000099371 000209162 D|020036545 098231547 +000000856 000152368 000238277 D|058346062 007116561 +000000856 000165793 000239246 D|078344264 000508310 +000000856 000193500 000239697 D|032123924 058963401 +000000856 000240757 000240750 D|021104678 017279544 +000000856 000271734 000270856 D|029679522 030797255 +000000856 000274458 000296379 D|059927719 038417464 +000000856 000284114 000309599 D|022094885 053320202 +000000856 000284972 000323530 D|016567706 060440224 +000000856 000289484 000353149 D|010732076 071826726 +000000856 000297977 000385782 D|003206004 091671893 +000000856 000323527 000396390 D|014051892 028742029 +000000856 000331062 000399327 D|010706721 068762468 +000000856 000336402 000419746 D|010666379 062149254 +000000856 000355783 000421068 D|076838991 031975907 +000000856 000408479 000421625 D|027689422 075349847 +000000856 000409965 000447103 D|085822662 093930827 +000000856 000442736 000468350 D|063071245 001861409 +000000856 000443785 000476540 D|095237882 025647444 +000000856 000450747 000489408 D|062534512 098540871 +000000856 000454324 000493998 D|079360727 081764298 +000000856 000456919 000511095 D|094558113 028395475 +000000856 000474423 000513846 D|025811453 082064835 +000000856 000508867 000518544 D|093939096 071370497 +000000856 000517873 000537302 D|056317707 039168113 +000000856 000524072 000537770 D|021576774 028556289 +000000856 000539486 000548250 D|044879526 055399937 +000000856 000567126 000587475 D|099713132 057081391 +000000856 000577056 000615523 D|097981648 000137431 +000000856 000584535 000654125 D|051070499 015641185 +000000856 000584965 000671650 D|056315534 000325803 +000000856 000611972 000733801 D|035287127 091494276 +000000856 000624258 000742013 D|045802106 029402705 +000000856 000711258 000749818 D|073949726 004616195 +000000856 000723528 000751633 D|029224119 099505880 +000000856 000733115 000752033 D|070798334 078805687 +000000856 000774840 000798619 D|093464166 020980559 +000000856 000777818 000852861 D|046111322 011650850 +000000856 000821256 000861782 D|052871334 056701630 +000000856 000842011 000880685 D|042973997 093702236 +000000856 000885706 000885599 D|098793404 097635710 +000000856 000900094 000901346 D|016187486 044673309 +000000856 000929452 000917704 D|081562682 080652718 +000000857 000041506 000000829 D|024880741 053311150 +000000857 000085389 000056652 D|046805957 062768164 +000000857 000090283 000057043 D|008391376 009192817 +000000857 000122317 000062623 D|061253291 090542702 +000000857 000142872 000148629 D|005138413 030894068 +000000857 000174560 000182555 D|002113035 071258317 +000000857 000193670 000222710 D|092971435 009775493 +000000857 000197290 000235319 D|083915019 072054444 +000000857 000232490 000260409 D|017896804 026416621 +000000857 000251370 000283437 D|081258378 064500242 +000000857 000280128 000290922 D|076085949 004482847 +000000857 000285754 000322179 D|034505387 086639074 +000000857 000290397 000339422 D|007409483 014457973 +000000857 000302427 000342139 D|006466708 047887347 +000000857 000319059 000387788 D|043776383 069995809 +000000857 000336216 000415836 D|059413395 081001171 +000000857 000361971 000419583 D|083998202 031521384 +000000857 000416609 000455901 D|004641102 000276408 +000000857 000424570 000478304 D|069973861 060394129 +000000857 000438488 000491609 D|085397827 060463869 +000000857 000445782 000519763 D|077561310 074800818 +000000857 000472355 000555899 D|096317909 027760766 +000000857 000485760 000588727 D|096745260 038729069 +000000857 000503461 000601928 D|094260381 056905246 +000000857 000578412 000648638 D|090155036 082732879 +000000857 000603908 000653439 D|011374148 042790008 +000000857 000615689 000659556 D|089865284 012693447 +000000857 000653110 000680493 D|036768167 084992307 +000000857 000663298 000685691 D|053521933 020183135 +000000857 000667753 000690950 D|074941881 072964198 +000000857 000697727 000691693 D|000513646 095056678 +000000857 000705074 000705054 D|053977804 092598221 +000000857 000718141 000748825 D|087317945 061659427 +000000857 000750990 000779719 D|025862735 065747207 +000000857 000758672 000797301 D|011982495 049452438 +000000857 000783718 000809224 D|036593447 011886200 +000000857 000797550 000825713 D|035114557 095789545 +000000857 000804858 000845051 D|000691916 005929749 +000000857 000837192 000868652 D|099644566 089838719 +000000857 000884032 000885377 D|071852703 030766906 +000000857 000893737 000888770 D|046816667 087966218 +000000857 000896997 000897120 D|069222753 039792840 +000000857 000927730 000900502 D|092861707 041743209 +000000857 000938040 000928246 D|036723949 055082813 +000000857 000944377 000936564 D|016799790 023215543 +000000857 000963484 000945765 D|075796314 045006220 +000000857 000968228 000961611 D|038714565 020885738 +000000857 000984057 000970284 D|043921102 098896877 +000000857 000989280 000979687 D|025403024 030286682 +000000857 000990124 000981842 D|019788658 002041640 +000000858 000007925 000003221 D|006025452 025763034 +000000858 000017639 000006401 D|037051510 087590345 +000000858 000025308 000016721 D|065014769 060138074 +000000858 000041380 000049968 D|098467789 057648704 +000000858 000060960 000059544 D|077403522 000147541 +000000858 000065209 000077933 D|019265659 031251449 +000000858 000092037 000102718 D|058626738 033184438 +000000858 000102020 000137504 D|002850365 039565710 +000000858 000124330 000149042 D|073248449 043571820 +000000858 000128781 000155848 D|055547450 039608381 +000000858 000144311 000234655 D|007888888 068027646 +000000858 000164178 000242393 D|015773467 053727325 +000000858 000168013 000260641 D|021609658 052334741 +000000858 000228044 000296472 D|011102963 055677687 +000000858 000272814 000302143 D|019451283 030745306 +000000858 000314462 000332878 D|059107686 019670197 +000000858 000358587 000339094 D|064053720 025779379 +000000858 000359213 000355906 D|007149576 052628279 +000000858 000373264 000398855 D|023930178 027579003 +000000858 000385805 000400944 D|035872780 067420897 +000000858 000492753 000423321 D|077252571 068226899 +000000858 000510729 000434013 D|036078562 015160356 +000000858 000521187 000442303 D|021888723 003489854 +000000858 000522891 000464538 D|021531674 027429898 +000000858 000540532 000507461 D|076351043 002266949 +000000858 000541741 000532404 D|036300683 090955215 +000000858 000598828 000614847 D|091405549 084990890 +000000858 000659980 000627934 D|001732073 033752186 +000000858 000681805 000639295 D|087805474 011249320 +000000858 000688734 000650288 D|040227780 079026000 +000000858 000691377 000654889 D|029715155 048419656 +000000858 000694351 000655301 D|011659340 081366964 +000000858 000699679 000696322 D|084480753 050088019 +000000858 000722654 000711741 D|051474935 052826846 +000000858 000738941 000723026 D|008413566 020402077 +000000858 000760763 000726043 D|049183989 082428516 +000000858 000777345 000785811 D|056313615 056036319 +000000858 000787249 000791307 D|016558403 072740943 +000000858 000797161 000791979 D|076800777 029071872 +000000858 000837061 000800834 D|041261584 091289981 +000000858 000858127 000807737 D|042211653 019185470 +000000858 000882326 000812317 D|092878025 058549318 +000000858 000891008 000829780 D|026691201 014500471 +000000858 000896286 000868523 D|076875020 053361999 +000000858 000909795 000881168 D|020024140 075791099 +000000858 000911526 000885838 D|018385096 023381394 +000000858 000913766 000887241 D|088128015 067205815 +000000858 000942885 000906657 D|077891388 019966035 +000000858 000965274 000907759 D|093529362 044946426 +000000858 000995772 000972920 D|099978129 066241849 +000000859 000008631 000039646 D|082960515 003984597 +000000859 000022681 000051675 D|065852561 040020886 +000000859 000102950 000084184 D|062420876 046407599 +000000859 000106177 000118330 D|056564436 017456058 +000000859 000113943 000119230 D|028354463 060417901 +000000859 000126616 000145182 D|027904474 077261337 +000000859 000136718 000158011 D|027523644 036399021 +000000859 000161264 000163352 D|075076283 058504718 +000000859 000174304 000178452 D|011634996 080211283 +000000859 000175342 000200554 D|049728064 021435322 +000000859 000181616 000257930 D|077648302 065700716 +000000859 000185324 000287665 D|019306226 058550231 +000000859 000191473 000292941 D|074086841 048789925 +000000859 000215571 000314613 D|062072773 002262114 +000000859 000221538 000332872 D|087958138 086962145 +000000859 000271046 000333359 D|065742866 092203026 +000000859 000271359 000344787 D|066684844 076918668 +000000859 000277124 000347267 D|004033555 078935088 +000000859 000279767 000347651 D|081812521 003334287 +000000859 000293987 000350100 D|032524994 056165163 +000000859 000332091 000373373 D|038533203 003659712 +000000859 000350518 000379047 D|009551846 082251151 +000000859 000351088 000402029 D|069588453 079264958 +000000859 000366918 000406114 D|008612278 099181950 +000000859 000410782 000407679 D|060613393 042846005 +000000859 000443446 000435451 D|072445310 092641361 +000000859 000478115 000443352 D|060595934 082136427 +000000859 000504827 000457228 D|094117459 027459908 +000000859 000509670 000461590 D|029472514 023902634 +000000859 000549985 000486002 D|098434135 018985549 +000000859 000567725 000498148 D|060225360 034988741 +000000859 000568665 000499602 D|020136497 025257572 +000000859 000577144 000531064 D|072659568 013934253 +000000859 000602071 000545040 D|043098417 073582005 +000000859 000602843 000579301 D|064341223 082886414 +000000859 000606645 000676030 D|029596563 089134286 +000000859 000627395 000689578 D|058394848 016092018 +000000859 000634694 000702648 D|091617966 021948793 +000000859 000693278 000763996 D|035810146 013306042 +000000859 000701608 000788441 D|028534614 013874004 +000000859 000784841 000789023 D|093835255 007796667 +000000859 000814061 000797965 D|021718903 043777364 +000000859 000821863 000808983 D|097954923 018479963 +000000859 000826188 000826552 D|010158357 059201111 +000000859 000835169 000831830 D|058034532 049469514 +000000859 000906271 000841016 D|028842663 019355752 +000000859 000915826 000900360 D|095310195 099928958 +000000859 000954061 000938678 D|055657171 023747736 +000000859 000995845 000945322 D|023266994 038344788 +000000859 000998338 000997010 D|087481216 094096943 +000000860 000002127 000065868 D|020138147 092632282 +000000860 000042520 000090399 D|069130729 016399728 +000000860 000045766 000092869 D|036870628 071665820 +000000860 000053158 000112895 D|021971769 001725764 +000000860 000072658 000129041 D|021232073 034431677 +000000860 000139428 000154023 D|077240551 059425517 +000000860 000145331 000172375 D|050576420 078373743 +000000860 000190496 000190260 D|047387916 000145033 +000000860 000210702 000225646 D|018438946 013290100 +000000860 000215359 000234844 D|007865046 007400127 +000000860 000218360 000243635 D|067562237 062499495 +000000860 000270704 000262273 D|024008512 025116032 +000000860 000271665 000266674 D|056467086 029209192 +000000860 000292561 000282449 D|090949809 077925720 +000000860 000301137 000286919 D|029252942 012702094 +000000860 000343552 000300609 D|031463390 008234484 +000000860 000349350 000311357 D|053843697 032252883 +000000860 000369470 000410793 D|018326737 080651217 +000000860 000409561 000413556 D|022235470 010724960 +000000860 000424243 000420860 D|096757525 051392073 +000000860 000470420 000439444 D|035591146 035185546 +000000860 000472987 000488414 D|043946102 070864727 +000000860 000480838 000512187 D|011857737 034487284 +000000860 000507930 000514086 D|081120084 019254815 +000000860 000534626 000527303 D|098613757 028424814 +000000860 000558640 000531814 D|077471532 010372565 +000000860 000561705 000545242 D|027603074 060493180 +000000860 000581370 000556221 D|033355460 006686717 +000000860 000582001 000561751 D|004582704 040681184 +000000860 000591985 000570759 D|056930743 038213440 +000000860 000654655 000571211 D|077724361 014256583 +000000860 000682632 000606634 D|048708800 024669597 +000000860 000690936 000651569 D|091562046 068719491 +000000860 000698362 000667317 D|015242296 088851043 +000000860 000711347 000668515 D|077393060 054933322 +000000860 000720655 000689010 D|041524159 063318301 +000000860 000773526 000717906 D|091310076 081904601 +000000860 000790624 000752585 D|017496461 092207709 +000000860 000796465 000753816 D|047496062 036026410 +000000860 000802838 000764126 D|016469310 030247211 +000000860 000814018 000784737 D|057529698 089913756 +000000860 000821736 000811652 D|010997432 012472122 +000000860 000877714 000863305 D|017074306 085353065 +000000860 000899317 000895151 D|024048367 053193652 +000000860 000921123 000899579 D|013087051 090752011 +000000860 000949756 000905909 D|074797404 010913643 +000000860 000970666 000915823 D|048362215 021155554 +000000860 000978494 000936432 D|054773967 050998291 +000000860 000991727 000994105 D|050047064 054619829 +000000860 000994899 000999365 D|057781119 058145115 +000000861 000015269 000002187 D|062011131 062057432 +000000861 000028227 000019664 D|019223789 033824710 +000000861 000054511 000047502 D|067345343 070840990 +000000861 000056677 000057487 D|052498850 089472484 +000000861 000100632 000058419 D|024569674 062699799 +000000861 000166674 000080040 D|049851788 026560834 +000000861 000176752 000083854 D|058610661 066697817 +000000861 000188737 000085192 D|034130524 026914919 +000000861 000243722 000110538 D|061800881 080748044 +000000861 000274515 000148164 D|083797004 024838496 +000000861 000280091 000159334 D|094225328 054189435 +000000861 000283767 000197989 D|053593410 018246957 +000000861 000285146 000248702 D|061992705 057993241 +000000861 000286663 000260049 D|089197125 042387207 +000000861 000310748 000271759 D|046556183 093666970 +000000861 000324610 000344755 D|041910074 039277357 +000000861 000339739 000416144 D|028797664 024937435 +000000861 000343867 000455734 D|070609383 065624803 +000000861 000457138 000464818 D|054924954 083081853 +000000861 000464460 000473188 D|094673018 053416201 +000000861 000477645 000531110 D|001508038 095389921 +000000861 000521853 000561959 D|043113196 018876331 +000000861 000524201 000573330 D|041839625 085122922 +000000861 000549529 000577068 D|090157260 074749727 +000000861 000550475 000586508 D|065113188 041839948 +000000861 000579322 000603054 D|091348285 019313846 +000000861 000658182 000646165 D|076809422 014061679 +000000861 000680268 000691524 D|023018306 042719031 +000000861 000712654 000696757 D|022273046 058277987 +000000861 000744145 000726336 D|055671268 040679063 +000000861 000746640 000734592 D|011878787 007405361 +000000861 000765060 000743443 D|039325750 010390077 +000000861 000780908 000755531 D|027951210 083740329 +000000861 000781628 000760124 D|052189042 059708945 +000000861 000781879 000764678 D|013382595 065788141 +000000861 000811405 000792550 D|081472727 098737873 +000000861 000823117 000799471 D|049420964 084031664 +000000861 000853742 000811292 D|074549868 076209131 +000000861 000868229 000834379 D|084662225 052887290 +000000861 000889271 000855126 D|098714303 086585947 +000000861 000890562 000886353 D|006302930 032393023 +000000861 000938469 000897081 D|078186644 070549816 +000000861 000943589 000904220 D|089804568 021514394 +000000861 000944464 000906961 D|071791444 038157469 +000000861 000953861 000929168 D|021976418 050435273 +000000861 000956362 000946363 D|002727805 065516625 +000000861 000968535 000973761 D|013545368 083404967 +000000861 000968544 000981509 D|068739512 011530528 +000000861 000976465 000993754 D|047679802 009013882 +000000861 000997122 000996166 D|091839922 034604598 +000000862 000043069 000008253 D|088170555 060271714 +000000862 000086749 000063238 D|080982041 043321333 +000000862 000137557 000096950 D|000038670 080540090 +000000862 000256241 000100414 D|091218706 068235259 +000000862 000268576 000111198 D|028291144 032226282 +000000862 000285013 000132102 D|071405240 073122651 +000000862 000286346 000134148 D|005049304 032287324 +000000862 000306158 000136966 D|037683873 059734790 +000000862 000312667 000162346 D|092144829 040068185 +000000862 000315860 000177371 D|084413193 024329507 +000000862 000332222 000210882 D|051187780 053702427 +000000862 000337271 000235022 D|001715057 063523514 +000000862 000337502 000249059 D|027036980 084450596 +000000862 000338966 000258819 D|060739466 016780263 +000000862 000350716 000296472 D|060902536 064041013 +000000862 000378768 000306812 D|045037091 053674138 +000000862 000382470 000308948 D|099610540 002756367 +000000862 000456523 000319821 D|088949068 045824821 +000000862 000466714 000341879 D|016975934 072176090 +000000862 000494193 000349169 D|052573348 021486658 +000000862 000511209 000359732 D|032260330 018740891 +000000862 000532024 000366176 D|034085473 080715815 +000000862 000566298 000380545 D|066638553 056132467 +000000862 000593596 000383694 D|071531525 055217341 +000000862 000599041 000424645 D|032103791 018752062 +000000862 000601377 000453386 D|080584057 083705361 +000000862 000610030 000466147 D|090891236 089654509 +000000862 000637674 000476390 D|072602468 073888144 +000000862 000649532 000501693 D|002371598 027230411 +000000862 000670968 000504631 D|089002545 071542695 +000000862 000690661 000531463 D|002582295 064562277 +000000862 000692049 000534967 D|043205062 008906193 +000000862 000706071 000560378 D|093576124 016689163 +000000862 000706677 000566832 D|046761929 036133208 +000000862 000723205 000573393 D|088679175 097812967 +000000862 000767529 000589337 D|026093593 093542870 +000000862 000781392 000593963 D|011597720 017600351 +000000862 000783709 000623116 D|036534401 005753419 +000000862 000787364 000651353 D|057994850 083148038 +000000862 000802615 000677690 D|052050621 077089393 +000000862 000807285 000733080 D|087611847 048621888 +000000862 000836332 000735850 D|099275838 045657324 +000000862 000837329 000786706 D|083534558 001345271 +000000862 000855331 000790769 D|053368504 006243458 +000000862 000931380 000829997 D|073552563 038635423 +000000862 000931750 000852293 D|014107465 017654557 +000000862 000951881 000870722 D|095637743 038845799 +000000862 000954853 000938564 D|057765136 059276572 +000000862 000960593 000954970 D|031017725 097980618 +000000862 000997391 000969638 D|001277305 027115962 +000000863 000007215 000012265 D|097689175 082194283 +000000863 000014771 000020124 D|088931224 028231785 +000000863 000015797 000028232 D|074617986 027735127 +000000863 000027157 000031772 D|019102454 081609271 +000000863 000032867 000062092 D|072060301 061296703 +000000863 000039165 000070207 D|099010385 011719594 +000000863 000042840 000093531 D|014309826 003974888 +000000863 000116825 000143950 D|044267439 025596071 +000000863 000190764 000238664 D|091598742 006902554 +000000863 000204922 000248044 D|085588580 027350684 +000000863 000213327 000269775 D|038540725 068651101 +000000863 000241884 000274575 D|020121716 098452773 +000000863 000251588 000274583 D|021565155 059650099 +000000863 000273016 000278911 D|050929879 031254757 +000000863 000281492 000280765 D|096244698 058909185 +000000863 000291124 000306557 D|022354852 077962510 +000000863 000291222 000345226 D|076164581 071629708 +000000863 000304820 000370758 D|083765265 069479333 +000000863 000313439 000374642 D|095540058 038382623 +000000863 000316186 000380276 D|072903309 016342250 +000000863 000376638 000383503 D|011578110 059345914 +000000863 000381800 000384809 D|063272036 040328760 +000000863 000405533 000385347 D|006759270 014803756 +000000863 000429760 000390262 D|021284226 038039183 +000000863 000432210 000392555 D|060043006 065448194 +000000863 000438055 000450296 D|063069227 081068383 +000000863 000449334 000495696 D|092728394 091463851 +000000863 000492432 000508382 D|037797643 044050992 +000000863 000507647 000510894 D|045435623 073076846 +000000863 000508606 000622752 D|023803067 085144580 +000000863 000623141 000636353 D|094315219 068241260 +000000863 000704799 000642971 D|011615421 087566794 +000000863 000761724 000669368 D|023524029 095054102 +000000863 000769215 000702914 D|060140980 037230983 +000000863 000794180 000741017 D|056138313 074547972 +000000863 000794663 000770610 D|001404636 066379455 +000000863 000814712 000787975 D|075097807 034066393 +000000863 000821319 000792622 D|096114830 002853355 +000000863 000846971 000835802 D|008788135 083542606 +000000863 000852426 000848492 D|011931346 092818200 +000000863 000861094 000865283 D|039586393 030248623 +000000863 000869051 000885470 D|009503232 039198672 +000000863 000893742 000889489 D|067359091 026059096 +000000863 000917571 000894577 D|061781416 021678515 +000000863 000946044 000914481 D|032463721 021949639 +000000863 000948005 000924943 D|038356805 067065589 +000000863 000956160 000931712 D|032659318 059227892 +000000863 000969433 000936223 D|026130327 025197435 +000000863 000971204 000945588 D|052439829 070515977 +000000863 000992227 000966018 D|015415853 010966588 +000000864 000045591 000005068 D|025475867 080336255 +000000864 000065473 000008174 D|030752759 089036837 +000000864 000087726 000024927 D|016053551 082814712 +000000864 000137332 000039635 D|050602933 002963958 +000000864 000147602 000085743 D|099197457 076134226 +000000864 000180252 000105787 D|059897244 043782502 +000000864 000313885 000146672 D|086899217 032923449 +000000864 000338538 000148688 D|002677353 032079785 +000000864 000340981 000175829 D|055756376 092688569 +000000864 000364559 000220149 D|092249872 069083476 +000000864 000375902 000229274 D|053438295 000372873 +000000864 000386973 000234776 D|021307916 059727157 +000000864 000393512 000273138 D|080071896 006614856 +000000864 000399631 000286207 D|068411887 095461806 +000000864 000405400 000331875 D|066760814 071230862 +000000864 000414735 000369496 D|050665100 082472137 +000000864 000428497 000403283 D|094083782 027963739 +000000864 000428878 000423675 D|018586213 057283823 +000000864 000482159 000453230 D|084163267 083605418 +000000864 000495328 000463324 D|057480165 068650966 +000000864 000510719 000495857 D|098755142 007546652 +000000864 000526311 000523800 D|082696950 028968824 +000000864 000534100 000568790 D|002431652 096786012 +000000864 000544250 000581376 D|020179677 048041507 +000000864 000580785 000607081 D|025771463 072482721 +000000864 000601719 000620423 D|003028141 009249061 +000000864 000602634 000622300 D|080106304 010910202 +000000864 000620648 000650435 D|085470349 009990901 +000000864 000622244 000653653 D|053382619 030753120 +000000864 000622983 000666109 D|014812419 003238750 +000000864 000634181 000699495 D|098169543 010497282 +000000864 000640466 000703870 D|034096752 056168122 +000000864 000702875 000711813 D|082391669 003330802 +000000864 000710948 000722073 D|019521180 026773532 +000000864 000713665 000722449 D|038127657 096316917 +000000864 000805151 000743811 D|072891452 040601417 +000000864 000811086 000774525 D|089227656 085955226 +000000864 000812425 000787298 D|022896736 037195068 +000000864 000824897 000805795 D|045022441 046339830 +000000864 000828021 000812348 D|061289281 093151742 +000000864 000861973 000822311 D|030678592 034690167 +000000864 000863573 000837638 D|027992029 055023552 +000000864 000871987 000839628 D|019702898 051147230 +000000864 000874084 000851798 D|009302569 067355412 +000000864 000877296 000859820 D|084407749 042954467 +000000864 000890322 000860149 D|086974062 041299778 +000000864 000969512 000862472 D|037493557 093070624 +000000864 000990216 000883166 D|054961759 003246395 +000000864 000996119 000957191 D|086626836 021561558 +000000864 000999843 000983046 D|089543964 063960122 +000000865 000039825 000018060 D|039919614 004776303 +000000865 000046091 000049457 D|092798915 063703412 +000000865 000061830 000057309 D|008382562 093149185 +000000865 000066082 000082817 D|025651801 025749667 +000000865 000085365 000086229 D|041024472 062263824 +000000865 000096222 000176092 D|016872007 081416594 +000000865 000108286 000177068 D|078136973 058984926 +000000865 000136557 000222828 D|077600704 002666219 +000000865 000182545 000225010 D|044044538 005983613 +000000865 000189594 000227137 D|027630503 053532340 +000000865 000206528 000229282 D|073495222 056079274 +000000865 000263704 000249560 D|033328084 014397427 +000000865 000308471 000250992 D|095034098 075587646 +000000865 000346116 000253032 D|099549085 016909514 +000000865 000347842 000317429 D|011808679 024395704 +000000865 000361089 000351185 D|002924061 090346834 +000000865 000374784 000383549 D|023838722 087583072 +000000865 000428395 000391808 D|087906718 080081156 +000000865 000428931 000409770 D|024402765 089811847 +000000865 000441033 000415452 D|083915114 013397988 +000000865 000453670 000430204 D|097185698 085961365 +000000865 000476756 000435032 D|050150338 014465088 +000000865 000507938 000438435 D|027748822 048566324 +000000865 000525460 000459173 D|077153154 094589018 +000000865 000533433 000467721 D|017779892 053723915 +000000865 000548930 000480896 D|035140937 009934009 +000000865 000558522 000508819 D|026092004 091390423 +000000865 000636290 000521172 D|066513939 094547533 +000000865 000659669 000540358 D|065554728 049941563 +000000865 000682145 000582409 D|090655794 050507411 +000000865 000684004 000591744 D|030786182 027312883 +000000865 000690549 000610370 D|001131639 036621363 +000000865 000696932 000662531 D|000718415 024710603 +000000865 000730456 000710757 D|024944016 000334774 +000000865 000730534 000714547 D|047031184 023101267 +000000865 000731291 000748639 D|018798490 047492246 +000000865 000733716 000755108 D|087873559 012761208 +000000865 000753923 000763494 D|003949729 017927071 +000000865 000818781 000832990 D|040871308 039386586 +000000865 000844295 000839041 D|086413782 028568154 +000000865 000871138 000907012 D|048652637 001094200 +000000865 000878413 000928152 D|067721890 066859207 +000000865 000879724 000928824 D|000031754 034417927 +000000865 000884075 000932381 D|099761585 027411037 +000000865 000896859 000933488 D|009650095 025105620 +000000865 000906737 000938858 D|018496472 015252841 +000000865 000911489 000945975 D|066464903 014467208 +000000865 000947213 000949916 D|062015748 058413690 +000000865 000962478 000957853 D|036206296 095221291 +000000865 000973399 000983575 D|063318370 077819389 +000000866 000000099 000026445 D|015403968 010928854 +000000866 000023052 000034906 D|054292984 077186406 +000000866 000036678 000045525 D|066485535 027266993 +000000866 000058541 000071963 D|064951962 061602922 +000000866 000090908 000105538 D|036352599 082717554 +000000866 000107132 000121133 D|083169238 063510252 +000000866 000115169 000123284 D|003618954 009597063 +000000866 000131045 000135116 D|098563430 099197657 +000000866 000140121 000144922 D|044256518 025956551 +000000866 000194965 000147638 D|008244755 008888507 +000000866 000203800 000186418 D|034633129 089143836 +000000866 000247984 000201931 D|066135790 016334226 +000000866 000270082 000217484 D|031541292 075971608 +000000866 000271022 000245590 D|040489674 059941117 +000000866 000284932 000261830 D|038227647 028419958 +000000866 000298883 000271385 D|000945231 076678344 +000000866 000305427 000303627 D|060257227 018096078 +000000866 000322228 000308665 D|069605006 076622331 +000000866 000330943 000314978 D|030683922 047781807 +000000866 000335177 000344629 D|064586177 007910852 +000000866 000343219 000365643 D|032519780 020684704 +000000866 000372217 000377475 D|030264972 068273733 +000000866 000382659 000378915 D|008090131 002278261 +000000866 000389256 000394172 D|022733846 029654140 +000000866 000390585 000395675 D|027786168 040323965 +000000866 000405942 000397766 D|083207567 071129788 +000000866 000423631 000441270 D|042010541 037224591 +000000866 000463204 000450545 D|037970479 097732459 +000000866 000498345 000459669 D|067743272 067263771 +000000866 000525841 000512979 D|001870704 055287413 +000000866 000612472 000521833 D|082612424 078405310 +000000866 000671675 000552488 D|022643483 019484906 +000000866 000672699 000577412 D|043884789 057756556 +000000866 000712530 000596898 D|018626007 065020396 +000000866 000735255 000656441 D|099656697 068635062 +000000866 000738391 000669067 D|051249050 009252494 +000000866 000770060 000695917 D|007240458 090420879 +000000866 000791013 000726721 D|010111676 058460812 +000000866 000796362 000735108 D|049522065 052195189 +000000866 000811917 000750236 D|050747677 021559375 +000000866 000839359 000765383 D|041348232 036603750 +000000866 000867954 000788172 D|005279005 026737178 +000000866 000880873 000801462 D|008491192 052377972 +000000866 000915103 000823394 D|076141966 000797826 +000000866 000926961 000864669 D|033663082 065147946 +000000866 000930621 000865870 D|054008387 000221122 +000000866 000941715 000876955 D|088872105 007405496 +000000866 000959285 000908808 D|094343718 046479278 +000000866 000991283 000943235 D|035690673 072087085 +000000866 000998000 000949720 D|065812053 074137308 +000000867 000003167 000082624 D|085138864 022858010 +000000867 000008028 000085725 D|082180656 097558744 +000000867 000013025 000094995 D|042993991 005657566 +000000867 000021831 000099904 D|033468777 080527290 +000000867 000023272 000186987 D|090201145 051705282 +000000867 000049599 000191708 D|072616113 073310379 +000000867 000095794 000199953 D|073660794 056105264 +000000867 000099617 000219825 D|073784730 070216887 +000000867 000103336 000227588 D|046254257 002143024 +000000867 000120431 000245125 D|042220048 046048048 +000000867 000182500 000247974 D|020011756 032938892 +000000867 000199696 000319689 D|084032743 017220429 +000000867 000203095 000320195 D|001307517 087053455 +000000867 000223482 000320937 D|091234607 080475562 +000000867 000227745 000349580 D|070793429 034280725 +000000867 000246115 000427152 D|080430169 018128314 +000000867 000263369 000430318 D|017656447 044514858 +000000867 000265857 000474592 D|013773132 029483699 +000000867 000266717 000495951 D|018293957 065780583 +000000867 000277276 000512416 D|011426400 012299955 +000000867 000282927 000522187 D|031596239 087929407 +000000867 000283744 000528849 D|097339097 003824956 +000000867 000339673 000530629 D|072223848 062969574 +000000867 000357107 000531791 D|002563463 026869570 +000000867 000374726 000563918 D|015114749 038664187 +000000867 000376680 000572547 D|045156858 017485917 +000000867 000393854 000583684 D|098663743 089622720 +000000867 000425303 000594200 D|093939911 014115065 +000000867 000430569 000607486 D|090600559 096640215 +000000867 000430802 000629743 D|056533115 067520115 +000000867 000451873 000657744 D|064687389 036263488 +000000867 000453994 000662931 D|058483178 031890263 +000000867 000500268 000689350 D|090716531 066403186 +000000867 000526856 000716511 D|091121590 078146839 +000000867 000554135 000718822 D|008033643 007107868 +000000867 000581316 000723618 D|034133323 058364348 +000000867 000699097 000754765 D|040670603 035987679 +000000867 000702708 000812741 D|059643161 088120020 +000000867 000712805 000828446 D|000387075 011712552 +000000867 000742175 000848446 D|095621455 011601036 +000000867 000751559 000857256 D|017997358 056892926 +000000867 000768648 000883879 D|002704998 069125392 +000000867 000842764 000892083 D|059124100 013499044 +000000867 000907410 000901630 D|080283950 072803961 +000000867 000909533 000912938 D|046027129 029681282 +000000867 000921546 000917799 D|024789424 042493692 +000000867 000922600 000925749 D|011067378 089377303 +000000867 000932759 000959399 D|095123687 018048555 +000000867 000959365 000991495 D|097862702 064310102 +000000867 000985484 000999546 D|005198137 076452806 +000000868 000009578 000022339 D|068703990 055158111 +000000868 000034660 000029957 D|075448552 091158441 +000000868 000055560 000035356 D|072458686 002632111 +000000868 000068924 000109941 D|016865476 026726364 +000000868 000075982 000126561 D|028383895 093400387 +000000868 000106169 000128046 D|023444481 073245230 +000000868 000147494 000147397 D|082286972 001209011 +000000868 000152817 000165909 D|005304913 005524218 +000000868 000154371 000202238 D|045670280 013931874 +000000868 000165751 000208287 D|067264394 078882566 +000000868 000203829 000226154 D|046543185 087474574 +000000868 000222827 000240187 D|045513769 080421691 +000000868 000224504 000246074 D|068951773 053574420 +000000868 000229582 000260205 D|055573991 061370962 +000000868 000294712 000282459 D|061930469 067619794 +000000868 000376486 000324407 D|003637667 032586404 +000000868 000468857 000345099 D|044034624 002674413 +000000868 000482489 000354372 D|046867417 037268581 +000000868 000484274 000369565 D|025034648 038288028 +000000868 000549141 000372840 D|060618850 019736436 +000000868 000567491 000374573 D|000152639 045892741 +000000868 000594342 000378179 D|055911620 075132634 +000000868 000630010 000384919 D|058635640 061842374 +000000868 000646841 000400235 D|077409462 072562199 +000000868 000655942 000414035 D|037786350 097236415 +000000868 000656222 000431621 D|031262057 083065740 +000000868 000672898 000438008 D|035550377 030884714 +000000868 000673889 000451956 D|001761564 092917944 +000000868 000686110 000469529 D|081143385 042560216 +000000868 000688722 000482590 D|061752501 001148890 +000000868 000689449 000483673 D|026506981 049921012 +000000868 000741961 000505097 D|073053205 079745187 +000000868 000757765 000511731 D|042440045 014438731 +000000868 000785460 000542823 D|028539867 017434372 +000000868 000787390 000543800 D|023576291 066987309 +000000868 000801002 000561193 D|024545312 097706950 +000000868 000802000 000561563 D|089272503 062792608 +000000868 000809183 000610674 D|029414948 069369051 +000000868 000830057 000612618 D|018768475 040315252 +000000868 000855854 000626139 D|006781485 057009805 +000000868 000859397 000641772 D|006349882 046004552 +000000868 000863399 000655713 D|049502564 002059247 +000000868 000880844 000668742 D|093253938 078683242 +000000868 000906876 000679669 D|022577990 048037272 +000000868 000910020 000771707 D|004954029 096062789 +000000868 000945633 000778294 D|083196919 032498464 +000000868 000960110 000861538 D|013334707 014930671 +000000868 000962050 000893002 D|001949767 063763827 +000000868 000973476 000963980 D|070246815 026576409 +000000868 000979379 000988896 D|026028393 077298555 +000000869 000024599 000019064 D|034510938 092735486 +000000869 000047143 000023606 D|058712475 044835183 +000000869 000053329 000036697 D|087574589 078014778 +000000869 000063579 000053523 D|001224444 017261361 +000000869 000094062 000076557 D|022875582 038352115 +000000869 000103539 000096380 D|035892352 025110850 +000000869 000107919 000101592 D|094179446 086373299 +000000869 000117883 000113390 D|094867210 029250999 +000000869 000122260 000137432 D|038064457 082497125 +000000869 000154808 000214476 D|048666296 090575356 +000000869 000174581 000229539 D|023847299 091758124 +000000869 000267885 000238990 D|079542950 054899071 +000000869 000273652 000247601 D|093890060 037423168 +000000869 000278945 000250773 D|048049162 071139116 +000000869 000280329 000266825 D|050194709 011630055 +000000869 000310712 000272445 D|074612074 084400653 +000000869 000340317 000277022 D|084917033 064867311 +000000869 000346045 000292452 D|024033273 064839969 +000000869 000377797 000362307 D|071485679 091579041 +000000869 000391806 000391932 D|015153463 040377140 +000000869 000400934 000443028 D|053574651 030996645 +000000869 000401173 000484236 D|095077885 092990884 +000000869 000407246 000500028 D|009126122 024918637 +000000869 000454277 000522647 D|011255237 003661398 +000000869 000475121 000564104 D|023897639 004265653 +000000869 000516626 000608603 D|018203507 094833170 +000000869 000516728 000610763 D|007661709 029851719 +000000869 000558841 000613560 D|082840174 096014345 +000000869 000573600 000619324 D|076065149 056055973 +000000869 000590593 000624327 D|098265518 075880163 +000000869 000595290 000625191 D|024149678 068109808 +000000869 000623591 000653089 D|037126385 060858810 +000000869 000635014 000660462 D|089796159 071939989 +000000869 000685488 000668344 D|033820952 006902384 +000000869 000702084 000675613 D|097692896 027578186 +000000869 000714844 000683768 D|036231478 029585633 +000000869 000718430 000713282 D|031315971 093159080 +000000869 000724569 000736705 D|046967205 085378332 +000000869 000740360 000766922 D|051809731 070759894 +000000869 000742743 000813900 D|041712018 079090679 +000000869 000744723 000815011 D|064536547 026276218 +000000869 000784604 000816001 D|016668960 010183005 +000000869 000792801 000893291 D|032947936 053320301 +000000869 000820204 000904319 D|058745462 084046969 +000000869 000834725 000917093 D|004901133 063595013 +000000869 000837377 000926576 D|031069453 070086445 +000000869 000912557 000927466 D|038517616 010346063 +000000869 000924418 000976287 D|098868304 012793015 +000000869 000958171 000987267 D|036198377 006886762 +000000869 000968908 000988954 D|037417533 069142834 +000000870 000007421 000009593 D|010304361 041218796 +000000870 000029162 000014656 D|002793838 036622408 +000000870 000064159 000051071 D|035758747 024158182 +000000870 000112791 000059765 D|072447284 062690617 +000000870 000116177 000098463 D|099525962 076950733 +000000870 000125124 000157284 D|072719925 059421548 +000000870 000162154 000178978 D|070612870 031087140 +000000870 000215138 000185510 D|010208963 002757983 +000000870 000226806 000186483 D|076566270 008531617 +000000870 000252693 000194909 D|061881052 009722326 +000000870 000271891 000206837 D|091126577 092260538 +000000870 000304902 000238699 D|086447190 077560341 +000000870 000325219 000244531 D|068691818 067368887 +000000870 000377083 000249883 D|039616206 044587900 +000000870 000378105 000252258 D|016020779 012294039 +000000870 000404563 000312623 D|035683583 062242602 +000000870 000434746 000360552 D|003158972 013025400 +000000870 000443112 000361113 D|010832910 066565779 +000000870 000443814 000393910 D|070694475 032942209 +000000870 000447035 000401630 D|044116753 099100362 +000000870 000474146 000404057 D|067769080 062654593 +000000870 000480974 000409318 D|007873108 022708981 +000000870 000517052 000428208 D|075920397 015003853 +000000870 000532383 000450846 D|053529375 095820612 +000000870 000533474 000523046 D|004022508 061472769 +000000870 000536789 000523108 D|024812551 021053654 +000000870 000570415 000531001 D|081190822 006696732 +000000870 000601937 000570911 D|074722944 006451537 +000000870 000609820 000580482 D|077286590 077431221 +000000870 000625792 000590290 D|020151870 065776785 +000000870 000626906 000653809 D|046764335 044653743 +000000870 000633435 000676423 D|085833103 017906803 +000000870 000660290 000678861 D|085937668 088952186 +000000870 000670313 000695695 D|095517617 022407040 +000000870 000685546 000707837 D|018140417 053692806 +000000870 000691633 000709082 D|028965396 090674104 +000000870 000741288 000738137 D|006541986 030075528 +000000870 000769995 000752565 D|013342180 036909584 +000000870 000781896 000765092 D|033045347 034185880 +000000870 000789247 000784181 D|053031045 056724675 +000000870 000811377 000837130 D|001056729 026491671 +000000870 000823237 000848253 D|004539151 036896206 +000000870 000837749 000864764 D|084587812 065195071 +000000870 000869890 000902424 D|017734283 095382652 +000000870 000911278 000925172 D|045796451 017570532 +000000870 000912607 000949507 D|075662449 044722202 +000000870 000915690 000960144 D|081093032 087512558 +000000870 000954082 000988685 D|068085964 062784749 +000000870 000976470 000989809 D|057629972 016750390 +000000870 000981001 000996094 D|067933747 033090789 +000000871 000007311 000014258 D|057778626 040924995 +000000871 000010974 000130604 D|023034453 082815268 +000000871 000028453 000157435 D|054569038 093654016 +000000871 000052186 000168190 D|081150650 077402222 +000000871 000053071 000188714 D|082401042 041184055 +000000871 000068292 000203179 D|022126549 064787989 +000000871 000213209 000229736 D|055953129 020086324 +000000871 000219393 000232644 D|005703866 059110642 +000000871 000243942 000256584 D|015201531 053729231 +000000871 000284193 000278254 D|070395521 036306233 +000000871 000296093 000317002 D|007934849 062715829 +000000871 000331105 000319772 D|098226232 012709856 +000000871 000344314 000371530 D|040968163 082890490 +000000871 000377932 000384873 D|051201669 078689903 +000000871 000382578 000394379 D|012566796 037134957 +000000871 000409168 000406671 D|067425380 094271845 +000000871 000416354 000423835 D|023899126 015348191 +000000871 000424680 000451636 D|033849709 006706893 +000000871 000428887 000470096 D|089080893 025939812 +000000871 000437748 000489632 D|022263726 028843375 +000000871 000447332 000513081 D|035641363 034151973 +000000871 000452903 000538423 D|064531522 009825322 +000000871 000506541 000541769 D|043339121 023634982 +000000871 000511204 000545013 D|080693429 004301097 +000000871 000518068 000553742 D|096981597 044342607 +000000871 000544478 000558186 D|017376066 056339328 +000000871 000549686 000582226 D|097852568 002723033 +000000871 000576106 000593744 D|062448485 040192900 +000000871 000619382 000636598 D|000033836 078460388 +000000871 000646960 000638636 D|047346425 039968983 +000000871 000654631 000647425 D|077624655 069052783 +000000871 000660318 000670243 D|087187549 051557049 +000000871 000716406 000677522 D|080711228 093658119 +000000871 000718214 000682269 D|020361360 087802006 +000000871 000766073 000691931 D|013776261 070745449 +000000871 000777400 000703699 D|075362141 084572387 +000000871 000781647 000778970 D|019919566 007899965 +000000871 000789278 000786952 D|097701405 004832693 +000000871 000818874 000802631 D|004721126 056965852 +000000871 000824311 000804417 D|046721371 040986398 +000000871 000826966 000831445 D|072170583 074580475 +000000871 000838893 000833325 D|097574107 000729539 +000000871 000848105 000871558 D|041404792 008263009 +000000871 000856414 000876752 D|031125248 016277116 +000000871 000875622 000885732 D|004391456 039200868 +000000871 000891915 000906071 D|098760722 074963267 +000000871 000928456 000930106 D|061391056 072698957 +000000871 000950978 000957117 D|006480451 036750397 +000000871 000974573 000977703 D|003912186 034933349 +000000871 000983914 000983950 D|093168130 076780817 +000000872 000038075 000018050 D|094705994 072772225 +000000872 000039636 000026165 D|020006016 066332245 +000000872 000085782 000029152 D|094336973 014071841 +000000872 000111512 000043063 D|059219789 099058563 +000000872 000136724 000061675 D|026635382 063728590 +000000872 000145168 000064301 D|027189950 094983300 +000000872 000172274 000070963 D|056096340 081881049 +000000872 000266795 000098438 D|084322998 061990670 +000000872 000323577 000101320 D|061355424 066379659 +000000872 000343736 000164303 D|078322756 058704024 +000000872 000353451 000170669 D|000104381 041570912 +000000872 000385772 000174709 D|010377850 087984143 +000000872 000402081 000178115 D|030694962 091387056 +000000872 000407776 000236704 D|096801724 007700919 +000000872 000412837 000243738 D|084159725 007410787 +000000872 000415726 000252496 D|028928924 000628701 +000000872 000435484 000281089 D|057783015 008658959 +000000872 000438598 000290947 D|043307933 012575834 +000000872 000478162 000362772 D|066852930 065416600 +000000872 000483685 000371036 D|040917062 074098775 +000000872 000510863 000378475 D|004401654 031916603 +000000872 000521436 000402424 D|021132765 091859528 +000000872 000544153 000417395 D|040967563 030805390 +000000872 000547449 000479449 D|093265854 078850432 +000000872 000557979 000501332 D|066358837 087219057 +000000872 000571762 000535230 D|048107796 040841730 +000000872 000583909 000579774 D|065820404 021913427 +000000872 000599416 000580463 D|036252864 035812699 +000000872 000630683 000633255 D|084781169 090919150 +000000872 000631688 000640240 D|030664772 096195341 +000000872 000643837 000649518 D|032341345 051695724 +000000872 000644949 000655001 D|076048535 017034625 +000000872 000652021 000663662 D|098197253 040156632 +000000872 000658939 000699831 D|060438959 030922445 +000000872 000659174 000703594 D|097521478 029535360 +000000872 000758188 000722204 D|080353203 077502972 +000000872 000771037 000752727 D|042809614 021038145 +000000872 000776665 000774604 D|026454645 091864191 +000000872 000790296 000808725 D|043582227 027810641 +000000872 000830464 000837760 D|094637246 052264834 +000000872 000833615 000875589 D|017369836 051587291 +000000872 000843804 000876368 D|014853642 001090262 +000000872 000854752 000876723 D|059460384 066294519 +000000872 000864568 000879474 D|069810118 035385098 +000000872 000900944 000911808 D|080696548 000008337 +000000872 000934595 000918701 D|017371103 083682975 +000000872 000974026 000924070 D|037014746 025266873 +000000872 000985918 000931750 D|001978962 012903679 +000000872 000990458 000976548 D|011518392 034447304 +000000872 000995835 000999406 D|021225036 042903300 +000000873 000000889 000016055 D|048816720 018318419 +000000873 000021674 000026961 D|068797006 081599252 +000000873 000040501 000036324 D|030527669 010356260 +000000873 000048323 000049218 D|011098233 051193555 +000000873 000093150 000073592 D|083026972 003918669 +000000873 000101792 000082963 D|097835660 067790861 +000000873 000176236 000084900 D|052866394 099529883 +000000873 000190016 000088468 D|017502992 049627455 +000000873 000191295 000118748 D|084071488 005226137 +000000873 000198266 000161901 D|018157086 062933639 +000000873 000213118 000222955 D|023667256 072054765 +000000873 000235463 000232919 D|030647261 074241025 +000000873 000243308 000239573 D|078659980 040755618 +000000873 000243690 000247160 D|085728416 021246477 +000000873 000266580 000271453 D|040915960 016136219 +000000873 000335619 000288920 D|049878979 082667083 +000000873 000369299 000295592 D|000609782 076475109 +000000873 000370969 000326029 D|037967043 046750457 +000000873 000385869 000352300 D|086798989 045944312 +000000873 000402104 000369202 D|093865563 072669373 +000000873 000418582 000403674 D|067930359 093983427 +000000873 000420745 000404667 D|063297545 029542051 +000000873 000448858 000435087 D|061591719 011770050 +000000873 000461794 000484378 D|021490750 027562894 +000000873 000486211 000484888 D|075360689 089436999 +000000873 000535917 000519458 D|075048746 024301572 +000000873 000544817 000546901 D|072740499 018461571 +000000873 000561854 000547070 D|008729854 018556689 +000000873 000597193 000548539 D|031190251 042355766 +000000873 000617856 000564810 D|013895899 039880055 +000000873 000642257 000579785 D|055049477 002341613 +000000873 000647361 000584921 D|051779651 047975226 +000000873 000648528 000603574 D|015668438 064187758 +000000873 000740770 000619759 D|047043073 058126496 +000000873 000769031 000641301 D|051579936 028722113 +000000873 000780836 000663422 D|014713375 059327805 +000000873 000794734 000694245 D|046587636 083703032 +000000873 000858159 000730498 D|058044568 087101290 +000000873 000877880 000766325 D|098570063 060338168 +000000873 000882988 000796295 D|083605569 043345626 +000000873 000883606 000810940 D|014257029 086731287 +000000873 000886244 000814623 D|019620172 037970225 +000000873 000903364 000841959 D|025536876 005544256 +000000873 000909086 000843757 D|017232117 077731237 +000000873 000924737 000865519 D|010403974 005768519 +000000873 000931076 000884440 D|029907814 014032118 +000000873 000945902 000889677 D|012203084 085918907 +000000873 000968047 000907280 D|044725968 093747194 +000000873 000971652 000930117 D|008161665 088588086 +000000873 000981811 000986619 D|002545937 076023043 +000000874 000006566 000092259 D|079663308 044972156 +000000874 000040808 000121803 D|072560376 091040970 +000000874 000075276 000146718 D|082171598 075007952 +000000874 000118705 000147942 D|053337548 072747731 +000000874 000140856 000188926 D|088940793 018029608 +000000874 000167143 000210543 D|096605321 043621683 +000000874 000205216 000211429 D|079207526 099919893 +000000874 000211933 000222778 D|070922681 003369468 +000000874 000218609 000239130 D|019988413 027775546 +000000874 000246089 000241744 D|084771804 013221975 +000000874 000252148 000252741 D|077785837 092259967 +000000874 000260152 000260684 D|096689234 094611668 +000000874 000266470 000287564 D|015616725 040700040 +000000874 000294638 000309972 D|067287031 091363982 +000000874 000298673 000346303 D|096139830 052941852 +000000874 000303774 000347075 D|066763991 038091140 +000000874 000339573 000365237 D|035932323 061659303 +000000874 000374498 000391233 D|072124366 037112340 +000000874 000425519 000447874 D|011978590 054839625 +000000874 000428973 000451924 D|054859796 045263848 +000000874 000451422 000487774 D|058989782 022074351 +000000874 000465110 000543538 D|097349205 020100206 +000000874 000508975 000549827 D|003027277 009314492 +000000874 000563365 000549988 D|067031946 060634199 +000000874 000577315 000578871 D|097644059 081101591 +000000874 000612030 000588175 D|040575070 070555403 +000000874 000612553 000599381 D|062599080 098630146 +000000874 000633369 000603604 D|015201490 025258134 +000000874 000662986 000618890 D|041339119 019719520 +000000874 000689347 000619672 D|012917914 016357489 +000000874 000734640 000627650 D|082319284 017237914 +000000874 000737454 000657726 D|026630223 000231442 +000000874 000751965 000692193 D|075927035 035475403 +000000874 000753206 000699814 D|028824324 093197484 +000000874 000771617 000706511 D|016489422 074079569 +000000874 000803211 000721619 D|025482941 073119837 +000000874 000818113 000744760 D|044256639 036869160 +000000874 000861323 000746493 D|075746560 058202592 +000000874 000883054 000761153 D|041317733 051623743 +000000874 000904731 000767152 D|064879898 000721353 +000000874 000937405 000770529 D|092667662 063734224 +000000874 000941587 000777675 D|075545996 001381846 +000000874 000962196 000791242 D|000819395 053819162 +000000874 000972518 000819694 D|067603118 044372295 +000000874 000973496 000824689 D|024526393 019068908 +000000874 000975748 000849715 D|060118293 050780688 +000000874 000979120 000884531 D|016510717 031669588 +000000874 000985287 000899547 D|068630731 042998004 +000000874 000985925 000976170 D|021510037 061357877 +000000874 000992699 000998622 D|021917414 073754323 +000000875 000001258 000002503 D|049655089 092380023 +000000875 000003096 000065731 D|042287532 054176737 +000000875 000015895 000081188 D|069995525 064818692 +000000875 000041144 000121561 D|044383649 011060975 +000000875 000064007 000178779 D|075456633 018615183 +000000875 000081054 000250603 D|026430145 016271463 +000000875 000091914 000262250 D|072190906 075826000 +000000875 000109307 000284188 D|080471398 053823845 +000000875 000130551 000309748 D|009645967 096911790 +000000875 000203276 000350601 D|050546602 025283459 +000000875 000205492 000371955 D|006805710 000032473 +000000875 000210831 000401203 D|095011009 061382586 +000000875 000213133 000413209 D|055885228 022996059 +000000875 000243694 000414117 D|091911540 063707782 +000000875 000253766 000427866 D|060804260 070315665 +000000875 000311473 000432969 D|051218750 002741102 +000000875 000334067 000435916 D|080899294 006339260 +000000875 000369932 000436917 D|031545576 060398450 +000000875 000372798 000442633 D|071423425 030740952 +000000875 000385826 000489875 D|041485551 020676673 +000000875 000404459 000509777 D|076617234 046562543 +000000875 000429425 000514283 D|036231112 062922762 +000000875 000434784 000526106 D|018751664 014688099 +000000875 000466936 000543240 D|039288947 045061540 +000000875 000522127 000567117 D|054258250 054240975 +000000875 000525952 000624820 D|023292082 058302899 +000000875 000568456 000666377 D|091886881 040761887 +000000875 000598594 000682988 D|017062662 009311698 +000000875 000630415 000687602 D|036201331 092011485 +000000875 000641753 000697270 D|067285927 095674820 +000000875 000646538 000710196 D|030392995 052960783 +000000875 000688402 000743352 D|074435952 094564050 +000000875 000689497 000747456 D|048921982 028268855 +000000875 000703141 000748915 D|019255260 000362010 +000000875 000704269 000754297 D|065094503 028896647 +000000875 000715869 000757795 D|066964230 086663411 +000000875 000722591 000772833 D|072999015 055568768 +000000875 000742238 000779167 D|002656897 028195904 +000000875 000764553 000787529 D|003018649 061924337 +000000875 000781967 000794325 D|006710749 078237947 +000000875 000804941 000813365 D|080676878 076975800 +000000875 000857118 000834093 D|011741469 023322069 +000000875 000863965 000900737 D|095672516 065481218 +000000875 000870356 000906513 D|064903118 042320680 +000000875 000877068 000916782 D|060382753 033188835 +000000875 000919130 000932286 D|096611108 099354721 +000000875 000952831 000941493 D|078015677 074541332 +000000875 000952887 000945976 D|052767572 050534348 +000000875 000973564 000948887 D|040796925 090580962 +000000875 000992377 000981936 D|005789808 013135999 +000000876 000056836 000014691 D|058440389 079436353 +000000876 000063354 000019753 D|067985900 039132428 +000000876 000097356 000036862 D|081368833 088700687 +000000876 000122487 000040314 D|001708799 088132330 +000000876 000172211 000043912 D|014440372 004863394 +000000876 000183237 000052910 D|087374050 007092361 +000000876 000198082 000093096 D|036523151 052432714 +000000876 000242481 000096418 D|060875132 073111639 +000000876 000250952 000099857 D|018537674 087032856 +000000876 000255665 000143122 D|065376340 066120228 +000000876 000261078 000149086 D|072401490 093845098 +000000876 000308527 000161983 D|033300001 020794804 +000000876 000321113 000162486 D|097350556 032683383 +000000876 000335031 000163641 D|086568451 002599800 +000000876 000351940 000174272 D|079099157 020549118 +000000876 000365360 000177016 D|038015578 081668087 +000000876 000387884 000194561 D|006661748 033038251 +000000876 000407030 000203305 D|031754356 081761371 +000000876 000440144 000221681 D|054455760 071328042 +000000876 000458257 000222034 D|084020379 050690155 +000000876 000462731 000228295 D|001727608 060930382 +000000876 000470312 000234171 D|078947603 027709857 +000000876 000544526 000282845 D|013475517 049082775 +000000876 000565033 000294429 D|060006392 059541536 +000000876 000635708 000298838 D|063346685 056200024 +000000876 000645611 000303512 D|071586705 091290570 +000000876 000647632 000334354 D|060689586 069265606 +000000876 000650567 000355092 D|069014753 067340454 +000000876 000655422 000386560 D|084221791 044963258 +000000876 000682561 000428462 D|043852309 063418465 +000000876 000690988 000434551 D|060126456 057999945 +000000876 000702770 000466851 D|066863101 057802335 +000000876 000709215 000489231 D|030184806 082671870 +000000876 000717144 000539174 D|059480240 060973672 +000000876 000722663 000559733 D|007852671 069868815 +000000876 000747079 000594079 D|029552972 032433037 +000000876 000749726 000602034 D|014488216 011884981 +000000876 000782703 000643694 D|034811938 053963312 +000000876 000798665 000644743 D|074006863 082875878 +000000876 000804449 000671809 D|063319560 007076392 +000000876 000835294 000680908 D|061481962 043749925 +000000876 000839387 000686375 D|052905131 028879709 +000000876 000869238 000730720 D|024918794 046740271 +000000876 000877400 000754409 D|079043597 036683413 +000000876 000881330 000770409 D|079267178 080385887 +000000876 000884699 000803135 D|085839460 057655813 +000000876 000914637 000878340 D|049455581 065308799 +000000876 000915726 000887016 D|030870024 010686233 +000000876 000976603 000925833 D|051874258 059384787 +000000876 000989883 000948237 D|098951799 076544937 +000000877 000072919 000007821 D|001650505 007473790 +000000877 000089327 000030920 D|003208364 068582737 +000000877 000094283 000060131 D|082078673 066228568 +000000877 000100640 000121736 D|037986001 082245879 +000000877 000104720 000134604 D|062155210 000224315 +000000877 000116766 000137363 D|018103943 062089910 +000000877 000122077 000138214 D|003355867 089550792 +000000877 000158491 000152973 D|083827841 030468543 +000000877 000167586 000158506 D|033748816 017881713 +000000877 000200547 000173344 D|057197940 076669992 +000000877 000221245 000204481 D|073483445 018387900 +000000877 000234541 000221332 D|083104730 063775340 +000000877 000305686 000234113 D|094519090 064403879 +000000877 000328843 000256139 D|008437225 093323552 +000000877 000377591 000274270 D|072983380 024629860 +000000877 000383672 000276154 D|052029802 066977899 +000000877 000393126 000286110 D|063344648 097323105 +000000877 000398441 000307265 D|063009121 083427558 +000000877 000399396 000360371 D|072320511 067426215 +000000877 000408633 000362244 D|002644594 054638977 +000000877 000419802 000374005 D|023592924 032072486 +000000877 000420243 000421292 D|011645099 090458914 +000000877 000423620 000460405 D|084317442 014393731 +000000877 000497461 000467625 D|027670498 090213204 +000000877 000518759 000474378 D|088315705 011181293 +000000877 000519726 000548822 D|011282897 076444405 +000000877 000617795 000579659 D|023492662 008445054 +000000877 000645202 000621857 D|044931518 032056918 +000000877 000686120 000636848 D|078578506 052555039 +000000877 000708055 000643379 D|053344106 015962312 +000000877 000718815 000652716 D|026501675 004024390 +000000877 000740375 000658976 D|037463729 094607108 +000000877 000740971 000679187 D|098414645 094320502 +000000877 000744019 000679469 D|071523450 060570307 +000000877 000769650 000688632 D|038104723 012644531 +000000877 000787312 000692012 D|032373133 008899038 +000000877 000805297 000713313 D|044490283 094894462 +000000877 000809850 000758112 D|011085216 050483134 +000000877 000822417 000770151 D|091102870 049904116 +000000877 000871239 000808107 D|041984252 058199479 +000000877 000874436 000824206 D|060374897 067172244 +000000877 000877029 000837356 D|063282651 069579495 +000000877 000897413 000874229 D|093532111 059746030 +000000877 000903101 000895649 D|020737430 066752762 +000000877 000912116 000897542 D|017968239 014094835 +000000877 000919263 000932472 D|012113723 088216579 +000000877 000942250 000965657 D|068950582 086262455 +000000877 000950179 000973833 D|098431126 076542205 +000000877 000970017 000978727 D|083678952 051812821 +000000877 000991574 000996347 D|048489995 041061924 +000000878 000006223 000018705 D|016243143 055096379 +000000878 000009945 000029203 D|026739279 005289770 +000000878 000021032 000042132 D|065261090 088866776 +000000878 000022920 000050254 D|008409004 090981491 +000000878 000026534 000059532 D|086391720 034701206 +000000878 000043772 000082578 D|051219527 072756553 +000000878 000044338 000105307 D|031096739 059590858 +000000878 000061285 000113973 D|001045212 050309220 +000000878 000086290 000128774 D|088277123 007018139 +000000878 000090699 000132083 D|029941255 079390406 +000000878 000114054 000194779 D|070540444 079495062 +000000878 000142927 000232309 D|043093926 069549307 +000000878 000175806 000249877 D|073358613 063323829 +000000878 000185426 000254300 D|092248397 021207635 +000000878 000199659 000255926 D|000303491 062370330 +000000878 000225471 000257444 D|047494588 060238521 +000000878 000233010 000261774 D|084401985 046548532 +000000878 000315082 000314031 D|048184017 056783807 +000000878 000316678 000335477 D|068290674 092309014 +000000878 000327121 000348332 D|084903157 040852218 +000000878 000334173 000415519 D|035089057 075855491 +000000878 000348828 000433856 D|016717990 012096218 +000000878 000355707 000445081 D|037601658 090129531 +000000878 000376605 000448258 D|014194630 083026391 +000000878 000410609 000454580 D|072169019 030812853 +000000878 000433352 000454845 D|018027690 051291820 +000000878 000440004 000459929 D|037402238 073044051 +000000878 000454196 000471569 D|071796850 089106590 +000000878 000480424 000494185 D|026628832 089408637 +000000878 000486819 000508860 D|027886690 088439565 +000000878 000487678 000516909 D|033011835 059718604 +000000878 000531133 000566546 D|098831733 059349731 +000000878 000566181 000638007 D|019735799 050943528 +000000878 000573065 000639888 D|038826340 084331273 +000000878 000586851 000649836 D|076510350 049748429 +000000878 000614337 000735379 D|041536211 025755944 +000000878 000629196 000750193 D|074766988 078762200 +000000878 000760820 000809635 D|062377171 062058812 +000000878 000779435 000843346 D|036626227 060153927 +000000878 000796946 000861018 D|086547320 078143056 +000000878 000821664 000866104 D|002597759 001224773 +000000878 000829741 000883116 D|053836444 031635932 +000000878 000872430 000895542 D|041760252 023846369 +000000878 000891447 000902230 D|058000043 038154125 +000000878 000903450 000935748 D|044895368 000906908 +000000878 000915148 000943789 D|018004946 070622667 +000000878 000917198 000948412 D|053008983 008705635 +000000878 000927915 000963478 D|086811897 030133629 +000000878 000952637 000992816 D|036088839 006780583 +000000878 000964277 000994612 D|066627653 007896747 +000000879 000038659 000008291 D|001595110 088213362 +000000879 000122334 000027841 D|023441870 034447003 +000000879 000145436 000063509 D|072684623 095196481 +000000879 000176648 000076333 D|057293618 056889481 +000000879 000213100 000090607 D|002090894 060276780 +000000879 000221962 000093827 D|085196324 076886794 +000000879 000244570 000130468 D|097185516 022901503 +000000879 000265197 000149369 D|091903073 016798436 +000000879 000294898 000156805 D|059592093 086774854 +000000879 000298128 000207898 D|037299842 035522142 +000000879 000380825 000211620 D|064132745 074183630 +000000879 000382182 000211839 D|026585096 056731989 +000000879 000411434 000229562 D|032094914 011293020 +000000879 000417298 000245889 D|007799938 025546650 +000000879 000423394 000252275 D|023973910 089435429 +000000879 000424355 000260722 D|040521245 090449531 +000000879 000452003 000268786 D|012862262 092505157 +000000879 000453564 000272331 D|056960035 023790819 +000000879 000467510 000275353 D|047376989 081719333 +000000879 000488675 000277562 D|060054085 020240777 +000000879 000495918 000289412 D|087150007 015606475 +000000879 000498885 000320430 D|030255848 009261356 +000000879 000504371 000349698 D|009275331 017174725 +000000879 000506762 000352456 D|094014926 040596636 +000000879 000510511 000388019 D|061387323 073671841 +000000879 000562919 000406253 D|078548908 091439950 +000000879 000575140 000408945 D|092444447 023226561 +000000879 000580959 000421191 D|040775975 088869524 +000000879 000595405 000432964 D|069245511 078199220 +000000879 000603922 000442911 D|019675374 084603610 +000000879 000621050 000444528 D|016760624 003947044 +000000879 000642904 000463055 D|095679490 035136425 +000000879 000648776 000510798 D|035640333 091362705 +000000879 000699198 000558956 D|030884191 057265742 +000000879 000712013 000568368 D|086683747 060297775 +000000879 000743789 000592409 D|086936427 068626076 +000000879 000793067 000605705 D|035744977 044532819 +000000879 000804282 000620591 D|019220076 089238415 +000000879 000806677 000641632 D|051003380 072087331 +000000879 000823272 000645642 D|035390098 044540021 +000000879 000832898 000663108 D|002559096 034339841 +000000879 000873805 000689013 D|098211940 085371659 +000000879 000877485 000701694 D|081430203 068475649 +000000879 000880921 000704158 D|023850944 003579671 +000000879 000885329 000706991 D|040704434 061761492 +000000879 000912823 000715469 D|006643777 043259859 +000000879 000925820 000735165 D|061355543 000927627 +000000879 000946000 000865658 D|014775547 063679442 +000000879 000946276 000881292 D|099781024 020351509 +000000879 000971013 000883424 D|061215441 030389721 +000000880 000003724 000032097 D|058450749 060504944 +000000880 000012544 000037523 D|034749842 053156140 +000000880 000019877 000038320 D|027740393 036101725 +000000880 000057143 000042396 D|012730784 054024284 +000000880 000070172 000045288 D|006491970 028541180 +000000880 000075641 000061218 D|077454125 083262640 +000000880 000079450 000079727 D|094487121 039377617 +000000880 000099557 000097435 D|055357444 069035739 +000000880 000121394 000143527 D|081904345 088574048 +000000880 000134112 000148246 D|045249671 062841226 +000000880 000187206 000154172 D|067623981 094551812 +000000880 000220973 000177220 D|086210063 029049564 +000000880 000239753 000177572 D|006131169 023530034 +000000880 000256736 000186021 D|080870926 000144581 +000000880 000271130 000257068 D|082837181 040227658 +000000880 000290352 000288371 D|069097049 000138703 +000000880 000293384 000288744 D|070797609 038700981 +000000880 000298493 000289126 D|058018200 025587186 +000000880 000302586 000304235 D|016567115 064498414 +000000880 000355894 000356577 D|066413153 012492976 +000000880 000369641 000357269 D|006243921 098193294 +000000880 000389636 000420247 D|074211299 066823845 +000000880 000439180 000469944 D|024387660 028362592 +000000880 000456167 000479253 D|042818514 020437320 +000000880 000484753 000508262 D|015954029 008256280 +000000880 000531072 000512630 D|089627487 094579352 +000000880 000603230 000540807 D|094378413 051554704 +000000880 000605108 000547119 D|008358064 093345733 +000000880 000623155 000566055 D|052713053 018995612 +000000880 000634897 000594361 D|058434663 005587297 +000000880 000661173 000596054 D|029801745 042777049 +000000880 000681374 000598028 D|031116057 080723289 +000000880 000697824 000604295 D|001454608 007564408 +000000880 000698529 000606975 D|063333198 060823657 +000000880 000719445 000632405 D|004828970 048554564 +000000880 000721404 000635691 D|027215996 018687337 +000000880 000737865 000677466 D|042903995 002240618 +000000880 000747692 000708995 D|054750564 068122878 +000000880 000752804 000742896 D|057876276 062951296 +000000880 000773007 000748385 D|043748380 010165548 +000000880 000785378 000759940 D|064045974 027293023 +000000880 000799404 000762168 D|047683011 009969676 +000000880 000835218 000790488 D|006614557 057195870 +000000880 000930360 000796838 D|023989438 056722737 +000000880 000936678 000857443 D|003343751 026030159 +000000880 000949573 000878651 D|098778865 065239609 +000000880 000954878 000961407 D|027068269 017807418 +000000880 000983405 000967629 D|050932588 023340785 +000000880 000989631 000979302 D|029755011 017218922 +000000880 000990564 000994963 D|067438890 027062117 +000000881 000011241 000010598 D|006391286 028787244 +000000881 000033054 000014149 D|016287127 003884824 +000000881 000071945 000027814 D|077109304 018625818 +000000881 000083836 000042621 D|048273811 012769273 +000000881 000112704 000066112 D|062459611 017728759 +000000881 000138927 000087792 D|085253177 051610786 +000000881 000149317 000091840 D|089927129 006293493 +000000881 000152994 000097140 D|091269054 024108547 +000000881 000162017 000168435 D|019293973 039924013 +000000881 000162454 000181474 D|020173626 062793585 +000000881 000177494 000216723 D|062888767 015225386 +000000881 000214929 000217999 D|012764613 090625994 +000000881 000219221 000240057 D|085758352 073277936 +000000881 000271650 000269917 D|075160298 080459817 +000000881 000282253 000285941 D|065534024 015780204 +000000881 000292317 000286156 D|097304539 041685378 +000000881 000311761 000287642 D|010211187 007869113 +000000881 000373638 000307168 D|034801986 045157919 +000000881 000408067 000312955 D|056798751 029513729 +000000881 000421185 000314433 D|026806983 048603383 +000000881 000443621 000327030 D|080504391 033977247 +000000881 000504656 000337400 D|066741880 042472259 +000000881 000514086 000368508 D|014056506 048180647 +000000881 000521978 000381290 D|029731886 033223231 +000000881 000525182 000456221 D|006545810 068181575 +000000881 000525996 000499561 D|045814325 033572722 +000000881 000570908 000504251 D|018965775 012128172 +000000881 000596107 000589247 D|086242694 013117640 +000000881 000637869 000596770 D|098498376 071659388 +000000881 000651135 000669440 D|058037622 062509404 +000000881 000666953 000674471 D|060167620 028927220 +000000881 000680613 000685654 D|022204329 083239710 +000000881 000697402 000685944 D|009555265 003136068 +000000881 000715275 000686513 D|040354175 057232492 +000000881 000720975 000695614 D|067254055 086061071 +000000881 000735938 000712611 D|007605805 030175837 +000000881 000781749 000741275 D|086197865 063459499 +000000881 000785235 000769819 D|073900817 034246208 +000000881 000796994 000781835 D|023910078 009938755 +000000881 000821648 000817915 D|028392256 058743647 +000000881 000831438 000832462 D|079771958 073569374 +000000881 000839817 000855793 D|040838757 084177033 +000000881 000860996 000856549 D|011477578 028714101 +000000881 000862769 000884943 D|001441945 074598812 +000000881 000864013 000885154 D|070307347 061146999 +000000881 000872984 000940604 D|004772668 089615621 +000000881 000873864 000956532 D|088585038 001667995 +000000881 000969740 000970822 D|068872517 050325281 +000000881 000973694 000991920 D|016455037 097032651 +000000881 000995653 000998006 D|011266426 035297445 +000000882 000011392 000037193 D|002931521 054811046 +000000882 000019330 000077654 D|094305460 072796694 +000000882 000057940 000094732 D|006037204 099881905 +000000882 000064546 000137199 D|092780894 047112539 +000000882 000081984 000157945 D|058875135 083753797 +000000882 000086157 000158061 D|040979943 071308663 +000000882 000119706 000163474 D|037142729 004701909 +000000882 000135665 000173932 D|030444379 032336292 +000000882 000152759 000194737 D|066727464 046983792 +000000882 000168539 000202752 D|028908648 068302367 +000000882 000177199 000216729 D|037966356 027548125 +000000882 000215386 000218797 D|028084382 057657007 +000000882 000216629 000283139 D|015225226 049814486 +000000882 000241746 000300313 D|060689771 086993120 +000000882 000260617 000301676 D|079879120 001837126 +000000882 000278619 000333983 D|059834707 094547532 +000000882 000279404 000349954 D|082149882 002036180 +000000882 000279943 000355740 D|058837221 002392204 +000000882 000348303 000415263 D|083443002 014573305 +000000882 000372286 000435534 D|049272533 061139614 +000000882 000385919 000508400 D|001539360 059110191 +000000882 000456144 000514935 D|078016095 050919318 +000000882 000473527 000546343 D|072382292 059643195 +000000882 000499101 000575587 D|058628455 062874528 +000000882 000520183 000576250 D|043768887 090476002 +000000882 000528324 000580696 D|007828114 002895370 +000000882 000538970 000633562 D|046628730 081086989 +000000882 000543911 000639929 D|001307545 079245534 +000000882 000564270 000652693 D|086860394 053947459 +000000882 000588796 000655288 D|013368145 095468915 +000000882 000608435 000678941 D|001866755 032633468 +000000882 000613973 000684250 D|080017039 008803501 +000000882 000618037 000694733 D|001543060 004212435 +000000882 000640319 000738200 D|004063784 076213385 +000000882 000657820 000793012 D|034243439 039218999 +000000882 000679122 000798961 D|063335277 095918553 +000000882 000741664 000802421 D|052875034 030889756 +000000882 000744670 000831140 D|036061301 021005192 +000000882 000770438 000832414 D|091394604 057963829 +000000882 000782322 000844984 D|021621916 036994843 +000000882 000786802 000877020 D|068736174 021842336 +000000882 000835281 000881114 D|054002683 035273771 +000000882 000859247 000888735 D|047503545 045645336 +000000882 000871153 000918918 D|058150361 005605431 +000000882 000888954 000954507 D|098261638 072269221 +000000882 000893812 000955497 D|000478067 037998144 +000000882 000896424 000957296 D|084663585 080675906 +000000882 000915338 000964209 D|025509569 011101758 +000000882 000942548 000977395 D|032499854 049527889 +000000882 000961213 000981865 D|041300923 092957678 +000000883 000013841 000049297 D|011396621 078838374 +000000883 000030627 000076696 D|067115792 048049454 +000000883 000072951 000101483 D|065330008 030592931 +000000883 000086450 000109163 D|072942898 043466473 +000000883 000123624 000118772 D|058918110 024494495 +000000883 000137866 000139347 D|099029407 076390852 +000000883 000151067 000157983 D|006263912 000903100 +000000883 000161908 000196770 D|008250683 036645532 +000000883 000176637 000242411 D|088652051 093047654 +000000883 000179485 000258488 D|078043526 027519245 +000000883 000187971 000277179 D|081192465 071528343 +000000883 000238790 000278304 D|056131373 056327288 +000000883 000239628 000318520 D|047241734 041095853 +000000883 000243655 000337920 D|079666062 002696031 +000000883 000243853 000350433 D|033607720 020820428 +000000883 000249258 000370988 D|001199494 088508891 +000000883 000276956 000424428 D|090748801 072436780 +000000883 000279985 000456240 D|052311702 035317411 +000000883 000297924 000456662 D|070379832 062904034 +000000883 000337992 000469676 D|090819470 073292183 +000000883 000410059 000476922 D|079110340 030933385 +000000883 000418278 000519339 D|087127934 065631642 +000000883 000426240 000525119 D|013223627 056039681 +000000883 000497909 000530097 D|016654454 020624418 +000000883 000527620 000540003 D|097159200 006301448 +000000883 000528687 000558164 D|007124109 063590631 +000000883 000535766 000561709 D|044269013 049973290 +000000883 000549056 000574384 D|065712306 098035284 +000000883 000556300 000604954 D|075540296 078702306 +000000883 000564550 000620300 D|078802721 009422878 +000000883 000572028 000628914 D|078143465 093449069 +000000883 000638688 000645688 D|073111007 037774924 +000000883 000649252 000685689 D|088411814 093889884 +000000883 000657935 000692053 D|026411888 001987384 +000000883 000680329 000708121 D|016294845 017342684 +000000883 000682820 000738964 D|068585529 056800079 +000000883 000692375 000754500 D|045577721 080882924 +000000883 000699568 000774238 D|037767878 099064439 +000000883 000714175 000805809 D|011420625 026759450 +000000883 000724993 000808465 D|084709200 041404514 +000000883 000789134 000827656 D|069374624 044518296 +000000883 000802809 000833894 D|030329006 038353527 +000000883 000807235 000840649 D|065143390 010499764 +000000883 000828217 000854802 D|072207842 070795656 +000000883 000876043 000867351 D|012702558 037506946 +000000883 000926586 000884023 D|054030588 011884007 +000000883 000937837 000889551 D|008510949 065062765 +000000883 000960446 000919044 D|005790329 078141043 +000000883 000979434 000953865 D|029006419 022547409 +000000883 000998705 000956082 D|003306997 013310316 +000000884 000006640 000011216 D|008642860 011042472 +000000884 000041954 000011982 D|049747218 095708144 +000000884 000055161 000030369 D|043454470 080670844 +000000884 000073369 000032658 D|072209368 015432045 +000000884 000085728 000077199 D|068646878 038689300 +000000884 000140943 000078339 D|057210902 084041733 +000000884 000164139 000079403 D|041112321 056242739 +000000884 000180405 000102757 D|024429626 054631350 +000000884 000191435 000166788 D|005229069 088678476 +000000884 000207154 000173143 D|003321630 077362489 +000000884 000208515 000184238 D|067833204 033320341 +000000884 000219387 000194533 D|040938674 038848263 +000000884 000222694 000195077 D|069497048 035966754 +000000884 000236227 000200867 D|036754069 062021147 +000000884 000236335 000203289 D|033406194 073077490 +000000884 000240693 000219073 D|073310456 005545611 +000000884 000315449 000270634 D|056713471 062062282 +000000884 000344168 000272054 D|079301525 074728863 +000000884 000358598 000295559 D|089746459 066305360 +000000884 000359231 000305918 D|038726680 091694881 +000000884 000369796 000314572 D|077252759 018626186 +000000884 000390948 000321578 D|079684486 065941974 +000000884 000401197 000340800 D|016314653 022775657 +000000884 000406606 000443919 D|052755451 015717142 +000000884 000418566 000473608 D|077581879 055221968 +000000884 000445307 000478258 D|035168809 041542123 +000000884 000454352 000504551 D|017977805 041688583 +000000884 000470286 000559486 D|078818412 028361675 +000000884 000478893 000561637 D|006417229 026710957 +000000884 000534079 000569849 D|062022633 082304457 +000000884 000545216 000663156 D|058511336 081275068 +000000884 000558389 000666557 D|082944258 045053913 +000000884 000566028 000673385 D|084172635 098725014 +000000884 000639618 000684860 D|091166335 098883452 +000000884 000639961 000692262 D|062922649 034435954 +000000884 000645217 000722887 D|000800437 077364575 +000000884 000664018 000725417 D|076563856 090961392 +000000884 000737391 000733571 D|042717257 005465347 +000000884 000768206 000758112 D|098816037 089048387 +000000884 000813444 000785326 D|012214971 032960257 +000000884 000815109 000785677 D|019647992 016110458 +000000884 000825887 000823399 D|020915982 012566441 +000000884 000851237 000827679 D|071279914 055656520 +000000884 000907354 000835807 D|072741730 097384677 +000000884 000921555 000871118 D|044529665 027769068 +000000884 000929292 000890803 D|004653083 036212623 +000000884 000943648 000934315 D|065700823 014699749 +000000884 000949405 000947740 D|077381607 064621408 +000000884 000949707 000958873 D|080823103 084443903 +000000884 000973383 000986591 D|003240641 003560357 +000000885 000000587 000019401 D|098123186 013949880 +000000885 000012883 000023896 D|082729434 083806042 +000000885 000019647 000028536 D|060026090 092845488 +000000885 000045607 000047804 D|030000527 024529919 +000000885 000087322 000059327 D|058832921 068373355 +000000885 000098490 000059932 D|080897242 099566545 +000000885 000152178 000079175 D|040150500 054428323 +000000885 000182769 000087022 D|030679678 057993443 +000000885 000195233 000133982 D|066111049 082731275 +000000885 000230288 000157826 D|062103115 020308902 +000000885 000240489 000167937 D|085597337 053205021 +000000885 000285658 000227865 D|056478487 041281478 +000000885 000288709 000239397 D|085659450 020056385 +000000885 000303769 000254829 D|063819027 064816583 +000000885 000311524 000278447 D|062073592 050054377 +000000885 000328054 000293772 D|038057910 013710444 +000000885 000339594 000298129 D|060548096 096112515 +000000885 000345907 000373200 D|005571053 021327385 +000000885 000365365 000387167 D|021039675 008300929 +000000885 000383358 000451704 D|081775425 039991135 +000000885 000396087 000466237 D|080792196 078087919 +000000885 000406486 000471490 D|006350394 031050611 +000000885 000478893 000481447 D|000493105 055536752 +000000885 000502810 000487738 D|005397196 070187173 +000000885 000508782 000508228 D|082420307 006071783 +000000885 000532073 000528860 D|011145888 055130348 +000000885 000561114 000543751 D|042945177 023951058 +000000885 000566942 000561281 D|015863302 047648787 +000000885 000567207 000595519 D|017835278 039050624 +000000885 000579206 000599921 D|067553850 033485168 +000000885 000587626 000631156 D|002570416 034372689 +000000885 000600490 000631580 D|010865613 023981396 +000000885 000600902 000692706 D|011776387 080261611 +000000885 000601521 000698333 D|035078008 079849130 +000000885 000604851 000729096 D|040568836 086966129 +000000885 000612940 000734660 D|063773313 095791296 +000000885 000643766 000775229 D|033581618 025863003 +000000885 000670956 000781885 D|031929958 090943643 +000000885 000713509 000786485 D|090992919 015377750 +000000885 000719930 000791525 D|002292688 071219980 +000000885 000720034 000794206 D|012952571 015561750 +000000885 000731606 000804559 D|017595333 088202510 +000000885 000773632 000822640 D|042074857 072261034 +000000885 000795074 000837489 D|069052158 007086302 +000000885 000801641 000860389 D|007683950 028127133 +000000885 000808047 000879316 D|087242552 040743178 +000000885 000913914 000924325 D|043886917 022058490 +000000885 000920414 000928673 D|062414223 078805058 +000000885 000935658 000968087 D|002840201 042646106 +000000885 000961829 000985568 D|086456325 085547283 +000000886 000025479 000006806 D|001203581 096979410 +000000886 000089935 000028930 D|091214528 057159605 +000000886 000108625 000049299 D|095278319 002667504 +000000886 000111420 000052085 D|049953605 081757817 +000000886 000131301 000084784 D|017809172 066425867 +000000886 000171533 000085973 D|009576684 011410339 +000000886 000198062 000089635 D|079644784 028293895 +000000886 000237947 000102005 D|014221331 057605426 +000000886 000253175 000118451 D|010370736 084963553 +000000886 000265071 000132896 D|053805925 045284999 +000000886 000276173 000134820 D|092229961 092483089 +000000886 000284015 000147438 D|066446478 095124476 +000000886 000286773 000154332 D|049379246 080414597 +000000886 000298051 000182640 D|049814498 097244262 +000000886 000360340 000201314 D|037283341 002543134 +000000886 000381300 000212090 D|056219530 064225209 +000000886 000383371 000212103 D|002832938 022948888 +000000886 000384359 000298373 D|007213429 093721560 +000000886 000392421 000311737 D|099170757 083700056 +000000886 000396478 000312567 D|023011266 000535278 +000000886 000411512 000327130 D|083610609 032670240 +000000886 000433494 000342974 D|066679736 003811909 +000000886 000435676 000409625 D|057976309 021032641 +000000886 000450392 000417683 D|081381470 078379792 +000000886 000450722 000465947 D|023452268 078599821 +000000886 000455301 000476937 D|026247450 092262893 +000000886 000507467 000480240 D|052706834 011534575 +000000886 000555233 000481163 D|045876815 052397366 +000000886 000561891 000495020 D|070372240 023460392 +000000886 000594112 000504491 D|094951707 050089165 +000000886 000596633 000534624 D|099786637 090967177 +000000886 000607022 000541385 D|016273006 090369154 +000000886 000616624 000576128 D|021494008 080114202 +000000886 000618646 000608905 D|013993056 054604331 +000000886 000631026 000626127 D|084459797 086358427 +000000886 000633922 000668391 D|048111609 074332343 +000000886 000635934 000677514 D|032661697 052948890 +000000886 000686260 000678697 D|051569610 026486741 +000000886 000686883 000686834 D|048517924 078017683 +000000886 000696879 000711051 D|006103210 097954168 +000000886 000708781 000754052 D|070419079 037667945 +000000886 000796890 000774488 D|080094868 097407578 +000000886 000847343 000779075 D|062800208 001055720 +000000886 000930352 000796782 D|083180366 065959248 +000000886 000949456 000868044 D|096185652 036681959 +000000886 000951361 000877993 D|052529672 020865245 +000000886 000954386 000884452 D|099044276 049990964 +000000886 000976005 000904488 D|046122584 014418524 +000000886 000977240 000953821 D|021993272 094449948 +000000886 000983092 000974468 D|044550687 097030819 +000000887 000006134 000009627 D|010467855 026787694 +000000887 000023388 000037774 D|034260937 059288355 +000000887 000036228 000045596 D|028143958 052648400 +000000887 000050838 000049551 D|010957298 061203271 +000000887 000057381 000053258 D|092865806 012633950 +000000887 000059613 000063918 D|055057169 040769618 +000000887 000077061 000080620 D|086711110 046019596 +000000887 000121922 000099344 D|042829298 081139209 +000000887 000126366 000112884 D|011706115 071253655 +000000887 000153682 000119011 D|033909477 074866201 +000000887 000183563 000145106 D|062358109 057471762 +000000887 000212238 000159275 D|023415684 055411397 +000000887 000244327 000177492 D|091280698 046850494 +000000887 000262084 000179932 D|009254943 023776929 +000000887 000269156 000205667 D|074430220 094445877 +000000887 000324004 000208597 D|030036517 079256865 +000000887 000334232 000211140 D|034422343 094999108 +000000887 000350726 000240762 D|064126307 098830383 +000000887 000396543 000246784 D|027450763 059072865 +000000887 000415434 000281794 D|041495139 028908803 +000000887 000415499 000288849 D|075602881 022712162 +000000887 000468993 000293504 D|012299958 003284745 +000000887 000496829 000298414 D|075213735 019179551 +000000887 000513778 000362145 D|047446045 099243924 +000000887 000519614 000362569 D|054101285 092807866 +000000887 000528983 000363528 D|080370260 078937025 +000000887 000545928 000428217 D|001468142 026441839 +000000887 000560045 000433734 D|042694263 079719611 +000000887 000565761 000446399 D|084665730 046773380 +000000887 000576472 000453177 D|092662642 060769216 +000000887 000577720 000545096 D|065775437 060326331 +000000887 000584686 000548802 D|039001569 068376932 +000000887 000608404 000565565 D|086105206 006316676 +000000887 000632012 000580987 D|048867110 051137837 +000000887 000671543 000674795 D|099313808 059314530 +000000887 000674216 000694006 D|003557609 061510048 +000000887 000736557 000717232 D|021737713 060861039 +000000887 000740952 000735676 D|046369014 027300059 +000000887 000750273 000765876 D|080228224 011490460 +000000887 000755900 000793253 D|002812309 013654925 +000000887 000770659 000813841 D|053875918 066892855 +000000887 000855938 000813905 D|044342564 078345747 +000000887 000909814 000862923 D|086896059 037023221 +000000887 000925743 000866672 D|043177433 090716961 +000000887 000929856 000868238 D|032920046 096854652 +000000887 000942196 000880585 D|020907250 071146117 +000000887 000944069 000889813 D|020795974 078424893 +000000887 000968390 000938795 D|039292125 033976664 +000000887 000974567 000947418 D|022586466 076482311 +000000887 000977386 000960970 D|031624428 016947942 +000000888 000023114 000021005 D|024715598 011653204 +000000888 000026331 000038872 D|058632572 022510616 +000000888 000039054 000045552 D|060880456 045281372 +000000888 000077724 000050431 D|098604723 066123743 +000000888 000098133 000057107 D|048742984 089497012 +000000888 000109430 000071102 D|049461294 004904033 +000000888 000209356 000082487 D|083337367 054300014 +000000888 000217529 000084534 D|078308911 059115034 +000000888 000235665 000084972 D|004757550 015624690 +000000888 000240619 000106606 D|031185385 051004509 +000000888 000269798 000135798 D|064679084 009625347 +000000888 000276551 000147070 D|034571766 012443937 +000000888 000289652 000152559 D|002897103 016603462 +000000888 000310873 000180022 D|012966055 039470747 +000000888 000312650 000281664 D|029059671 052297692 +000000888 000327379 000290669 D|002834267 094406419 +000000888 000327538 000340185 D|009413748 096702611 +000000888 000327727 000423516 D|026519934 076848090 +000000888 000336820 000438497 D|060485661 069343448 +000000888 000349177 000456393 D|052222328 038444968 +000000888 000351066 000481255 D|031241113 082514740 +000000888 000356813 000492304 D|036018426 036113434 +000000888 000362013 000495003 D|083388184 049276432 +000000888 000393862 000498996 D|036950688 027316428 +000000888 000423637 000542397 D|011277127 080819608 +000000888 000464988 000548008 D|044454114 089505503 +000000888 000480709 000568510 D|060486061 050346562 +000000888 000490157 000588047 D|098719014 046290319 +000000888 000504624 000613973 D|068911838 023771159 +000000888 000505370 000613992 D|045230117 052709643 +000000888 000542178 000616642 D|067129285 002801187 +000000888 000597012 000629713 D|048901923 039715719 +000000888 000625036 000643282 D|021923388 009734314 +000000888 000674298 000691213 D|021567622 010757441 +000000888 000681143 000702332 D|075325504 011706858 +000000888 000683770 000706590 D|050630497 021816497 +000000888 000695796 000710837 D|025169342 017577196 +000000888 000738467 000728131 D|006392168 048694771 +000000888 000781068 000754697 D|027314733 017100128 +000000888 000789679 000767651 D|017354078 008981992 +000000888 000814822 000771981 D|002866992 078624707 +000000888 000828321 000819757 D|047690662 082303742 +000000888 000828993 000846717 D|025781470 042870822 +000000888 000847058 000855412 D|067761216 038722594 +000000888 000853747 000863232 D|075438684 042569343 +000000888 000896499 000865528 D|083273602 076561959 +000000888 000902886 000886166 D|020398722 053557356 +000000888 000908015 000909787 D|004321954 022896537 +000000888 000964980 000937987 D|008699128 045205823 +000000888 000976833 000971416 D|043040190 054706007 +000000889 000002225 000008399 D|072052185 043036532 +000000889 000015289 000009730 D|011173340 012909143 +000000889 000038915 000028971 D|033766940 011768950 +000000889 000046282 000035042 D|069088442 079449129 +000000889 000089400 000042089 D|065574706 038315568 +000000889 000102779 000087246 D|091987940 069195807 +000000889 000114366 000092069 D|061851101 074280460 +000000889 000120824 000122432 D|039964615 043627956 +000000889 000139514 000156147 D|011179967 097994010 +000000889 000143123 000171975 D|093429353 056384512 +000000889 000149336 000222093 D|006273355 074310742 +000000889 000174810 000231494 D|067257426 074078936 +000000889 000254803 000237966 D|086733460 016242113 +000000889 000259260 000241650 D|094364105 096060065 +000000889 000284751 000288435 D|039107304 056750701 +000000889 000285921 000327301 D|029904494 073704935 +000000889 000313780 000342999 D|021733308 092148915 +000000889 000337127 000368389 D|034548754 080494102 +000000889 000400118 000380922 D|039238470 048093744 +000000889 000414463 000399998 D|021650843 096416579 +000000889 000415850 000402932 D|059307173 084011845 +000000889 000448037 000411565 D|042254254 094469334 +000000889 000457446 000446777 D|075065057 013590623 +000000889 000459262 000458498 D|093247823 064610702 +000000889 000493985 000513211 D|012589268 064282361 +000000889 000497559 000518495 D|009049636 055134715 +000000889 000509986 000547385 D|057347566 079791126 +000000889 000517894 000550960 D|059287509 045844951 +000000889 000535369 000568657 D|075993043 025498639 +000000889 000535625 000593595 D|067289540 040267504 +000000889 000583108 000609311 D|088033758 032806773 +000000889 000588609 000611154 D|089290543 040338773 +000000889 000613964 000630929 D|056513370 056641747 +000000889 000673339 000660541 D|046075051 082499372 +000000889 000679712 000661222 D|017487024 092699626 +000000889 000695515 000704322 D|053722694 098168863 +000000889 000729147 000722532 D|093100083 005626690 +000000889 000748476 000726451 D|022302859 030973225 +000000889 000776174 000749471 D|087989983 042402352 +000000889 000811161 000814458 D|065980519 021677700 +000000889 000844294 000816833 D|064140839 070288269 +000000889 000849609 000828806 D|060149734 073241877 +000000889 000852375 000844818 D|021583254 002043208 +000000889 000865700 000856591 D|062981648 082135263 +000000889 000866371 000858036 D|027656284 073035793 +000000889 000897280 000926449 D|038830134 079296728 +000000889 000929762 000957844 D|057334622 039127395 +000000889 000952896 000990149 D|048559701 036430878 +000000889 000957042 000998653 D|008823951 094567224 +000000889 000989512 000998715 D|042074555 039216606 +000000890 000001596 000009786 D|007747522 019316232 +000000890 000008139 000041429 D|097924747 031054886 +000000890 000012332 000071710 D|056845095 061448358 +000000890 000056937 000084528 D|035741654 059200374 +000000890 000118143 000101704 D|009712975 066553036 +000000890 000149592 000102185 D|074094175 035274062 +000000890 000155857 000117166 D|027218142 095356716 +000000890 000180932 000124986 D|063919421 020139213 +000000890 000185767 000125380 D|072335200 027355620 +000000890 000192924 000171996 D|020739223 000379810 +000000890 000242943 000211897 D|019940248 006364888 +000000890 000246190 000229542 D|049575998 055921179 +000000890 000261962 000268189 D|071051304 009991403 +000000890 000274569 000313795 D|082681553 021322966 +000000890 000296058 000349449 D|036190849 098429468 +000000890 000298624 000363972 D|093865050 040381692 +000000890 000312438 000369505 D|011897497 083931061 +000000890 000318800 000396884 D|057359161 075663514 +000000890 000344414 000401722 D|051461705 018093207 +000000890 000387868 000424946 D|079901633 005192204 +000000890 000405983 000450460 D|072802050 043771267 +000000890 000407965 000456738 D|025283555 077076837 +000000890 000416242 000484850 D|084568821 041801012 +000000890 000422673 000511339 D|088634565 019818669 +000000890 000422744 000559926 D|095428867 002203785 +000000890 000433956 000581776 D|062554981 000690266 +000000890 000499503 000587075 D|005101682 062435728 +000000890 000505522 000612476 D|080051385 049771573 +000000890 000528189 000640383 D|052546359 062324694 +000000890 000584664 000646466 D|011046018 039110204 +000000890 000588032 000681113 D|016760508 016600665 +000000890 000592137 000690887 D|006678076 084166677 +000000890 000612422 000698600 D|052100649 067822156 +000000890 000649174 000720016 D|030535713 073934354 +000000890 000650498 000723211 D|082660816 021920607 +000000890 000659114 000729924 D|022694391 075387645 +000000890 000666843 000782957 D|055904225 021292639 +000000890 000722015 000784614 D|012273200 087482224 +000000890 000777200 000788749 D|036058386 023363800 +000000890 000812535 000800003 D|076414218 062966083 +000000890 000820719 000803480 D|026112943 028395352 +000000890 000845189 000832807 D|032152414 062691975 +000000890 000858882 000849376 D|078368989 035886129 +000000890 000862528 000867604 D|084424420 062311353 +000000890 000864122 000872720 D|023175919 079735263 +000000890 000913229 000884650 D|014582980 069287650 +000000890 000935692 000893337 D|047381403 051120580 +000000890 000949878 000923630 D|001550573 028945088 +000000890 000965233 000930431 D|041267858 085721571 +000000890 000988244 000950810 D|073514074 011886813 +000000891 000033506 000021749 D|079577852 086337235 +000000891 000095442 000027194 D|099973501 025035761 +000000891 000099006 000030551 D|013843327 001411563 +000000891 000099629 000039344 D|075164166 074922702 +000000891 000128314 000043762 D|075285068 078763063 +000000891 000131768 000057394 D|072818960 043073726 +000000891 000141515 000074776 D|078470516 094432653 +000000891 000145170 000088794 D|090724752 013314049 +000000891 000146619 000097327 D|085832763 073802354 +000000891 000168529 000105618 D|039132549 096562869 +000000891 000188231 000181914 D|053813194 094481689 +000000891 000201023 000208661 D|052426334 076007686 +000000891 000221386 000237846 D|086298600 050521379 +000000891 000256981 000242701 D|049856002 098630093 +000000891 000274450 000247916 D|050021071 050690573 +000000891 000278686 000260662 D|046986941 094870633 +000000891 000310935 000320616 D|065329717 074052118 +000000891 000322711 000334297 D|091802416 072360661 +000000891 000338496 000345576 D|065108344 068624094 +000000891 000346658 000363243 D|001855257 093167845 +000000891 000459322 000364512 D|068451958 040855630 +000000891 000477087 000385566 D|012309482 050468268 +000000891 000492100 000423698 D|009965998 063916762 +000000891 000500506 000450387 D|022833681 041302421 +000000891 000526296 000480683 D|010799283 031423112 +000000891 000533937 000498161 D|034154589 016318628 +000000891 000556240 000505234 D|062249783 070645569 +000000891 000578257 000569155 D|022636462 042478859 +000000891 000597296 000592319 D|087067500 059177625 +000000891 000636318 000672334 D|083222234 082483432 +000000891 000638325 000680693 D|007713073 040577042 +000000891 000655580 000691670 D|062958393 089051938 +000000891 000671049 000709910 D|004603093 035628709 +000000891 000733784 000721366 D|020333708 091787847 +000000891 000741112 000741305 D|072954073 004430533 +000000891 000772357 000759198 D|053797995 058033035 +000000891 000820238 000762624 D|026446637 097997037 +000000891 000829275 000783679 D|016626276 053842350 +000000891 000845374 000791125 D|023921161 032381646 +000000891 000858008 000811553 D|032436189 088861167 +000000891 000867178 000849426 D|034280172 064527525 +000000891 000891124 000883768 D|075127831 078023542 +000000891 000898125 000895489 D|058299429 014517666 +000000891 000950048 000912274 D|074436493 026238739 +000000891 000952380 000946501 D|007862527 005639232 +000000891 000962304 000957334 D|076175449 002508903 +000000891 000967250 000959547 D|058244662 095838403 +000000891 000982928 000969943 D|074422832 028755238 +000000891 000986320 000973197 D|055215262 073462320 +000000891 000997359 000981310 D|074060403 018261941 +000000892 000005375 000029668 D|039517965 013561386 +000000892 000015278 000063595 D|042058667 097686346 +000000892 000018208 000067574 D|047109929 073190495 +000000892 000040103 000071562 D|003163764 075763068 +000000892 000045323 000100567 D|042253924 036583647 +000000892 000054578 000121533 D|070513292 090334745 +000000892 000063454 000185442 D|065590497 069508188 +000000892 000115889 000251980 D|085857633 094251014 +000000892 000130936 000254379 D|017875545 007068931 +000000892 000140244 000291970 D|086051846 070718010 +000000892 000142406 000293690 D|049691473 032794921 +000000892 000147678 000332698 D|003015569 032735034 +000000892 000228139 000351925 D|092331049 021279891 +000000892 000264415 000390813 D|030065653 014910990 +000000892 000268748 000402179 D|067657291 040923104 +000000892 000272521 000402819 D|016544259 065793603 +000000892 000276291 000403384 D|042961395 048273339 +000000892 000278891 000418303 D|008807234 097984652 +000000892 000280547 000486265 D|094613088 060370894 +000000892 000334529 000492037 D|025580961 069048517 +000000892 000341605 000509606 D|087181334 047253714 +000000892 000372868 000510391 D|053762135 077705504 +000000892 000411572 000515470 D|064114084 039232701 +000000892 000423734 000530193 D|005042939 036334058 +000000892 000470328 000579307 D|054824875 074846180 +000000892 000478737 000587977 D|087763088 079841512 +000000892 000480332 000588856 D|036548389 030324799 +000000892 000493409 000592436 D|045864027 025322719 +000000892 000566255 000630885 D|004592881 003634741 +000000892 000571464 000671142 D|003670774 031753104 +000000892 000589359 000672849 D|062310945 065746074 +000000892 000615832 000673660 D|049476784 035449291 +000000892 000645122 000702435 D|070595110 083304185 +000000892 000743316 000738837 D|064209270 014810750 +000000892 000744570 000747273 D|071031454 009144504 +000000892 000769199 000751636 D|076629131 096096368 +000000892 000779550 000756931 D|052470276 066869348 +000000892 000782978 000764396 D|082776413 085098918 +000000892 000791386 000764916 D|095248058 060203352 +000000892 000793392 000766769 D|037240851 049487397 +000000892 000800453 000777544 D|089286826 043793349 +000000892 000810857 000782947 D|098911411 011443527 +000000892 000813156 000799218 D|068698709 077716075 +000000892 000836794 000825798 D|072793012 002708580 +000000892 000843469 000833370 D|008468289 006013733 +000000892 000951417 000877935 D|060035827 087921422 +000000892 000956257 000893899 D|010517717 015378453 +000000892 000982075 000943635 D|066185803 041041801 +000000892 000983403 000984483 D|027873510 098463407 +000000892 000988673 000992107 D|046810613 000449084 +000000893 000003443 000027365 D|094319550 035162312 +000000893 000011725 000034286 D|079929441 032067871 +000000893 000044695 000041485 D|062003069 092949563 +000000893 000058118 000042639 D|058664005 008710186 +000000893 000094511 000042719 D|084597750 041915429 +000000893 000168066 000070609 D|090256265 058006640 +000000893 000189872 000095044 D|046794379 018161566 +000000893 000191559 000141442 D|072998505 045141697 +000000893 000195868 000153839 D|040627968 062258516 +000000893 000217224 000194746 D|078067350 059848215 +000000893 000228454 000211465 D|037712565 013923246 +000000893 000229720 000213962 D|004562269 087045257 +000000893 000278146 000230147 D|043322466 055900542 +000000893 000288227 000265379 D|064316773 086055321 +000000893 000299973 000271737 D|064656666 033742817 +000000893 000306849 000292915 D|054087552 034402537 +000000893 000313294 000323325 D|066895614 026178545 +000000893 000328787 000334076 D|005379784 089350728 +000000893 000361887 000338173 D|065216399 094207970 +000000893 000372394 000362938 D|090977630 069886912 +000000893 000401269 000378211 D|012262982 040947450 +000000893 000401486 000379203 D|027997193 040068547 +000000893 000402656 000386877 D|069293338 009046826 +000000893 000442261 000394391 D|015053806 042186380 +000000893 000473973 000417161 D|022167940 091405678 +000000893 000544532 000428948 D|081785386 056533397 +000000893 000548141 000432467 D|085286259 053749836 +000000893 000584127 000451998 D|031055221 083826956 +000000893 000587521 000512259 D|070310574 059173319 +000000893 000592598 000549829 D|056835545 084935375 +000000893 000610661 000556826 D|050337244 026086731 +000000893 000662074 000568498 D|009448478 037409855 +000000893 000663885 000589236 D|037743077 015760104 +000000893 000688927 000594245 D|061104361 039513505 +000000893 000690556 000605126 D|079061113 091402326 +000000893 000723848 000605181 D|045529744 083042985 +000000893 000726659 000614708 D|048556334 089112570 +000000893 000759838 000626588 D|060417974 076014916 +000000893 000775948 000637302 D|078945265 019916069 +000000893 000783503 000658434 D|015115490 018992080 +000000893 000817608 000689770 D|051067715 090342409 +000000893 000829644 000723941 D|019843873 042654036 +000000893 000830250 000727178 D|069514366 054442049 +000000893 000857619 000731078 D|037292783 039339491 +000000893 000860589 000774230 D|094367145 091003835 +000000893 000879791 000777628 D|051220626 029940510 +000000893 000881657 000798425 D|094372872 018810969 +000000893 000893063 000824307 D|083856665 044702481 +000000893 000938362 000872196 D|020489948 037863568 +000000893 000995334 000883556 D|009725642 071686152 +000000894 000020193 000020636 D|086326444 002035902 +000000894 000028401 000024797 D|006034170 012418388 +000000894 000031608 000042147 D|064962605 027320584 +000000894 000091644 000132799 D|029592077 073156081 +000000894 000108938 000136498 D|092614561 050600134 +000000894 000110365 000136666 D|012867367 005251566 +000000894 000146592 000145900 D|071423911 027392243 +000000894 000154985 000164882 D|048211634 077206413 +000000894 000170097 000169731 D|099342224 044166011 +000000894 000239678 000184593 D|063287429 095074062 +000000894 000251115 000238349 D|011858539 035487486 +000000894 000301117 000276236 D|086734342 015617735 +000000894 000381229 000308522 D|091959437 029233098 +000000894 000392588 000318311 D|071317767 032890145 +000000894 000414135 000356094 D|036730513 058142528 +000000894 000425300 000406044 D|070608854 053952619 +000000894 000460755 000417373 D|004857882 085355707 +000000894 000477915 000428014 D|094651623 031085654 +000000894 000479809 000446445 D|040736318 062326642 +000000894 000499966 000449794 D|053235026 064994457 +000000894 000503668 000453077 D|036867013 086941595 +000000894 000514439 000490133 D|072945946 035845677 +000000894 000515640 000495299 D|055764091 023047478 +000000894 000518941 000521094 D|073228007 042183965 +000000894 000559204 000545086 D|099243330 077346069 +000000894 000562929 000550415 D|012614283 020845286 +000000894 000565805 000556857 D|059051662 087105154 +000000894 000588130 000564975 D|035709995 007839786 +000000894 000618279 000565166 D|064993000 052052844 +000000894 000631504 000572992 D|038333286 012724119 +000000894 000633728 000575194 D|014342489 017066572 +000000894 000645555 000577778 D|005868247 026271198 +000000894 000675063 000585259 D|026438414 050721895 +000000894 000689897 000629604 D|043303576 058530372 +000000894 000706374 000639661 D|015325707 089690200 +000000894 000732474 000675143 D|004056868 035712302 +000000894 000735918 000691859 D|003693809 044622664 +000000894 000765427 000693595 D|056435354 065000968 +000000894 000870889 000711581 D|026355418 019941364 +000000894 000881341 000749813 D|012030533 070219941 +000000894 000905627 000762329 D|010413691 061023426 +000000894 000915551 000820462 D|048341659 090516901 +000000894 000929157 000824470 D|000693940 068583173 +000000894 000932217 000837000 D|017502460 071405518 +000000894 000943118 000875720 D|074204338 035379089 +000000894 000946127 000887551 D|031134687 049114506 +000000894 000947313 000949594 D|049458770 073497467 +000000894 000982759 000957842 D|051814802 094964662 +000000894 000986920 000987264 D|081712009 057933594 +000000894 000993611 000993447 D|001411685 059085869 +000000895 000016141 000005166 D|099854364 081365489 +000000895 000019383 000012800 D|045627626 043331306 +000000895 000079623 000024174 D|015377446 090314693 +000000895 000095703 000053911 D|092269528 029763714 +000000895 000097300 000061397 D|034389802 047055960 +000000895 000108532 000119078 D|020992493 050009348 +000000895 000117032 000130888 D|070890419 057874561 +000000895 000130766 000139456 D|008825324 074715221 +000000895 000136807 000183566 D|008957155 046759275 +000000895 000162023 000202117 D|086716223 055123340 +000000895 000169959 000211106 D|031749380 007916288 +000000895 000171761 000240954 D|093244543 089137018 +000000895 000184882 000262874 D|087648818 013483223 +000000895 000184934 000284494 D|001273381 032603925 +000000895 000193678 000309897 D|005075245 038238932 +000000895 000254201 000331120 D|089245479 011711106 +000000895 000257239 000348906 D|052395024 058581363 +000000895 000270160 000354998 D|091577429 098803984 +000000895 000290585 000363587 D|073066400 019296334 +000000895 000298249 000373819 D|066841428 007260322 +000000895 000301506 000379628 D|029339328 072558085 +000000895 000337300 000389204 D|000097253 080254371 +000000895 000352766 000397319 D|019633626 059789182 +000000895 000376187 000418907 D|020417161 065170949 +000000895 000387452 000431973 D|006267938 080777397 +000000895 000404333 000433400 D|073253009 019577886 +000000895 000482615 000454572 D|047617324 054609086 +000000895 000528257 000488148 D|015517095 046667889 +000000895 000537709 000494085 D|028739416 082459460 +000000895 000557914 000507085 D|091795357 027681098 +000000895 000580483 000518056 D|092949190 012432183 +000000895 000585606 000540809 D|058589259 086741823 +000000895 000589556 000546770 D|094115132 058460257 +000000895 000619344 000549491 D|075956050 035471205 +000000895 000654907 000563044 D|007115050 090978135 +000000895 000682444 000588146 D|095637105 025357227 +000000895 000740767 000593378 D|013158337 018493007 +000000895 000742803 000606116 D|076038172 098235424 +000000895 000750523 000642313 D|072453937 086362654 +000000895 000753480 000655100 D|075863348 095636822 +000000895 000758887 000656028 D|083071243 041275692 +000000895 000800057 000737616 D|066341574 010315629 +000000895 000825345 000767451 D|003838889 038915731 +000000895 000880420 000776057 D|094611753 011108561 +000000895 000898173 000900906 D|007658325 042181373 +000000895 000905399 000918387 D|024507742 064695650 +000000895 000928932 000943780 D|038897273 041630659 +000000895 000942900 000953327 D|045019727 044778860 +000000895 000947170 000981877 D|054938103 074696403 +000000895 000948504 000998252 D|050693746 091899605 +000000896 000000347 000008678 D|084409029 071661685 +000000896 000012789 000030074 D|031092281 053497781 +000000896 000022252 000031118 D|003845017 082198322 +000000896 000022650 000084736 D|072598531 097030823 +000000896 000028767 000095380 D|039697722 078931610 +000000896 000064257 000095480 D|077065003 063610799 +000000896 000103246 000106050 D|068960317 097293954 +000000896 000105244 000176130 D|011444599 007603607 +000000896 000105728 000206700 D|002633815 031853209 +000000896 000106392 000216996 D|008488317 003131960 +000000896 000113545 000236815 D|019179329 071103575 +000000896 000187067 000240615 D|038532927 058414088 +000000896 000194279 000258582 D|032715036 093244252 +000000896 000237899 000296228 D|071397769 063691918 +000000896 000241595 000299552 D|056328881 064232332 +000000896 000262952 000310769 D|041596549 013834241 +000000896 000273646 000341973 D|040910693 095451849 +000000896 000343489 000361271 D|048437980 072354993 +000000896 000349331 000375906 D|083045239 073558069 +000000896 000363421 000386139 D|048578279 087689198 +000000896 000364976 000423910 D|082654176 054544017 +000000896 000370147 000460981 D|081695820 017227033 +000000896 000371146 000462290 D|093121471 040046203 +000000896 000391631 000498667 D|055100132 024641164 +000000896 000404103 000519535 D|045152806 024778430 +000000896 000422135 000533529 D|090173211 042314418 +000000896 000433769 000537989 D|018959261 010731331 +000000896 000446335 000548075 D|034685516 018629470 +000000896 000480242 000575083 D|039507391 078209307 +000000896 000493941 000576011 D|029924334 008916408 +000000896 000577725 000581959 D|025231299 034260023 +000000896 000593855 000594552 D|039981854 055365861 +000000896 000654364 000595267 D|095526779 032510698 +000000896 000693984 000602136 D|037263558 042345283 +000000896 000702845 000615103 D|018214929 074449333 +000000896 000717012 000652989 D|023300927 003509578 +000000896 000758207 000658623 D|056896419 006933865 +000000896 000765556 000674600 D|062384347 072006512 +000000896 000782833 000704143 D|034025421 021000527 +000000896 000787444 000715580 D|001642872 061309582 +000000896 000802448 000798123 D|058105169 015645218 +000000896 000807239 000815059 D|075894500 037750874 +000000896 000850147 000882097 D|027428914 004630635 +000000896 000856000 000887288 D|063978055 041003839 +000000896 000884124 000907719 D|001031473 042655499 +000000896 000894184 000923847 D|010800914 074679071 +000000896 000932934 000925771 D|032897576 052035477 +000000896 000934324 000951267 D|055268544 095307471 +000000896 000986518 000965175 D|072150483 024288291 +000000896 000989936 000978634 D|027692589 049457185 +000000897 000007157 000027055 D|063838986 073227442 +000000897 000015367 000052144 D|058428816 026696487 +000000897 000050898 000090836 D|032788938 002579479 +000000897 000090624 000125655 D|088826925 022566136 +000000897 000098048 000127936 D|092012116 078715165 +000000897 000104315 000163328 D|003484742 060803326 +000000897 000113868 000167545 D|074100735 043630591 +000000897 000113978 000187889 D|079980019 039709236 +000000897 000165356 000196279 D|053748568 051446107 +000000897 000174213 000208526 D|086366114 072399519 +000000897 000204348 000239536 D|005816463 079695551 +000000897 000236715 000247094 D|054072583 075389488 +000000897 000267852 000275139 D|046029445 080232001 +000000897 000300577 000277645 D|034703372 010077393 +000000897 000301701 000305419 D|080575420 029526352 +000000897 000326150 000335059 D|091467543 095376548 +000000897 000346437 000349842 D|045740762 053071473 +000000897 000352601 000353763 D|060203595 077488528 +000000897 000361091 000379816 D|022688814 072619157 +000000897 000374843 000419111 D|051957594 076307220 +000000897 000396393 000426726 D|022287989 097015555 +000000897 000418343 000438976 D|089892156 020020366 +000000897 000436085 000450060 D|062246761 066586898 +000000897 000444069 000453272 D|050339024 081568742 +000000897 000449094 000456887 D|056323348 099752481 +000000897 000452612 000480654 D|077627881 042055730 +000000897 000490613 000495596 D|055560013 049980669 +000000897 000522009 000508737 D|001707976 051567860 +000000897 000575313 000510473 D|015582151 087849615 +000000897 000575424 000539867 D|055314857 037486069 +000000897 000607995 000546726 D|094902832 056943704 +000000897 000618629 000555425 D|021153756 030169619 +000000897 000644801 000583676 D|012657456 017484434 +000000897 000657739 000614872 D|072837949 035773480 +000000897 000718726 000629724 D|097446580 004772291 +000000897 000748185 000643034 D|054775202 045946964 +000000897 000789375 000653068 D|050256761 099173474 +000000897 000798967 000673431 D|006227880 094284592 +000000897 000829953 000686840 D|030487061 051304751 +000000897 000832234 000699200 D|078707782 083780566 +000000897 000839209 000754263 D|091076704 058368768 +000000897 000842514 000832758 D|098405720 053726690 +000000897 000849013 000877737 D|099736594 024040246 +000000897 000869999 000890928 D|012020948 004036389 +000000897 000876819 000934759 D|037220970 009605028 +000000897 000932817 000934844 D|084801634 095492570 +000000897 000953808 000936562 D|075915482 074430795 +000000897 000961249 000963542 D|073790830 023317236 +000000897 000971657 000966274 D|030880414 046591035 +000000897 000995456 000987367 D|056753669 044387232 +000000898 000003177 000038595 D|009872662 083036904 +000000898 000004441 000046380 D|096933223 015202238 +000000898 000006631 000078034 D|065496881 072050555 +000000898 000013043 000081144 D|073129671 076695447 +000000898 000018993 000095277 D|014909889 078211442 +000000898 000034128 000109414 D|059821559 003153946 +000000898 000080062 000111993 D|029907992 010171757 +000000898 000082842 000117846 D|025226675 090789020 +000000898 000140537 000122967 D|057076271 081749373 +000000898 000142552 000129954 D|033111050 053651916 +000000898 000223910 000151460 D|034389283 045375178 +000000898 000229303 000174534 D|063254195 092428429 +000000898 000240420 000176588 D|068098104 078081205 +000000898 000243836 000207372 D|023607117 052296072 +000000898 000320221 000218271 D|049075298 061313544 +000000898 000325566 000224248 D|081976960 057147951 +000000898 000390246 000235801 D|048084412 027413323 +000000898 000396196 000339106 D|076948111 081808678 +000000898 000417380 000350695 D|026919329 013094007 +000000898 000437695 000364047 D|074663547 040331142 +000000898 000442076 000364246 D|069210031 088819255 +000000898 000448275 000381048 D|076894512 029540497 +000000898 000461186 000398100 D|096707905 011493191 +000000898 000473951 000425415 D|010931910 061904688 +000000898 000482328 000428350 D|032600919 095439894 +000000898 000503261 000451279 D|078702106 071328233 +000000898 000535509 000456779 D|044483797 019776762 +000000898 000553856 000460512 D|026081618 070789335 +000000898 000566468 000463834 D|024325253 033942092 +000000898 000566977 000496454 D|009339538 058049729 +000000898 000577724 000506845 D|083907779 072913150 +000000898 000584575 000507552 D|024376101 067462715 +000000898 000611422 000509856 D|024556051 006102468 +000000898 000621975 000519745 D|073669509 042584842 +000000898 000640748 000522151 D|067742043 042827183 +000000898 000646754 000624129 D|002350560 010659284 +000000898 000650088 000639487 D|063662540 023935459 +000000898 000666683 000666634 D|068472793 056975312 +000000898 000675994 000705093 D|076430347 074283105 +000000898 000683345 000715951 D|066900353 027948935 +000000898 000745562 000730866 D|094825179 004032620 +000000898 000862799 000761467 D|060472982 059677480 +000000898 000869055 000807201 D|092200683 022177617 +000000898 000893333 000829614 D|080655638 079973000 +000000898 000919153 000841162 D|069822005 029751724 +000000898 000928885 000854054 D|008307081 065465431 +000000898 000954797 000911304 D|037545675 069000775 +000000898 000965121 000924583 D|005701612 084408409 +000000898 000985283 000925519 D|066924859 060862135 +000000898 000986328 000968318 D|096083003 051113756 +000000899 000001960 000018713 D|094302012 096673620 +000000899 000006249 000030527 D|082787101 094937953 +000000899 000011683 000030564 D|042645946 039201853 +000000899 000019051 000046093 D|045206035 016161889 +000000899 000028331 000060993 D|071268495 074532428 +000000899 000066352 000064244 D|001113658 041029296 +000000899 000069885 000086283 D|010858342 018208946 +000000899 000072394 000090141 D|079460016 072190678 +000000899 000111598 000099220 D|070599400 047418579 +000000899 000117399 000100578 D|026706664 055141162 +000000899 000125910 000140064 D|079596506 084384173 +000000899 000148214 000152615 D|094044792 032294512 +000000899 000148607 000205835 D|006288569 013135723 +000000899 000150624 000232557 D|093248304 027949657 +000000899 000152350 000237041 D|009600676 034381269 +000000899 000166126 000249219 D|058997365 069077944 +000000899 000276015 000274234 D|026928858 030634132 +000000899 000311529 000300940 D|061625560 090769690 +000000899 000317823 000303011 D|074459239 025163140 +000000899 000352923 000310606 D|063341939 023145900 +000000899 000390392 000313120 D|097603783 019712914 +000000899 000391207 000364066 D|053514650 048812991 +000000899 000407618 000372215 D|076285844 046845430 +000000899 000422912 000384709 D|074713253 056861367 +000000899 000480860 000391165 D|035231143 094751107 +000000899 000516326 000407951 D|040815842 046140799 +000000899 000549611 000414737 D|050434640 033775997 +000000899 000567671 000416555 D|081542679 049306298 +000000899 000595493 000433677 D|065256809 019407208 +000000899 000614988 000536818 D|048860655 024823115 +000000899 000625542 000539627 D|055839653 012829264 +000000899 000635729 000556094 D|055444981 001435053 +000000899 000674858 000578484 D|098773209 045981707 +000000899 000679205 000615535 D|086777131 074196258 +000000899 000682314 000666627 D|011516907 025661410 +000000899 000730565 000702281 D|075779061 016758367 +000000899 000745112 000715456 D|029619338 041596144 +000000899 000756429 000725528 D|045811671 019518723 +000000899 000759402 000769898 D|000308017 012614222 +000000899 000839379 000862785 D|077425092 046102661 +000000899 000841540 000884225 D|003130181 028110869 +000000899 000853594 000893048 D|087357884 030413990 +000000899 000885085 000896250 D|003667414 095822130 +000000899 000892077 000910396 D|050790609 013864550 +000000899 000909314 000921028 D|088990488 095888886 +000000899 000910528 000928276 D|044262334 014167356 +000000899 000930811 000936674 D|048396664 074430816 +000000899 000944172 000966145 D|057394738 065011109 +000000899 000946096 000986466 D|093341949 089403907 +000000899 000974636 000989308 D|012410759 027117414 +000000900 000002197 000001464 D|024189396 013673239 +000000900 000023590 000006715 D|004302521 087779418 +000000900 000034959 000028200 D|086476640 071536251 +000000900 000037276 000053670 D|021382595 064334337 +000000900 000044120 000091965 D|077173277 013465074 +000000900 000049411 000127131 D|019069038 037894816 +000000900 000050726 000139111 D|001333381 037091039 +000000900 000061469 000151886 D|064637053 057959960 +000000900 000103192 000155969 D|024531815 046155709 +000000900 000108780 000179686 D|056203998 032883968 +000000900 000128881 000196133 D|083396961 049736979 +000000900 000151768 000199910 D|007112138 058538671 +000000900 000190479 000224630 D|068852194 077312501 +000000900 000207775 000244681 D|080777511 077276270 +000000900 000232626 000263016 D|043451646 013263938 +000000900 000236504 000266599 D|087248384 029347775 +000000900 000265800 000271048 D|071520377 014436032 +000000900 000294460 000275503 D|028885502 057226311 +000000900 000297061 000304714 D|076859882 063719306 +000000900 000310138 000316802 D|065083179 089680723 +000000900 000317428 000325145 D|031335373 084954537 +000000900 000387107 000351490 D|090167265 035855725 +000000900 000408114 000351531 D|036081082 009306719 +000000900 000424892 000375245 D|063799250 063999413 +000000900 000435238 000415395 D|034449849 057541542 +000000900 000514833 000432457 D|066615299 001176489 +000000900 000517311 000434540 D|054922287 087729634 +000000900 000524724 000481080 D|018836468 050077387 +000000900 000524742 000496014 D|036497335 059297352 +000000900 000543182 000579019 D|056293473 083403291 +000000900 000554150 000599216 D|032220517 076852054 +000000900 000559390 000623791 D|087535376 018206207 +000000900 000574912 000625459 D|051346320 066976302 +000000900 000577630 000655448 D|067535130 094918881 +000000900 000597357 000659622 D|042041646 051329752 +000000900 000641647 000674802 D|024157062 082816525 +000000900 000651943 000786546 D|032425463 079696447 +000000900 000661217 000792898 D|092624314 043825082 +000000900 000670368 000795951 D|065049879 087929871 +000000900 000698055 000822884 D|000096410 092482048 +000000900 000701430 000849917 D|017011730 019309406 +000000900 000704354 000880651 D|007426971 054325278 +000000900 000705164 000889132 D|063636537 074282082 +000000900 000761939 000911816 D|029945832 071104542 +000000900 000812631 000913523 D|054201199 096742222 +000000900 000834576 000929432 D|038981481 076827400 +000000900 000922471 000935015 D|002310411 065717721 +000000900 000929397 000963874 D|062993736 076518683 +000000900 000938111 000974123 D|046431078 093098120 +000000900 000977716 000986829 D|023143652 042976345 +000000901 000022801 000036220 D|043517119 024251314 +000000901 000030049 000052509 D|084073050 015986401 +000000901 000030846 000072111 D|006089656 082787859 +000000901 000033739 000090263 D|058779410 012911615 +000000901 000059109 000117116 D|019920624 019202332 +000000901 000140410 000126760 D|074844401 023144101 +000000901 000157804 000137463 D|018056666 032106492 +000000901 000165124 000209525 D|027770195 052750306 +000000901 000212206 000209618 D|076043741 036763327 +000000901 000232594 000242810 D|019144507 093436948 +000000901 000249036 000253124 D|090567907 076038208 +000000901 000274674 000261478 D|029884498 053520411 +000000901 000316262 000262656 D|088993177 043778434 +000000901 000328939 000267307 D|088444299 067456196 +000000901 000338694 000289715 D|085298428 091944803 +000000901 000359048 000295732 D|053700492 033641845 +000000901 000359657 000312739 D|020948781 038714450 +000000901 000371002 000316699 D|032449700 080017986 +000000901 000384366 000323328 D|008168342 036468734 +000000901 000423845 000419459 D|032695883 043979787 +000000901 000446523 000441300 D|063640147 065860200 +000000901 000463014 000453200 D|013296891 029625953 +000000901 000467561 000473418 D|072123519 064007560 +000000901 000486714 000475468 D|075807786 043512729 +000000901 000492398 000475789 D|004355956 085151976 +000000901 000497105 000538571 D|080055099 005629199 +000000901 000508260 000575964 D|049237047 033546972 +000000901 000526973 000579934 D|020456785 048010699 +000000901 000593808 000615147 D|012249766 046591552 +000000901 000612689 000636595 D|039006317 092328990 +000000901 000615112 000637210 D|059169550 097319787 +000000901 000627291 000662234 D|027561355 074552879 +000000901 000633748 000668757 D|066177404 042370003 +000000901 000679453 000690878 D|011102355 015804077 +000000901 000713215 000739461 D|065397812 087718401 +000000901 000731336 000756576 D|060390758 082460359 +000000901 000743669 000768062 D|037723294 087172867 +000000901 000749229 000782475 D|059479487 001769279 +000000901 000749376 000823168 D|022877109 056709929 +000000901 000755341 000875117 D|041147538 009559493 +000000901 000778202 000884522 D|070326924 034349809 +000000901 000786705 000889529 D|099374435 039301890 +000000901 000787643 000898844 D|045646071 056542756 +000000901 000818480 000904855 D|076246789 045143138 +000000901 000844883 000948477 D|088572288 052010459 +000000901 000854494 000960364 D|025533010 005671779 +000000901 000888010 000963609 D|062518727 016988073 +000000901 000988413 000965245 D|096848952 089480305 +000000901 000991634 000980794 D|061866725 058005959 +000000901 000996103 000986524 D|065506324 099197568 +000000902 000029170 000010303 D|020151587 002645823 +000000902 000033444 000011414 D|046432323 001735602 +000000902 000075433 000035652 D|091544492 010857065 +000000902 000083644 000040401 D|019517519 074392151 +000000902 000086244 000056366 D|023610892 063904457 +000000902 000096654 000057998 D|092739131 047297875 +000000902 000109137 000069715 D|060523105 048250982 +000000902 000109952 000070741 D|040459581 022328161 +000000902 000146161 000085656 D|078664884 090237601 +000000902 000146398 000128311 D|028479592 080290672 +000000902 000146967 000129388 D|025350880 096354348 +000000902 000208960 000172565 D|055037695 038748707 +000000902 000220148 000235086 D|089952553 098999462 +000000902 000228181 000244338 D|019178004 067945536 +000000902 000231983 000298840 D|059424958 069200589 +000000902 000238932 000301537 D|013688788 012554158 +000000902 000240730 000314644 D|041380048 029485457 +000000902 000244691 000345023 D|005145101 062238413 +000000902 000261588 000368529 D|044248148 059924555 +000000902 000264681 000381790 D|075967759 090240586 +000000902 000269463 000414202 D|059006405 023623662 +000000902 000280841 000426611 D|073173644 088684534 +000000902 000318061 000456247 D|015595696 085433870 +000000902 000319991 000484847 D|096172806 026712587 +000000902 000330927 000486777 D|038985129 092952258 +000000902 000363546 000496900 D|075358010 084777305 +000000902 000415393 000513674 D|023487549 016257769 +000000902 000427471 000576891 D|033479870 012483633 +000000902 000435215 000629803 D|073379259 091497738 +000000902 000436186 000630988 D|026512788 037762358 +000000902 000460498 000632742 D|020693243 028680938 +000000902 000476744 000666301 D|091922827 011515302 +000000902 000484718 000669281 D|065042947 012815288 +000000902 000496665 000684199 D|047613238 072532188 +000000902 000502565 000706484 D|071116205 057386485 +000000902 000545740 000709402 D|095658673 008004789 +000000902 000582807 000725873 D|075398356 028714371 +000000902 000600895 000730408 D|001331859 099713953 +000000902 000698782 000734644 D|023436338 052329886 +000000902 000710432 000736757 D|065995534 093715017 +000000902 000793251 000759605 D|013372672 004205591 +000000902 000837225 000793979 D|017615845 070869312 +000000902 000843642 000817636 D|010300955 014710421 +000000902 000845831 000864501 D|010237785 020178605 +000000902 000866391 000880685 D|022452052 022168207 +000000902 000913776 000886826 D|003296743 073724136 +000000902 000934638 000894385 D|056801453 085590781 +000000902 000946515 000919538 D|000207663 029729273 +000000902 000947171 000931033 D|003557961 054741319 +000000902 000962380 000978730 D|039536742 059533654 +000000903 000031689 000022658 D|094044125 090200635 +000000903 000033828 000031293 D|031814351 084145751 +000000903 000038700 000082259 D|017689556 077659198 +000000903 000047395 000108197 D|000067470 089748491 +000000903 000057298 000109613 D|025108856 051690811 +000000903 000073810 000123260 D|000870623 093165657 +000000903 000111542 000123907 D|027985686 002152830 +000000903 000134891 000125201 D|038926591 084731719 +000000903 000196812 000146547 D|000362362 079601675 +000000903 000199506 000148379 D|067137856 016329387 +000000903 000206389 000149962 D|040329474 040831946 +000000903 000209068 000157867 D|094557318 044605150 +000000903 000241979 000158067 D|054650879 076351484 +000000903 000243636 000168726 D|058996042 047680602 +000000903 000263513 000184083 D|080948929 090252927 +000000903 000285910 000200436 D|024627433 099633228 +000000903 000375935 000212217 D|039129387 023885572 +000000903 000385210 000271883 D|082540620 014025405 +000000903 000431793 000285369 D|097250806 019699613 +000000903 000454032 000288075 D|018913620 074979528 +000000903 000456048 000294044 D|025869013 066870250 +000000903 000465718 000306958 D|036679420 074226238 +000000903 000468756 000325399 D|007044431 087028236 +000000903 000486152 000335062 D|016250348 003142657 +000000903 000497115 000337420 D|017991964 063014419 +000000903 000518257 000402417 D|076989811 042633576 +000000903 000522017 000488980 D|095082659 068126753 +000000903 000551211 000509459 D|092734775 002274359 +000000903 000571409 000553168 D|066349617 022341113 +000000903 000572828 000556042 D|030079763 054220165 +000000903 000600571 000591521 D|095798178 010708910 +000000903 000611508 000608760 D|074505308 025872842 +000000903 000621820 000615837 D|061327436 088297657 +000000903 000638432 000630676 D|024026784 058212287 +000000903 000654914 000651985 D|014071186 023691123 +000000903 000684810 000671325 D|084603931 096349763 +000000903 000729661 000702562 D|007993415 021575008 +000000903 000733661 000732400 D|003798354 062295401 +000000903 000765792 000740266 D|086588905 075741607 +000000903 000793250 000744606 D|038641101 099080868 +000000903 000793876 000748955 D|076640666 075889816 +000000903 000816093 000756557 D|012124635 072169670 +000000903 000816396 000766597 D|089188686 058414592 +000000903 000834556 000861963 D|039065430 021989734 +000000903 000845189 000880871 D|016864114 033085343 +000000903 000899120 000906303 D|069244284 006249952 +000000903 000904003 000935918 D|081114053 077586358 +000000903 000930003 000939162 D|069938579 026304090 +000000903 000945098 000947822 D|062409312 005770643 +000000903 000955250 000963666 D|005794940 060928677 +000000904 000012921 000047641 D|029513258 007382792 +000000904 000020835 000061536 D|093455637 093076192 +000000904 000050194 000062749 D|015616081 007339170 +000000904 000051709 000065129 D|068191958 041865364 +000000904 000074057 000108155 D|068317016 038124853 +000000904 000133214 000108471 D|045288176 007755167 +000000904 000139587 000118744 D|042648558 027929695 +000000904 000165320 000126770 D|007212006 033509397 +000000904 000172216 000134053 D|002939117 037637643 +000000904 000189784 000142841 D|077336132 088747870 +000000904 000210755 000171555 D|064520980 012977033 +000000904 000230931 000232007 D|052923572 020260741 +000000904 000240205 000251505 D|042978588 099451510 +000000904 000271216 000274580 D|092027903 016883829 +000000904 000286364 000300281 D|010610379 090492025 +000000904 000315952 000308676 D|015110816 080247417 +000000904 000353760 000330189 D|012499157 043121679 +000000904 000356604 000378493 D|057491700 073559418 +000000904 000441830 000386765 D|073401130 061551899 +000000904 000446711 000397854 D|072825343 042664032 +000000904 000449758 000410971 D|063658429 078850749 +000000904 000480963 000412754 D|046839309 032682943 +000000904 000499329 000413747 D|018776629 001243959 +000000904 000519861 000423288 D|099451419 036855757 +000000904 000549535 000469502 D|075034261 002304837 +000000904 000578068 000479800 D|080920573 055850153 +000000904 000607177 000500745 D|037343538 025027046 +000000904 000656825 000509884 D|009893260 035287947 +000000904 000669421 000539459 D|027312971 028557331 +000000904 000682316 000566663 D|054816729 045951783 +000000904 000696144 000578510 D|057609835 091339256 +000000904 000715914 000600210 D|095986172 031163939 +000000904 000728484 000612354 D|030856903 031149785 +000000904 000730156 000630811 D|021624964 002956131 +000000904 000742530 000647824 D|080318365 097678194 +000000904 000742770 000653978 D|080224537 076055809 +000000904 000783716 000671712 D|024069584 068577090 +000000904 000798441 000683506 D|018101589 052148339 +000000904 000798834 000754052 D|043444845 035565053 +000000904 000807997 000807538 D|059527162 035181265 +000000904 000841822 000807548 D|029688132 064115165 +000000904 000845414 000837569 D|017462573 018810793 +000000904 000845462 000843923 D|084772921 000770924 +000000904 000866107 000846699 D|095727093 009737063 +000000904 000875085 000852829 D|034408230 095923240 +000000904 000901317 000929867 D|086338226 026513814 +000000904 000913454 000948536 D|064572127 001544970 +000000904 000955208 000970376 D|036959721 075310104 +000000904 000987210 000971376 D|005127157 027156722 +000000904 000996153 000993053 D|059137789 099765382 +000000905 000017476 000004016 D|020474781 066418421 +000000905 000080833 000044007 D|018784287 055728385 +000000905 000082205 000055069 D|024094566 089731036 +000000905 000109794 000065080 D|014663777 039720106 +000000905 000170579 000097838 D|015277884 017412771 +000000905 000173750 000124675 D|029733951 065998995 +000000905 000174274 000138539 D|022571934 077758792 +000000905 000199107 000155418 D|003249198 044016502 +000000905 000209407 000201917 D|077186429 057218508 +000000905 000262584 000230703 D|047982336 095575063 +000000905 000264032 000232073 D|039411318 070729060 +000000905 000289300 000241868 D|074504033 074000308 +000000905 000292289 000253068 D|081276393 073001368 +000000905 000307193 000261168 D|019394944 000117285 +000000905 000320512 000261818 D|037651769 046852514 +000000905 000330011 000336314 D|038626954 010238469 +000000905 000347480 000345772 D|056590398 002291925 +000000905 000370255 000416956 D|033824964 095215645 +000000905 000374043 000425011 D|078094332 029823348 +000000905 000447239 000442371 D|058050077 068063415 +000000905 000453758 000474400 D|006421099 019991956 +000000905 000458604 000507772 D|080948890 016985443 +000000905 000479630 000517119 D|064609881 058528301 +000000905 000493506 000577252 D|088350537 093390996 +000000905 000504011 000581963 D|001707368 092498880 +000000905 000506187 000597393 D|010844410 085618812 +000000905 000531924 000603541 D|081805380 010698193 +000000905 000535684 000612429 D|094165899 068162373 +000000905 000541302 000659650 D|083546306 053717063 +000000905 000611067 000667381 D|034899953 007640641 +000000905 000630554 000685006 D|056435323 048595591 +000000905 000662516 000685588 D|078925884 048591572 +000000905 000666244 000687383 D|076551795 078159203 +000000905 000675781 000727099 D|053542896 091599309 +000000905 000694994 000730334 D|052899855 009571228 +000000905 000703770 000734476 D|029669202 026871668 +000000905 000705616 000740309 D|011605780 014060404 +000000905 000736996 000752280 D|076422143 056608661 +000000905 000740317 000778008 D|031392741 086649507 +000000905 000747162 000794465 D|004462029 087070065 +000000905 000779846 000795223 D|096221903 059748281 +000000905 000788893 000807408 D|028804156 082356800 +000000905 000813443 000813765 D|003164384 056418506 +000000905 000835980 000829376 D|041924109 039507342 +000000905 000871743 000922489 D|058296069 047667445 +000000905 000913044 000943025 D|047516353 036834212 +000000905 000913529 000953243 D|073659378 045513818 +000000905 000961848 000979157 D|086362697 039324642 +000000905 000972874 000981677 D|007417631 096542031 +000000905 000993593 000982630 D|019221827 025039249 +000000906 000043073 000018787 D|046897669 010895271 +000000906 000055540 000046602 D|030696856 048565996 +000000906 000074103 000048790 D|056016579 004495186 +000000906 000109455 000055008 D|093918868 045285046 +000000906 000147114 000077395 D|075282987 047005118 +000000906 000151613 000078147 D|006131684 001911699 +000000906 000167493 000090702 D|094342278 035717051 +000000906 000171613 000115359 D|091804788 039458726 +000000906 000174773 000154683 D|044900872 069450082 +000000906 000178453 000158225 D|017212132 092597805 +000000906 000192628 000221960 D|088003281 043950002 +000000906 000210303 000223970 D|074913306 090564749 +000000906 000241735 000244281 D|098382457 067371340 +000000906 000266745 000244652 D|057201246 083761107 +000000906 000395043 000259884 D|077665671 066496464 +000000906 000404728 000306370 D|098115621 030468476 +000000906 000441787 000308157 D|052199061 019282805 +000000906 000477471 000385896 D|046163525 039968174 +000000906 000481872 000390940 D|055915511 096585816 +000000906 000484590 000404257 D|024048863 058832109 +000000906 000503997 000415141 D|020018396 000753579 +000000906 000511611 000416842 D|091118251 074513183 +000000906 000516671 000417763 D|024473378 040462478 +000000906 000517941 000418324 D|015835987 019999381 +000000906 000526261 000426213 D|086798376 004526614 +000000906 000544746 000435000 D|010980186 006111150 +000000906 000549993 000478344 D|087179160 010268295 +000000906 000560127 000487716 D|029234042 062770896 +000000906 000565003 000524310 D|017204732 089910241 +000000906 000580935 000604996 D|073008808 091995309 +000000906 000583897 000694249 D|016724855 013767256 +000000906 000588163 000704723 D|046320093 067011723 +000000906 000598108 000720642 D|020726348 068956382 +000000906 000671364 000725173 D|050886163 079835216 +000000906 000672968 000730106 D|086601570 051238886 +000000906 000715519 000759949 D|061814941 036748996 +000000906 000735892 000791629 D|049295688 046892988 +000000906 000762623 000801400 D|041189215 075446366 +000000906 000796027 000815951 D|068288303 042883029 +000000906 000822803 000829716 D|089460053 023466175 +000000906 000824250 000843317 D|007401119 044431378 +000000906 000848265 000850642 D|051727065 088773181 +000000906 000868304 000858528 D|061042301 099738486 +000000906 000879911 000861052 D|006841794 030359558 +000000906 000913521 000935623 D|092805384 075995470 +000000906 000913710 000941623 D|066271370 026628335 +000000906 000936018 000961307 D|023563242 079848189 +000000906 000962388 000963900 D|079079128 030436822 +000000906 000967745 000991484 D|068426513 075426871 +000000906 000970177 000994825 D|016203854 070301488 +000000907 000015422 000022358 D|088686595 085605646 +000000907 000032049 000039642 D|044964578 042753590 +000000907 000048423 000073080 D|009272019 054115068 +000000907 000051164 000117173 D|075305310 016368299 +000000907 000052210 000128872 D|052881897 023182148 +000000907 000054783 000129058 D|065071033 087265332 +000000907 000056524 000147602 D|024692046 061190017 +000000907 000060900 000153808 D|007113981 035767877 +000000907 000067948 000155930 D|076887990 006736194 +000000907 000159236 000205422 D|068887659 092705647 +000000907 000215269 000218308 D|022628391 018845464 +000000907 000227116 000218830 D|078773373 026877764 +000000907 000237308 000229527 D|027061642 033981150 +000000907 000282042 000286497 D|048164269 068634686 +000000907 000288965 000304700 D|057375163 014151400 +000000907 000293652 000372287 D|057770989 058345898 +000000907 000297837 000389655 D|039943413 032910039 +000000907 000317196 000404514 D|066347616 074700880 +000000907 000318085 000405074 D|077791269 083314825 +000000907 000323018 000424626 D|069106080 000125988 +000000907 000334909 000432710 D|092827013 017659734 +000000907 000372831 000438234 D|004701027 011017766 +000000907 000386930 000449981 D|091135805 099875702 +000000907 000424445 000459996 D|039153277 069344859 +000000907 000434249 000496066 D|042747920 065673950 +000000907 000436313 000509193 D|083553882 012332188 +000000907 000478946 000532866 D|046994345 011583204 +000000907 000496299 000582444 D|092140385 088784933 +000000907 000499895 000704933 D|083384845 007672074 +000000907 000521111 000714290 D|057270795 049701738 +000000907 000555767 000753037 D|051260198 013714679 +000000907 000585538 000795432 D|034540353 086810611 +000000907 000598586 000798933 D|048760549 014179933 +000000907 000637279 000804344 D|070806869 062129753 +000000907 000679074 000816468 D|050553496 013841584 +000000907 000698288 000818877 D|049151475 091419659 +000000907 000701120 000841253 D|028811870 051115922 +000000907 000745274 000843871 D|074723995 064156562 +000000907 000761427 000846378 D|029370875 055296297 +000000907 000769658 000878599 D|066304022 053074674 +000000907 000769805 000879358 D|092212437 047069746 +000000907 000784027 000900784 D|045746084 073519164 +000000907 000818308 000912945 D|066376851 094908705 +000000907 000870493 000922652 D|029191429 029456561 +000000907 000909554 000927224 D|063660765 065282397 +000000907 000921150 000931564 D|098916730 041829613 +000000907 000930462 000959014 D|056804951 013009571 +000000907 000933061 000960982 D|095788523 093486074 +000000907 000934242 000964111 D|014258586 023224361 +000000907 000978452 000977317 D|043716116 006299864 +000000908 000007777 000063597 D|085543562 077653271 +000000908 000020004 000074536 D|016177329 054923727 +000000908 000022330 000119603 D|064199690 052791852 +000000908 000081338 000151394 D|025155798 032004181 +000000908 000102954 000167408 D|093644843 061320182 +000000908 000117523 000174238 D|055086417 001209236 +000000908 000132998 000188928 D|041111447 064986761 +000000908 000172385 000221534 D|072255052 003481059 +000000908 000172669 000235736 D|011875604 097360565 +000000908 000190388 000242415 D|066035040 002504917 +000000908 000190954 000269313 D|054478087 036866431 +000000908 000238254 000277075 D|092324567 053700849 +000000908 000257896 000285659 D|026806314 047460857 +000000908 000259164 000320208 D|072736339 060771348 +000000908 000260827 000322936 D|034812063 016319354 +000000908 000287771 000332121 D|046893989 028092700 +000000908 000297095 000338061 D|098215774 021544091 +000000908 000308537 000338452 D|070195276 003758805 +000000908 000331109 000362809 D|059943050 090172418 +000000908 000355259 000371937 D|095843338 093215298 +000000908 000381568 000396698 D|014686534 099216082 +000000908 000410213 000398113 D|067185681 002234588 +000000908 000420783 000437288 D|030479815 072201248 +000000908 000441081 000444728 D|063931160 026087830 +000000908 000448645 000449298 D|031857397 001674402 +000000908 000449423 000455301 D|048084220 027446132 +000000908 000507936 000484283 D|076256116 063624621 +000000908 000510151 000511552 D|025794203 033392430 +000000908 000517385 000532409 D|000926667 001226376 +000000908 000521247 000545904 D|039692129 098523430 +000000908 000521372 000565196 D|012608495 075876544 +000000908 000525845 000567657 D|083346347 033641315 +000000908 000542135 000581166 D|097475828 084349017 +000000908 000547166 000628298 D|053908284 003642414 +000000908 000549925 000631972 D|017572027 099076819 +000000908 000562576 000642262 D|000426593 069717977 +000000908 000593226 000653015 D|045862970 050526709 +000000908 000631541 000667697 D|011910657 033589497 +000000908 000649074 000705386 D|054260996 082304466 +000000908 000650612 000719236 D|071944917 089950532 +000000908 000673515 000743255 D|096911649 033891087 +000000908 000690594 000798335 D|018155047 050056290 +000000908 000695209 000843805 D|039220089 088192998 +000000908 000768060 000868801 D|050395466 098213294 +000000908 000781573 000946713 D|067793587 082506447 +000000908 000816584 000960843 D|094751824 094548514 +000000908 000836036 000967770 D|089114317 033976450 +000000908 000841625 000994317 D|051235890 001333591 +000000908 000935982 000998594 D|042577343 083484106 +000000908 000977080 000998928 D|072649268 031892034 +000000909 000004944 000016800 D|088271517 090352547 +000000909 000006155 000019664 D|086679860 075983343 +000000909 000016369 000024615 D|068780542 086242354 +000000909 000026316 000038641 D|012783141 062799620 +000000909 000035852 000045169 D|065807740 052126570 +000000909 000056239 000047529 D|018311017 037884641 +000000909 000085100 000070558 D|055635716 095320700 +000000909 000101009 000102374 D|055786757 035773416 +000000909 000141586 000109855 D|084710252 027142313 +000000909 000146007 000125814 D|075761196 080639670 +000000909 000171748 000130945 D|033775368 005028614 +000000909 000173919 000194482 D|007470552 097982864 +000000909 000203476 000220246 D|051232136 028083181 +000000909 000248203 000224315 D|016928725 032907972 +000000909 000302363 000275713 D|055461070 053677141 +000000909 000302523 000284043 D|046009788 027459076 +000000909 000338989 000286474 D|052130900 078301766 +000000909 000339750 000314791 D|093947597 081342827 +000000909 000341361 000347884 D|033817142 010264338 +000000909 000379674 000365972 D|069360952 071365666 +000000909 000395214 000368875 D|002042630 082728581 +000000909 000416957 000375264 D|034538138 091329350 +000000909 000447131 000377823 D|054151293 007706291 +000000909 000451596 000398207 D|036403739 056508779 +000000909 000463491 000400403 D|023271539 097032725 +000000909 000464222 000421383 D|041125790 090311810 +000000909 000467391 000488350 D|097228793 011555665 +000000909 000468726 000505822 D|059074630 016935225 +000000909 000557179 000511898 D|054914338 058933073 +000000909 000561579 000532534 D|005856163 067759615 +000000909 000636008 000544004 D|023534081 072057544 +000000909 000639172 000630782 D|085420195 087955098 +000000909 000668722 000654915 D|099999557 024057866 +000000909 000717386 000679033 D|082596365 053872838 +000000909 000722226 000698677 D|062379553 093478884 +000000909 000748426 000706470 D|011400013 030465829 +000000909 000779615 000717099 D|017790609 052445968 +000000909 000784931 000730131 D|070896584 041713340 +000000909 000802484 000740677 D|082122203 045236106 +000000909 000820549 000741251 D|015294762 059376108 +000000909 000826140 000784565 D|080829544 013123248 +000000909 000848819 000788968 D|094359366 070610759 +000000909 000850494 000791432 D|076078268 065545563 +000000909 000889128 000794181 D|040978076 045240748 +000000909 000917176 000855184 D|051249606 084073639 +000000909 000922854 000888833 D|031353377 080449373 +000000909 000948414 000909183 D|066834145 030084576 +000000909 000962377 000952404 D|056022022 001714753 +000000909 000969595 000983040 D|013799790 070223660 +000000909 000991987 000994251 D|067937079 054977473 +000000910 000049265 000038447 D|047911825 041670553 +000000910 000056770 000046101 D|004678233 069065532 +000000910 000073571 000083223 D|058390661 025458458 +000000910 000115733 000104329 D|047704499 094161872 +000000910 000159862 000173106 D|023982471 040215220 +000000910 000195155 000179603 D|059968853 009387477 +000000910 000223877 000186589 D|002422836 048002890 +000000910 000225278 000193568 D|063624068 061615309 +000000910 000230902 000198937 D|073142189 044369931 +000000910 000254549 000218646 D|069714851 076003823 +000000910 000297865 000249254 D|035022034 013259437 +000000910 000300644 000260254 D|024698297 050956561 +000000910 000315919 000274482 D|076467757 084614499 +000000910 000317217 000280512 D|077308539 072092709 +000000910 000345475 000286647 D|099606250 081693877 +000000910 000377047 000298318 D|057176753 019138131 +000000910 000399702 000328009 D|093458758 038346271 +000000910 000431990 000359823 D|096662374 053174389 +000000910 000488073 000373626 D|049058464 074853637 +000000910 000492446 000374515 D|054848835 098991435 +000000910 000520257 000388063 D|041775287 069927396 +000000910 000537263 000405245 D|004599294 004275097 +000000910 000545391 000440159 D|050618909 068410982 +000000910 000554715 000448960 D|070584923 095086518 +000000910 000569104 000451051 D|073461190 021104999 +000000910 000582545 000468278 D|029712144 002653402 +000000910 000586027 000476789 D|005277153 082823900 +000000910 000594775 000541757 D|008837476 059072837 +000000910 000607617 000583107 D|010684654 007668341 +000000910 000617253 000605322 D|022293117 097298549 +000000910 000626715 000638924 D|077739651 034124398 +000000910 000670065 000640749 D|053104556 086466838 +000000910 000688887 000645748 D|035272138 067722499 +000000910 000704270 000656883 D|022418744 077601259 +000000910 000705205 000682067 D|083799805 046139926 +000000910 000727551 000689743 D|048929672 029083916 +000000910 000727560 000698556 D|000980239 071353806 +000000910 000736526 000726972 D|028380501 037620706 +000000910 000757793 000762638 D|044325322 010927543 +000000910 000765109 000785208 D|059221486 070749309 +000000910 000766114 000787829 D|019500288 025666177 +000000910 000800791 000817447 D|010042342 093363831 +000000910 000801355 000834517 D|015605716 081718767 +000000910 000808312 000840389 D|019239191 020421646 +000000910 000870504 000864210 D|017011479 011053818 +000000910 000875909 000888218 D|023610560 061367498 +000000910 000878166 000917113 D|067461816 095250175 +000000910 000919688 000932498 D|020188224 082881500 +000000910 000955500 000933158 D|011106955 091703003 +000000910 000990127 000979868 D|036178383 094018332 +000000911 000014714 000004023 D|052187789 051919447 +000000911 000044086 000011186 D|059080037 027264819 +000000911 000045415 000017940 D|004683981 001428227 +000000911 000111137 000033266 D|065511792 075140938 +000000911 000121350 000053116 D|010321873 083211836 +000000911 000122842 000098488 D|055859183 086211816 +000000911 000137751 000118639 D|040692652 090129109 +000000911 000178368 000201390 D|098830438 023729821 +000000911 000197919 000208857 D|053263088 052233105 +000000911 000205032 000278174 D|036679337 042442470 +000000911 000214695 000280334 D|056997379 022965665 +000000911 000221904 000323112 D|062900581 022774816 +000000911 000257775 000337997 D|059733138 066727835 +000000911 000263129 000348935 D|032259169 078214245 +000000911 000300116 000355318 D|070753138 021948604 +000000911 000336998 000368376 D|018931791 082994570 +000000911 000395482 000398432 D|089016777 077860526 +000000911 000405006 000401012 D|082462676 067037362 +000000911 000425434 000448311 D|019238927 003445278 +000000911 000464387 000476959 D|045871565 057841108 +000000911 000494447 000479433 D|015683689 014947154 +000000911 000526085 000503742 D|058904954 051306727 +000000911 000528857 000506903 D|016922886 066734904 +000000911 000532527 000530663 D|070487094 006418638 +000000911 000560243 000534319 D|076364351 029738284 +000000911 000570193 000535364 D|033974514 096336705 +000000911 000608243 000573946 D|048217895 051049219 +000000911 000628463 000574740 D|001932121 033091929 +000000911 000640857 000578988 D|013424292 050326958 +000000911 000694021 000581925 D|044292634 021547763 +000000911 000696387 000602948 D|012316656 056376278 +000000911 000699394 000612302 D|083945532 001000581 +000000911 000729321 000613175 D|074801898 086309138 +000000911 000754942 000633640 D|027166833 035910732 +000000911 000781708 000662003 D|086983253 061200779 +000000911 000793792 000675644 D|019099950 093512482 +000000911 000830061 000699178 D|032454020 085957542 +000000911 000854725 000717898 D|014839876 008257485 +000000911 000859102 000740011 D|000147414 040157432 +000000911 000875199 000749232 D|073117651 014299303 +000000911 000891706 000751472 D|085102844 093309991 +000000911 000902862 000777817 D|029422763 047740655 +000000911 000909993 000783550 D|039571010 009911160 +000000911 000913981 000792935 D|065699470 095460761 +000000911 000920283 000827353 D|047288982 035608635 +000000911 000957269 000874701 D|055971346 058947850 +000000911 000969719 000878551 D|002988532 040159348 +000000911 000981122 000899025 D|043002683 065511708 +000000911 000997897 000936305 D|057712443 045534206 +000000911 000999462 000941953 D|019469167 013808630 +000000912 000002859 000031402 D|026601174 074968719 +000000912 000033562 000064702 D|025534094 009803186 +000000912 000055341 000080865 D|073760345 068122403 +000000912 000080330 000087119 D|018842607 058748106 +000000912 000088355 000090862 D|048516041 041468208 +000000912 000105515 000114804 D|087291426 012285302 +000000912 000125757 000122515 D|027776170 038795425 +000000912 000137081 000125333 D|068515966 012267312 +000000912 000143646 000135869 D|072202194 046906826 +000000912 000151238 000156870 D|095971465 019509549 +000000912 000206934 000190246 D|030206735 025543988 +000000912 000233562 000297247 D|035271439 090136976 +000000912 000239802 000367336 D|019567404 024198733 +000000912 000240306 000421861 D|023925293 001638966 +000000912 000277480 000436257 D|061102185 048997516 +000000912 000297365 000495252 D|040048784 009747585 +000000912 000300183 000502800 D|021256995 011870572 +000000912 000310608 000504837 D|057458457 042997028 +000000912 000311217 000515016 D|043311567 057814595 +000000912 000316158 000535938 D|070626772 051339326 +000000912 000336940 000604544 D|031803020 024368593 +000000912 000352059 000629304 D|083868544 086786896 +000000912 000382638 000633179 D|070675041 086090316 +000000912 000383221 000651909 D|010976272 088116533 +000000912 000408025 000656175 D|002975034 087935913 +000000912 000410042 000670447 D|090550401 076403964 +000000912 000417092 000678072 D|004253873 092901949 +000000912 000493507 000680475 D|079871291 049808307 +000000912 000494403 000682126 D|047721916 016334455 +000000912 000506170 000694216 D|032982360 022212185 +000000912 000557414 000737899 D|077807638 062000999 +000000912 000559935 000742998 D|085508029 097584108 +000000912 000570577 000744279 D|016595477 030396538 +000000912 000571449 000756156 D|094215917 048035053 +000000912 000616310 000758522 D|053322351 063365793 +000000912 000638792 000764257 D|069215688 036545638 +000000912 000734573 000775749 D|094968367 025818773 +000000912 000752252 000807047 D|077382881 082164909 +000000912 000755722 000826322 D|092380392 023704555 +000000912 000780230 000836150 D|093564301 050363146 +000000912 000804699 000898197 D|017477161 044531656 +000000912 000817586 000900772 D|044095794 039745999 +000000912 000827799 000929841 D|055959164 046135090 +000000912 000869371 000957185 D|037855365 072109674 +000000912 000906915 000965276 D|056752250 085660509 +000000912 000915769 000976311 D|075026470 083427097 +000000912 000928674 000976444 D|030128246 002720743 +000000912 000952276 000992079 D|089419378 006390900 +000000912 000968110 000994271 D|064681007 068105506 +000000912 000984722 000999802 D|021823566 015176474 +000000913 000004504 000027789 D|092758604 088298668 +000000913 000023608 000037708 D|070257416 082505055 +000000913 000059018 000039043 D|036829118 089955004 +000000913 000060418 000056049 D|051004705 086069599 +000000913 000100461 000065158 D|077956666 052974690 +000000913 000105826 000101973 D|018803510 033557142 +000000913 000110794 000124885 D|048857494 067863677 +000000913 000141545 000148108 D|070223272 020451590 +000000913 000143885 000204948 D|068394063 036918929 +000000913 000192670 000217846 D|041062838 031326768 +000000913 000217044 000247265 D|097799245 029576333 +000000913 000237001 000276848 D|091665912 046305807 +000000913 000250208 000282410 D|085561617 031182587 +000000913 000264011 000294599 D|073206362 089127573 +000000913 000304420 000313045 D|084457532 048524727 +000000913 000304913 000318020 D|015728774 051362985 +000000913 000314410 000344100 D|022017210 021206565 +000000913 000352032 000384735 D|018756326 066952835 +000000913 000354057 000397164 D|040216048 053006601 +000000913 000362078 000407201 D|021332827 010906724 +000000913 000373617 000433226 D|005816570 057516684 +000000913 000394708 000434706 D|006985369 045341139 +000000913 000428068 000448732 D|080470796 083520773 +000000913 000453195 000466066 D|024513421 015416792 +000000913 000526949 000471063 D|061770413 051571382 +000000913 000555172 000481998 D|024286524 095496663 +000000913 000563811 000493657 D|088258642 080273983 +000000913 000571061 000516646 D|013680238 053750387 +000000913 000608092 000541791 D|010678315 033816601 +000000913 000610547 000551473 D|058998754 022472572 +000000913 000641821 000552247 D|087675066 083927459 +000000913 000668226 000561629 D|058681523 018703383 +000000913 000674409 000609767 D|051647780 081851299 +000000913 000681519 000613129 D|028789023 054018074 +000000913 000732320 000671023 D|063318026 086700047 +000000913 000782182 000673171 D|023156744 057717006 +000000913 000787588 000693006 D|023609703 008694884 +000000913 000801501 000768849 D|095773541 043187394 +000000913 000807594 000780696 D|098550952 004509834 +000000913 000839226 000785944 D|075528611 034398339 +000000913 000845622 000823323 D|004166582 007362680 +000000913 000856010 000883641 D|062014845 041387350 +000000913 000872581 000898796 D|024614788 076736337 +000000913 000874718 000904934 D|037889359 084081951 +000000913 000885474 000910519 D|093232304 086615595 +000000913 000904113 000922520 D|057519390 091445132 +000000913 000904265 000949578 D|012935015 037515354 +000000913 000904666 000975945 D|095871280 070228879 +000000913 000926645 000993977 D|049918880 034312843 +000000913 000942482 000997779 D|033571010 079714242 +000000914 000012006 000012399 D|059039331 025912901 +000000914 000028883 000048425 D|073093148 033721325 +000000914 000033022 000065723 D|039294994 068799578 +000000914 000035871 000089869 D|053491940 043212891 +000000914 000063462 000141983 D|064436548 000839258 +000000914 000071017 000154511 D|082817488 033443194 +000000914 000095219 000158568 D|098149469 050809912 +000000914 000103450 000170259 D|046108932 082631625 +000000914 000144961 000172815 D|069072630 033199908 +000000914 000153325 000227179 D|034473475 075203045 +000000914 000162645 000249887 D|018902020 073898353 +000000914 000195860 000270451 D|011465362 094221611 +000000914 000199597 000339568 D|062021662 018779850 +000000914 000224953 000340528 D|037600118 050523190 +000000914 000284479 000347171 D|059601361 091438855 +000000914 000294846 000350809 D|090766744 060399947 +000000914 000307325 000359013 D|038276772 031398815 +000000914 000379522 000363472 D|073745051 051051116 +000000914 000424067 000363498 D|044824997 011280743 +000000914 000431921 000446983 D|086836176 006481239 +000000914 000512718 000453780 D|089392205 048179708 +000000914 000545155 000480705 D|061230685 079505942 +000000914 000559056 000484368 D|068162015 007536401 +000000914 000569239 000489025 D|088295904 097114450 +000000914 000573169 000511987 D|019974424 068224087 +000000914 000586021 000519024 D|014328711 062295710 +000000914 000593288 000528179 D|057416380 036425314 +000000914 000617566 000571804 D|059144944 081292725 +000000914 000645778 000601170 D|098589775 086964687 +000000914 000675681 000641627 D|011938789 035767690 +000000914 000711133 000645822 D|084661826 046416278 +000000914 000716013 000678679 D|063018609 067289990 +000000914 000748880 000716959 D|062120067 011362354 +000000914 000755923 000722507 D|078021385 078775633 +000000914 000772324 000729053 D|047877786 061339009 +000000914 000800530 000747790 D|084207119 053235102 +000000914 000808212 000751406 D|083608112 078932729 +000000914 000813321 000767907 D|048656766 031835748 +000000914 000853224 000802665 D|030347102 057131382 +000000914 000854430 000805444 D|001139777 003915075 +000000914 000863709 000817192 D|013580819 028397723 +000000914 000868166 000833275 D|010397368 041891858 +000000914 000881635 000844820 D|095280702 021712967 +000000914 000948288 000848259 D|029233877 065608801 +000000914 000957440 000857258 D|019067644 094255841 +000000914 000968643 000938675 D|078815717 047928541 +000000914 000980873 000940516 D|073136631 064200634 +000000914 000984274 000955005 D|027740545 008244233 +000000914 000992882 000968508 D|034043089 063839078 +000000914 000995594 000988914 D|033929487 062478811 +000000915 000045005 000004141 D|074532211 042220938 +000000915 000047879 000024457 D|053493161 098066291 +000000915 000072698 000046786 D|021286539 006588945 +000000915 000077783 000060460 D|016802492 015758539 +000000915 000083830 000080472 D|040493225 012666726 +000000915 000121462 000123153 D|006871543 092554464 +000000915 000137764 000124850 D|019496223 053673809 +000000915 000142615 000132248 D|062618911 096356288 +000000915 000153763 000248588 D|081973741 054511136 +000000915 000179800 000344951 D|028624271 007290976 +000000915 000199901 000350348 D|043064492 044615234 +000000915 000226672 000358810 D|028365475 004463738 +000000915 000227924 000376262 D|006873143 097600739 +000000915 000230794 000400355 D|037152145 082539822 +000000915 000245672 000403813 D|025903467 064545210 +000000915 000310172 000410991 D|060759806 051672030 +000000915 000325903 000412592 D|078893630 074277365 +000000915 000347850 000424500 D|057938819 007531217 +000000915 000356735 000441252 D|019796938 049289496 +000000915 000361455 000464040 D|096289751 095666315 +000000915 000367373 000467058 D|075661731 044974009 +000000915 000390620 000475384 D|015088571 037358025 +000000915 000394097 000485770 D|039106548 011104959 +000000915 000406677 000529416 D|035272136 008136680 +000000915 000435664 000568705 D|002078099 086452054 +000000915 000462739 000573239 D|031772951 036058340 +000000915 000512838 000582001 D|044633655 078425431 +000000915 000530988 000589932 D|019123441 046808614 +000000915 000533986 000596100 D|089868030 083990618 +000000915 000545520 000598837 D|019823749 057472974 +000000915 000551475 000618264 D|076719331 024645364 +000000915 000567770 000633890 D|058867091 055569977 +000000915 000590802 000648299 D|013700335 057390923 +000000915 000600642 000659284 D|022050441 071578814 +000000915 000670095 000674735 D|004211082 095159067 +000000915 000678803 000680521 D|039836887 082162521 +000000915 000690475 000765735 D|041970802 060334530 +000000915 000752828 000772289 D|061485011 009714814 +000000915 000774648 000794277 D|057247283 037758313 +000000915 000787821 000804764 D|069138651 038980016 +000000915 000857097 000814750 D|018364914 090638811 +000000915 000858981 000856610 D|019650241 064544331 +000000915 000867121 000858339 D|027491441 097196544 +000000915 000869370 000860506 D|012361207 040441404 +000000915 000882252 000901832 D|013727889 025502637 +000000915 000904558 000931825 D|090736652 044704181 +000000915 000926322 000932047 D|045948032 071525845 +000000915 000929212 000988806 D|007764177 030329121 +000000915 000970711 000991561 D|031950501 020510127 +000000915 000995493 000992508 D|033743896 052380040 +000000916 000000204 000029672 D|045865994 075302891 +000000916 000038060 000036753 D|070581049 031109120 +000000916 000060762 000062665 D|072220238 059061894 +000000916 000152619 000071004 D|050945963 012473057 +000000916 000159481 000072998 D|075236591 009157688 +000000916 000167404 000078116 D|099438276 030521349 +000000916 000205559 000112389 D|064331704 061548990 +000000916 000229054 000116362 D|006606711 018690756 +000000916 000250215 000174232 D|093225511 047590631 +000000916 000254201 000190298 D|072865619 027766980 +000000916 000258387 000197197 D|030957808 076748199 +000000916 000280299 000241557 D|038951369 052172958 +000000916 000284552 000243249 D|087132157 092721895 +000000916 000293556 000245227 D|067308470 052077557 +000000916 000337455 000245655 D|046213779 075908698 +000000916 000348864 000277845 D|005295271 043579949 +000000916 000381338 000287575 D|017673232 044728189 +000000916 000383492 000327114 D|066406974 057939701 +000000916 000434982 000352872 D|019930534 003505157 +000000916 000438501 000368179 D|018318403 085429353 +000000916 000442228 000386805 D|068846332 066693356 +000000916 000470696 000443973 D|097024591 038243537 +000000916 000479064 000457454 D|015200558 082141569 +000000916 000549446 000480079 D|094908949 091961986 +000000916 000567293 000493445 D|070941190 042081212 +000000916 000587552 000527956 D|072911377 014438920 +000000916 000623364 000589628 D|094966680 097733465 +000000916 000631921 000598532 D|016700217 028879861 +000000916 000632079 000620573 D|066960752 064990644 +000000916 000657062 000658842 D|053964058 049936102 +000000916 000665176 000681199 D|027876767 065635938 +000000916 000668704 000688006 D|030818906 009293564 +000000916 000693153 000704569 D|051537106 050098605 +000000916 000724060 000709406 D|061976652 001019456 +000000916 000730811 000755382 D|006980028 028670408 +000000916 000733838 000760791 D|092647318 088193408 +000000916 000750046 000770547 D|079486429 014808750 +000000916 000778417 000773348 D|083417665 042317692 +000000916 000782983 000789310 D|068157560 021560613 +000000916 000824347 000804638 D|026410221 027972707 +000000916 000827969 000839264 D|086265730 063906964 +000000916 000831138 000840165 D|067662794 065959814 +000000916 000841573 000892064 D|011371590 041187936 +000000916 000844917 000895783 D|023957630 089679093 +000000916 000871249 000897250 D|005129200 065578872 +000000916 000909479 000920009 D|052056374 046644905 +000000916 000931670 000926235 D|015787738 000384830 +000000916 000949777 000927685 D|079687049 095151202 +000000916 000968446 000942658 D|057778480 029312615 +000000916 000969779 000954844 D|085538997 097577920 +000000917 000010489 000024432 D|060611337 080590936 +000000917 000012037 000041011 D|057331843 011661584 +000000917 000018082 000053278 D|096957515 017229931 +000000917 000055455 000055332 D|004090117 016035546 +000000917 000059954 000056417 D|044508642 065273311 +000000917 000090033 000082115 D|020453566 040242009 +000000917 000100389 000091862 D|081036450 008504360 +000000917 000114330 000132081 D|081578743 050424002 +000000917 000123305 000149976 D|037924121 082499214 +000000917 000149149 000150980 D|003248665 072807092 +000000917 000170672 000152597 D|012241472 030387510 +000000917 000277765 000179486 D|056548670 007208891 +000000917 000321197 000208428 D|060346526 074945071 +000000917 000361069 000225068 D|018066231 065052565 +000000917 000375146 000236950 D|078795645 075905975 +000000917 000388270 000251636 D|048936984 056830835 +000000917 000389028 000256811 D|088256603 011697595 +000000917 000399418 000268136 D|009093709 040265988 +000000917 000411929 000274383 D|096663864 068879215 +000000917 000470933 000295787 D|012945691 020123178 +000000917 000476411 000311520 D|041789003 095745215 +000000917 000481285 000339585 D|073873914 013280139 +000000917 000485948 000377067 D|053762257 097251500 +000000917 000497140 000390754 D|049801729 097859245 +000000917 000504133 000395152 D|042842624 045131608 +000000917 000512602 000481691 D|097008165 016009680 +000000917 000518440 000502129 D|024691937 059040914 +000000917 000546238 000504456 D|094546281 077129222 +000000917 000547082 000509894 D|055763398 029087139 +000000917 000632731 000515010 D|084860850 061536834 +000000917 000648732 000521076 D|013209874 041295109 +000000917 000653637 000541737 D|015438169 079626577 +000000917 000696454 000598602 D|065396962 004264988 +000000917 000705992 000601626 D|010901077 058241785 +000000917 000775248 000626244 D|082469008 005159489 +000000917 000785075 000638397 D|034245702 034620677 +000000917 000813300 000658676 D|077921153 080827478 +000000917 000826873 000660717 D|028572123 083418460 +000000917 000848228 000717523 D|068713381 044702837 +000000917 000853944 000757927 D|081371690 038287193 +000000917 000854443 000788197 D|015026855 015494135 +000000917 000859125 000791931 D|000959300 073344312 +000000917 000865421 000822791 D|057470247 041809043 +000000917 000868030 000833706 D|029466779 082206116 +000000917 000869069 000879680 D|041572802 015961765 +000000917 000902632 000887378 D|074525317 040157625 +000000917 000922926 000893805 D|010603137 020328801 +000000917 000925396 000970441 D|040635635 009135437 +000000917 000972598 000975134 D|077147090 096025752 +000000917 000986825 000976273 D|067225889 074556651 +000000918 000000091 000001708 D|008083870 078668442 +000000918 000006665 000003564 D|011455829 098451503 +000000918 000020147 000003680 D|043707023 025828862 +000000918 000040282 000026239 D|061998454 003908387 +000000918 000040887 000051460 D|054931169 086265178 +000000918 000044168 000070119 D|065027480 003944033 +000000918 000073907 000157100 D|068443598 016165128 +000000918 000111460 000165474 D|049864694 091271923 +000000918 000132719 000195667 D|071003148 037315117 +000000918 000165218 000243788 D|020841234 069320145 +000000918 000167602 000265123 D|079032586 096859255 +000000918 000177722 000281107 D|082803847 014641399 +000000918 000237061 000285571 D|009254782 043052208 +000000918 000253742 000289200 D|022854617 046925776 +000000918 000272547 000290496 D|033114194 043795124 +000000918 000295893 000299100 D|075540114 065120416 +000000918 000306359 000324262 D|051160133 006861864 +000000918 000330057 000389944 D|042108508 050800073 +000000918 000357403 000391767 D|022104013 049502227 +000000918 000361585 000410228 D|084077770 083508167 +000000918 000388588 000432362 D|055316688 043949402 +000000918 000388766 000432861 D|000265138 088055705 +000000918 000392861 000441573 D|045393065 067305775 +000000918 000411174 000447947 D|031644242 034692917 +000000918 000436866 000455544 D|013152196 070554763 +000000918 000447654 000474863 D|045900094 007281984 +000000918 000464221 000489957 D|029284109 019652071 +000000918 000464872 000498891 D|045367453 095888487 +000000918 000471771 000518122 D|096180861 077080112 +000000918 000505255 000536295 D|054522928 044474338 +000000918 000528662 000539519 D|017837221 089164454 +000000918 000566859 000539986 D|002961755 080827465 +000000918 000601821 000559952 D|074134348 067636986 +000000918 000620133 000570023 D|084170132 058047669 +000000918 000628547 000582940 D|005478759 042349038 +000000918 000661880 000679623 D|045999247 015537371 +000000918 000678040 000705763 D|041905413 076464954 +000000918 000705643 000715957 D|034828401 001444547 +000000918 000713020 000786134 D|010978803 036051522 +000000918 000722748 000788763 D|031577462 081381960 +000000918 000766381 000792807 D|030814577 059729314 +000000918 000789793 000802179 D|046353476 006303723 +000000918 000803242 000808067 D|022398761 062783871 +000000918 000814989 000861428 D|070650213 060164780 +000000918 000832391 000905291 D|084829103 061921411 +000000918 000832773 000949421 D|043077806 089571321 +000000918 000918440 000966698 D|011757294 090516135 +000000918 000947365 000970937 D|034474170 031404179 +000000918 000976095 000983938 D|009926709 005094622 +000000918 000985220 000994404 D|053825043 011426601 +000000919 000004527 000018447 D|095484039 015191596 +000000919 000007529 000022691 D|061995022 076472272 +000000919 000027793 000062325 D|027091298 067904465 +000000919 000043224 000109367 D|063524981 023933553 +000000919 000082626 000135067 D|021785273 034177353 +000000919 000129373 000152220 D|083423640 037420571 +000000919 000171695 000162865 D|072036549 029203748 +000000919 000177645 000188887 D|047400425 076084655 +000000919 000211812 000194001 D|007966172 023099105 +000000919 000272204 000208138 D|069732125 099340101 +000000919 000299478 000251638 D|075942223 092232303 +000000919 000303543 000255388 D|004277299 058427443 +000000919 000306829 000256673 D|051095778 012102513 +000000919 000312807 000283781 D|056490962 098676448 +000000919 000314723 000294262 D|075173998 090402827 +000000919 000321694 000335586 D|025635441 098930545 +000000919 000345830 000348649 D|053974279 052776817 +000000919 000380166 000356369 D|031049353 073599792 +000000919 000403702 000360063 D|075861078 096373985 +000000919 000431403 000423553 D|010921784 083079938 +000000919 000449812 000428084 D|015060374 092614061 +000000919 000475818 000439132 D|053037924 047790790 +000000919 000490588 000466516 D|085756197 023449425 +000000919 000499607 000474255 D|050039448 054032608 +000000919 000539582 000497284 D|007752355 092772524 +000000919 000545930 000524229 D|072471291 094423870 +000000919 000559842 000555346 D|018836905 035441230 +000000919 000569836 000561276 D|047653337 031205209 +000000919 000576573 000571200 D|053073199 051217662 +000000919 000582966 000602623 D|055273515 038255171 +000000919 000586984 000602796 D|012977372 079891054 +000000919 000591002 000608894 D|019947733 061004328 +000000919 000598560 000618883 D|038247453 016722113 +000000919 000638574 000631851 D|040030430 008039893 +000000919 000640413 000642534 D|074000962 078071829 +000000919 000677391 000648086 D|051520926 079941093 +000000919 000712658 000651849 D|083802857 002400603 +000000919 000727750 000681628 D|093282405 012732324 +000000919 000728886 000690340 D|008188874 027670386 +000000919 000733139 000702644 D|050382153 087671498 +000000919 000733824 000731175 D|074333129 019772769 +000000919 000788235 000750645 D|013049821 084147908 +000000919 000852564 000813666 D|067764820 086223571 +000000919 000893396 000919637 D|054358212 017196029 +000000919 000920807 000923562 D|027320630 014037031 +000000919 000954677 000960045 D|005093374 020775017 +000000919 000963798 000969384 D|072922836 054557673 +000000919 000969427 000986146 D|090288510 049453199 +000000919 000971774 000988176 D|053785186 063829077 +000000919 000986795 000994880 D|021630078 066323206 +000000920 000001696 000007272 D|011059017 031438041 +000000920 000010219 000021862 D|047482453 058581420 +000000920 000049738 000100047 D|009291039 082814009 +000000920 000062443 000120525 D|058876391 006041702 +000000920 000073420 000122745 D|044681911 084726144 +000000920 000073642 000131411 D|009109604 095162628 +000000920 000074365 000147102 D|021308492 082958226 +000000920 000100770 000149197 D|078494857 098208292 +000000920 000222884 000152292 D|001438189 027278742 +000000920 000243608 000174780 D|028998695 036395772 +000000920 000243998 000208134 D|064342560 065797317 +000000920 000258075 000210962 D|063603956 028681095 +000000920 000283927 000221117 D|027407777 018279229 +000000920 000288937 000244911 D|079679871 091556570 +000000920 000289007 000270249 D|087251544 018285726 +000000920 000315065 000323314 D|094691628 053172740 +000000920 000317454 000357550 D|071851044 071398328 +000000920 000324374 000372733 D|007169408 020712537 +000000920 000332313 000417829 D|062840703 053935140 +000000920 000339475 000435077 D|060802223 011254762 +000000920 000397953 000445073 D|079682046 007989353 +000000920 000399220 000457810 D|054156283 044845548 +000000920 000408570 000475905 D|054626600 072560399 +000000920 000419913 000491164 D|044825974 075222737 +000000920 000427742 000496263 D|030900456 087575656 +000000920 000437722 000511000 D|068522541 083418823 +000000920 000460846 000540542 D|091016573 044765094 +000000920 000494044 000585692 D|035278214 065424373 +000000920 000503893 000629769 D|063640808 015285032 +000000920 000507078 000631247 D|092259495 093802149 +000000920 000516519 000657665 D|061899789 052797039 +000000920 000518276 000683715 D|094074287 042963181 +000000920 000519033 000688224 D|091995529 001432693 +000000920 000522229 000706126 D|032873451 082134970 +000000920 000565907 000722427 D|058241786 072405472 +000000920 000576649 000726859 D|096466020 030484307 +000000920 000583515 000742514 D|029792037 004917091 +000000920 000584756 000753761 D|049665166 072646366 +000000920 000585990 000799515 D|091666412 055799416 +000000920 000592848 000808981 D|022881405 076417123 +000000920 000604529 000845279 D|088350444 028962552 +000000920 000637739 000880465 D|075010960 029471173 +000000920 000705479 000890536 D|042649366 025118103 +000000920 000745053 000891914 D|002409164 007377113 +000000920 000775055 000915763 D|024755645 039181734 +000000920 000796463 000921727 D|086153730 035989566 +000000920 000815114 000932507 D|093079778 094839577 +000000920 000820256 000951549 D|059227902 068019957 +000000920 000868015 000962295 D|022095761 057005365 +000000920 000931923 000991992 D|083001962 079147785 +000000921 000003248 000003996 D|064345780 049010998 +000000921 000003961 000020421 D|015113715 056465968 +000000921 000024231 000030021 D|035895677 013413389 +000000921 000057838 000033540 D|060730881 096012910 +000000921 000080804 000035199 D|049637839 056323178 +000000921 000105874 000048598 D|017575684 073752193 +000000921 000126269 000074395 D|023466414 073216242 +000000921 000131130 000121564 D|075461657 051995380 +000000921 000149897 000201458 D|010812393 030514002 +000000921 000153412 000252280 D|090080505 011890994 +000000921 000170917 000286991 D|098066375 004200331 +000000921 000182929 000287795 D|078297601 049679394 +000000921 000186173 000291955 D|061795157 009563214 +000000921 000193336 000307220 D|068804342 081157325 +000000921 000215096 000325479 D|087020745 059019170 +000000921 000215269 000354194 D|031150285 080342177 +000000921 000226276 000395678 D|082504725 016304759 +000000921 000258436 000445431 D|058946576 086579149 +000000921 000259931 000475642 D|075755671 060362153 +000000921 000274207 000477545 D|059953907 006979571 +000000921 000286324 000498214 D|016776788 000250160 +000000921 000287392 000511457 D|055987096 007249739 +000000921 000296352 000533764 D|078410732 063436514 +000000921 000306854 000537958 D|025522392 094891755 +000000921 000310001 000547041 D|077171980 071207650 +000000921 000316602 000549328 D|034993291 015120623 +000000921 000338644 000581368 D|070602132 064788096 +000000921 000338891 000584071 D|053325785 061654309 +000000921 000370195 000602843 D|041302650 061422283 +000000921 000398861 000609255 D|056356069 003308739 +000000921 000417823 000654801 D|067591791 043571819 +000000921 000434695 000678249 D|088329239 031967920 +000000921 000435893 000685186 D|027909970 074437506 +000000921 000478444 000687563 D|073535395 086181386 +000000921 000479823 000700325 D|064429234 080889636 +000000921 000496622 000703172 D|043186674 018950334 +000000921 000504034 000710089 D|097845788 011415429 +000000921 000552735 000733695 D|028140963 079373920 +000000921 000640437 000765784 D|050631734 098232114 +000000921 000669549 000770367 D|090801914 096033230 +000000921 000674469 000780126 D|069707980 006699127 +000000921 000695518 000809168 D|028960565 020513377 +000000921 000707925 000810170 D|080316808 033167072 +000000921 000717059 000825527 D|078587939 071942900 +000000921 000805358 000829955 D|087314217 035166723 +000000921 000806077 000910590 D|021278970 086193897 +000000921 000815864 000913217 D|065877565 009741504 +000000921 000909245 000947498 D|016811194 001641445 +000000921 000934436 000981227 D|024080060 037733161 +000000921 000963624 000998008 D|052506843 025888659 +000000922 000003398 000008689 D|018111004 026471583 +000000922 000015547 000038803 D|049919037 047528133 +000000922 000019726 000049974 D|062161479 063269639 +000000922 000080550 000070515 D|028715181 040607147 +000000922 000080855 000094017 D|030224052 073701751 +000000922 000086032 000096270 D|057706443 019146354 +000000922 000088284 000097924 D|009687516 059608665 +000000922 000120613 000123461 D|089960914 010498888 +000000922 000200161 000189480 D|049982948 041375115 +000000922 000210159 000200599 D|008573648 019746392 +000000922 000210507 000242264 D|027692503 021660096 +000000922 000220107 000250885 D|040994245 046912068 +000000922 000235413 000277964 D|049650963 054360872 +000000922 000255582 000301147 D|063546569 056107874 +000000922 000257405 000306802 D|021635502 043490251 +000000922 000264292 000308520 D|020048065 020366886 +000000922 000265567 000324893 D|048063168 074757285 +000000922 000271986 000333164 D|029458151 096125154 +000000922 000275815 000336908 D|047842746 007248157 +000000922 000293783 000360842 D|034854477 020475459 +000000922 000310926 000391599 D|034898363 008805429 +000000922 000328537 000419179 D|054307408 005869706 +000000922 000334131 000431543 D|046914111 075402690 +000000922 000335475 000442937 D|064147271 020653932 +000000922 000361332 000479946 D|032438259 074507508 +000000922 000366882 000488331 D|022392480 055749204 +000000922 000369100 000498647 D|082103053 072324473 +000000922 000438209 000508979 D|054470708 033015721 +000000922 000484273 000551097 D|098223791 087602491 +000000922 000525621 000589001 D|046407470 087854344 +000000922 000568101 000626390 D|084879001 003127645 +000000922 000570225 000647859 D|056745473 027728981 +000000922 000596427 000673540 D|094810464 059874245 +000000922 000615963 000681093 D|016449824 073187441 +000000922 000643012 000699094 D|088875702 050417441 +000000922 000644032 000703498 D|085045315 076427804 +000000922 000676690 000724657 D|054538777 034011633 +000000922 000680305 000754458 D|048868112 076766248 +000000922 000688393 000755044 D|051024892 080559971 +000000922 000751245 000778340 D|035607863 093151852 +000000922 000766340 000803578 D|035459654 046952906 +000000922 000768257 000845940 D|021381135 092831654 +000000922 000779725 000893688 D|012009997 019610282 +000000922 000790905 000939345 D|013929528 054656670 +000000922 000836437 000947491 D|004894893 050389684 +000000922 000843414 000967636 D|033821810 080138884 +000000922 000870324 000971879 D|060090214 086824900 +000000922 000944948 000986553 D|098734754 062231958 +000000922 000951065 000988382 D|031860552 037963125 +000000922 000958799 000990158 D|040555282 041643540 +000000923 000009368 000000177 D|016884726 019180534 +000000923 000024234 000038173 D|066775911 073986839 +000000923 000027009 000038885 D|087562891 046195751 +000000923 000027166 000086427 D|018756408 045173588 +000000923 000030678 000139496 D|099468815 028123634 +000000923 000066284 000145908 D|084910400 008313765 +000000923 000100974 000150074 D|056180848 065192115 +000000923 000129730 000167441 D|044865196 061484605 +000000923 000149538 000190801 D|084911580 046717211 +000000923 000175224 000214525 D|017321108 098002905 +000000923 000180683 000250220 D|001794074 003260026 +000000923 000193322 000273785 D|029967095 060977211 +000000923 000209346 000279197 D|058465137 089328780 +000000923 000219987 000296975 D|056175259 091069399 +000000923 000306618 000310501 D|019632629 045087187 +000000923 000329200 000323457 D|026872278 095466803 +000000923 000331265 000327937 D|013003014 080843858 +000000923 000347471 000329243 D|010580337 093527830 +000000923 000348273 000335709 D|029053825 066343241 +000000923 000358017 000339028 D|063285407 092518239 +000000923 000380191 000407347 D|061257169 064752886 +000000923 000387667 000410126 D|065041710 085082893 +000000923 000430806 000416117 D|023441460 068819925 +000000923 000438326 000418847 D|031489266 072726728 +000000923 000454563 000427573 D|086086332 009940707 +000000923 000465462 000434499 D|039462352 047701905 +000000923 000495446 000442605 D|096246653 029052346 +000000923 000503976 000571787 D|051796419 003308254 +000000923 000520268 000574395 D|097551260 082171099 +000000923 000682409 000585037 D|050383009 031538373 +000000923 000702723 000587145 D|096533997 013417477 +000000923 000706198 000629204 D|028265458 095399696 +000000923 000727328 000650091 D|062407380 002243853 +000000923 000751322 000665807 D|076412989 006103238 +000000923 000760992 000666423 D|044043938 012827219 +000000923 000765766 000697434 D|052483997 072278593 +000000923 000766073 000701019 D|099846646 011508457 +000000923 000793527 000707924 D|015907787 093434038 +000000923 000850916 000709055 D|013256638 074328835 +000000923 000916378 000730003 D|029463355 097921163 +000000923 000933702 000732166 D|046668784 078047923 +000000923 000934175 000732921 D|026352545 053327795 +000000923 000939762 000749918 D|067098833 001271999 +000000923 000962630 000885654 D|045058430 035944031 +000000923 000972425 000914600 D|022707291 038858001 +000000923 000974522 000945229 D|059015390 020556911 +000000923 000974904 000963780 D|013651034 023571293 +000000923 000978414 000964642 D|013679462 076151605 +000000923 000980093 000975084 D|080823767 019892809 +000000923 000991723 000990867 D|083178585 089571776 +000000924 000011368 000001257 D|079518511 067335902 +000000924 000019355 000023103 D|004430095 047813877 +000000924 000020149 000026564 D|006702934 089942089 +000000924 000034739 000027469 D|095101237 008761871 +000000924 000059170 000040396 D|099548779 089747061 +000000924 000095917 000063240 D|004109762 049826372 +000000924 000103498 000063474 D|002261893 026436541 +000000924 000113767 000073623 D|078015772 031218940 +000000924 000148088 000075410 D|098689978 004974808 +000000924 000153718 000077621 D|032296591 049295713 +000000924 000158376 000085961 D|085510481 067156925 +000000924 000164717 000095367 D|049801689 000737865 +000000924 000166785 000100952 D|052762389 098635960 +000000924 000182724 000126222 D|050254198 010438384 +000000924 000217552 000155441 D|009366130 028685518 +000000924 000218380 000201755 D|045067570 076355976 +000000924 000225712 000212844 D|008983513 063020112 +000000924 000244643 000261841 D|054305859 024924951 +000000924 000246207 000262575 D|075557755 034508839 +000000924 000262676 000272732 D|088851400 048102078 +000000924 000268762 000277919 D|056548198 020052836 +000000924 000320154 000311768 D|048768323 001818271 +000000924 000353205 000330187 D|029540436 085976698 +000000924 000368547 000346160 D|079282152 076768881 +000000924 000381505 000376599 D|060169857 053882258 +000000924 000402733 000379425 D|014123484 011675627 +000000924 000409948 000413969 D|082110650 065628584 +000000924 000416697 000433923 D|017584690 050932803 +000000924 000468729 000441001 D|004641690 037801534 +000000924 000468764 000447346 D|064152594 030717556 +000000924 000483833 000459469 D|012450216 048691237 +000000924 000484342 000474718 D|048029167 001002851 +000000924 000486593 000520798 D|089438832 049234269 +000000924 000539741 000552455 D|034176447 017037012 +000000924 000577000 000552535 D|042548213 001911050 +000000924 000581325 000572789 D|027451459 046049473 +000000924 000613100 000573827 D|076211196 076533490 +000000924 000613335 000583442 D|084947058 043618999 +000000924 000623022 000625530 D|027406277 042760185 +000000924 000729515 000673629 D|083862083 006398332 +000000924 000744367 000686052 D|013304075 053090459 +000000924 000750392 000706885 D|067109040 056222046 +000000924 000780087 000732511 D|042746587 058013356 +000000924 000797188 000830956 D|047005090 028934893 +000000924 000808425 000845175 D|083786709 006004384 +000000924 000824031 000857017 D|046868927 056959307 +000000924 000860630 000913619 D|080232307 068946230 +000000924 000908912 000959100 D|077259014 076061790 +000000924 000928544 000984469 D|052520122 057160361 +000000924 000987437 000999534 D|080401506 097377384 +000000925 000005700 000007632 D|052873354 024910314 +000000925 000007983 000031342 D|048872969 080297929 +000000925 000040720 000063088 D|022325305 040811953 +000000925 000051940 000088455 D|082087809 049600738 +000000925 000052395 000094432 D|038188280 006718699 +000000925 000097297 000104618 D|074597714 006820890 +000000925 000117681 000123483 D|001618013 008728180 +000000925 000134319 000126439 D|055842470 067943149 +000000925 000181461 000128756 D|055653134 078350061 +000000925 000190690 000166891 D|040745621 087484088 +000000925 000194397 000184003 D|065491950 079609987 +000000925 000234914 000202175 D|083978353 003640706 +000000925 000237384 000210077 D|019279483 008431107 +000000925 000243995 000265761 D|023240879 093281274 +000000925 000249620 000267664 D|091458466 011911338 +000000925 000249838 000303684 D|016023442 028669566 +000000925 000268583 000319078 D|093788617 063632426 +000000925 000280728 000334299 D|064594912 013793154 +000000925 000284942 000343214 D|073147986 018220634 +000000925 000339300 000355274 D|001210435 079572125 +000000925 000355031 000356197 D|015748276 043922285 +000000925 000356907 000362149 D|042476463 040382873 +000000925 000378031 000381760 D|038923943 014508457 +000000925 000390441 000400226 D|059726911 000416717 +000000925 000406357 000416923 D|053704533 039468409 +000000925 000418505 000422344 D|019191895 051534707 +000000925 000470955 000446147 D|057743985 054747068 +000000925 000477245 000463723 D|064282328 039506480 +000000925 000485659 000516143 D|099290826 092298532 +000000925 000504943 000525628 D|094847159 060791475 +000000925 000588382 000555403 D|004856060 018591789 +000000925 000597508 000672163 D|013670413 071728764 +000000925 000638107 000674465 D|037682747 047497063 +000000925 000640576 000676003 D|026097949 053056610 +000000925 000641788 000704970 D|018313291 072067649 +000000925 000654792 000712943 D|091866725 032778252 +000000925 000656518 000732364 D|028385324 004501326 +000000925 000685879 000750444 D|015359061 008124064 +000000925 000715514 000766255 D|070675732 059065831 +000000925 000726048 000784423 D|023034615 096051835 +000000925 000733351 000795595 D|009903361 065287340 +000000925 000809259 000805276 D|001646880 021817604 +000000925 000825975 000807154 D|072126055 029127349 +000000925 000897915 000823611 D|069304017 090041158 +000000925 000909876 000849077 D|016749559 017557045 +000000925 000919124 000896423 D|051369435 041105751 +000000925 000931590 000899776 D|052071971 065965966 +000000925 000962796 000914205 D|019334457 005482713 +000000925 000968824 000969072 D|009686342 009431232 +000000925 000987271 000970170 D|068921271 039700749 +000000926 000000546 000028627 D|013735949 000896064 +000000926 000034722 000029389 D|074572317 020312269 +000000926 000036431 000055477 D|027435643 069667918 +000000926 000042751 000065572 D|042639212 000947982 +000000926 000073842 000066073 D|049241082 010234213 +000000926 000104651 000122387 D|080187372 055355602 +000000926 000136294 000132122 D|030357218 008537525 +000000926 000163633 000152049 D|093012388 028412504 +000000926 000184272 000158599 D|072772009 069180796 +000000926 000190271 000183461 D|044399052 073332211 +000000926 000246134 000186237 D|021918583 046511475 +000000926 000251659 000212039 D|009986647 010046732 +000000926 000290002 000220105 D|023020198 043967469 +000000926 000304098 000251567 D|014836331 008924225 +000000926 000330883 000261142 D|089394204 005453452 +000000926 000332184 000269133 D|020511851 069954253 +000000926 000333439 000316893 D|083747583 013568046 +000000926 000367280 000329805 D|072112447 042659343 +000000926 000398718 000388069 D|037516402 061143003 +000000926 000411035 000399688 D|020280064 033785351 +000000926 000439154 000419219 D|026477799 083723610 +000000926 000456965 000419947 D|085532994 033983665 +000000926 000476198 000428262 D|033805585 088197373 +000000926 000502851 000429409 D|083199569 070635063 +000000926 000507314 000445979 D|052564035 045639235 +000000926 000510663 000496958 D|096498629 098123115 +000000926 000583976 000507758 D|081864930 034374409 +000000926 000636713 000629722 D|037981570 084376584 +000000926 000642896 000650172 D|031698096 073502735 +000000926 000703346 000709132 D|070115351 016431441 +000000926 000709460 000734328 D|063308103 061973700 +000000926 000710492 000743906 D|008189989 088797932 +000000926 000738161 000745885 D|060297280 067978533 +000000926 000751496 000754313 D|032459712 015420104 +000000926 000773911 000755470 D|037909312 041440083 +000000926 000786066 000781323 D|092738087 074424603 +000000926 000787140 000792227 D|076499031 034371324 +000000926 000824873 000805564 D|017142143 061486950 +000000926 000835618 000813436 D|042300573 003534476 +000000926 000846859 000815073 D|028731502 030664858 +000000926 000862948 000815128 D|061212240 019576110 +000000926 000896384 000873845 D|062542216 026549397 +000000926 000906086 000876858 D|099303622 070316396 +000000926 000906371 000878688 D|095390514 017861260 +000000926 000908065 000879737 D|012710487 066731472 +000000926 000912704 000900794 D|069520377 045871269 +000000926 000917759 000911789 D|057625796 003227673 +000000926 000921326 000933992 D|036585567 087281284 +000000926 000947253 000956005 D|021081834 004583348 +000000926 000955471 000987456 D|075593870 059761214 +000000927 000006144 000013222 D|002991178 024032816 +000000927 000022295 000033132 D|079594215 050081687 +000000927 000022577 000037826 D|097599585 020196237 +000000927 000023378 000068849 D|016678376 039934405 +000000927 000038494 000098943 D|013404882 041461086 +000000927 000041489 000127248 D|093433625 099033912 +000000927 000116142 000148884 D|083902495 047337459 +000000927 000145235 000150315 D|073842154 044199698 +000000927 000194805 000226432 D|012455681 053516153 +000000927 000221396 000229120 D|002445524 018063520 +000000927 000245835 000237446 D|060148266 053548332 +000000927 000246113 000289333 D|056312326 033045427 +000000927 000343751 000296612 D|089871103 066037878 +000000927 000382638 000298798 D|044088209 020222448 +000000927 000423623 000317974 D|079337052 072024708 +000000927 000424133 000331656 D|020876192 094373546 +000000927 000448805 000343207 D|096214604 005075129 +000000927 000449594 000355210 D|060585575 034928247 +000000927 000454020 000359243 D|079836057 014426066 +000000927 000506830 000371659 D|047608287 003970937 +000000927 000510467 000371725 D|097181778 085608374 +000000927 000523679 000381127 D|090001180 056899504 +000000927 000524514 000382933 D|073277294 076033931 +000000927 000535957 000391202 D|020775241 098857025 +000000927 000552434 000404828 D|099419902 009341559 +000000927 000556994 000425531 D|055120456 075188047 +000000927 000569058 000431171 D|072476907 073074815 +000000927 000569201 000480572 D|000386678 008081159 +000000927 000570709 000533621 D|009728189 078980637 +000000927 000588315 000547869 D|023764647 006418736 +000000927 000589872 000608427 D|050554241 002518731 +000000927 000643043 000622284 D|064748477 062696291 +000000927 000711775 000633760 D|081647391 023567106 +000000927 000716604 000661227 D|067182123 060823293 +000000927 000721086 000682245 D|031838523 036055602 +000000927 000721464 000684251 D|058621903 099239795 +000000927 000737824 000704086 D|043318548 018232696 +000000927 000743387 000744518 D|098897322 010439589 +000000927 000759582 000751423 D|059902701 095958662 +000000927 000794663 000756378 D|001188705 079730268 +000000927 000852878 000780147 D|062901829 032819822 +000000927 000860329 000800022 D|041941787 056096906 +000000927 000901823 000845913 D|037995931 081207617 +000000927 000917237 000857010 D|079079166 012226463 +000000927 000962794 000861492 D|097109857 071620333 +000000927 000966258 000863092 D|050657947 053291867 +000000927 000976254 000963961 D|069751431 082543078 +000000927 000978962 000982876 D|099657315 047857062 +000000927 000981806 000991612 D|037727139 096341676 +000000927 000988290 000998460 D|028292649 064140762 +000000928 000023837 000004070 D|005758978 024046038 +000000928 000072464 000019376 D|055068807 007466480 +000000928 000109056 000042417 D|059959570 055474278 +000000928 000112486 000053463 D|077763149 009196946 +000000928 000115530 000063117 D|050812187 014141944 +000000928 000120404 000072222 D|066106465 097315112 +000000928 000188421 000127708 D|095419515 026923481 +000000928 000197188 000129474 D|082269825 071279001 +000000928 000296882 000152854 D|054221649 028687239 +000000928 000315845 000154657 D|032000304 005409157 +000000928 000347057 000180825 D|042494312 044377595 +000000928 000383423 000197033 D|092616627 064326758 +000000928 000409362 000201781 D|080907188 045867168 +000000928 000411244 000208868 D|017616045 048290774 +000000928 000412498 000209322 D|025910092 009384903 +000000928 000437637 000263198 D|048357096 064406997 +000000928 000442974 000289508 D|054018640 018785148 +000000928 000452653 000295694 D|025136329 016205466 +000000928 000477077 000332041 D|022984881 019757384 +000000928 000484672 000333450 D|004558110 043107395 +000000928 000551235 000351613 D|052490185 051370780 +000000928 000559960 000385329 D|073080150 083284852 +000000928 000564578 000400953 D|003716192 023629729 +000000928 000601450 000426115 D|038412736 059106919 +000000928 000625095 000456953 D|007111578 005080764 +000000928 000630640 000505162 D|064268083 096757545 +000000928 000632289 000515954 D|027538382 059332747 +000000928 000633515 000536808 D|059473835 089854892 +000000928 000640386 000549347 D|019693453 049317177 +000000928 000646522 000608979 D|092985910 088741894 +000000928 000668677 000619739 D|083958279 063834816 +000000928 000683372 000629001 D|076278937 013094470 +000000928 000684152 000639188 D|025702931 056241907 +000000928 000690689 000650120 D|032172339 039218156 +000000928 000697030 000659751 D|099640660 097050103 +000000928 000706238 000698104 D|021644262 013443953 +000000928 000734656 000717176 D|073297067 038093924 +000000928 000741482 000722498 D|092147332 092881656 +000000928 000749576 000759857 D|087043276 074920655 +000000928 000818742 000761449 D|090465493 091642434 +000000928 000823680 000762929 D|091839884 095837963 +000000928 000845860 000765962 D|089341015 051989307 +000000928 000862940 000803625 D|088460794 091262901 +000000928 000866418 000809261 D|025402840 046630882 +000000928 000877419 000845106 D|030521379 086555886 +000000928 000883255 000899110 D|004226468 034381248 +000000928 000892556 000903138 D|093635744 018689139 +000000928 000897902 000945307 D|027246215 071830533 +000000928 000928188 000970039 D|088669497 065412026 +000000928 000981844 000971564 D|083055473 071728065 +000000929 000007428 000023401 D|099587378 015313743 +000000929 000012213 000030227 D|085952277 043261034 +000000929 000029347 000051733 D|037414751 075841319 +000000929 000031609 000055564 D|038147675 002267654 +000000929 000049487 000065107 D|063824673 086854829 +000000929 000096826 000084405 D|084091683 059810585 +000000929 000104843 000095005 D|066725549 000016650 +000000929 000127770 000114721 D|065172206 036392781 +000000929 000156334 000120213 D|082692967 066012865 +000000929 000163608 000188338 D|014472123 063181871 +000000929 000260005 000192543 D|059671890 060047351 +000000929 000307815 000193181 D|073508781 093374848 +000000929 000323384 000242295 D|019442262 033802449 +000000929 000325299 000312165 D|099863815 067060954 +000000929 000331397 000314834 D|064310967 064915029 +000000929 000339883 000323726 D|073316694 068444351 +000000929 000359025 000365483 D|046172563 019323496 +000000929 000372065 000376019 D|037679620 072387052 +000000929 000374286 000398580 D|083954516 027685024 +000000929 000375876 000405437 D|092706239 015603136 +000000929 000393223 000444127 D|058841228 003827719 +000000929 000398934 000449027 D|064388229 033408051 +000000929 000399058 000452385 D|018913462 002875065 +000000929 000437926 000465661 D|031642389 054294704 +000000929 000492535 000485302 D|050633835 069436786 +000000929 000511801 000506682 D|041061310 058718499 +000000929 000534621 000510196 D|062603216 050037038 +000000929 000566041 000587977 D|096442322 063408732 +000000929 000591389 000592699 D|087258901 033322973 +000000929 000617120 000622579 D|042840276 083981276 +000000929 000691720 000688573 D|062495883 008480700 +000000929 000696388 000737657 D|008617688 059512781 +000000929 000711607 000739894 D|010582310 018063663 +000000929 000720505 000747009 D|093845298 083018217 +000000929 000732012 000753956 D|061651555 050634287 +000000929 000760465 000765429 D|070057062 043563402 +000000929 000800122 000770144 D|034668220 046797769 +000000929 000820338 000803068 D|007639936 001524767 +000000929 000827724 000820466 D|090574412 004100156 +000000929 000854417 000828788 D|045048676 065857597 +000000929 000856294 000844116 D|032882201 036951284 +000000929 000864887 000845945 D|025684300 090473809 +000000929 000867961 000851180 D|099009936 057339069 +000000929 000868696 000858940 D|001530280 037757923 +000000929 000878542 000884863 D|006071039 007293126 +000000929 000882592 000900222 D|024218544 023479927 +000000929 000913940 000943511 D|002895697 025189215 +000000929 000933344 000965866 D|031530651 002391028 +000000929 000969370 000974533 D|098948146 025293381 +000000929 000979098 000984921 D|047833700 070238053 +000000930 000055004 000011451 D|086063902 019418922 +000000930 000063177 000056860 D|055070584 054287560 +000000930 000066547 000062031 D|074902619 034648345 +000000930 000069098 000068754 D|037080192 046012989 +000000930 000070879 000092481 D|068279132 080484347 +000000930 000079526 000154238 D|052899756 066714453 +000000930 000097188 000203479 D|069157273 011574567 +000000930 000127544 000350396 D|067312620 065234706 +000000930 000130977 000352682 D|037860521 002930775 +000000930 000144970 000376567 D|059503932 047747640 +000000930 000153581 000395938 D|077178258 044627670 +000000930 000172242 000396237 D|023185286 000878042 +000000930 000177996 000396535 D|079259371 066545618 +000000930 000178347 000403338 D|040921192 017435296 +000000930 000214375 000464870 D|046602374 056820545 +000000930 000222029 000470320 D|046254903 099617841 +000000930 000223930 000483786 D|041640989 057622020 +000000930 000226167 000489371 D|093160313 055087904 +000000930 000228704 000494934 D|064943959 038526858 +000000930 000369965 000496467 D|077394661 061931518 +000000930 000387298 000506627 D|062292757 009975932 +000000930 000405855 000507232 D|047218291 093382454 +000000930 000423250 000514731 D|021492162 094220035 +000000930 000502030 000542354 D|020623248 067792657 +000000930 000515227 000574839 D|017042079 057206026 +000000930 000558942 000578389 D|016932635 054464803 +000000930 000564066 000619474 D|048919393 040604419 +000000930 000570271 000624059 D|021078854 012171990 +000000930 000575179 000630959 D|001932453 017213871 +000000930 000576200 000640147 D|088405383 089829301 +000000930 000587951 000702604 D|005627448 093986327 +000000930 000598259 000708575 D|014411825 084447975 +000000930 000618421 000722339 D|050661542 076399692 +000000930 000641267 000722843 D|026267406 039867156 +000000930 000644348 000731493 D|099505345 097494014 +000000930 000648855 000742766 D|029134012 047486653 +000000930 000650577 000853150 D|098596848 027274329 +000000930 000655599 000854195 D|008325445 080091851 +000000930 000702412 000872115 D|011158139 032678537 +000000930 000708632 000884508 D|097323992 049373149 +000000930 000722870 000893859 D|052112160 076110488 +000000930 000732175 000901388 D|012593672 053454900 +000000930 000739579 000911742 D|044208006 015862172 +000000930 000754254 000933048 D|055677378 011033570 +000000930 000788777 000938650 D|005756687 060490351 +000000930 000799090 000964896 D|008193980 046528228 +000000930 000861495 000969375 D|080125645 047637990 +000000930 000961085 000977118 D|056982314 059976565 +000000930 000964152 000983120 D|016395073 064101093 +000000930 000995512 000994054 D|064903124 015662437 +000000931 000013831 000021083 D|003132431 035701755 +000000931 000070127 000093095 D|069909194 054358406 +000000931 000078771 000097536 D|046861982 045730229 +000000931 000085575 000100338 D|079219148 056475855 +000000931 000089225 000128000 D|015434273 087100971 +000000931 000101140 000166877 D|076035649 072776134 +000000931 000184980 000179762 D|045356428 071703985 +000000931 000188683 000183374 D|010201050 065944867 +000000931 000209225 000195170 D|036709660 057577948 +000000931 000218560 000198926 D|009324316 019360663 +000000931 000226734 000221032 D|017591056 043425920 +000000931 000246356 000273854 D|066511737 045226559 +000000931 000257768 000289107 D|069312215 027475487 +000000931 000267832 000289493 D|036348750 002117222 +000000931 000271523 000303432 D|035824291 000254806 +000000931 000286962 000323998 D|071855004 022595047 +000000931 000340596 000326929 D|081539874 093129175 +000000931 000347436 000336768 D|081601292 058458120 +000000931 000399443 000338018 D|036557423 018012533 +000000931 000413865 000350608 D|000751412 061810359 +000000931 000438524 000368220 D|076439123 015075352 +000000931 000440191 000409541 D|058924692 009885564 +000000931 000457684 000501440 D|049366898 099215492 +000000931 000475245 000511376 D|012153769 031047980 +000000931 000513009 000511849 D|085287918 065361881 +000000931 000540154 000515677 D|073572984 035670197 +000000931 000542384 000523747 D|093744027 013332554 +000000931 000549126 000546689 D|007675736 068226635 +000000931 000566218 000558569 D|002784881 057076442 +000000931 000572240 000570624 D|021432360 079027412 +000000931 000600120 000590526 D|018739418 035094088 +000000931 000608795 000614000 D|089740719 011309568 +000000931 000621708 000630150 D|044179241 077259445 +000000931 000644062 000715282 D|085623119 035477269 +000000931 000648347 000726940 D|020001727 007569746 +000000931 000655818 000745076 D|022418106 043439723 +000000931 000689523 000748244 D|066299046 089633147 +000000931 000718876 000753160 D|043912839 053018564 +000000931 000724724 000754618 D|087623215 011325588 +000000931 000726664 000778802 D|079032173 024380836 +000000931 000739014 000788984 D|082677045 061846560 +000000931 000741162 000833347 D|016724125 015691530 +000000931 000773627 000852226 D|031113515 028106156 +000000931 000808944 000868131 D|039087064 068146693 +000000931 000838575 000914345 D|036631620 006425990 +000000931 000891756 000915611 D|008209447 011047773 +000000931 000940699 000938517 D|058170321 081402717 +000000931 000972293 000957030 D|093646042 024477583 +000000931 000976042 000957186 D|076304962 008548008 +000000931 000978796 000987033 D|030586094 016636929 +000000932 000006217 000009001 D|083436219 027621645 +000000932 000033820 000034421 D|000329593 017216644 +000000932 000058145 000053861 D|085914143 079968478 +000000932 000077842 000059111 D|058750530 056595485 +000000932 000080867 000070550 D|061467371 046409398 +000000932 000144154 000084566 D|013270333 052701979 +000000932 000147490 000089400 D|044443604 052177851 +000000932 000158154 000109910 D|071112845 031672880 +000000932 000180822 000182357 D|066838772 056153726 +000000932 000218433 000183745 D|057826692 064894653 +000000932 000256617 000204485 D|067313512 017653865 +000000932 000269467 000247800 D|068016018 067568534 +000000932 000272768 000267335 D|053667522 008585886 +000000932 000273051 000271863 D|003001306 040146000 +000000932 000318768 000273340 D|047344794 026133687 +000000932 000327453 000276743 D|062939188 068180687 +000000932 000359902 000294330 D|006012328 077049692 +000000932 000368594 000303506 D|045311461 081102738 +000000932 000382795 000314631 D|034244589 094065920 +000000932 000390104 000377299 D|077458516 081899288 +000000932 000402144 000397159 D|004633424 084600084 +000000932 000404388 000417593 D|060795911 074910784 +000000932 000433984 000428831 D|025411538 075690918 +000000932 000506836 000433147 D|030303545 002493524 +000000932 000513947 000459815 D|087956791 097702283 +000000932 000522908 000472520 D|046602119 093987303 +000000932 000527047 000503832 D|007901622 083263956 +000000932 000540483 000513116 D|017893971 002182408 +000000932 000559013 000534774 D|040643836 078296157 +000000932 000567699 000607318 D|099257705 090927810 +000000932 000604626 000615744 D|089607482 044441249 +000000932 000605207 000641284 D|012730685 098167248 +000000932 000618319 000648999 D|021330963 049418005 +000000932 000624893 000655250 D|010827501 062077498 +000000932 000643893 000691394 D|053543567 051916553 +000000932 000724500 000699389 D|008935927 095984766 +000000932 000730038 000708324 D|090780046 075869115 +000000932 000744998 000714213 D|075902770 090053700 +000000932 000751284 000722148 D|014412013 012306394 +000000932 000758379 000742596 D|081564480 045772649 +000000932 000816956 000772118 D|066686883 048822633 +000000932 000843721 000800263 D|064659348 062138549 +000000932 000883215 000802296 D|076863691 090644461 +000000932 000904990 000803908 D|043144572 012342823 +000000932 000920407 000806146 D|031204087 067489190 +000000932 000925622 000816520 D|033333853 026096096 +000000932 000970886 000826343 D|049895372 026094917 +000000932 000980533 000872158 D|086727432 052168859 +000000932 000989869 000897264 D|034530753 026004483 +000000932 000995351 000934757 D|013490738 095986696 +000000933 000030613 000021755 D|031587328 043619864 +000000933 000043403 000042854 D|051252514 011018145 +000000933 000062050 000073441 D|060664224 087958841 +000000933 000085004 000085112 D|051195752 041342683 +000000933 000108246 000115615 D|083610529 001202150 +000000933 000108458 000134902 D|025094752 055704725 +000000933 000123253 000149084 D|000700156 024237208 +000000933 000137826 000172770 D|033295686 095840998 +000000933 000145322 000204572 D|066558655 067168726 +000000933 000154873 000234956 D|060593583 024250307 +000000933 000158888 000236995 D|048775216 040740268 +000000933 000193434 000243129 D|063293945 054762389 +000000933 000194741 000289513 D|081190934 082629788 +000000933 000234427 000320478 D|083985173 053520767 +000000933 000279193 000321500 D|027715722 038568075 +000000933 000290765 000324062 D|034796048 046451707 +000000933 000311880 000328810 D|023261744 022446474 +000000933 000333056 000339511 D|024506447 014733288 +000000933 000340765 000402009 D|009853613 031516766 +000000933 000346231 000418067 D|085599616 051281067 +000000933 000387500 000475720 D|017098684 059912567 +000000933 000426194 000485803 D|016559136 070213931 +000000933 000433628 000503778 D|014399551 086552044 +000000933 000487167 000509034 D|081258892 085636374 +000000933 000513831 000548717 D|027509158 073085935 +000000933 000544872 000557654 D|091893493 054623650 +000000933 000586639 000558560 D|066798543 034102683 +000000933 000611760 000563409 D|062481607 018874946 +000000933 000615630 000568320 D|072933110 043387738 +000000933 000623028 000578716 D|040005333 098541881 +000000933 000634103 000627796 D|005399201 070646894 +000000933 000638184 000637345 D|044742579 044024316 +000000933 000665966 000651755 D|023263904 033383363 +000000933 000720048 000688769 D|058649666 064371533 +000000933 000778683 000703497 D|066991765 075097351 +000000933 000779529 000710151 D|031437288 066055289 +000000933 000784297 000727345 D|000886029 084761556 +000000933 000793056 000741809 D|040152815 071936837 +000000933 000801883 000748808 D|050456151 061037822 +000000933 000805901 000750387 D|067006682 071869852 +000000933 000824397 000772983 D|016429606 040975203 +000000933 000838291 000779943 D|076508695 074737946 +000000933 000848867 000822062 D|052868293 003479664 +000000933 000853429 000824736 D|076150782 018885702 +000000933 000938525 000856659 D|035269045 063058955 +000000933 000947184 000865163 D|041942800 061783211 +000000933 000951042 000874014 D|029499829 088497568 +000000933 000951168 000875824 D|027996933 002420132 +000000933 000966328 000941737 D|015286166 030716504 +000000933 000982951 000962291 D|010706214 038885050 +000000934 000003843 000001301 D|059036868 093199109 +000000934 000044132 000017970 D|008058776 039000639 +000000934 000095926 000032205 D|052326886 033474277 +000000934 000102319 000038046 D|023161466 005203640 +000000934 000110619 000074095 D|004683227 028642961 +000000934 000145182 000114236 D|028864709 046693639 +000000934 000154917 000162071 D|035461262 001222204 +000000934 000198861 000191285 D|043859373 075195339 +000000934 000199075 000193401 D|040920448 099988241 +000000934 000212654 000193877 D|058177442 024714739 +000000934 000225036 000195776 D|008400219 058629440 +000000934 000227809 000198430 D|078505415 075352224 +000000934 000244476 000215983 D|067395664 040490945 +000000934 000257552 000252574 D|057611903 067371973 +000000934 000318853 000305976 D|005733631 049424221 +000000934 000326324 000344909 D|012605793 020780496 +000000934 000334238 000359308 D|046690605 029216206 +000000934 000384693 000389379 D|074338254 033139890 +000000934 000389574 000430698 D|098482342 038461127 +000000934 000426522 000436687 D|076855665 002552084 +000000934 000463805 000459913 D|034912294 073776623 +000000934 000464124 000460798 D|024978486 044974068 +000000934 000473441 000471109 D|094771793 000835885 +000000934 000485160 000472536 D|019601866 050367228 +000000934 000502164 000487962 D|099155675 082483270 +000000934 000535746 000574256 D|041590608 051224563 +000000934 000559820 000587699 D|065347018 048406586 +000000934 000568947 000589840 D|048368243 018982681 +000000934 000582621 000620153 D|009258099 067039919 +000000934 000587478 000639179 D|084614506 050439212 +000000934 000595518 000647028 D|013022031 037241699 +000000934 000615977 000659810 D|001677869 034390727 +000000934 000619304 000660180 D|001629174 043118881 +000000934 000653981 000699194 D|068008525 035309209 +000000934 000658286 000705478 D|053163396 044778203 +000000934 000677102 000707599 D|038763830 045549591 +000000934 000705113 000711983 D|043589472 054560098 +000000934 000740895 000715781 D|032553867 016175061 +000000934 000772719 000723160 D|004724815 036870897 +000000934 000876287 000804509 D|001622817 003053696 +000000934 000878299 000823479 D|052910021 051498758 +000000934 000885230 000827372 D|043793831 085462302 +000000934 000888859 000871279 D|092658263 075845578 +000000934 000914694 000883386 D|017923422 002243940 +000000934 000936670 000915167 D|086918918 053004096 +000000934 000949407 000929662 D|018591994 022993453 +000000934 000960650 000975192 D|091264685 013908190 +000000934 000970994 000983381 D|063290557 040751675 +000000934 000971136 000986670 D|032054346 005668859 +000000934 000998393 000991379 D|076949831 077416411 +000000935 000009567 000013072 D|086216038 006967005 +000000935 000030903 000026230 D|095008832 040363247 +000000935 000031276 000040289 D|069876804 016054998 +000000935 000061639 000042826 D|036310330 002798329 +000000935 000091970 000131648 D|062253027 083119513 +000000935 000124160 000143886 D|001335665 099254555 +000000935 000146577 000145129 D|097759446 032894913 +000000935 000171690 000147352 D|001361106 044581319 +000000935 000185762 000189352 D|016323458 066586281 +000000935 000207066 000209380 D|056582408 069472527 +000000935 000208836 000214071 D|030091135 027040919 +000000935 000213515 000225869 D|086769210 045305376 +000000935 000240566 000247822 D|028778442 044635982 +000000935 000253786 000275695 D|004885534 086364332 +000000935 000305363 000286605 D|056907392 002235013 +000000935 000306462 000306877 D|040176312 028424967 +000000935 000336839 000348471 D|061228668 089241193 +000000935 000375718 000350660 D|064741328 067988575 +000000935 000383746 000353144 D|035731434 044698448 +000000935 000425425 000372277 D|087904631 037532039 +000000935 000426189 000388701 D|016461344 035334968 +000000935 000430088 000389824 D|025447235 064314294 +000000935 000438466 000422120 D|055613938 051277085 +000000935 000455856 000446011 D|026458870 099820485 +000000935 000487101 000496974 D|070192909 087124916 +000000935 000498334 000501978 D|050655631 013540047 +000000935 000558927 000597439 D|085257061 021005230 +000000935 000573130 000638749 D|096129302 042439038 +000000935 000578546 000645352 D|088317414 086954816 +000000935 000584694 000650774 D|058719947 002437077 +000000935 000641621 000659709 D|020310364 002523867 +000000935 000650940 000675978 D|067014916 032019174 +000000935 000668170 000678797 D|043592989 077352454 +000000935 000710348 000684510 D|082084407 029253917 +000000935 000715774 000685827 D|067467105 014833848 +000000935 000727672 000708512 D|083963990 061752602 +000000935 000735180 000748112 D|064931168 068823546 +000000935 000744552 000778037 D|034341956 000253400 +000000935 000801493 000787708 D|030914612 024330951 +000000935 000806959 000802608 D|049566427 040105624 +000000935 000871108 000815659 D|071251885 032679309 +000000935 000874633 000831775 D|008462204 067030158 +000000935 000874972 000838677 D|073695951 012251864 +000000935 000883621 000870458 D|019055792 055467005 +000000935 000903267 000883291 D|067217033 050393645 +000000935 000953155 000901835 D|056648201 083743463 +000000935 000979880 000911310 D|094259374 064692336 +000000935 000979986 000916954 D|000417001 058411482 +000000935 000991095 000924809 D|092085626 077538776 +000000935 000995072 000964238 D|024317765 074030843 +000000936 000000298 000082269 D|037654438 002286060 +000000936 000000580 000095308 D|031141974 015935515 +000000936 000120209 000103828 D|057040239 047963162 +000000936 000128473 000111071 D|025676431 062580673 +000000936 000165286 000115189 D|014201882 066939237 +000000936 000171847 000126014 D|059532900 086096747 +000000936 000225197 000132781 D|058361893 019176705 +000000936 000241873 000166068 D|078840483 080742558 +000000936 000253271 000175205 D|031140517 040018316 +000000936 000260073 000218373 D|094941945 019782201 +000000936 000267035 000238120 D|030924561 079682281 +000000936 000275179 000263745 D|066034636 024799747 +000000936 000298712 000341738 D|029452745 026534899 +000000936 000307867 000348584 D|083612074 040183628 +000000936 000315061 000370936 D|055717336 029871187 +000000936 000383771 000385378 D|013624157 055630431 +000000936 000384277 000459665 D|014236405 058172330 +000000936 000386048 000469377 D|088237132 041870523 +000000936 000395084 000514619 D|078163877 083090227 +000000936 000397457 000514654 D|037281916 096333993 +000000936 000400600 000515344 D|003814788 054248619 +000000936 000400674 000527708 D|088623252 058408241 +000000936 000403790 000530573 D|036254095 057000938 +000000936 000418125 000531817 D|091018055 060010774 +000000936 000419090 000544581 D|039344795 091178666 +000000936 000432710 000559316 D|085321990 081895405 +000000936 000439255 000596090 D|077372318 039104000 +000000936 000461048 000597598 D|015926107 011179117 +000000936 000471961 000600039 D|007616605 080664456 +000000936 000474779 000624534 D|037800953 046358832 +000000936 000509520 000625345 D|094759522 056861375 +000000936 000514242 000635334 D|020735671 011864791 +000000936 000521827 000641484 D|076651678 024778440 +000000936 000535625 000650111 D|057284457 043176763 +000000936 000585569 000655129 D|097437780 017864585 +000000936 000589495 000662217 D|073823773 021046338 +000000936 000604038 000692434 D|028802113 052489388 +000000936 000622859 000760988 D|054124776 078087984 +000000936 000631438 000764423 D|008334206 046799148 +000000936 000640014 000821385 D|016079922 017270880 +000000936 000654491 000857740 D|005432680 038416479 +000000936 000654534 000861165 D|075933574 010480846 +000000936 000667195 000874413 D|004011579 068134829 +000000936 000688939 000886882 D|028905359 058068787 +000000936 000698479 000907237 D|022825122 021203561 +000000936 000737029 000938588 D|034420039 086861548 +000000936 000854308 000977202 D|077539224 098951588 +000000936 000862911 000983627 D|065603208 003266044 +000000936 000897236 000992437 D|000786773 081893618 +000000936 000903017 000997133 D|027225095 058246819 +000000937 000004503 000032741 D|002740874 096064233 +000000937 000014043 000039457 D|047068341 010318828 +000000937 000041117 000069706 D|005101434 077700641 +000000937 000048717 000088420 D|060913564 045430632 +000000937 000057179 000089941 D|000079494 090991717 +000000937 000057374 000109887 D|039605280 035682342 +000000937 000082655 000178041 D|052378600 006670310 +000000937 000090275 000212514 D|078613461 049500130 +000000937 000101317 000229070 D|073872838 073470908 +000000937 000120382 000235896 D|082118666 070005651 +000000937 000195002 000250081 D|043219763 037223540 +000000937 000205251 000254041 D|088111163 074421806 +000000937 000212371 000266374 D|087209572 031685611 +000000937 000228496 000268717 D|086258241 044717117 +000000937 000267605 000278564 D|006888375 086140146 +000000937 000269232 000333284 D|067102175 004966311 +000000937 000285116 000336997 D|049939150 052122350 +000000937 000318379 000402851 D|006012949 058041950 +000000937 000327265 000414659 D|076826944 002884798 +000000937 000338385 000452490 D|061777699 080375556 +000000937 000347447 000452890 D|084942860 031606850 +000000937 000405137 000461316 D|089038433 012139514 +000000937 000448552 000471304 D|058837385 068327455 +000000937 000523081 000480031 D|093053721 094435688 +000000937 000530690 000508937 D|027464984 052819957 +000000937 000545185 000512167 D|024694199 098765088 +000000937 000547966 000519453 D|082187142 092898018 +000000937 000550990 000537000 D|024579981 079469799 +000000937 000578201 000568585 D|072823723 080579775 +000000937 000601767 000618233 D|029287269 030169197 +000000937 000601943 000658324 D|065516263 056409719 +000000937 000619983 000661478 D|032902408 096112979 +000000937 000672715 000674918 D|075121421 071262315 +000000937 000701551 000686249 D|066285137 036815641 +000000937 000702741 000748617 D|065031187 007315594 +000000937 000712616 000762130 D|004593703 075953303 +000000937 000717176 000783067 D|002735680 048595366 +000000937 000742967 000789365 D|029484328 090228606 +000000937 000776681 000844439 D|002068986 007113109 +000000937 000789137 000846064 D|048564914 027058073 +000000937 000799894 000849928 D|048257817 016882126 +000000937 000817320 000860710 D|001266362 073410113 +000000937 000820809 000861915 D|092658592 099716694 +000000937 000835201 000873868 D|073544278 054423219 +000000937 000855073 000876074 D|078449165 050580579 +000000937 000868455 000913122 D|000400576 027241999 +000000937 000886058 000933612 D|086077641 038065965 +000000937 000918299 000954313 D|083734958 071791624 +000000937 000969687 000962694 D|092405101 003187570 +000000937 000974419 000983586 D|055913500 021919253 +000000938 000028038 000011012 D|074989997 096843108 +000000938 000041803 000037751 D|074493935 057381215 +000000938 000045263 000066905 D|013382184 063359418 +000000938 000058081 000088531 D|062313802 040697722 +000000938 000061243 000115390 D|093364579 042794596 +000000938 000063684 000132798 D|013314346 014901935 +000000938 000076561 000142934 D|057345477 040780032 +000000938 000136102 000158749 D|007230336 071526024 +000000938 000136882 000163767 D|086918876 064732451 +000000938 000195283 000177201 D|048136642 081960505 +000000938 000203016 000191145 D|043487926 013587568 +000000938 000205081 000207306 D|065600255 043846990 +000000938 000237387 000229685 D|028463943 085459357 +000000938 000239506 000255349 D|018555953 084676887 +000000938 000267097 000260638 D|054287775 029970967 +000000938 000295740 000297119 D|020260376 087907326 +000000938 000302623 000307755 D|022576273 042832731 +000000938 000304978 000310955 D|083731042 088665610 +000000938 000310761 000316461 D|050126324 078533725 +000000938 000352841 000355886 D|074728562 047854598 +000000938 000369935 000398979 D|043641267 002838464 +000000938 000383055 000402659 D|027031372 059065421 +000000938 000426647 000409511 D|025664209 027533074 +000000938 000428288 000424015 D|020353908 022713761 +000000938 000446069 000427146 D|029513600 007203685 +000000938 000478382 000447178 D|067573185 075277389 +000000938 000503768 000453456 D|017499756 044983008 +000000938 000523461 000500472 D|037443229 083547445 +000000938 000543633 000532116 D|089773980 021423858 +000000938 000545827 000545935 D|075661850 035254367 +000000938 000563782 000548147 D|045482405 094410892 +000000938 000564456 000557449 D|011085038 043197797 +000000938 000592744 000568187 D|024613469 072216017 +000000938 000597363 000623335 D|042551991 098453757 +000000938 000622689 000647755 D|096520762 080360612 +000000938 000665459 000650901 D|053349468 040514944 +000000938 000681168 000715949 D|010330049 016655138 +000000938 000752093 000772789 D|033118126 041795988 +000000938 000763877 000780766 D|030112102 065092126 +000000938 000774590 000798527 D|060513676 021391700 +000000938 000809989 000806679 D|038502956 023535686 +000000938 000810827 000828158 D|053332027 047070353 +000000938 000813415 000852907 D|054920575 061718565 +000000938 000852841 000867970 D|001762803 057788034 +000000938 000855552 000899002 D|022988731 093593550 +000000938 000894532 000899172 D|066680370 045483532 +000000938 000944041 000926125 D|068729113 049028229 +000000938 000948689 000951321 D|013751447 044416959 +000000938 000982133 000975455 D|038093798 013249861 +000000938 000991306 000984614 D|083139417 057451553 +000000939 000008325 000025686 D|021732328 070039664 +000000939 000014756 000091660 D|042340700 065910516 +000000939 000019886 000117095 D|066330871 058628587 +000000939 000025246 000196972 D|089641921 043649220 +000000939 000052714 000201986 D|003481455 055219333 +000000939 000071083 000206561 D|043010630 087007084 +000000939 000078429 000208006 D|007934239 014225903 +000000939 000079506 000223308 D|022149927 098710467 +000000939 000102789 000235431 D|031869686 014956370 +000000939 000126710 000235748 D|046250776 039122356 +000000939 000161896 000236140 D|037946977 032237306 +000000939 000163003 000240662 D|005417197 070981122 +000000939 000190189 000303612 D|064218967 094577158 +000000939 000214069 000331539 D|083738877 016051306 +000000939 000220365 000336799 D|065059179 055060595 +000000939 000221956 000340361 D|020925982 062439265 +000000939 000254818 000353366 D|080744564 062147242 +000000939 000308348 000356893 D|035591691 031585682 +000000939 000325976 000367915 D|038363668 003039372 +000000939 000370674 000394468 D|027683888 073082148 +000000939 000381980 000397325 D|053894615 092693031 +000000939 000393020 000416885 D|036700220 059769388 +000000939 000411256 000424437 D|097087313 056653221 +000000939 000455168 000446299 D|026177452 088722827 +000000939 000465802 000451623 D|004353579 052580496 +000000939 000467261 000452086 D|043476252 083588207 +000000939 000470366 000496131 D|069206019 079361820 +000000939 000474754 000497237 D|074433222 085068917 +000000939 000485457 000499335 D|049564060 072465402 +000000939 000489862 000543424 D|081636838 065998536 +000000939 000503576 000547010 D|003612941 037432473 +000000939 000532777 000563685 D|056517111 039249720 +000000939 000545822 000580800 D|063363417 074939946 +000000939 000554762 000593830 D|084208945 093916835 +000000939 000564277 000595710 D|013447386 067867376 +000000939 000601485 000598036 D|005718591 070822158 +000000939 000604068 000609829 D|059184322 006561217 +000000939 000637986 000634739 D|052376565 096033309 +000000939 000638460 000668947 D|073403211 082886916 +000000939 000689037 000692147 D|064275524 009772293 +000000939 000745888 000783239 D|013053583 010626501 +000000939 000776913 000823764 D|063313124 091693912 +000000939 000845260 000839402 D|031284795 008210062 +000000939 000868231 000839985 D|076934046 092376513 +000000939 000897437 000856470 D|024647045 013336834 +000000939 000902205 000916182 D|074352244 096129961 +000000939 000913421 000918505 D|041427271 020693209 +000000939 000958870 000932927 D|086455739 012273696 +000000939 000978127 000979922 D|092484562 089096280 +000000939 000993242 000996813 D|030899640 013242829 +000000940 000032793 000009026 D|022314060 048056701 +000000940 000046965 000073771 D|061567209 024988955 +000000940 000054172 000081165 D|030411364 023677242 +000000940 000078886 000104584 D|092896843 094967560 +000000940 000079302 000135865 D|027635751 005182438 +000000940 000082244 000143153 D|009599008 001616242 +000000940 000087736 000144189 D|033076162 009129446 +000000940 000090089 000171205 D|044072101 034398801 +000000940 000100624 000194755 D|090411615 069969332 +000000940 000132112 000261409 D|022406879 099093347 +000000940 000133337 000261875 D|051642242 005716356 +000000940 000136521 000262636 D|049670926 054917644 +000000940 000157277 000276594 D|064008543 092760744 +000000940 000183900 000282712 D|045945149 095577193 +000000940 000236212 000292502 D|080231352 027518682 +000000940 000285271 000295535 D|014587459 053421615 +000000940 000300543 000302130 D|092878394 048792356 +000000940 000311007 000314209 D|093391162 047671551 +000000940 000313225 000315243 D|079050911 012427655 +000000940 000316426 000340666 D|003605095 065805931 +000000940 000336418 000343051 D|019831226 024825211 +000000940 000347599 000354844 D|060403608 081536472 +000000940 000394755 000361563 D|050434698 011562526 +000000940 000425032 000371091 D|095717978 047208973 +000000940 000434055 000454380 D|012758052 018732638 +000000940 000497236 000495317 D|093483564 041958940 +000000940 000552547 000501322 D|004756756 093527250 +000000940 000566571 000507122 D|030018910 085121584 +000000940 000569369 000509763 D|048301791 007085296 +000000940 000590478 000533180 D|057875753 056133709 +000000940 000601527 000577837 D|022002804 027218872 +000000940 000618535 000592781 D|035529108 099898777 +000000940 000628201 000612219 D|096442882 073106688 +000000940 000642120 000636513 D|087330868 031978992 +000000940 000665585 000722526 D|092088288 043812370 +000000940 000682333 000737970 D|071195075 033292343 +000000940 000687168 000766032 D|050768065 093744559 +000000940 000734810 000773608 D|092715298 076956737 +000000940 000741502 000776626 D|070305612 081648961 +000000940 000768468 000784858 D|062818105 048626721 +000000940 000879654 000819723 D|094020609 081268761 +000000940 000882250 000848981 D|039667058 018768107 +000000940 000933200 000866220 D|091546422 043614639 +000000940 000941760 000866915 D|072629015 009466637 +000000940 000951016 000902378 D|021240603 054211394 +000000940 000959157 000905351 D|073801235 043255744 +000000940 000964016 000912109 D|068911371 059974020 +000000940 000982421 000917278 D|086512696 010740894 +000000940 000985436 000953284 D|013461439 049019583 +000000940 000996187 000959492 D|038627954 065705929 +000000941 000006989 000006332 D|010190258 078956945 +000000941 000029069 000021088 D|037033589 011904555 +000000941 000046392 000033146 D|006952698 012427068 +000000941 000046681 000033362 D|041183618 067098741 +000000941 000052695 000091663 D|032681482 051057620 +000000941 000054043 000120646 D|066386625 048395190 +000000941 000058754 000121312 D|023436390 023047893 +000000941 000070589 000171521 D|053623073 086343159 +000000941 000085730 000201211 D|050683927 041321189 +000000941 000142788 000214955 D|027637502 065431847 +000000941 000156351 000231419 D|086957530 062207105 +000000941 000163775 000231809 D|075740489 031192248 +000000941 000258666 000238914 D|016050105 065492806 +000000941 000266882 000255171 D|057103780 009844238 +000000941 000281703 000282608 D|083144650 030045427 +000000941 000283906 000362782 D|048025817 084409453 +000000941 000317731 000379547 D|056511125 097872162 +000000941 000337251 000387843 D|073391269 009561205 +000000941 000376017 000394792 D|058640475 001318147 +000000941 000387293 000411800 D|037883890 068154303 +000000941 000387763 000425842 D|030321821 057903992 +000000941 000391945 000431896 D|048533114 091822893 +000000941 000401322 000437532 D|098144219 024395248 +000000941 000445026 000437802 D|025063664 047580053 +000000941 000461391 000443484 D|039862026 092517404 +000000941 000463215 000530747 D|075953067 081173028 +000000941 000478836 000531237 D|001140773 069378896 +000000941 000479619 000538487 D|061235651 021261338 +000000941 000493859 000556314 D|051126782 062176530 +000000941 000532047 000584896 D|035640166 044444056 +000000941 000554310 000586040 D|013985322 048317521 +000000941 000568238 000597756 D|006096350 050774517 +000000941 000572260 000608554 D|079675202 037114209 +000000941 000575933 000623530 D|044935572 074031022 +000000941 000739516 000624899 D|065110990 085225403 +000000941 000752657 000669824 D|080216887 081119233 +000000941 000772548 000747845 D|076662164 001946806 +000000941 000776606 000750061 D|093326641 000351652 +000000941 000782998 000757532 D|066709060 082951087 +000000941 000788772 000786953 D|099036204 085415621 +000000941 000833261 000789626 D|059917387 010649050 +000000941 000861367 000796037 D|079315872 068300103 +000000941 000866515 000865212 D|056445524 094105308 +000000941 000871607 000866467 D|025989792 017920665 +000000941 000873366 000883128 D|040870175 007092450 +000000941 000874624 000907387 D|049299242 027027312 +000000941 000948959 000912288 D|093023887 084421006 +000000941 000977088 000937490 D|085469066 013995061 +000000941 000984686 000955332 D|076957931 075344835 +000000941 000990889 000983709 D|007418336 050635693 +000000942 000035583 000023225 D|062408053 023026575 +000000942 000038734 000030538 D|069402355 031585048 +000000942 000116646 000064425 D|015298699 096343456 +000000942 000120786 000077598 D|091576216 094171226 +000000942 000132396 000137448 D|046238810 022376029 +000000942 000151447 000139488 D|036833698 094854685 +000000942 000161271 000146869 D|034397322 094772415 +000000942 000188646 000181149 D|015844991 083338906 +000000942 000210890 000198062 D|050111709 016200251 +000000942 000240015 000221946 D|080356860 044080984 +000000942 000240917 000242672 D|020772263 015696914 +000000942 000279468 000254526 D|069136634 009179566 +000000942 000287349 000255460 D|060043049 039709289 +000000942 000290014 000295431 D|085296249 046862975 +000000942 000312401 000298988 D|080846897 054901117 +000000942 000337130 000299804 D|024672053 028957249 +000000942 000363887 000300422 D|023338329 054219138 +000000942 000414071 000313592 D|028487183 087386563 +000000942 000446688 000370238 D|037690916 020064607 +000000942 000450931 000424143 D|086708794 070855686 +000000942 000510160 000458876 D|059131153 097777275 +000000942 000530623 000463017 D|095036949 070719109 +000000942 000571630 000470494 D|031209466 020366015 +000000942 000608977 000538987 D|051550394 037848042 +000000942 000610161 000560425 D|076662642 072602397 +000000942 000644414 000560602 D|052348806 069557801 +000000942 000655015 000577389 D|009088027 036735592 +000000942 000660767 000636833 D|083832059 058324739 +000000942 000664275 000637987 D|060571982 004953233 +000000942 000681728 000664544 D|037161866 055564071 +000000942 000693862 000687955 D|087665670 099544933 +000000942 000716020 000699916 D|016797016 066957838 +000000942 000753385 000710539 D|094600864 018384728 +000000942 000767681 000719811 D|061203734 055688240 +000000942 000818985 000747941 D|016726931 090854088 +000000942 000842282 000780078 D|026164776 083107490 +000000942 000848994 000787628 D|052236131 047649519 +000000942 000871979 000794250 D|069180152 043349366 +000000942 000876622 000848220 D|021352807 080342637 +000000942 000900416 000857025 D|019189245 032005756 +000000942 000911581 000905283 D|058169207 034875275 +000000942 000912991 000910323 D|072302979 009848373 +000000942 000917120 000921318 D|066636921 033413502 +000000942 000943743 000933265 D|049345806 064221141 +000000942 000945530 000939852 D|006490277 020996211 +000000942 000950507 000940063 D|060190895 034703001 +000000942 000954785 000954724 D|040746726 068600775 +000000942 000957135 000957198 D|066816916 014062880 +000000942 000975888 000970518 D|016181360 091907125 +000000942 000983586 000982830 D|087139658 000053182 +000000943 000003324 000009248 D|044101105 085470047 +000000943 000014125 000032955 D|076787514 040448707 +000000943 000033780 000059785 D|026952560 045536362 +000000943 000037127 000079808 D|096096471 056172745 +000000943 000059415 000079929 D|018168577 041781278 +000000943 000071032 000087145 D|030307599 051436070 +000000943 000077088 000117948 D|004170013 030361959 +000000943 000084400 000131049 D|011209634 007108674 +000000943 000105110 000158094 D|011095359 092427192 +000000943 000131255 000171299 D|089885162 087407135 +000000943 000179032 000210373 D|030007233 046558013 +000000943 000205942 000269469 D|086259659 092202818 +000000943 000218896 000323021 D|088857232 070486156 +000000943 000234649 000342350 D|023351959 097457673 +000000943 000269890 000351115 D|011684689 061974887 +000000943 000322483 000470999 D|092739872 033152620 +000000943 000325163 000485618 D|002490579 062989804 +000000943 000325735 000505419 D|004695892 080033773 +000000943 000331768 000505953 D|098520950 095327164 +000000943 000347699 000513213 D|050038196 052141570 +000000943 000356142 000529602 D|081410681 089568175 +000000943 000371041 000560666 D|068098258 032209601 +000000943 000372033 000568445 D|049945325 006096160 +000000943 000380240 000576514 D|013104870 099033147 +000000943 000402478 000582220 D|051238727 015967144 +000000943 000417898 000613121 D|088466596 049029804 +000000943 000437864 000633131 D|028860600 004796511 +000000943 000465811 000659706 D|060629521 057928684 +000000943 000481025 000684321 D|029045866 075264435 +000000943 000482384 000690025 D|072990517 070707173 +000000943 000488082 000696982 D|048827997 073854539 +000000943 000496102 000720501 D|005656057 022141718 +000000943 000503058 000729365 D|031107086 022936919 +000000943 000536691 000790887 D|034939751 001813776 +000000943 000550285 000800824 D|093077054 003742247 +000000943 000579020 000843247 D|097200099 030610402 +000000943 000616433 000847192 D|090662650 067214431 +000000943 000644077 000872090 D|036727656 068601787 +000000943 000678280 000879520 D|060042404 006182292 +000000943 000722835 000885354 D|048011872 029332686 +000000943 000759070 000897109 D|003127829 048365617 +000000943 000772811 000919194 D|021166439 013717615 +000000943 000810806 000922498 D|033656224 010551114 +000000943 000845501 000930794 D|065769066 091191191 +000000943 000850585 000932729 D|034865753 006305823 +000000943 000932651 000937515 D|054104172 055472474 +000000943 000934153 000939849 D|059124259 016102687 +000000943 000940948 000979050 D|038758499 069374887 +000000943 000978328 000983528 D|069332357 025820465 +000000943 000994864 000987904 D|071858496 031378225 +000000944 000013301 000023294 D|080206092 062884429 +000000944 000015214 000050130 D|011879521 035393456 +000000944 000040720 000057751 D|016110383 019570763 +000000944 000050480 000060326 D|002693304 083832254 +000000944 000064841 000119056 D|043530008 040996641 +000000944 000072055 000121984 D|078200617 041731363 +000000944 000084726 000126659 D|062882449 027899435 +000000944 000086836 000140236 D|031906096 066192167 +000000944 000103461 000170477 D|065494126 086545678 +000000944 000106561 000190724 D|065501772 037797387 +000000944 000138402 000208152 D|012187785 003856597 +000000944 000139665 000228776 D|020872859 045371944 +000000944 000160794 000246635 D|078381872 008729032 +000000944 000172900 000270078 D|028827478 020242404 +000000944 000188998 000280445 D|046408108 072304810 +000000944 000230524 000284030 D|081318037 091381004 +000000944 000306380 000299171 D|039173259 007809198 +000000944 000310841 000320701 D|099612648 081240672 +000000944 000315947 000353924 D|055934827 095103841 +000000944 000349875 000387047 D|060876680 085499616 +000000944 000370605 000390321 D|083444504 038082660 +000000944 000401273 000408306 D|097153781 047062140 +000000944 000403461 000415495 D|064156410 070207752 +000000944 000419386 000419125 D|093111318 031437419 +000000944 000442155 000429056 D|077457339 044768220 +000000944 000458692 000449307 D|076854867 045055307 +000000944 000471552 000479161 D|029069295 081817890 +000000944 000476188 000504540 D|040641777 061444348 +000000944 000476990 000519494 D|043086613 082111582 +000000944 000504601 000562229 D|049603935 094638399 +000000944 000512222 000579327 D|034590827 028919782 +000000944 000539253 000635672 D|004358598 064913001 +000000944 000641863 000646765 D|006793791 085843450 +000000944 000660032 000650879 D|087566963 016358257 +000000944 000661830 000671976 D|010975938 001237893 +000000944 000680873 000742737 D|014324445 069055321 +000000944 000692377 000758502 D|070500919 097911224 +000000944 000726749 000822060 D|041188473 040750356 +000000944 000741147 000846278 D|020318366 096585208 +000000944 000760638 000848289 D|057727368 017615334 +000000944 000770818 000900471 D|025209506 032595123 +000000944 000801576 000915937 D|062988552 046761976 +000000944 000810358 000919319 D|040010711 001470545 +000000944 000817691 000924179 D|096346585 077570392 +000000944 000830296 000929091 D|001558479 094505599 +000000944 000857403 000940708 D|044715663 075482774 +000000944 000884606 000955711 D|049241704 088229220 +000000944 000892214 000976817 D|076946208 086288711 +000000944 000911580 000980705 D|081273052 017914836 +000000944 000951071 000988177 D|013702408 011995778 +000000945 000033081 000006646 D|030913701 072511752 +000000945 000056101 000037345 D|079071175 034091785 +000000945 000075408 000046165 D|060985829 066300548 +000000945 000082685 000053995 D|045828583 080341292 +000000945 000089619 000089059 D|051219550 011047475 +000000945 000114347 000091785 D|072255510 021136801 +000000945 000143353 000094161 D|007232331 077617655 +000000945 000158249 000132222 D|086129120 009110388 +000000945 000206687 000143811 D|085340681 004860334 +000000945 000247421 000213346 D|080960078 061437121 +000000945 000277737 000241155 D|069145330 087779120 +000000945 000300105 000288399 D|054798500 039039703 +000000945 000312117 000298556 D|028483959 077899755 +000000945 000315569 000368178 D|028476084 063693205 +000000945 000319970 000370804 D|031390455 035820635 +000000945 000352754 000403035 D|088617853 089128117 +000000945 000368884 000420002 D|093096419 016699305 +000000945 000379196 000446431 D|084298612 008778987 +000000945 000385732 000471855 D|015118709 042511866 +000000945 000390286 000489142 D|004755194 030477677 +000000945 000394303 000511372 D|030206740 041033624 +000000945 000407714 000513954 D|071341050 038517433 +000000945 000414774 000519702 D|063774054 089982687 +000000945 000420546 000520495 D|021989942 006354217 +000000945 000426326 000523682 D|014429384 069601260 +000000945 000440168 000527680 D|032236738 081837798 +000000945 000531309 000595541 D|031193652 000543643 +000000945 000532434 000632577 D|085263263 017512523 +000000945 000534038 000637274 D|014493334 024313541 +000000945 000549919 000647229 D|020595414 000731614 +000000945 000571142 000667612 D|085128461 097934851 +000000945 000574830 000675865 D|075043668 089134471 +000000945 000578186 000708100 D|054866360 078053984 +000000945 000588497 000712524 D|062302224 053428548 +000000945 000601498 000722413 D|015997251 089792702 +000000945 000609773 000739522 D|034845505 078635904 +000000945 000629708 000748270 D|011426055 066039269 +000000945 000645747 000751057 D|084847829 026140508 +000000945 000670583 000773334 D|012919388 039318217 +000000945 000706136 000773400 D|056623652 039659716 +000000945 000708984 000821955 D|015628695 094869445 +000000945 000756741 000830978 D|043174959 057389217 +000000945 000768267 000831925 D|081911389 082833613 +000000945 000771905 000861969 D|020772937 046493738 +000000945 000773397 000890348 D|084114891 096929607 +000000945 000788901 000894867 D|073530871 063994770 +000000945 000827998 000927849 D|035346648 062003849 +000000945 000834403 000929098 D|033025441 074610046 +000000945 000928288 000935995 D|096073571 016520080 +000000945 000940625 000974739 D|021070088 031823570 +000000946 000016036 000006022 D|084787335 035973393 +000000946 000020708 000073136 D|090355431 097806201 +000000946 000038808 000105944 D|007779799 080558102 +000000946 000069200 000114524 D|079438955 040536123 +000000946 000088666 000121298 D|086998206 091743238 +000000946 000093289 000129258 D|046011285 052056056 +000000946 000096603 000139613 D|021173652 012669447 +000000946 000181558 000143265 D|068022547 040791334 +000000946 000191225 000164407 D|096622271 057891727 +000000946 000196296 000179377 D|084158238 054749393 +000000946 000202509 000227456 D|006451694 091012507 +000000946 000260385 000251776 D|087964462 027436180 +000000946 000285117 000253567 D|051171608 053310639 +000000946 000306968 000254067 D|056709910 009056914 +000000946 000338747 000275518 D|073461775 013441402 +000000946 000348560 000292981 D|058846680 060357086 +000000946 000353506 000319458 D|099810147 038954838 +000000946 000368403 000337961 D|067715574 038283828 +000000946 000424457 000362176 D|080659714 031451497 +000000946 000464710 000366405 D|040345391 076437957 +000000946 000466115 000409190 D|086324127 073893480 +000000946 000484387 000413569 D|080185863 058887732 +000000946 000494486 000431354 D|011267033 080765716 +000000946 000521854 000489014 D|099866083 022750613 +000000946 000535676 000497007 D|049218456 034924550 +000000946 000637560 000503242 D|024520709 039538876 +000000946 000644177 000514364 D|056433657 078339259 +000000946 000644386 000520574 D|012506711 089012974 +000000946 000645322 000565098 D|042786070 087360559 +000000946 000647064 000582195 D|057951602 073361876 +000000946 000687550 000588550 D|065377229 036044217 +000000946 000704251 000613728 D|059511712 011262331 +000000946 000707866 000633377 D|012654959 070173438 +000000946 000714173 000640473 D|017385259 035818612 +000000946 000719863 000692614 D|057848628 009258380 +000000946 000736148 000727607 D|095600760 055691403 +000000946 000797830 000733524 D|061329963 044015687 +000000946 000863353 000735913 D|049056064 019409714 +000000946 000875598 000742069 D|012357843 071075478 +000000946 000885230 000778365 D|024247407 089650227 +000000946 000893852 000782961 D|086541859 035515870 +000000946 000911219 000820579 D|052269417 017450670 +000000946 000917423 000830227 D|005233887 018612600 +000000946 000921278 000839749 D|050521855 098982115 +000000946 000926787 000857251 D|064245357 033520013 +000000946 000936177 000869453 D|077755230 062003614 +000000946 000952686 000871260 D|014044230 097481695 +000000946 000953087 000873970 D|024810774 097460873 +000000946 000957957 000904960 D|042757316 011042929 +000000946 000982383 000928023 D|099998631 006934425 +000000947 000004183 000004765 D|043385001 030270684 +000000947 000007567 000031028 D|057931552 074677481 +000000947 000016430 000102237 D|055263965 057152200 +000000947 000026971 000107641 D|032085504 066116428 +000000947 000035847 000122591 D|042379559 071434923 +000000947 000091394 000168930 D|048756898 071154116 +000000947 000096423 000170337 D|012064651 088858787 +000000947 000138501 000209336 D|011057124 052712457 +000000947 000139278 000210843 D|073007745 065680818 +000000947 000140988 000221127 D|043581404 009565747 +000000947 000173237 000234130 D|058996483 085618578 +000000947 000209922 000244890 D|002529284 098327789 +000000947 000230701 000257937 D|035640972 067251151 +000000947 000287665 000292175 D|059640234 021071919 +000000947 000313471 000307376 D|009476788 035098203 +000000947 000349399 000376831 D|002274710 031741934 +000000947 000402897 000407568 D|026970831 013746393 +000000947 000439680 000428405 D|008534186 060848740 +000000947 000445718 000484914 D|055008312 062937781 +000000947 000446947 000491784 D|088337858 004954469 +000000947 000458312 000508772 D|036866422 029798211 +000000947 000466249 000538873 D|057160985 069133162 +000000947 000497747 000565621 D|085453884 052619926 +000000947 000498374 000573916 D|094271295 042869826 +000000947 000520101 000576040 D|086914025 038526880 +000000947 000543323 000602270 D|018145915 049735318 +000000947 000553983 000602618 D|083501358 025786383 +000000947 000585508 000612195 D|081833578 027374890 +000000947 000619467 000669277 D|029398262 032782884 +000000947 000621188 000681216 D|069329154 077774821 +000000947 000629853 000707823 D|007244172 091329187 +000000947 000635731 000720073 D|035101438 017755502 +000000947 000654312 000725635 D|082413900 001464605 +000000947 000680513 000731393 D|083087046 069787484 +000000947 000701328 000741852 D|017968901 031333531 +000000947 000703512 000756254 D|096146802 098179921 +000000947 000723888 000760891 D|051177068 079204559 +000000947 000756952 000775477 D|086502403 000818094 +000000947 000777321 000805325 D|036221221 011326937 +000000947 000791927 000812772 D|071242264 057790143 +000000947 000828510 000814814 D|049379897 004253874 +000000947 000861488 000815886 D|021250226 077603720 +000000947 000889572 000881194 D|011294147 057188793 +000000947 000910340 000898292 D|065896890 076528885 +000000947 000912888 000918557 D|062380906 028569182 +000000947 000926790 000925338 D|006765533 025634066 +000000947 000953111 000927146 D|013072300 054682153 +000000947 000958812 000931915 D|024098917 046833693 +000000947 000969376 000933421 D|025537529 002959028 +000000947 000991225 000982185 D|004031804 060674699 +000000948 000012559 000011626 D|001656668 024182777 +000000948 000021061 000015986 D|051362640 012846441 +000000948 000026616 000016937 D|013683474 030971929 +000000948 000061769 000039734 D|074878766 082303614 +000000948 000080528 000050595 D|025083755 099562248 +000000948 000134046 000058235 D|030598398 053973528 +000000948 000178187 000086658 D|072119814 023130603 +000000948 000229036 000097332 D|085002629 014072865 +000000948 000235059 000111657 D|059991902 028931086 +000000948 000250097 000165846 D|008759183 083183058 +000000948 000257232 000247521 D|076390416 010045247 +000000948 000313612 000251294 D|090130472 093326520 +000000948 000323764 000280568 D|077033893 046105088 +000000948 000328228 000303339 D|057264433 088804622 +000000948 000333846 000321488 D|097014713 002918764 +000000948 000337191 000325436 D|074378999 051269030 +000000948 000365230 000349395 D|084503782 009068364 +000000948 000387742 000369486 D|010874124 094405859 +000000948 000388281 000421152 D|046793125 046875403 +000000948 000395613 000434874 D|071909080 043751355 +000000948 000428988 000461246 D|040117798 009541141 +000000948 000449158 000466997 D|074484371 033219534 +000000948 000460586 000491151 D|004682647 042854678 +000000948 000475661 000494831 D|058325537 076961243 +000000948 000484079 000502330 D|024648297 028359570 +000000948 000489167 000505188 D|046488873 004523523 +000000948 000491233 000529836 D|087032453 083060148 +000000948 000493252 000533800 D|048484100 011758817 +000000948 000551906 000550271 D|060785444 026281387 +000000948 000584910 000627427 D|017719884 099752473 +000000948 000644583 000627671 D|094558751 062810504 +000000948 000691725 000637021 D|054537518 091062291 +000000948 000693108 000676431 D|029751492 000148573 +000000948 000693771 000705974 D|083493159 063149254 +000000948 000697902 000731135 D|033025188 030264386 +000000948 000698040 000745270 D|069390553 095752887 +000000948 000702893 000759721 D|022029009 082742952 +000000948 000707108 000764878 D|018545974 068847707 +000000948 000737562 000766031 D|052847602 086230038 +000000948 000745836 000769329 D|061245746 006210680 +000000948 000762220 000816123 D|090776215 001955639 +000000948 000763170 000849913 D|091910155 019321605 +000000948 000763665 000878279 D|069402975 042027128 +000000948 000806707 000888934 D|008592098 097895432 +000000948 000813612 000890173 D|034361646 051948705 +000000948 000819377 000907510 D|048080501 071160335 +000000948 000886473 000913532 D|017970850 064544030 +000000948 000975877 000938386 D|005089014 084001035 +000000948 000986291 000950378 D|096614980 047655186 +000000948 000988565 000979953 D|096233348 095771715 +000000949 000025138 000026301 D|043104688 078807532 +000000949 000030514 000074177 D|059648141 066471820 +000000949 000039398 000077977 D|050434989 023310796 +000000949 000063914 000089288 D|014968245 043620570 +000000949 000068578 000157084 D|017449953 098152369 +000000949 000081396 000236580 D|039122954 038963420 +000000949 000099396 000253405 D|068213662 015247861 +000000949 000111189 000272171 D|054633090 092018904 +000000949 000114116 000286612 D|054489686 089642986 +000000949 000115316 000295727 D|043442054 025106836 +000000949 000134106 000309185 D|047236750 031553496 +000000949 000150768 000317634 D|054069020 033792943 +000000949 000164099 000331014 D|062509263 053727834 +000000949 000205755 000332632 D|037455726 019689294 +000000949 000223796 000333561 D|057660176 026511286 +000000949 000244638 000400697 D|097728778 089656701 +000000949 000264392 000407823 D|014947131 083409155 +000000949 000276031 000420087 D|074580464 062409906 +000000949 000291020 000442500 D|098602513 083340967 +000000949 000322590 000476343 D|073818635 086185049 +000000949 000395114 000478968 D|032874392 056138864 +000000949 000399134 000526694 D|057836397 003784624 +000000949 000415958 000527205 D|056478886 037508031 +000000949 000498587 000529347 D|063001436 044080752 +000000949 000511674 000556573 D|017301696 049782471 +000000949 000515467 000575136 D|020420133 064634864 +000000949 000527705 000575432 D|009068834 008462833 +000000949 000539406 000582741 D|058648626 042257990 +000000949 000550346 000594595 D|002571760 009737074 +000000949 000572117 000640577 D|020807423 088751967 +000000949 000581104 000657132 D|061202098 086160707 +000000949 000583679 000688208 D|024449742 072824951 +000000949 000595208 000699861 D|095037752 027988316 +000000949 000610518 000718289 D|045862000 005788996 +000000949 000618857 000720810 D|036937605 078334038 +000000949 000622278 000733315 D|055219836 056597286 +000000949 000631880 000752799 D|023802750 008147913 +000000949 000647496 000756639 D|079806582 079108409 +000000949 000656938 000770387 D|071202794 071888827 +000000949 000713228 000809850 D|019440214 071208902 +000000949 000729947 000819930 D|076898656 015112810 +000000949 000760849 000867456 D|023648599 009683296 +000000949 000769709 000878941 D|072398510 076488551 +000000949 000775786 000879174 D|029521153 040480348 +000000949 000779362 000914174 D|081464854 058702503 +000000949 000808823 000915444 D|038283024 087530965 +000000949 000878361 000978451 D|090032271 094230058 +000000949 000887318 000980826 D|094610313 082594685 +000000949 000900623 000984488 D|074943393 006958942 +000000949 000903757 000988292 D|066597895 008715570 +000000950 000029929 000010418 D|051636858 057773915 +000000950 000095062 000018657 D|077819752 023549360 +000000950 000095668 000037370 D|029685651 046578006 +000000950 000114076 000048664 D|007592007 046548882 +000000950 000115019 000055222 D|061774327 009906204 +000000950 000122862 000070013 D|020468896 029233027 +000000950 000135403 000086724 D|076135914 055200596 +000000950 000152034 000090254 D|090978125 043700218 +000000950 000154017 000093256 D|054689090 059850659 +000000950 000161395 000117877 D|082564338 046229596 +000000950 000176296 000132255 D|009150370 019783737 +000000950 000256267 000169157 D|031758992 012515702 +000000950 000282191 000191255 D|094544751 005450044 +000000950 000286060 000195056 D|032901257 049778324 +000000950 000399554 000196095 D|044797511 064734801 +000000950 000420078 000230855 D|098014596 054309424 +000000950 000439407 000268316 D|098125646 017899486 +000000950 000439623 000299555 D|066357431 054354210 +000000950 000474628 000336675 D|059194118 018529419 +000000950 000483346 000371921 D|078277114 043631017 +000000950 000493949 000377938 D|032985446 055726119 +000000950 000507430 000436955 D|038691726 060259315 +000000950 000516767 000449207 D|054329031 008004804 +000000950 000531609 000478414 D|004128703 029178103 +000000950 000534260 000501262 D|018287200 097436280 +000000950 000547416 000546757 D|022375261 036372175 +000000950 000550783 000614081 D|039132447 075651512 +000000950 000561339 000629770 D|068565743 083067629 +000000950 000567172 000631953 D|089324148 086903653 +000000950 000574862 000638088 D|070014874 012695735 +000000950 000577014 000659576 D|011042890 008947880 +000000950 000578382 000681652 D|037291821 024602281 +000000950 000612572 000684557 D|038232912 059988323 +000000950 000614736 000700096 D|057156097 094801568 +000000950 000615096 000712193 D|014873940 086073291 +000000950 000637331 000722536 D|021186134 083839777 +000000950 000712595 000756944 D|068308895 023475605 +000000950 000738053 000761230 D|011624751 079989843 +000000950 000742442 000787629 D|069839114 058072566 +000000950 000747938 000803557 D|028999496 050704727 +000000950 000751181 000819919 D|000432708 092927041 +000000950 000751867 000840351 D|041598702 013351530 +000000950 000863398 000877381 D|039478702 044149308 +000000950 000907101 000877905 D|017388371 065359768 +000000950 000918278 000933687 D|039127274 040644084 +000000950 000941020 000945541 D|070395419 006223104 +000000950 000964434 000975632 D|044622643 091175604 +000000950 000967194 000978441 D|062119041 017765948 +000000950 000968290 000982407 D|054467700 069718259 +000000950 000983986 000984523 D|050688561 010992275 +000000951 000008885 000017665 D|058813496 072258367 +000000951 000018494 000033395 D|024749857 054474913 +000000951 000054231 000051484 D|095051099 009397453 +000000951 000084332 000066656 D|062820198 027020543 +000000951 000088105 000067948 D|016217903 079654746 +000000951 000120927 000072026 D|008220282 061862171 +000000951 000126876 000088720 D|015956297 088008108 +000000951 000127040 000103073 D|055866397 095886809 +000000951 000147103 000126548 D|008805280 081183699 +000000951 000156822 000170466 D|084171916 074877354 +000000951 000186029 000174566 D|083248736 058763012 +000000951 000203426 000188274 D|002229851 087692821 +000000951 000307080 000201985 D|011339986 088320712 +000000951 000307128 000210729 D|011522612 066743401 +000000951 000320200 000218153 D|047651306 083338519 +000000951 000346461 000223939 D|028286954 020253626 +000000951 000347760 000237753 D|029300692 053858973 +000000951 000365992 000240153 D|049216722 019614617 +000000951 000435787 000244737 D|038749181 065052035 +000000951 000438888 000260139 D|099596772 028212857 +000000951 000440649 000277266 D|086862217 045089872 +000000951 000442234 000303079 D|071161809 088323259 +000000951 000466877 000330359 D|037257526 049923229 +000000951 000469863 000332911 D|088272234 047784005 +000000951 000477595 000348845 D|024802383 053897864 +000000951 000483215 000353394 D|045203763 090576076 +000000951 000483831 000399375 D|054447433 017765024 +000000951 000487202 000462570 D|009078425 031858906 +000000951 000613341 000478033 D|060816830 060429116 +000000951 000621594 000513984 D|049500702 085533984 +000000951 000623553 000521216 D|065348075 007322978 +000000951 000625064 000576427 D|047327227 078520564 +000000951 000638770 000576583 D|033346353 007746702 +000000951 000668425 000617836 D|016602872 001547094 +000000951 000681321 000623947 D|051913011 098845493 +000000951 000728095 000720968 D|015087888 031972067 +000000951 000751999 000753802 D|064627110 034755122 +000000951 000764521 000758181 D|052770937 062182256 +000000951 000802746 000784510 D|010341158 008311455 +000000951 000803058 000801120 D|048276683 054047587 +000000951 000805267 000817276 D|096188400 079541559 +000000951 000848485 000823884 D|095048441 036019728 +000000951 000851354 000834833 D|098392882 085628310 +000000951 000869931 000843021 D|022582106 021319237 +000000951 000870845 000848025 D|092150753 030041441 +000000951 000898884 000894132 D|010665298 028984042 +000000951 000947831 000928593 D|033947213 024726879 +000000951 000957308 000951569 D|024842911 043737114 +000000951 000979352 000976185 D|042096196 066418799 +000000951 000982642 000990790 D|073132316 083926135 +000000952 000013405 000001858 D|045012965 004357137 +000000952 000048847 000005339 D|045490483 062426176 +000000952 000119586 000011915 D|084439927 034558689 +000000952 000137498 000014076 D|033907616 015729715 +000000952 000143913 000024725 D|048678003 099097668 +000000952 000177481 000045550 D|084241228 069750405 +000000952 000192318 000082682 D|006961644 047917845 +000000952 000216456 000142069 D|062959817 015795041 +000000952 000217746 000167388 D|031280183 020461825 +000000952 000231181 000182910 D|014153835 093390701 +000000952 000258925 000238117 D|075059312 056544880 +000000952 000294103 000244259 D|065561530 006908634 +000000952 000306888 000249600 D|030715176 041370188 +000000952 000326964 000254488 D|088256667 082102491 +000000952 000331190 000265460 D|059953902 054611998 +000000952 000332866 000266872 D|039255970 013406197 +000000952 000338796 000292440 D|062310200 091387916 +000000952 000388871 000326647 D|062522110 009376738 +000000952 000393988 000337681 D|021170716 033221445 +000000952 000456158 000352935 D|093447588 085656438 +000000952 000465361 000373839 D|023094631 040050385 +000000952 000540950 000382890 D|015295440 023291253 +000000952 000550558 000390360 D|095208923 024950415 +000000952 000553291 000407806 D|020185545 030994599 +000000952 000567492 000470845 D|022652168 057503201 +000000952 000587148 000472470 D|007439279 056934557 +000000952 000595137 000501306 D|098130264 017575414 +000000952 000599326 000511141 D|067925275 057975593 +000000952 000599969 000544423 D|053695787 069895356 +000000952 000624207 000592984 D|056961233 090153209 +000000952 000627577 000602156 D|074004476 033070379 +000000952 000644125 000627863 D|040844599 036295806 +000000952 000655570 000632199 D|084179191 055924770 +000000952 000680596 000649669 D|036592670 031777046 +000000952 000710182 000662470 D|081298552 062537462 +000000952 000726581 000679725 D|032012235 054509694 +000000952 000741382 000712892 D|021046844 034992777 +000000952 000742256 000722395 D|039478880 039538039 +000000952 000757050 000722490 D|019898676 088294008 +000000952 000762575 000734912 D|074630811 047095960 +000000952 000764721 000756999 D|014626437 009116543 +000000952 000765829 000787842 D|007359724 059994247 +000000952 000776439 000800219 D|007845108 003794676 +000000952 000845583 000823883 D|066105353 065277919 +000000952 000896066 000845918 D|075563725 024411141 +000000952 000924956 000860972 D|031249298 015273224 +000000952 000943927 000878847 D|045608354 081807601 +000000952 000951126 000946471 D|061088674 020567525 +000000952 000988651 000991815 D|050594128 058859101 +000000952 000995901 000996394 D|011594492 082173407 +000000953 000036599 000006335 D|024835148 040887072 +000000953 000063080 000111381 D|022101154 097538325 +000000953 000086872 000134888 D|003203778 089072131 +000000953 000098987 000155083 D|025004658 042062187 +000000953 000120252 000166980 D|066813556 016907465 +000000953 000143919 000238356 D|063315616 025262598 +000000953 000145149 000238657 D|044254257 092267687 +000000953 000165759 000239567 D|045835188 033490471 +000000953 000218347 000246863 D|040251050 084674265 +000000953 000220685 000278708 D|040712434 033869779 +000000953 000234076 000280481 D|011061992 092619825 +000000953 000239121 000291195 D|090006417 026841054 +000000953 000314308 000296523 D|029487468 023279150 +000000953 000357963 000299919 D|067625140 092722882 +000000953 000387659 000329175 D|010622302 050558546 +000000953 000409361 000356790 D|045651171 080334408 +000000953 000425691 000384627 D|025777264 091422400 +000000953 000442195 000397456 D|073629256 002010095 +000000953 000463284 000410487 D|051709160 004196072 +000000953 000493169 000470696 D|076818347 047768276 +000000953 000493953 000478859 D|010949441 093557291 +000000953 000529812 000489967 D|096065785 072428696 +000000953 000588578 000497839 D|036019697 083451539 +000000953 000614992 000500613 D|064809451 088732182 +000000953 000646160 000503109 D|056447849 060634153 +000000953 000656589 000511594 D|075193660 011395652 +000000953 000670006 000517998 D|025021026 083320735 +000000953 000671309 000521946 D|073625695 008095307 +000000953 000697259 000522672 D|039638559 050897804 +000000953 000707045 000527807 D|048710945 008051699 +000000953 000717487 000543858 D|055617447 037079442 +000000953 000736226 000557990 D|041646054 066182080 +000000953 000755631 000632809 D|085122235 088082115 +000000953 000779359 000636224 D|038041537 016425338 +000000953 000795173 000636973 D|072690731 024780859 +000000953 000796201 000667099 D|023754536 094563494 +000000953 000805569 000680139 D|088608586 064788222 +000000953 000839463 000740784 D|034322244 038626916 +000000953 000840429 000744094 D|073780109 032736550 +000000953 000847684 000749887 D|049220614 027911571 +000000953 000866953 000752373 D|071213677 005805558 +000000953 000893793 000806804 D|087204142 040098228 +000000953 000935498 000806994 D|095903691 099889786 +000000953 000936847 000882715 D|025570053 044196734 +000000953 000938601 000918587 D|082102549 014160206 +000000953 000957187 000921201 D|043926560 053619629 +000000953 000970251 000938863 D|051685094 079756115 +000000953 000971593 000939099 D|097903364 065502445 +000000953 000981658 000970838 D|092892463 050244265 +000000953 000991822 000976119 D|028485058 026273688 +000000954 000011419 000002994 D|091472344 069476772 +000000954 000030551 000005093 D|084837267 018286210 +000000954 000060596 000007624 D|013139951 097483834 +000000954 000074046 000061459 D|040495832 079733319 +000000954 000082649 000115175 D|085389560 067239377 +000000954 000100644 000159827 D|005368484 044836362 +000000954 000102782 000165512 D|085037058 059879959 +000000954 000114312 000175107 D|095624242 016897484 +000000954 000161224 000177208 D|065156474 065628274 +000000954 000211847 000182741 D|017524298 018164909 +000000954 000213650 000190223 D|039318479 081638496 +000000954 000217638 000197380 D|003901301 099761858 +000000954 000256894 000201154 D|051000083 059343476 +000000954 000261151 000231110 D|069075815 050211953 +000000954 000275500 000263120 D|075621709 037738231 +000000954 000281845 000292867 D|030862586 005790793 +000000954 000282094 000299523 D|019523862 026661279 +000000954 000302587 000366325 D|072781638 070264305 +000000954 000334538 000400892 D|012885796 075841409 +000000954 000334768 000437600 D|057974663 090591463 +000000954 000366475 000483912 D|089416827 009473504 +000000954 000371342 000490428 D|022667496 082979644 +000000954 000381633 000494036 D|098611793 098201656 +000000954 000431966 000516938 D|093895433 085034870 +000000954 000453858 000534567 D|048334603 051451990 +000000954 000455350 000542500 D|025992266 013452931 +000000954 000464550 000544368 D|087270979 000830464 +000000954 000561590 000550802 D|081931986 040344123 +000000954 000631515 000597035 D|093995083 030610674 +000000954 000635454 000600993 D|045964719 043924015 +000000954 000653374 000611702 D|022160608 092927982 +000000954 000760323 000634159 D|048007809 081919137 +000000954 000763471 000648663 D|069997093 065523975 +000000954 000764796 000661899 D|009920746 052698542 +000000954 000792785 000662119 D|027460931 051038962 +000000954 000813687 000664553 D|082360860 039029304 +000000954 000821482 000697716 D|063280775 078429277 +000000954 000831450 000742111 D|084174663 027991522 +000000954 000849725 000778369 D|033803762 034337625 +000000954 000856738 000780461 D|062050953 027597653 +000000954 000864558 000785712 D|069141042 099452071 +000000954 000867170 000801510 D|097427775 059737338 +000000954 000898760 000854327 D|074535670 059144956 +000000954 000914577 000875243 D|061049258 031525608 +000000954 000922648 000901601 D|026732766 008822134 +000000954 000936201 000903292 D|024350728 073964614 +000000954 000961196 000905661 D|015492928 099638005 +000000954 000984277 000931155 D|002607355 072481789 +000000954 000987821 000987796 D|039417343 099772458 +000000954 000997504 000996651 D|065659530 020799759 +000000955 000047458 000016933 D|055431552 091238437 +000000955 000059954 000061189 D|094619037 075392680 +000000955 000066665 000062632 D|022205179 037885474 +000000955 000066710 000077047 D|036949700 053394069 +000000955 000110634 000120385 D|011821055 053705793 +000000955 000141891 000139132 D|075580400 086323514 +000000955 000149364 000142009 D|079210249 093158224 +000000955 000176807 000170104 D|038984705 014031984 +000000955 000208487 000194191 D|096132003 096284605 +000000955 000241916 000197270 D|003641605 061715514 +000000955 000352400 000201154 D|079768534 028721605 +000000955 000356728 000201902 D|062648582 033455765 +000000955 000359736 000268579 D|017984774 004182153 +000000955 000451479 000268604 D|012441165 058438766 +000000955 000453541 000302519 D|025044771 006697550 +000000955 000454294 000320024 D|031378117 052528917 +000000955 000498823 000329469 D|050902172 061948743 +000000955 000499911 000334080 D|046756328 099961374 +000000955 000523172 000353417 D|062518663 038832869 +000000955 000530416 000388953 D|018455335 003018187 +000000955 000537076 000413444 D|004180177 050561532 +000000955 000551928 000454201 D|078460786 011803361 +000000955 000564989 000469403 D|085883882 088945444 +000000955 000592294 000567100 D|061106503 058607887 +000000955 000657258 000592132 D|068089553 089578606 +000000955 000661057 000596033 D|094778921 028217944 +000000955 000668594 000600278 D|017840052 018786996 +000000955 000689235 000638026 D|061544495 098888272 +000000955 000695161 000668326 D|039940584 043154660 +000000955 000701221 000683613 D|061689369 052968991 +000000955 000705126 000687181 D|047448168 095224094 +000000955 000711246 000697973 D|066291326 031602609 +000000955 000720439 000712409 D|044578269 001170949 +000000955 000723615 000737556 D|090961883 043488894 +000000955 000738003 000768784 D|015811729 063794221 +000000955 000747264 000771964 D|062001381 027556214 +000000955 000802996 000773356 D|031414103 022629251 +000000955 000831574 000779620 D|093615824 051108788 +000000955 000850217 000789967 D|058589292 097766377 +000000955 000861894 000799131 D|025572277 094513005 +000000955 000886462 000846673 D|053824270 050956282 +000000955 000902829 000880022 D|012893479 037086486 +000000955 000909611 000882408 D|090895259 003402616 +000000955 000909653 000894097 D|053328427 053655358 +000000955 000912455 000897726 D|085326490 064617691 +000000955 000948503 000916085 D|015587181 010853894 +000000955 000956120 000924175 D|079049652 093671949 +000000955 000982567 000937374 D|071071659 054050590 +000000955 000995787 000944954 D|079369064 098930147 +000000955 000997800 000960311 D|051039441 002055240 +000000956 000044293 000000589 D|084058651 069717407 +000000956 000076016 000035638 D|055473956 050218968 +000000956 000099481 000054969 D|058242905 038469014 +000000956 000135445 000059740 D|005264648 083114395 +000000956 000177480 000081931 D|018385209 082639220 +000000956 000179851 000095949 D|005494973 000362624 +000000956 000193353 000107965 D|026363791 034815038 +000000956 000205931 000171675 D|012796196 006901836 +000000956 000255066 000180115 D|099851773 008397811 +000000956 000351125 000193714 D|007236881 098608472 +000000956 000376742 000260776 D|030097503 078391401 +000000956 000376825 000286328 D|024507085 094344716 +000000956 000391746 000292102 D|065628845 043112777 +000000956 000392649 000368735 D|092847219 047215136 +000000956 000410404 000372484 D|076387055 090472956 +000000956 000414540 000387193 D|087683339 015383831 +000000956 000436832 000391880 D|080623630 061902260 +000000956 000448904 000396191 D|031319825 088700756 +000000956 000453925 000418107 D|005968212 099399017 +000000956 000490413 000433606 D|052544027 077264541 +000000956 000513091 000435788 D|066739741 055115533 +000000956 000519985 000473476 D|074969952 078210075 +000000956 000522189 000512854 D|038590405 041704541 +000000956 000530262 000517518 D|071977313 079752134 +000000956 000557974 000539834 D|090898790 075034454 +000000956 000567251 000555953 D|061853720 039854023 +000000956 000608963 000562872 D|094878918 076517701 +000000956 000614528 000562872 D|004451563 080531757 +000000956 000656340 000585278 D|039214814 000881339 +000000956 000702829 000597280 D|088702017 008967768 +000000956 000710782 000633947 D|044156920 077280760 +000000956 000724313 000659058 D|097273417 083635090 +000000956 000729450 000690391 D|010934437 066532776 +000000956 000798885 000700746 D|074325652 011812538 +000000956 000802878 000732163 D|039850843 024157842 +000000956 000804351 000746788 D|078390897 012487374 +000000956 000807178 000781383 D|068783767 099415895 +000000956 000822577 000785867 D|082327523 063657078 +000000956 000862434 000792608 D|063888029 050783205 +000000956 000866160 000801284 D|095369522 075447921 +000000956 000868151 000823356 D|094262906 079448590 +000000956 000884141 000831833 D|023119379 097573220 +000000956 000884204 000834727 D|066850428 098682116 +000000956 000896983 000862465 D|028565170 043287803 +000000956 000902374 000913475 D|042981890 036403410 +000000956 000923053 000936836 D|089026301 000065881 +000000956 000944777 000937571 D|040789537 046295886 +000000956 000964076 000958580 D|047565076 033098428 +000000956 000979571 000961528 D|080088140 053137445 +000000956 000979886 000996199 D|018868213 018538424 +000000957 000019570 000011573 D|046904196 048605056 +000000957 000042033 000022796 D|029840872 014221981 +000000957 000052603 000073400 D|008518573 014321397 +000000957 000135311 000084039 D|006416771 054405681 +000000957 000168315 000086000 D|066679194 028506433 +000000957 000169041 000095698 D|057320458 007507026 +000000957 000196292 000148278 D|068032500 022631620 +000000957 000214912 000175002 D|059255182 062466828 +000000957 000215924 000202430 D|076134277 018442681 +000000957 000225870 000211701 D|029835749 058105478 +000000957 000237640 000213205 D|003841649 098616694 +000000957 000249731 000227894 D|015188659 093596360 +000000957 000254338 000232708 D|025871960 017622787 +000000957 000300315 000238839 D|074114372 009458169 +000000957 000359371 000249376 D|076160410 098986847 +000000957 000366277 000271565 D|086181679 064745283 +000000957 000388137 000274244 D|046563573 087676418 +000000957 000426479 000301345 D|051468729 034444217 +000000957 000435196 000305289 D|028628948 086505953 +000000957 000442684 000320905 D|089206956 090250768 +000000957 000456320 000329986 D|091257949 047700006 +000000957 000466845 000336542 D|085707230 098179287 +000000957 000494284 000369358 D|088077035 030009900 +000000957 000494741 000391194 D|097294571 065006419 +000000957 000496786 000434580 D|048781455 006071049 +000000957 000505629 000523062 D|045499739 065688270 +000000957 000518222 000574834 D|020658274 084321353 +000000957 000531765 000577401 D|071403735 039540742 +000000957 000550959 000578831 D|007166110 081322108 +000000957 000599883 000594419 D|016582300 097812545 +000000957 000635923 000600041 D|035189592 064271834 +000000957 000654092 000623648 D|011670361 087558193 +000000957 000680725 000656437 D|058708740 051725577 +000000957 000686867 000691200 D|033573548 075348641 +000000957 000703209 000702953 D|088522802 028397124 +000000957 000712060 000742224 D|098258620 040068230 +000000957 000717271 000753978 D|089814785 091245078 +000000957 000790984 000757543 D|029649830 036428341 +000000957 000814490 000781994 D|017039256 021059778 +000000957 000820586 000783928 D|035676366 040750185 +000000957 000827311 000784492 D|076044000 055433613 +000000957 000850985 000816624 D|096457829 006907167 +000000957 000857224 000838279 D|087364709 067027122 +000000957 000864127 000881526 D|099326977 017483427 +000000957 000887686 000884723 D|082679304 062104938 +000000957 000901041 000901312 D|025866526 017801487 +000000957 000908194 000925006 D|019942114 013080086 +000000957 000925510 000943739 D|004468426 074067664 +000000957 000966107 000979160 D|051095812 023231398 +000000957 000974653 000986192 D|072703972 069856341 +000000958 000023801 000021565 D|029284484 070049202 +000000958 000028133 000039890 D|070590130 044829351 +000000958 000036433 000112760 D|088204937 098405254 +000000958 000066584 000162612 D|026438672 060764767 +000000958 000132874 000172863 D|034428099 071054758 +000000958 000152841 000210676 D|094777690 086810877 +000000958 000170191 000214261 D|064301498 062657525 +000000958 000186333 000228191 D|079731519 099327030 +000000958 000187280 000238278 D|064682443 029372920 +000000958 000220156 000245466 D|082806829 037515525 +000000958 000229858 000250063 D|051584042 024597312 +000000958 000233370 000273136 D|085274180 086569583 +000000958 000276872 000277454 D|073251482 045733507 +000000958 000279847 000308876 D|036957779 013284658 +000000958 000295298 000308951 D|081932400 053899668 +000000958 000296063 000359665 D|049247930 038525829 +000000958 000307018 000413980 D|031766159 098839579 +000000958 000311228 000422335 D|015333347 083446142 +000000958 000316504 000494741 D|057254438 075720333 +000000958 000346250 000505256 D|092672612 007956968 +000000958 000418259 000518974 D|079807147 000364212 +000000958 000444075 000539026 D|019910853 055429536 +000000958 000458440 000540389 D|025837342 007496096 +000000958 000462900 000559546 D|011462303 089373136 +000000958 000479028 000580290 D|012666515 065473976 +000000958 000479746 000589053 D|003607847 061698250 +000000958 000500066 000601642 D|055109999 097282934 +000000958 000510567 000607829 D|089391084 060034977 +000000958 000511894 000632790 D|043309797 070743768 +000000958 000534693 000644913 D|054293893 019804229 +000000958 000537789 000689882 D|030590121 015935528 +000000958 000553510 000706245 D|077837015 038490487 +000000958 000572322 000735960 D|085253630 016774469 +000000958 000597855 000751590 D|036804303 083370717 +000000958 000605310 000768344 D|022746563 054757603 +000000958 000623004 000781707 D|040583268 024287054 +000000958 000694029 000788074 D|021903768 014398580 +000000958 000698192 000792251 D|059073827 064642438 +000000958 000746026 000808350 D|035301992 060475550 +000000958 000773716 000872062 D|021388193 039451334 +000000958 000786402 000879034 D|045108775 005313503 +000000958 000793030 000884716 D|075978782 062012614 +000000958 000839019 000904507 D|050229980 093172672 +000000958 000871889 000917707 D|005356628 085353242 +000000958 000884173 000933905 D|020395013 085404458 +000000958 000920915 000936380 D|002740220 018238501 +000000958 000936620 000937417 D|055414615 098031205 +000000958 000936663 000966342 D|082736182 065823420 +000000958 000942035 000968428 D|031898293 063362301 +000000958 000946999 000987065 D|089312093 072374831 +000000959 000016348 000044196 D|060405657 075276297 +000000959 000018966 000062620 D|088625271 033726286 +000000959 000028427 000085212 D|050672482 093333638 +000000959 000112806 000106375 D|051602872 078112191 +000000959 000125402 000107035 D|044767851 085204750 +000000959 000134554 000134919 D|043991174 069448672 +000000959 000143882 000144417 D|077922489 068770802 +000000959 000148250 000160520 D|083180582 099840616 +000000959 000198988 000169417 D|028170541 012211309 +000000959 000217394 000176065 D|043758904 069776025 +000000959 000233964 000191167 D|010729980 086241263 +000000959 000256414 000214556 D|074124138 031639282 +000000959 000263986 000224832 D|055245519 069008234 +000000959 000281137 000229118 D|016542285 049537318 +000000959 000298934 000244962 D|095343773 043115806 +000000959 000313299 000277858 D|054231142 084915150 +000000959 000322208 000295474 D|099000645 070162479 +000000959 000346562 000298188 D|053582877 072433042 +000000959 000350388 000310404 D|044340392 045674563 +000000959 000415342 000331794 D|000844078 001368544 +000000959 000429507 000336541 D|042883715 097008223 +000000959 000461395 000355865 D|055263922 059250213 +000000959 000466817 000370265 D|035924763 049797817 +000000959 000482398 000388809 D|000267338 063660593 +000000959 000494032 000400625 D|056923745 065814462 +000000959 000508540 000421073 D|008824080 094813967 +000000959 000513149 000433991 D|003479777 024437570 +000000959 000521877 000463369 D|038229948 006447699 +000000959 000534478 000470347 D|062283790 078356292 +000000959 000538117 000525591 D|015611366 030819107 +000000959 000544282 000545567 D|058950522 054511707 +000000959 000555809 000547020 D|010210810 042129057 +000000959 000560771 000555693 D|076753461 059379909 +000000959 000662113 000683266 D|010820766 043996924 +000000959 000674272 000689029 D|017190110 066339396 +000000959 000678529 000690173 D|043751329 025683147 +000000959 000709097 000705081 D|011972406 049278272 +000000959 000726568 000773594 D|052772776 014766087 +000000959 000735634 000799418 D|008874321 025931588 +000000959 000741681 000805427 D|093103859 019285940 +000000959 000745922 000814643 D|035245526 019871131 +000000959 000757350 000847180 D|096771772 087909497 +000000959 000762636 000871775 D|019462415 076117104 +000000959 000800723 000872134 D|044954456 010145710 +000000959 000823093 000894412 D|086095566 072729825 +000000959 000830955 000947567 D|006415185 014781673 +000000959 000838903 000956925 D|006481502 032018156 +000000959 000942674 000968147 D|003529348 048367359 +000000959 000949144 000968896 D|096686153 078182951 +000000959 000964508 000981633 D|070754208 032351435 +000000960 000000846 000015187 D|062126303 050123334 +000000960 000023162 000020132 D|043744863 080853272 +000000960 000032401 000033569 D|053457001 030391202 +000000960 000044865 000033910 D|089097968 071777122 +000000960 000073955 000051254 D|028381944 014425939 +000000960 000091702 000051903 D|004066783 086084329 +000000960 000156617 000059244 D|099365414 023737214 +000000960 000182054 000119544 D|034899851 041945639 +000000960 000185138 000146276 D|043078535 095462134 +000000960 000198790 000155725 D|055028732 084786860 +000000960 000224888 000178583 D|008242628 063059317 +000000960 000234245 000179916 D|040066249 071120982 +000000960 000330550 000180806 D|073964466 040242251 +000000960 000332733 000188721 D|019363859 016766645 +000000960 000355574 000205315 D|000852233 042239124 +000000960 000363497 000255244 D|004044337 052123561 +000000960 000364256 000277583 D|099574331 035626052 +000000960 000374876 000280481 D|031256623 068175236 +000000960 000412129 000288701 D|035096924 041819825 +000000960 000424444 000310322 D|009837242 020512335 +000000960 000448884 000335420 D|017117214 033940118 +000000960 000461541 000340279 D|098238002 015181765 +000000960 000463108 000377157 D|065378038 092583974 +000000960 000485382 000387410 D|094597592 014325040 +000000960 000519706 000405001 D|093968495 054754736 +000000960 000548058 000414618 D|025020775 063223158 +000000960 000548080 000431864 D|063274628 095727753 +000000960 000551550 000432277 D|046765891 053378126 +000000960 000585878 000436681 D|073445867 010716455 +000000960 000599146 000445649 D|053114805 094871754 +000000960 000599215 000479852 D|046936928 020638162 +000000960 000600519 000516327 D|079920875 082573237 +000000960 000611813 000545159 D|011020663 067379657 +000000960 000616316 000613899 D|066339909 058699338 +000000960 000642455 000646759 D|083921061 024710417 +000000960 000648867 000653721 D|020066703 028322154 +000000960 000661753 000658322 D|093436843 096672197 +000000960 000674423 000765549 D|076000227 027167841 +000000960 000675317 000784870 D|099489759 058527671 +000000960 000703506 000798091 D|049510707 047092734 +000000960 000711368 000810409 D|093671032 073151063 +000000960 000732993 000822050 D|027810789 079736329 +000000960 000825281 000845949 D|003593789 098060602 +000000960 000847048 000868636 D|015632493 049658948 +000000960 000850780 000877415 D|058631558 091533467 +000000960 000882840 000894534 D|021528450 022811356 +000000960 000906567 000904353 D|057533690 002941003 +000000960 000923249 000910859 D|011933393 092483200 +000000960 000927489 000914240 D|009664789 030980875 +000000960 000947157 000936736 D|027654042 052120146 +000000961 000011129 000021114 D|073524534 024287343 +000000961 000019811 000024556 D|094658420 014835141 +000000961 000028865 000034577 D|097003027 000179433 +000000961 000043766 000041415 D|006360205 062062232 +000000961 000050617 000065449 D|023561521 083431346 +000000961 000078350 000075539 D|081353169 070016812 +000000961 000080476 000138107 D|076294281 068816169 +000000961 000086236 000153851 D|013776686 030316630 +000000961 000120244 000171386 D|015023402 054838542 +000000961 000163668 000182854 D|063039072 048232398 +000000961 000183921 000224270 D|033663162 023654054 +000000961 000212170 000259451 D|005464874 010738088 +000000961 000213276 000262219 D|003256650 052204406 +000000961 000225763 000265209 D|045027248 060354452 +000000961 000225944 000272968 D|026016145 060014773 +000000961 000245429 000278409 D|068048354 023305029 +000000961 000263159 000336356 D|066779886 027844338 +000000961 000290767 000339691 D|079102380 005130709 +000000961 000335573 000358328 D|096101289 035189082 +000000961 000340228 000359313 D|043343032 004341583 +000000961 000341750 000383636 D|079880858 043181615 +000000961 000387747 000384534 D|094339403 090645463 +000000961 000390560 000396574 D|010112807 023378620 +000000961 000399203 000404205 D|034659707 037153755 +000000961 000437996 000413977 D|075190366 015051719 +000000961 000459397 000419721 D|030263331 012818844 +000000961 000474287 000424933 D|084907978 088664283 +000000961 000534382 000488798 D|013905100 078817732 +000000961 000534662 000493359 D|059258386 049706776 +000000961 000541703 000500349 D|073698554 075680271 +000000961 000564626 000540971 D|004089722 024912645 +000000961 000572255 000594570 D|005525329 020370128 +000000961 000583606 000597255 D|032564419 018303500 +000000961 000630499 000601098 D|099105039 089016545 +000000961 000672055 000615577 D|010528203 062293970 +000000961 000684673 000703703 D|024872124 056486862 +000000961 000702334 000714880 D|033424388 011691777 +000000961 000746368 000757844 D|006123206 052234554 +000000961 000758868 000778834 D|080104055 040058087 +000000961 000847383 000783025 D|044002881 062573134 +000000961 000858244 000800661 D|096427148 033184672 +000000961 000876733 000811478 D|098582973 045141257 +000000961 000883331 000814093 D|011104009 094260382 +000000961 000884595 000847529 D|063494053 047105924 +000000961 000930478 000854553 D|015317989 009100820 +000000961 000930500 000869791 D|066093142 021468056 +000000961 000931945 000935562 D|081510947 055083711 +000000961 000947014 000949740 D|040958401 025855822 +000000961 000956525 000971781 D|062645111 063173029 +000000961 000968905 000980653 D|027312771 094928271 +000000962 000025149 000023646 D|088499800 047167135 +000000962 000027792 000108940 D|047872855 099672609 +000000962 000047754 000115194 D|084778957 059262664 +000000962 000059777 000125971 D|008510437 037571140 +000000962 000078960 000133626 D|059643247 085556669 +000000962 000105723 000147823 D|026644752 022044483 +000000962 000128009 000150255 D|094095024 071591167 +000000962 000151169 000172363 D|063408063 051101833 +000000962 000152944 000229170 D|060682702 029984838 +000000962 000164360 000262040 D|066433235 037805577 +000000962 000167399 000274812 D|022516934 034542434 +000000962 000178193 000307553 D|067200910 080231725 +000000962 000205976 000324418 D|003525915 009144853 +000000962 000210127 000337051 D|030144580 064154025 +000000962 000228474 000374686 D|038985692 022605949 +000000962 000278338 000430789 D|097509492 020274023 +000000962 000318612 000438716 D|084530438 007090072 +000000962 000353932 000455628 D|058408206 091373433 +000000962 000356555 000470097 D|009373849 034605078 +000000962 000384655 000497996 D|022109539 021668748 +000000962 000387695 000498846 D|044934548 029109364 +000000962 000389063 000544453 D|016736824 074621580 +000000962 000481573 000552073 D|030394835 018089839 +000000962 000485723 000554088 D|041955195 072994377 +000000962 000491990 000558407 D|001666675 010007618 +000000962 000499713 000583199 D|095306247 059040265 +000000962 000510404 000593665 D|035222005 092589185 +000000962 000538318 000625098 D|048854681 084797320 +000000962 000554843 000653460 D|035903314 082186783 +000000962 000559681 000663633 D|066812938 029266840 +000000962 000562904 000670748 D|051996621 002660619 +000000962 000573986 000703160 D|007591713 069816796 +000000962 000592812 000728656 D|014003301 060495661 +000000962 000595151 000738786 D|020966237 017680958 +000000962 000618824 000738901 D|032385537 055876417 +000000962 000635160 000746242 D|097973170 045965907 +000000962 000683647 000747892 D|066251928 066374144 +000000962 000698818 000755144 D|098483752 042850634 +000000962 000699635 000763930 D|022451388 051167660 +000000962 000717899 000823689 D|003841646 048297874 +000000962 000729576 000882936 D|013661584 031027053 +000000962 000742517 000900709 D|007517115 062020562 +000000962 000750245 000928539 D|042120627 093327512 +000000962 000779935 000928682 D|066611346 044417219 +000000962 000786397 000935599 D|098203286 091162744 +000000962 000819985 000946129 D|016102896 085806801 +000000962 000845804 000953486 D|002064126 050399220 +000000962 000950675 000957747 D|060026749 068770109 +000000962 000959757 000961257 D|064057244 083480699 +000000962 000998795 000969093 D|066199548 032836588 +000000963 000005273 000005449 D|024560143 056648755 +000000963 000022342 000014313 D|037232432 001748051 +000000963 000026976 000080338 D|095523352 053754405 +000000963 000030365 000089801 D|096190437 088923565 +000000963 000050065 000103043 D|090358488 080673992 +000000963 000071093 000144747 D|043707256 026180841 +000000963 000081898 000220034 D|034748507 034570244 +000000963 000087244 000276906 D|062123409 079166442 +000000963 000093143 000299402 D|081924108 034228235 +000000963 000099938 000300198 D|035606031 020039403 +000000963 000101476 000323482 D|007350758 046652428 +000000963 000103929 000369684 D|004909345 082712614 +000000963 000144373 000372428 D|050120912 058752968 +000000963 000146057 000397896 D|016104740 028591969 +000000963 000170011 000410794 D|039168893 032819936 +000000963 000203542 000427371 D|070456066 028598168 +000000963 000205312 000492313 D|094545491 036662221 +000000963 000220623 000498417 D|031991966 082823889 +000000963 000229003 000527448 D|093168381 040050801 +000000963 000231328 000536089 D|027269150 082732393 +000000963 000248332 000537409 D|033280062 086385783 +000000963 000255014 000553963 D|063164429 046207669 +000000963 000358917 000560411 D|048531601 033527723 +000000963 000368878 000562996 D|034408139 063652212 +000000963 000369758 000595416 D|001480173 006553695 +000000963 000414333 000601264 D|091382312 006634324 +000000963 000435833 000607190 D|072256451 019763968 +000000963 000437264 000617690 D|018952865 029886296 +000000963 000458327 000632350 D|065923195 010033674 +000000963 000493352 000639504 D|092633689 077746116 +000000963 000495737 000647847 D|061599110 053645601 +000000963 000531051 000667886 D|099958555 069011803 +000000963 000583649 000669313 D|029930412 077841994 +000000963 000595363 000699942 D|094598115 090799526 +000000963 000604505 000751434 D|039818246 061934389 +000000963 000655076 000758873 D|006920486 032352511 +000000963 000662811 000825984 D|029925119 027855795 +000000963 000668758 000828762 D|061906781 036641486 +000000963 000673691 000841654 D|069678107 057250301 +000000963 000706010 000842087 D|023248616 048277723 +000000963 000762145 000856741 D|016829662 005513079 +000000963 000772749 000857279 D|018136382 059220369 +000000963 000779550 000864462 D|061193955 088987847 +000000963 000781809 000864962 D|088607343 056079754 +000000963 000817647 000906193 D|011624421 010361918 +000000963 000818444 000934550 D|055341118 028632646 +000000963 000866847 000944539 D|085471949 009439804 +000000963 000871960 000946484 D|022204588 019961263 +000000963 000935756 000960366 D|064882469 082007990 +000000963 000944170 000962715 D|016471301 012180115 +000000964 000028779 000012064 D|073426956 031627977 +000000964 000037119 000061572 D|085484260 002345376 +000000964 000038264 000081695 D|069291432 028051375 +000000964 000133347 000129238 D|025082977 069161931 +000000964 000171973 000137126 D|080682047 097567534 +000000964 000197896 000180101 D|052895340 007371436 +000000964 000226049 000221692 D|086097767 032659397 +000000964 000233355 000245735 D|016314054 059962537 +000000964 000239339 000246184 D|039459069 044131603 +000000964 000263193 000272849 D|049680022 028893740 +000000964 000268428 000282146 D|097424305 017822150 +000000964 000302094 000367464 D|062553825 061592814 +000000964 000325894 000389022 D|092645824 050812211 +000000964 000339577 000389650 D|075197164 048197886 +000000964 000371492 000390806 D|092903952 015585701 +000000964 000420233 000427055 D|079581064 023221588 +000000964 000425605 000434056 D|010107950 036440327 +000000964 000437225 000436755 D|002611223 063999305 +000000964 000442641 000444244 D|010509429 030805107 +000000964 000442746 000470690 D|030403962 043465116 +000000964 000449517 000479249 D|041617044 049746051 +000000964 000451467 000490995 D|040796422 097867634 +000000964 000473670 000492360 D|080472471 073379124 +000000964 000474728 000506946 D|031482914 050447299 +000000964 000481226 000508651 D|039475209 030176493 +000000964 000536165 000512116 D|020816897 094456210 +000000964 000541125 000530611 D|000933779 072654748 +000000964 000571455 000556270 D|079435745 054963308 +000000964 000611339 000595540 D|026812362 025725917 +000000964 000646014 000645409 D|053860789 096011657 +000000964 000652375 000652401 D|051434755 081564173 +000000964 000652470 000663654 D|041498445 008072850 +000000964 000663158 000692534 D|076550950 088296160 +000000964 000672580 000695616 D|066387027 095306783 +000000964 000690238 000697995 D|037181302 062798192 +000000964 000701613 000712023 D|050419405 085834737 +000000964 000710542 000714725 D|054980798 010131080 +000000964 000725085 000736204 D|032207029 040399832 +000000964 000737459 000777195 D|068071258 011884682 +000000964 000760875 000790469 D|001658162 066478432 +000000964 000765255 000805772 D|061545705 059996318 +000000964 000816095 000812209 D|093791834 087676118 +000000964 000837366 000828507 D|079501200 011820168 +000000964 000856558 000828618 D|094659324 011650230 +000000964 000880650 000831097 D|039315220 043746460 +000000964 000883339 000841940 D|057887707 069317254 +000000964 000896649 000871914 D|013947639 065766541 +000000964 000958948 000906636 D|085701753 020439848 +000000964 000985188 000929284 D|088763849 082707108 +000000964 000989889 000957119 D|041338916 007542671 +000000965 000065978 000015642 D|064832700 012858916 +000000965 000113803 000024276 D|078172491 058361750 +000000965 000118816 000032255 D|067469005 029499739 +000000965 000119131 000051694 D|068726914 081048416 +000000965 000179400 000062346 D|049185086 056286316 +000000965 000186530 000132876 D|070937350 021987338 +000000965 000200831 000146001 D|074453181 056695704 +000000965 000235969 000147478 D|023106080 030029408 +000000965 000303871 000153458 D|011494062 054176414 +000000965 000304344 000159173 D|073364862 038398632 +000000965 000306287 000169735 D|077240842 086054141 +000000965 000330195 000178995 D|087522053 005151018 +000000965 000334475 000184762 D|041661641 021272441 +000000965 000361665 000190725 D|070047961 005597168 +000000965 000366013 000193753 D|008410560 083094401 +000000965 000388045 000219126 D|095806181 014430331 +000000965 000393234 000242696 D|098571107 043553032 +000000965 000411988 000253120 D|015606781 055746999 +000000965 000426094 000254040 D|044326981 084039252 +000000965 000426907 000266895 D|008850918 095701127 +000000965 000441989 000333877 D|046821002 024870983 +000000965 000454732 000362138 D|092100120 021028553 +000000965 000457788 000416343 D|034435465 037039900 +000000965 000466274 000419786 D|036177978 020395296 +000000965 000469870 000492376 D|015756859 059100274 +000000965 000475576 000494112 D|012437885 076717718 +000000965 000521205 000531083 D|068774816 075878064 +000000965 000527743 000533054 D|031657838 031951992 +000000965 000549084 000585650 D|091326744 034295511 +000000965 000564625 000600544 D|048530549 090583057 +000000965 000585703 000601239 D|050313497 020337960 +000000965 000608706 000605197 D|077322357 044705686 +000000965 000615254 000608240 D|006335442 021553181 +000000965 000631508 000618378 D|022506191 036977994 +000000965 000675244 000644478 D|076644316 098903589 +000000965 000686784 000657118 D|083601161 014778532 +000000965 000694965 000658312 D|089169811 010857604 +000000965 000783446 000698724 D|070724951 075897260 +000000965 000789105 000700166 D|078334878 030616719 +000000965 000791476 000766475 D|054788391 038675334 +000000965 000800601 000772128 D|050074256 009754988 +000000965 000802000 000802613 D|095652039 012616762 +000000965 000807024 000826538 D|090130405 061696997 +000000965 000823932 000853510 D|008043051 013869218 +000000965 000851294 000856251 D|004016718 037502475 +000000965 000897295 000883928 D|030977594 040791529 +000000965 000908962 000946541 D|055412104 006088090 +000000965 000914028 000968258 D|087875191 080288013 +000000965 000916643 000972619 D|025606546 004685686 +000000965 000986584 000990037 D|025089156 096389585 +000000966 000029914 000006316 D|093141123 092506973 +000000966 000076016 000007307 D|040592515 090131602 +000000966 000115443 000012859 D|071372198 045843691 +000000966 000179448 000018955 D|089057774 064393398 +000000966 000190928 000031326 D|062570956 007979206 +000000966 000222154 000061476 D|016205770 009888868 +000000966 000222316 000082060 D|028627071 003919832 +000000966 000237531 000098861 D|058296777 047671647 +000000966 000239626 000114458 D|032668375 061818321 +000000966 000256770 000151186 D|044916023 072827118 +000000966 000319278 000162147 D|010538310 067744493 +000000966 000347908 000205829 D|015276453 064509871 +000000966 000364576 000230713 D|089189011 033294421 +000000966 000367826 000235193 D|042730618 099413252 +000000966 000391439 000249781 D|029674013 084313992 +000000966 000402304 000251941 D|083299530 098347734 +000000966 000409010 000268589 D|017862800 046437841 +000000966 000423480 000293643 D|085070283 020533296 +000000966 000434324 000318412 D|067186300 031513978 +000000966 000448594 000362129 D|086021507 067853513 +000000966 000457311 000365040 D|083459105 012243231 +000000966 000459225 000390618 D|048689748 059873312 +000000966 000505441 000403746 D|067726403 004445462 +000000966 000519285 000411075 D|037081334 023034139 +000000966 000526109 000433252 D|065654108 002170795 +000000966 000526931 000449300 D|064945220 092680020 +000000966 000548753 000486740 D|053446446 071649809 +000000966 000575727 000526406 D|051315167 024944383 +000000966 000628148 000584338 D|062407702 003088283 +000000966 000638959 000585580 D|084977883 088122158 +000000966 000640130 000589326 D|067856443 018903884 +000000966 000651514 000590980 D|098191509 080818191 +000000966 000654897 000593921 D|062065434 007811194 +000000966 000655851 000629128 D|063811150 081351835 +000000966 000659093 000648840 D|085734033 058436502 +000000966 000661726 000684579 D|051954440 052364657 +000000966 000689552 000689194 D|006203175 083356838 +000000966 000731818 000693964 D|035371546 034729331 +000000966 000736371 000703980 D|051159711 040970761 +000000966 000740188 000714971 D|024430841 044310043 +000000966 000741892 000760262 D|002190675 060270836 +000000966 000797043 000767127 D|013996816 035742524 +000000966 000851518 000794923 D|086171877 070556877 +000000966 000873471 000795453 D|060399013 029423013 +000000966 000877854 000826302 D|010887336 076501471 +000000966 000911344 000836824 D|001726461 052116780 +000000966 000920753 000886690 D|050046678 060242962 +000000966 000922111 000892000 D|010240113 007689863 +000000966 000937540 000931167 D|044236715 019077243 +000000966 000984245 000932232 D|068808790 083844373 +000000967 000067220 000025042 D|020675719 024766544 +000000967 000082889 000035833 D|052063173 037788746 +000000967 000101433 000070880 D|094266746 046180806 +000000967 000110638 000074536 D|027493631 020887679 +000000967 000126607 000183277 D|012431789 081255945 +000000967 000143333 000203240 D|059721670 045936836 +000000967 000190962 000205652 D|099542318 030690658 +000000967 000193237 000206676 D|000179923 082178978 +000000967 000248884 000291524 D|021568298 022517882 +000000967 000253194 000292841 D|031753770 066855899 +000000967 000255255 000318371 D|052974012 025830065 +000000967 000270377 000318555 D|071062768 089422021 +000000967 000273832 000330294 D|097240597 072456941 +000000967 000298144 000349361 D|090887274 057141894 +000000967 000298714 000358097 D|015068627 063579606 +000000967 000313641 000362270 D|015765466 099194230 +000000967 000314533 000363280 D|015442773 043861173 +000000967 000322835 000374103 D|005202613 054998449 +000000967 000325219 000423449 D|004951326 043484585 +000000967 000342483 000485281 D|068343159 017187664 +000000967 000346705 000492195 D|087821092 000537660 +000000967 000357353 000500532 D|060686704 067996701 +000000967 000405830 000506523 D|068208395 070687768 +000000967 000408432 000556193 D|004897709 037441691 +000000967 000410552 000584021 D|068669229 037819417 +000000967 000439409 000584970 D|049641579 011127005 +000000967 000506005 000590948 D|091871147 043992087 +000000967 000517357 000602858 D|021044253 036001074 +000000967 000601551 000637921 D|076161155 007076033 +000000967 000628999 000640237 D|017100492 039159376 +000000967 000668765 000652677 D|061380830 064076512 +000000967 000684539 000654428 D|060261804 020885166 +000000967 000707153 000667777 D|080206363 094595088 +000000967 000714852 000707037 D|009227082 088924266 +000000967 000721301 000743233 D|038198030 036919342 +000000967 000730712 000762607 D|052973393 008870622 +000000967 000757926 000780702 D|040089425 052780538 +000000967 000761730 000789510 D|063281332 026840360 +000000967 000777815 000790688 D|035453455 011611410 +000000967 000778189 000809625 D|027805696 059569098 +000000967 000827838 000861300 D|090208751 098654207 +000000967 000840034 000872769 D|007600005 095089381 +000000967 000850057 000880198 D|015101266 002172036 +000000967 000884574 000880792 D|001494717 016469197 +000000967 000928789 000883284 D|093436576 063583622 +000000967 000936466 000908590 D|088222207 029404961 +000000967 000940611 000937582 D|070686670 068269690 +000000967 000946351 000947081 D|064302031 083994435 +000000967 000956740 000959446 D|096010591 059821619 +000000967 000988449 000998186 D|017174566 035010165 +000000968 000003609 000002114 D|087885573 036527806 +000000968 000009764 000028932 D|006046555 099016561 +000000968 000020962 000037980 D|090328120 016272768 +000000968 000053102 000045262 D|083362915 097330783 +000000968 000138530 000059942 D|064433260 073258672 +000000968 000145302 000064750 D|013587476 017028496 +000000968 000171535 000097951 D|018552560 012027872 +000000968 000186261 000121614 D|067346497 015496946 +000000968 000217318 000126752 D|067584950 048345399 +000000968 000245526 000145398 D|054739208 050251575 +000000968 000250197 000184220 D|038453537 099224820 +000000968 000321781 000210790 D|011772536 037541773 +000000968 000339528 000214796 D|098873504 014415215 +000000968 000360698 000216587 D|007913030 050533872 +000000968 000364275 000227719 D|074337733 012454242 +000000968 000385576 000252246 D|058484562 000703700 +000000968 000397542 000265132 D|074853113 012093751 +000000968 000414542 000302346 D|000171681 035052475 +000000968 000422084 000307003 D|037049010 001024327 +000000968 000439462 000332810 D|080853486 051867593 +000000968 000446117 000349792 D|037363096 038227300 +000000968 000461049 000378864 D|079206587 043630406 +000000968 000487156 000380522 D|059201634 046624329 +000000968 000487653 000399376 D|073343743 028019510 +000000968 000493635 000399888 D|006311305 079156352 +000000968 000544674 000404815 D|015353814 009354496 +000000968 000595107 000458852 D|076589513 046316192 +000000968 000614293 000485014 D|000357751 052991183 +000000968 000648133 000488254 D|057570616 034599907 +000000968 000663248 000512117 D|074232073 022889764 +000000968 000670167 000531270 D|096625493 007275493 +000000968 000714373 000544088 D|050379121 022520360 +000000968 000715097 000547841 D|082059247 035453838 +000000968 000739238 000558368 D|061347117 022194303 +000000968 000745969 000607270 D|030802704 078988058 +000000968 000751938 000621836 D|066360375 021644055 +000000968 000761590 000622261 D|023494296 070050862 +000000968 000800577 000623375 D|044892480 048005448 +000000968 000814339 000629160 D|034989927 010653673 +000000968 000846560 000639862 D|066742561 089285531 +000000968 000907836 000675309 D|019586853 061816523 +000000968 000923755 000747361 D|007014110 017563282 +000000968 000932469 000834744 D|016449299 089125314 +000000968 000941654 000850074 D|041937046 001550675 +000000968 000958641 000889464 D|079766607 020214899 +000000968 000961521 000936337 D|009164996 007356384 +000000968 000976744 000949773 D|015849425 008899862 +000000968 000982764 000953526 D|071195193 032995872 +000000968 000993947 000983294 D|073206914 098915323 +000000968 000999879 000985659 D|010475041 012097962 +000000969 000021123 000006894 D|023836770 058524654 +000000969 000034661 000028980 D|007998465 006691217 +000000969 000061466 000060902 D|035802877 047484368 +000000969 000079329 000061687 D|002282680 041774311 +000000969 000084185 000067280 D|068967194 024904201 +000000969 000097616 000089397 D|010619053 062488972 +000000969 000150531 000115600 D|087234590 065114336 +000000969 000204036 000127626 D|071030385 044307559 +000000969 000248165 000152486 D|071565517 044029575 +000000969 000255767 000156889 D|041747573 004674808 +000000969 000259377 000194203 D|002898644 017695176 +000000969 000261313 000205606 D|058655646 060136915 +000000969 000263401 000213904 D|039909793 049510458 +000000969 000294836 000241950 D|001510507 088642767 +000000969 000302041 000266585 D|081421450 071615633 +000000969 000316360 000277049 D|048930891 077706801 +000000969 000380747 000302934 D|055049775 056430281 +000000969 000391185 000311159 D|069073235 094144701 +000000969 000413288 000317039 D|048801371 050555360 +000000969 000413908 000360651 D|037882601 031442841 +000000969 000416581 000369520 D|044519464 026618540 +000000969 000419884 000398176 D|059062923 022467995 +000000969 000446541 000418754 D|051840665 065662766 +000000969 000459955 000437425 D|095018285 019457447 +000000969 000466007 000512204 D|078284014 045369865 +000000969 000475365 000541807 D|086703551 052161197 +000000969 000482577 000542389 D|079040699 094238690 +000000969 000502712 000551340 D|038535362 010922303 +000000969 000517507 000592447 D|083221210 055906784 +000000969 000560774 000618817 D|084195378 060787724 +000000969 000666503 000654140 D|016399341 022346379 +000000969 000715374 000675968 D|096085152 093177085 +000000969 000717173 000697246 D|019209743 021647987 +000000969 000721514 000703893 D|097162821 021121822 +000000969 000721699 000716918 D|078595194 075101446 +000000969 000733354 000725756 D|002849074 063549295 +000000969 000743494 000731445 D|082705202 056306013 +000000969 000746901 000753053 D|026633465 031800047 +000000969 000805473 000761154 D|080396175 050227729 +000000969 000827588 000761239 D|070499312 061211878 +000000969 000858264 000762597 D|096664399 024269353 +000000969 000860593 000775235 D|064320024 050949213 +000000969 000865308 000777968 D|085358474 079949096 +000000969 000870195 000798672 D|085526745 076587735 +000000969 000873397 000813391 D|021090121 078937662 +000000969 000889806 000831557 D|096299203 034396887 +000000969 000913190 000856156 D|080630271 034793713 +000000969 000916516 000897929 D|047946714 060213001 +000000969 000927103 000898057 D|056745322 057371919 +000000969 000983854 000921451 D|092248679 099248206 +000000970 000008157 000034211 D|064816977 065205644 +000000970 000050236 000066638 D|007546285 045418546 +000000970 000064235 000071895 D|080221279 041868784 +000000970 000108549 000075885 D|010439431 084194337 +000000970 000132887 000084641 D|096523205 079855138 +000000970 000174367 000098224 D|039885943 044540759 +000000970 000190667 000100473 D|046541349 010743985 +000000970 000227946 000124468 D|012672770 069868917 +000000970 000247129 000149090 D|055809141 068756129 +000000970 000248256 000155064 D|005147798 072330291 +000000970 000255030 000157327 D|011622611 062770848 +000000970 000330112 000172111 D|032992257 076725928 +000000970 000338912 000175994 D|016580880 035686988 +000000970 000339119 000180763 D|092173812 025503992 +000000970 000345135 000183472 D|012699987 018871217 +000000970 000360905 000265844 D|000551860 079654312 +000000970 000362706 000270351 D|018764552 000636106 +000000970 000374364 000299273 D|047849959 054986525 +000000970 000380311 000347603 D|038362996 070098728 +000000970 000428284 000354794 D|094033634 072336269 +000000970 000431792 000374599 D|008601330 025107955 +000000970 000439094 000418595 D|007136117 019152822 +000000970 000488445 000428718 D|001407086 035154658 +000000970 000538819 000438400 D|001979172 013855227 +000000970 000541128 000440019 D|077026627 081976515 +000000970 000561692 000442734 D|021515765 097792843 +000000970 000589505 000478848 D|041332663 011322373 +000000970 000634215 000479464 D|006225163 004513490 +000000970 000661751 000563343 D|099768033 016675359 +000000970 000673610 000565940 D|095717290 023845857 +000000970 000680520 000620364 D|080506234 006355821 +000000970 000691277 000622142 D|077731093 073290862 +000000970 000703106 000625253 D|012929308 056723782 +000000970 000713247 000633456 D|052647081 039149548 +000000970 000724576 000666465 D|099087656 077301504 +000000970 000744544 000676992 D|085793753 086769724 +000000970 000776934 000686251 D|039007676 054423110 +000000970 000785041 000693261 D|068322305 051035752 +000000970 000811373 000706238 D|038094446 058035728 +000000970 000832440 000713633 D|024445417 066437861 +000000970 000833304 000737792 D|005075962 089595027 +000000970 000869778 000759769 D|017757029 074598848 +000000970 000885100 000801924 D|070894109 084724185 +000000970 000899279 000833279 D|046707494 056903429 +000000970 000918275 000889082 D|033858420 038138504 +000000970 000918513 000889850 D|048523926 078604687 +000000970 000950265 000892133 D|087756323 050460787 +000000970 000974098 000943959 D|013861888 083289367 +000000970 000986318 000955695 D|097344490 057165028 +000000970 000990489 000977002 D|031386289 012770248 +000000971 000001647 000007485 D|079439959 031782251 +000000971 000002749 000015737 D|095167375 045034861 +000000971 000021214 000042504 D|017222927 011742109 +000000971 000056629 000047980 D|077721354 066940658 +000000971 000141580 000073674 D|027790477 062413107 +000000971 000143526 000075302 D|046023805 014777054 +000000971 000143795 000079085 D|044836666 086801812 +000000971 000188939 000080698 D|049253750 007934067 +000000971 000210355 000114185 D|027946810 084244505 +000000971 000213588 000128213 D|099018460 005545181 +000000971 000250639 000137133 D|089844685 077959076 +000000971 000261415 000205041 D|037735846 000302404 +000000971 000264596 000251007 D|076258848 000345354 +000000971 000265723 000254933 D|004800170 058148102 +000000971 000282908 000274602 D|074585436 007083478 +000000971 000311725 000313157 D|003758931 011305634 +000000971 000334923 000336254 D|069301797 070611506 +000000971 000361065 000365529 D|027936411 074330911 +000000971 000363567 000429738 D|080890591 028030390 +000000971 000365195 000456551 D|076389447 040393611 +000000971 000370984 000459959 D|062264965 060075649 +000000971 000413437 000485967 D|010255648 079767092 +000000971 000434744 000509354 D|066301124 083342317 +000000971 000467359 000511878 D|016976525 052111547 +000000971 000470159 000539157 D|010544360 069385610 +000000971 000482604 000541938 D|096490233 043707348 +000000971 000548899 000556858 D|092529262 097865989 +000000971 000555134 000559879 D|030025859 062558953 +000000971 000559137 000564011 D|022507867 023532417 +000000971 000593054 000594861 D|000629580 007333036 +000000971 000627146 000631494 D|025720344 019318907 +000000971 000656235 000632398 D|077712172 085008226 +000000971 000676261 000652178 D|009395550 073638586 +000000971 000739331 000688825 D|065354794 086085065 +000000971 000757364 000711237 D|005987661 054103930 +000000971 000784128 000716127 D|033513052 071833964 +000000971 000813619 000725843 D|007908878 025972634 +000000971 000822736 000728275 D|054735193 057676865 +000000971 000834190 000740468 D|087489635 093663065 +000000971 000834234 000790416 D|028430156 042578222 +000000971 000851307 000815924 D|001922726 089848540 +000000971 000857611 000828128 D|088590698 041494535 +000000971 000860816 000854492 D|091086294 092905144 +000000971 000873165 000855115 D|088996818 002250176 +000000971 000906960 000861302 D|062471610 052425802 +000000971 000912673 000906986 D|026559721 014735091 +000000971 000961504 000928731 D|090148756 054891078 +000000971 000969774 000954038 D|051645465 036598581 +000000971 000978948 000969855 D|084550999 094771244 +000000971 000980554 000987065 D|091932649 068590611 +000000972 000042362 000033549 D|042363730 099903452 +000000972 000112041 000062461 D|084713351 070430004 +000000972 000121367 000069864 D|060550662 012773051 +000000972 000144424 000081269 D|011753629 046522940 +000000972 000169541 000085903 D|084544334 048320667 +000000972 000183119 000095411 D|033427241 034456869 +000000972 000219193 000111924 D|089202006 099548058 +000000972 000241922 000155476 D|070568095 028099105 +000000972 000242273 000164213 D|030081612 031845816 +000000972 000266834 000202777 D|047951719 071696422 +000000972 000305800 000206445 D|009669519 080794062 +000000972 000322625 000235257 D|051260133 059813271 +000000972 000323460 000296804 D|058870699 013171630 +000000972 000353357 000333889 D|042372159 039354674 +000000972 000353851 000347596 D|041463764 050816145 +000000972 000354571 000376580 D|024881029 097915886 +000000972 000362986 000376595 D|015583722 012602445 +000000972 000370904 000386686 D|096829336 029282146 +000000972 000373869 000393088 D|006722738 039375723 +000000972 000377730 000408193 D|012382831 046608193 +000000972 000399377 000454613 D|064231271 099465041 +000000972 000407885 000459214 D|075770045 080097985 +000000972 000415001 000519614 D|076355462 048028022 +000000972 000446741 000546332 D|073011961 079170385 +000000972 000473359 000550039 D|081411112 048358903 +000000972 000475878 000558106 D|068867731 052032991 +000000972 000487253 000567828 D|056646367 004742719 +000000972 000501130 000573700 D|063380297 076792808 +000000972 000505078 000576001 D|010590701 059574299 +000000972 000506165 000660287 D|034710108 094911303 +000000972 000534964 000662933 D|040988048 018641147 +000000972 000540580 000698857 D|014045960 089658725 +000000972 000545153 000724994 D|082180365 004275856 +000000972 000545559 000729398 D|086388591 041413798 +000000972 000618346 000738806 D|012187630 051191917 +000000972 000631715 000754657 D|034910777 011951463 +000000972 000707658 000786401 D|029358836 073953125 +000000972 000709077 000786955 D|016414634 025985842 +000000972 000713499 000787762 D|043275154 046787768 +000000972 000745874 000818663 D|097249185 076717991 +000000972 000758393 000822940 D|009581369 059696856 +000000972 000768907 000841251 D|069772335 020413366 +000000972 000785446 000842396 D|078133158 070713557 +000000972 000792207 000846335 D|038570976 086233364 +000000972 000796271 000855193 D|030719730 017322000 +000000972 000819215 000885765 D|028927816 083492496 +000000972 000865520 000888958 D|064622164 060578881 +000000972 000883239 000935756 D|048868903 078326190 +000000972 000920146 000937767 D|023395523 069585760 +000000972 000931743 000947402 D|085613109 046041543 +000000973 000013006 000070249 D|081033369 087988397 +000000973 000019989 000072683 D|017358089 083173542 +000000973 000036470 000112442 D|094930856 034635260 +000000973 000039185 000121219 D|045234509 075125789 +000000973 000086039 000148409 D|005688635 045247817 +000000973 000121762 000183792 D|038924434 007401224 +000000973 000130500 000190938 D|087539433 057840585 +000000973 000145467 000194516 D|063629813 039558462 +000000973 000146236 000235781 D|075114060 093243974 +000000973 000184459 000237846 D|048755070 080584434 +000000973 000203139 000272709 D|098896833 094220611 +000000973 000224116 000278068 D|076098120 065105124 +000000973 000230688 000283044 D|099596276 052505945 +000000973 000255532 000294619 D|055128666 062103887 +000000973 000260646 000348280 D|017585807 093583775 +000000973 000299879 000357448 D|046050527 099226137 +000000973 000311682 000375328 D|087049862 022965404 +000000973 000323225 000384599 D|031914664 003114968 +000000973 000341220 000397728 D|037211320 041100311 +000000973 000348977 000408041 D|057451581 042083995 +000000973 000375839 000418210 D|000529976 068417574 +000000973 000382299 000437506 D|099951953 063270807 +000000973 000403940 000500056 D|031178820 029744989 +000000973 000414780 000505231 D|009279737 046988022 +000000973 000444048 000515489 D|069903734 050923129 +000000973 000450649 000532907 D|089558500 094538293 +000000973 000520402 000545329 D|038603790 091649146 +000000973 000542029 000555555 D|055220904 082537072 +000000973 000545640 000587496 D|069861070 013893898 +000000973 000566927 000657455 D|013492933 054939842 +000000973 000577471 000661734 D|027571680 058772689 +000000973 000620033 000686791 D|000637362 040784559 +000000973 000688846 000714659 D|027400570 052913708 +000000973 000715780 000759872 D|052458619 016433883 +000000973 000733416 000764005 D|060893202 073657022 +000000973 000745271 000764830 D|011356999 004707268 +000000973 000801675 000778429 D|064267820 082098017 +000000973 000810714 000784279 D|082373662 062304987 +000000973 000830822 000821066 D|000431106 019393112 +000000973 000838456 000822682 D|094276011 084603589 +000000973 000875710 000841389 D|077499101 087516315 +000000973 000902753 000857258 D|069138765 095524308 +000000973 000916805 000865865 D|028611636 030822350 +000000973 000923191 000879367 D|082832604 034841364 +000000973 000927702 000933393 D|024849867 072063711 +000000973 000947581 000938143 D|058913808 075341846 +000000973 000973181 000939757 D|068626860 093910628 +000000973 000988926 000942632 D|044758599 051037998 +000000973 000989338 000950189 D|007082533 051026370 +000000973 000998348 000984206 D|005850313 008351062 +000000974 000037906 000003858 D|023290341 076694825 +000000974 000061854 000036001 D|056050694 081099212 +000000974 000064888 000038692 D|082048600 032963951 +000000974 000069323 000039092 D|083925806 084351306 +000000974 000084171 000049254 D|044336622 002140587 +000000974 000140759 000065603 D|093555478 094473693 +000000974 000145765 000106304 D|095575001 063853902 +000000974 000154160 000142974 D|023371111 026705963 +000000974 000156564 000146126 D|055242269 069679899 +000000974 000171234 000173444 D|021384089 080808498 +000000974 000228998 000195587 D|081416072 043504779 +000000974 000236851 000203102 D|025627365 071818474 +000000974 000277441 000216562 D|048433820 006786356 +000000974 000295859 000219776 D|041239380 071504851 +000000974 000305833 000221530 D|084960452 008598771 +000000974 000319014 000242388 D|046548273 026490478 +000000974 000348146 000251798 D|011217399 085516029 +000000974 000359566 000273441 D|071374540 088382917 +000000974 000406218 000273676 D|066281786 043288789 +000000974 000408723 000285329 D|006103421 013585900 +000000974 000413446 000290081 D|099843508 073917114 +000000974 000446561 000305545 D|074236492 064690677 +000000974 000509335 000318402 D|029291482 085800798 +000000974 000511700 000331173 D|065515842 072992141 +000000974 000519400 000371826 D|088516770 028232707 +000000974 000520538 000435222 D|080193527 090423644 +000000974 000555089 000449842 D|018204914 057072921 +000000974 000559323 000451012 D|010768479 036690670 +000000974 000564025 000460720 D|002789974 079578424 +000000974 000577605 000603542 D|067034479 017403997 +000000974 000578221 000608943 D|025140419 063048021 +000000974 000582336 000623717 D|022777384 008502221 +000000974 000588626 000640721 D|017376965 011931306 +000000974 000590090 000681306 D|037751372 073166260 +000000974 000591183 000686473 D|097016802 083091626 +000000974 000636816 000700000 D|051291343 080088974 +000000974 000684633 000749418 D|089252844 029520746 +000000974 000684925 000750039 D|033270494 003110443 +000000974 000686644 000767339 D|019590598 060576736 +000000974 000688429 000767867 D|019731059 001359974 +000000974 000700246 000787380 D|044765220 077301452 +000000974 000722787 000791952 D|081152850 080763441 +000000974 000755086 000868560 D|022219786 022836583 +000000974 000770462 000872453 D|061112835 096542501 +000000974 000778880 000874731 D|079615123 082871878 +000000974 000819794 000884505 D|007018689 058837670 +000000974 000895795 000910433 D|095157273 072920197 +000000974 000916380 000931366 D|075072899 084027803 +000000974 000944933 000953378 D|056338129 080650353 +000000974 000992537 000975498 D|059435801 071609345 +000000975 000004802 000022715 D|054524719 051856468 +000000975 000019243 000056244 D|069427805 002160809 +000000975 000077355 000067330 D|094401970 069004734 +000000975 000086808 000087389 D|049117648 021471225 +000000975 000088190 000104641 D|078258758 032658271 +000000975 000090934 000106237 D|049626243 016507941 +000000975 000134350 000127900 D|037701603 006067750 +000000975 000138375 000133777 D|025311212 073224339 +000000975 000199156 000159248 D|087705091 045753961 +000000975 000267897 000161453 D|017225350 059667521 +000000975 000280050 000174783 D|003079122 083677263 +000000975 000306383 000195908 D|020901074 042610357 +000000975 000307873 000291824 D|097871439 048467907 +000000975 000315218 000303809 D|053847592 018719492 +000000975 000326585 000307218 D|027170779 094487928 +000000975 000374864 000308989 D|039443911 009465922 +000000975 000401721 000342749 D|006410856 092383059 +000000975 000406902 000347364 D|076231045 099691600 +000000975 000407397 000386765 D|021066401 013277056 +000000975 000408920 000402833 D|056940124 067483766 +000000975 000420252 000419053 D|028234476 073244839 +000000975 000422004 000444724 D|074611244 088032733 +000000975 000444424 000450064 D|043212447 026495031 +000000975 000446294 000497123 D|008346006 094918111 +000000975 000577535 000498013 D|001746100 037404810 +000000975 000578676 000532963 D|060819674 024425236 +000000975 000590733 000539031 D|022921678 039682105 +000000975 000625572 000539666 D|089760301 060677739 +000000975 000638219 000554653 D|050357161 075473391 +000000975 000652594 000583486 D|060760957 091766014 +000000975 000683610 000596032 D|085812943 070354541 +000000975 000691072 000630900 D|031114202 062252087 +000000975 000700892 000642362 D|075964930 004808299 +000000975 000716628 000680086 D|047340883 023838036 +000000975 000722138 000717297 D|029922561 031047212 +000000975 000728764 000725032 D|051944611 084569487 +000000975 000733317 000736726 D|055606202 040839968 +000000975 000737216 000737620 D|020802351 042234136 +000000975 000741598 000759518 D|041063966 029066881 +000000975 000758813 000790787 D|020359645 092605513 +000000975 000770437 000797622 D|092260396 004433404 +000000975 000779242 000813697 D|099120872 025457094 +000000975 000786254 000827422 D|029850341 088840321 +000000975 000811258 000834420 D|069912481 072297498 +000000975 000834267 000846785 D|047937866 013356151 +000000975 000843286 000880177 D|092871470 055486740 +000000975 000853620 000890950 D|061418341 067717127 +000000975 000863291 000913199 D|008167773 085930422 +000000975 000952149 000919102 D|035818477 083445461 +000000975 000961883 000983038 D|026418732 016196152 +000000976 000003802 000044299 D|023217295 053691839 +000000976 000007219 000094996 D|051774994 045655299 +000000976 000014202 000099068 D|049593355 030409932 +000000976 000064644 000111269 D|090059520 063086595 +000000976 000072387 000122297 D|047552408 043185670 +000000976 000082209 000195335 D|079230780 041567901 +000000976 000108250 000195991 D|033890628 046567888 +000000976 000109958 000211971 D|055363044 032791673 +000000976 000110396 000221231 D|080703145 061714654 +000000976 000118787 000223690 D|020784702 002877104 +000000976 000130476 000253287 D|050816486 030893282 +000000976 000131306 000289768 D|003317470 073829375 +000000976 000173496 000344395 D|035776283 078413780 +000000976 000187534 000355779 D|019878026 080421444 +000000976 000200112 000389850 D|052654659 021685047 +000000976 000229898 000418542 D|099500022 099875994 +000000976 000240506 000448067 D|048762541 082366785 +000000976 000263205 000449161 D|030231773 031985961 +000000976 000296746 000467104 D|002190724 080079333 +000000976 000303211 000503957 D|039660939 086236738 +000000976 000333439 000527837 D|045793686 052338807 +000000976 000340951 000556284 D|030138423 010452379 +000000976 000341184 000591530 D|073672400 069183645 +000000976 000377184 000593062 D|018180343 027642473 +000000976 000383724 000602863 D|064965477 075403087 +000000976 000394071 000622682 D|054729024 075895510 +000000976 000452631 000634494 D|031250500 043403899 +000000976 000498312 000655521 D|017325466 008068902 +000000976 000506814 000664993 D|081711783 019812878 +000000976 000517528 000674634 D|045619999 068290540 +000000976 000524625 000708699 D|096948506 004581314 +000000976 000534608 000715690 D|047129526 069782483 +000000976 000575455 000781183 D|010731466 099967267 +000000976 000581113 000793399 D|076545974 041176407 +000000976 000586510 000793677 D|013407454 096564923 +000000976 000594316 000815793 D|016259090 087819124 +000000976 000631969 000822139 D|049693457 026893233 +000000976 000643951 000828655 D|023203690 038720115 +000000976 000656681 000850120 D|007484067 031670783 +000000976 000730072 000879482 D|092900650 020932104 +000000976 000730456 000888493 D|077383292 074056023 +000000976 000800881 000910175 D|046198588 078547000 +000000976 000819077 000920963 D|093741832 079524399 +000000976 000820909 000927120 D|073536424 072828802 +000000976 000852120 000933527 D|009106900 074299660 +000000976 000872987 000938569 D|059928339 078385452 +000000976 000885791 000946877 D|041359774 086149192 +000000976 000927664 000947383 D|047418904 032336858 +000000976 000930112 000963998 D|070106015 050049028 +000000976 000934253 000965033 D|024890383 035651339 +000000977 000002114 000008526 D|034746058 035775474 +000000977 000010411 000060140 D|032757285 025601158 +000000977 000026919 000082686 D|078984893 067176368 +000000977 000031514 000100861 D|001811612 022625754 +000000977 000042571 000104648 D|007258080 095618558 +000000977 000045464 000136571 D|060867753 025997516 +000000977 000047869 000175087 D|025247164 083589312 +000000977 000091021 000250148 D|058249557 078237288 +000000977 000102111 000252363 D|076033603 081895534 +000000977 000141031 000259967 D|060825624 060484873 +000000977 000146391 000269534 D|010396541 052970411 +000000977 000157339 000288310 D|075256128 024237191 +000000977 000163914 000299538 D|094329815 045056992 +000000977 000171386 000300347 D|090876122 028419126 +000000977 000178378 000304437 D|083439367 045414972 +000000977 000194024 000319071 D|001985840 014550669 +000000977 000207130 000364733 D|067321073 038715498 +000000977 000225852 000408322 D|038591915 025184938 +000000977 000263280 000413461 D|083001611 048934600 +000000977 000277903 000416063 D|070181223 027334192 +000000977 000280908 000435672 D|035702449 091252935 +000000977 000327128 000449772 D|045270364 044968438 +000000977 000360130 000450402 D|061075696 055599652 +000000977 000389809 000466819 D|025153519 067193871 +000000977 000393194 000539681 D|050166292 080162509 +000000977 000403251 000555098 D|068221322 098979132 +000000977 000438549 000559572 D|052905513 065229459 +000000977 000448153 000571339 D|098278992 099343112 +000000977 000469404 000577603 D|072569644 060949635 +000000977 000486862 000614382 D|068575473 025328531 +000000977 000488211 000623978 D|031974552 042165643 +000000977 000523844 000653636 D|072720828 067672159 +000000977 000534507 000661393 D|001139123 048120006 +000000977 000595704 000730466 D|054962158 037142995 +000000977 000614565 000761959 D|067824512 053599934 +000000977 000638870 000799169 D|049544236 085696479 +000000977 000654328 000856017 D|068273531 055750129 +000000977 000700741 000857500 D|045299196 039826012 +000000977 000782152 000884518 D|095461210 098182607 +000000977 000788949 000893952 D|075357345 083629566 +000000977 000812543 000897290 D|079885209 065046107 +000000977 000821411 000906154 D|089276593 065776971 +000000977 000848201 000912369 D|020180605 049633218 +000000977 000858015 000914056 D|084184480 084340134 +000000977 000904505 000928120 D|042040302 027838093 +000000977 000930078 000929498 D|060996877 019969110 +000000977 000956441 000969022 D|049677945 067882636 +000000977 000986650 000973590 D|045987820 023985040 +000000977 000987518 000975979 D|084961419 000327775 +000000977 000993030 000976648 D|056642087 051172343 +000000978 000004727 000021529 D|055349318 089876555 +000000978 000060784 000024765 D|086148703 006019924 +000000978 000075060 000030267 D|011743111 044051417 +000000978 000082481 000042759 D|079094591 008824150 +000000978 000087347 000052039 D|082405409 036722713 +000000978 000091710 000070877 D|019406089 069911743 +000000978 000111317 000074261 D|019506457 002163972 +000000978 000129332 000090943 D|043970944 094474930 +000000978 000161199 000095850 D|022207431 085576904 +000000978 000187616 000112524 D|034674549 050416552 +000000978 000222340 000124852 D|004983020 077061224 +000000978 000300443 000144106 D|020743420 084006691 +000000978 000320310 000161021 D|014404166 009934472 +000000978 000333399 000248409 D|062370306 018740557 +000000978 000358767 000275024 D|043034224 093952145 +000000978 000360924 000314151 D|022219327 016560269 +000000978 000362561 000341889 D|086727094 061703652 +000000978 000388038 000381029 D|077201061 086057920 +000000978 000409963 000390875 D|016226549 081930961 +000000978 000423371 000412490 D|018852117 055570651 +000000978 000427576 000413557 D|001584252 080379766 +000000978 000429809 000438016 D|056438687 055160762 +000000978 000449281 000459889 D|004358264 028102443 +000000978 000472228 000473313 D|092112143 058761539 +000000978 000489546 000498443 D|080569440 066015822 +000000978 000492940 000510990 D|067016856 004167685 +000000978 000505210 000541754 D|096497271 070970941 +000000978 000505843 000553485 D|038885313 023959613 +000000978 000517526 000555295 D|062929718 098597710 +000000978 000518002 000555965 D|049612614 052997965 +000000978 000532177 000581523 D|055011533 021398678 +000000978 000566288 000583636 D|017981870 033269818 +000000978 000581656 000606899 D|064868403 077838074 +000000978 000614877 000612147 D|044458088 029229154 +000000978 000630795 000620321 D|082984224 089080062 +000000978 000649829 000676129 D|048614351 032028629 +000000978 000660452 000692231 D|010710722 066039071 +000000978 000665527 000733268 D|031398945 076399124 +000000978 000714703 000740215 D|017810379 019570784 +000000978 000717807 000764643 D|057910891 000713806 +000000978 000725900 000790122 D|019914211 018864906 +000000978 000765104 000803738 D|091838410 076744442 +000000978 000815806 000809863 D|045955520 056903721 +000000978 000816265 000818193 D|074758844 091579325 +000000978 000850963 000849451 D|061451543 014368305 +000000978 000858827 000863125 D|058180255 061536179 +000000978 000915445 000865665 D|030190820 077858444 +000000978 000921034 000939456 D|096480521 042518399 +000000978 000960654 000964274 D|003884267 077297164 +000000978 000970104 000971934 D|042809103 052284800 +000000979 000004213 000049484 D|013227398 042883661 +000000979 000015304 000059458 D|054155822 054792645 +000000979 000051610 000074399 D|065626379 017008778 +000000979 000088883 000082427 D|094393565 081883821 +000000979 000091920 000093869 D|096173851 074032753 +000000979 000113340 000131757 D|020359538 085130910 +000000979 000127236 000156756 D|021996418 033771839 +000000979 000127766 000160756 D|002502903 087997785 +000000979 000139134 000185588 D|042975364 070573945 +000000979 000144506 000195271 D|022902127 081244414 +000000979 000149353 000258636 D|048725099 082501705 +000000979 000181279 000301575 D|007976147 044523169 +000000979 000192979 000336666 D|082873708 084083464 +000000979 000193893 000349812 D|012445004 079679251 +000000979 000216513 000354911 D|089403349 083082282 +000000979 000226338 000369937 D|066595946 036583463 +000000979 000228993 000379051 D|017936280 056623439 +000000979 000264267 000399680 D|079258694 005082898 +000000979 000289813 000401832 D|011308742 010988919 +000000979 000293669 000406779 D|000314826 096249931 +000000979 000327509 000417132 D|005352871 017699217 +000000979 000336372 000429537 D|037330208 095773461 +000000979 000341154 000466330 D|077576867 035924125 +000000979 000352087 000536362 D|095844039 002530900 +000000979 000363747 000539505 D|090458832 040962114 +000000979 000372633 000549850 D|097385297 085488132 +000000979 000389689 000582448 D|088632691 023492671 +000000979 000426674 000586700 D|083770547 032192104 +000000979 000468735 000588971 D|013378502 079489693 +000000979 000489618 000594451 D|009532824 078203174 +000000979 000508466 000596570 D|057131453 088872004 +000000979 000586909 000692224 D|001961775 073168785 +000000979 000595249 000696947 D|076878355 088879684 +000000979 000647257 000733772 D|085939723 043460982 +000000979 000662126 000735870 D|070698650 096950801 +000000979 000804070 000747859 D|084314710 040193975 +000000979 000818323 000752404 D|072285897 034652500 +000000979 000849308 000778208 D|045084832 057753680 +000000979 000873020 000810963 D|023470027 080911431 +000000979 000875615 000812034 D|046680693 018517852 +000000979 000936868 000823199 D|005680526 061948796 +000000979 000937994 000831755 D|022087297 093646925 +000000979 000941311 000862627 D|088904776 023879950 +000000979 000951213 000874539 D|032209073 057000598 +000000979 000973661 000896828 D|060180084 084239356 +000000979 000978780 000904829 D|089961661 070588367 +000000979 000979480 000917812 D|022230450 045576823 +000000979 000981174 000925507 D|000466279 065489852 +000000979 000988044 000944594 D|054373792 039098268 +000000979 000991514 000969626 D|082806869 001892269 +000000980 000006619 000020628 D|098985233 021273090 +000000980 000044270 000043651 D|077196175 016837590 +000000980 000046770 000048532 D|028277316 006412240 +000000980 000050274 000049074 D|072697084 022340447 +000000980 000077350 000073123 D|065327937 063402322 +000000980 000079438 000075402 D|064492631 078024884 +000000980 000095830 000083722 D|076048583 006041125 +000000980 000101421 000084551 D|003217590 053681770 +000000980 000127341 000096413 D|093436346 064000561 +000000980 000185112 000096764 D|081530072 096570516 +000000980 000204282 000097485 D|092949141 065111889 +000000980 000220345 000151173 D|020400541 026455040 +000000980 000230573 000156914 D|048900506 082851462 +000000980 000249080 000165382 D|023558860 071769306 +000000980 000260480 000178461 D|025535060 078254699 +000000980 000286188 000180357 D|024336778 009428785 +000000980 000296066 000189748 D|090840680 010357987 +000000980 000318738 000228783 D|025531615 089998507 +000000980 000334255 000284977 D|091388726 060797826 +000000980 000380685 000299799 D|052590758 061789156 +000000980 000392907 000302459 D|066439158 029198195 +000000980 000399526 000317968 D|093148055 085179426 +000000980 000403427 000352311 D|050658961 029932107 +000000980 000414498 000355753 D|063393987 003032103 +000000980 000423016 000358956 D|052776836 049710779 +000000980 000445843 000373846 D|067022253 017925910 +000000980 000447361 000388623 D|024012909 093649785 +000000980 000452090 000410576 D|072027888 082372580 +000000980 000477796 000424836 D|031979294 026286794 +000000980 000484536 000450827 D|047389593 082903179 +000000980 000510799 000478605 D|058760146 023441352 +000000980 000529253 000496050 D|011428966 090207529 +000000980 000544532 000547745 D|036743571 016953423 +000000980 000547918 000550280 D|010671711 056071864 +000000980 000596674 000589742 D|024772543 036275448 +000000980 000644584 000617047 D|079681477 089076963 +000000980 000698791 000626009 D|050748283 092308319 +000000980 000705933 000634238 D|034887897 031167729 +000000980 000716701 000737422 D|020107627 082933415 +000000980 000717383 000778455 D|000163161 054961023 +000000980 000718607 000786226 D|038799385 037048497 +000000980 000739493 000815071 D|019273035 061608210 +000000980 000788040 000823005 D|036444495 004091858 +000000980 000791683 000827751 D|084840134 020426488 +000000980 000799255 000917224 D|008002323 064927990 +000000980 000814604 000926452 D|033330658 093541263 +000000980 000826483 000926831 D|093272713 057395870 +000000980 000877585 000990041 D|003907233 047842526 +000000980 000942800 000991465 D|099889637 000023785 +000000980 000983725 000994259 D|039552635 063413953 +000000981 000016394 000046324 D|075764097 011559209 +000000981 000110987 000046985 D|077630516 024429818 +000000981 000131797 000056159 D|032107681 081127763 +000000981 000226431 000134139 D|088679917 033171879 +000000981 000249843 000142089 D|041396246 093714419 +000000981 000253429 000188672 D|075741272 006188179 +000000981 000265787 000201018 D|096147670 045683748 +000000981 000286608 000260320 D|046284084 091330264 +000000981 000328307 000270239 D|023583756 002921868 +000000981 000329823 000272792 D|020761903 048635915 +000000981 000330540 000288163 D|075244456 083953177 +000000981 000354384 000295353 D|063353415 097790868 +000000981 000355254 000349047 D|005936845 000152031 +000000981 000364676 000355154 D|072086007 077420875 +000000981 000381820 000360507 D|092005744 062306513 +000000981 000388316 000370070 D|025951117 002735617 +000000981 000390171 000385012 D|036158879 078277536 +000000981 000395729 000387612 D|080847960 021216636 +000000981 000410398 000408072 D|000155365 038240879 +000000981 000412613 000409026 D|004603242 035179033 +000000981 000426436 000424164 D|014204057 063819235 +000000981 000464410 000456973 D|093744558 050978770 +000000981 000465601 000464307 D|007061463 071335438 +000000981 000519430 000464538 D|058225638 083045623 +000000981 000531609 000487383 D|001546901 079429299 +000000981 000539113 000492061 D|039333571 021934585 +000000981 000549260 000516704 D|009230967 099216817 +000000981 000562054 000537637 D|058750686 093537457 +000000981 000625186 000547125 D|012883367 080851422 +000000981 000632000 000610478 D|026847479 083237709 +000000981 000643020 000615582 D|064762280 040007673 +000000981 000647781 000667261 D|076575385 099265047 +000000981 000653590 000702097 D|044485259 024714283 +000000981 000655511 000704357 D|070531308 073292272 +000000981 000666365 000768268 D|090002017 044393368 +000000981 000675131 000779602 D|018958749 089907499 +000000981 000682004 000792565 D|012784253 071304889 +000000981 000727789 000802590 D|097601210 014784415 +000000981 000730906 000815664 D|038116066 093247859 +000000981 000769775 000816903 D|046859095 003762528 +000000981 000811182 000833279 D|058992319 001759714 +000000981 000842519 000842912 D|074862715 034698893 +000000981 000845755 000845908 D|080993326 073432948 +000000981 000861623 000847342 D|082551753 049846156 +000000981 000888041 000851099 D|064023996 083875422 +000000981 000925742 000883663 D|043054833 000037654 +000000981 000953968 000896307 D|004282299 082942487 +000000981 000964616 000958769 D|049359419 042953157 +000000981 000965721 000969594 D|063101411 076768485 +000000981 000978462 000989759 D|075227248 051812451 +000000982 000000784 000071554 D|016170958 018009643 +000000982 000021686 000123205 D|062714633 080721444 +000000982 000021839 000134397 D|019923568 089927025 +000000982 000027752 000178545 D|091238577 050462196 +000000982 000055600 000182573 D|045806501 074858379 +000000982 000061339 000203749 D|046120122 013017297 +000000982 000110745 000211458 D|084278196 043720784 +000000982 000135365 000219526 D|021682950 047860746 +000000982 000140233 000225309 D|000363758 071436392 +000000982 000148976 000230659 D|086218762 079243602 +000000982 000158699 000253650 D|001723138 030340936 +000000982 000172044 000270767 D|020326427 012883764 +000000982 000183541 000276926 D|024342024 003231898 +000000982 000198128 000288277 D|024124875 007429724 +000000982 000246129 000305077 D|001309434 003883273 +000000982 000251916 000305989 D|095401575 064198640 +000000982 000282760 000323424 D|075863877 090555953 +000000982 000329694 000353120 D|037804584 032041226 +000000982 000342088 000355894 D|042330720 018766330 +000000982 000362633 000364556 D|023304668 029094945 +000000982 000370031 000372569 D|039015567 052453303 +000000982 000388898 000386018 D|056820913 026780855 +000000982 000402064 000400264 D|026428407 080922754 +000000982 000408560 000417874 D|006993041 056316378 +000000982 000434842 000418012 D|089489861 065200185 +000000982 000436182 000481505 D|094448062 029531484 +000000982 000488502 000499677 D|077090393 065613488 +000000982 000511152 000501259 D|089894262 007012008 +000000982 000534150 000507462 D|037071394 076815563 +000000982 000537854 000511602 D|027665813 036899242 +000000982 000567733 000614939 D|033186062 002047179 +000000982 000576502 000624435 D|089459952 004766149 +000000982 000596535 000635800 D|008909238 031507781 +000000982 000657659 000672885 D|082595919 045426141 +000000982 000727734 000677486 D|040468673 073003310 +000000982 000790948 000719274 D|031348019 045641930 +000000982 000813348 000724391 D|092600275 085597331 +000000982 000854691 000744578 D|032025753 016481444 +000000982 000863922 000770133 D|038149511 043585041 +000000982 000885913 000799587 D|045307760 014272427 +000000982 000889773 000886703 D|072629667 090164163 +000000982 000939247 000893608 D|042643877 022389255 +000000982 000958043 000904633 D|050544805 033722823 +000000982 000960357 000908343 D|063084808 080708806 +000000982 000963030 000923286 D|087180281 081668727 +000000982 000967983 000925127 D|035948371 029780587 +000000982 000972369 000941053 D|055733463 041456484 +000000982 000977132 000959383 D|039781584 086633237 +000000982 000978360 000991119 D|000112678 044637329 +000000982 000990832 000996226 D|036747507 031563678 +000000983 000017692 000005477 D|044230222 035906635 +000000983 000026686 000006595 D|063986602 020498911 +000000983 000067341 000027082 D|004199052 064190148 +000000983 000083470 000034187 D|014047670 058506694 +000000983 000135550 000056005 D|011750187 004877395 +000000983 000167503 000060064 D|017712029 044581354 +000000983 000213584 000060068 D|005182786 067808207 +000000983 000221584 000092523 D|012741683 057170468 +000000983 000254494 000128180 D|034806194 018767083 +000000983 000300855 000166114 D|063104975 095345317 +000000983 000337643 000178148 D|041627008 008433835 +000000983 000340725 000178460 D|034851820 063758435 +000000983 000343354 000201964 D|054608576 082552925 +000000983 000374275 000265474 D|043445385 024976916 +000000983 000377658 000290736 D|083995620 081835222 +000000983 000390849 000312557 D|037910914 030402891 +000000983 000394678 000320689 D|040680776 046475134 +000000983 000399487 000356900 D|068575971 040511612 +000000983 000400589 000374355 D|026708185 054556004 +000000983 000411844 000409038 D|013945431 095695117 +000000983 000419118 000413764 D|060859538 019951001 +000000983 000420660 000419480 D|089651391 051724357 +000000983 000427072 000421198 D|044991578 030596293 +000000983 000437225 000446245 D|044088781 022574043 +000000983 000527056 000452061 D|024720695 065875012 +000000983 000534436 000459440 D|020643746 024462407 +000000983 000557617 000459685 D|016192784 089804067 +000000983 000564238 000483415 D|074275862 049533153 +000000983 000610422 000488658 D|038770943 039403771 +000000983 000696987 000488862 D|082441122 051502635 +000000983 000715535 000508999 D|067072654 025849559 +000000983 000744141 000526022 D|053797865 062334431 +000000983 000746791 000546243 D|077380393 095980060 +000000983 000790058 000563535 D|016337594 002656182 +000000983 000798710 000596247 D|087186896 096840915 +000000983 000814420 000656523 D|026354142 042135029 +000000983 000817068 000680318 D|064710905 089636219 +000000983 000857632 000698317 D|009806096 066757495 +000000983 000865257 000738256 D|081256766 084084223 +000000983 000872092 000760193 D|079426305 036988799 +000000983 000877574 000785448 D|083281073 071354263 +000000983 000888833 000787794 D|053090866 008982122 +000000983 000890096 000799228 D|005124026 050168765 +000000983 000907458 000818467 D|005749304 042501383 +000000983 000929820 000820500 D|095170461 030403161 +000000983 000935304 000860776 D|052702686 099453945 +000000983 000954386 000917109 D|061480220 058406056 +000000983 000956966 000974564 D|074189718 090398359 +000000983 000984490 000983699 D|097523178 047775832 +000000983 000989459 000997937 D|090947485 050650708 +000000984 000004221 000026188 D|052376974 070044113 +000000984 000039875 000034192 D|001642055 060553033 +000000984 000040754 000101177 D|032956961 020822208 +000000984 000050079 000102634 D|030804816 065037612 +000000984 000059224 000111728 D|073942319 050110664 +000000984 000082285 000197623 D|062420170 092494464 +000000984 000132774 000202950 D|008491618 035719990 +000000984 000136249 000217413 D|060175223 044374560 +000000984 000178498 000228639 D|061772438 043005991 +000000984 000209708 000233746 D|070360486 045582142 +000000984 000215574 000252541 D|059604113 096404519 +000000984 000219336 000302983 D|076873873 056593764 +000000984 000259970 000330442 D|088515505 065681662 +000000984 000275474 000333302 D|099407151 035870274 +000000984 000287302 000333800 D|036893017 001479073 +000000984 000310220 000352907 D|012269099 099719309 +000000984 000323177 000362962 D|049229525 028443679 +000000984 000337610 000372597 D|024132343 074723837 +000000984 000350405 000387146 D|035633655 075299378 +000000984 000369742 000415321 D|059268636 035002056 +000000984 000370530 000422319 D|043942989 074096338 +000000984 000418229 000435490 D|060760993 043868122 +000000984 000420565 000494300 D|046889911 025742874 +000000984 000421313 000497525 D|090557836 087111290 +000000984 000436430 000500097 D|040603931 092063607 +000000984 000452877 000509386 D|023847011 097757949 +000000984 000464325 000509612 D|091946699 079628001 +000000984 000483087 000545887 D|000268392 066439731 +000000984 000487220 000554793 D|064449697 054718449 +000000984 000526470 000558853 D|062360354 098875017 +000000984 000548819 000574635 D|052482664 026744777 +000000984 000599665 000582567 D|013819419 067178594 +000000984 000613871 000623853 D|039213834 040266340 +000000984 000663473 000632963 D|096587038 063575425 +000000984 000706772 000636595 D|067457780 017370251 +000000984 000733278 000673510 D|053672078 031099878 +000000984 000778921 000679392 D|070045526 095195738 +000000984 000792611 000686893 D|049301203 032188920 +000000984 000891615 000800689 D|060477772 013131977 +000000984 000910437 000815701 D|087534824 028202425 +000000984 000928606 000858928 D|000340848 038305901 +000000984 000930088 000893610 D|080871584 034119221 +000000984 000930199 000915725 D|093114527 089707636 +000000984 000930257 000918115 D|060012326 007740006 +000000984 000950744 000926447 D|083225538 058183680 +000000984 000951313 000927827 D|025836246 047140749 +000000984 000952027 000946942 D|047952419 050200370 +000000984 000973436 000968589 D|092354426 000882599 +000000984 000976639 000990271 D|003556882 098669554 +000000984 000978418 000992603 D|083524518 089867636 +000000985 000010046 000023039 D|012687587 025820096 +000000985 000027262 000026488 D|097289675 030087352 +000000985 000035948 000060776 D|023429282 011808543 +000000985 000047606 000068178 D|050376497 094309469 +000000985 000052214 000093162 D|037855192 050734216 +000000985 000056608 000105928 D|069378528 058672939 +000000985 000066936 000108647 D|031323698 064347275 +000000985 000085365 000122632 D|052832584 010878004 +000000985 000106068 000135231 D|090057835 012139074 +000000985 000121047 000167393 D|060129518 094534829 +000000985 000157489 000177702 D|099407035 043569990 +000000985 000176222 000190668 D|093427230 051823049 +000000985 000188482 000197643 D|090711997 032653717 +000000985 000265768 000223843 D|084921694 014224715 +000000985 000291269 000229302 D|070321588 025868236 +000000985 000322845 000236489 D|038021121 042296008 +000000985 000331512 000262391 D|065237158 000770325 +000000985 000368310 000279647 D|096387579 039296442 +000000985 000371828 000365191 D|075003687 018845898 +000000985 000387736 000384888 D|024477164 012293123 +000000985 000403210 000391784 D|076308152 073668246 +000000985 000405411 000437343 D|084079705 069231799 +000000985 000418970 000464408 D|032498141 049632241 +000000985 000440316 000513358 D|094566921 013348963 +000000985 000463024 000522637 D|096986396 041352045 +000000985 000464180 000526979 D|023641005 073945383 +000000985 000503215 000531934 D|008437517 027463091 +000000985 000529905 000555092 D|006358802 082851456 +000000985 000536557 000555270 D|068354560 023389016 +000000985 000562838 000565725 D|055354936 032372130 +000000985 000570509 000583555 D|045925200 065091210 +000000985 000606567 000617010 D|094371302 044732903 +000000985 000608030 000624063 D|013411221 026835791 +000000985 000627684 000654950 D|007824418 058447561 +000000985 000639926 000667078 D|032928597 020772164 +000000985 000652618 000673991 D|056815994 002871238 +000000985 000691814 000699602 D|063566025 037690623 +000000985 000709782 000706644 D|023224354 051615278 +000000985 000743396 000706948 D|095539027 078644111 +000000985 000767785 000755394 D|012282371 095363684 +000000985 000771614 000757565 D|010286550 026500321 +000000985 000796004 000795354 D|084131053 065061405 +000000985 000805407 000811104 D|016172828 079583681 +000000985 000812347 000846346 D|038259445 099435148 +000000985 000820139 000857856 D|074646269 022866377 +000000985 000879321 000883417 D|052414284 021871498 +000000985 000935882 000900476 D|031381855 060829504 +000000985 000953087 000927012 D|020211145 062908599 +000000985 000954559 000979324 D|081891659 071428058 +000000985 000967333 000989560 D|010042817 082312070 +000000986 000026485 000002288 D|003165614 008522517 +000000986 000031680 000009054 D|027790613 083178182 +000000986 000064893 000039109 D|098776369 010969649 +000000986 000078971 000044360 D|047904501 007733308 +000000986 000092473 000080234 D|019565201 029555441 +000000986 000095537 000094604 D|044041984 054051723 +000000986 000147399 000136998 D|046098614 040251149 +000000986 000158126 000161357 D|062213542 059695599 +000000986 000160780 000223860 D|079658144 028633585 +000000986 000200958 000250204 D|074233615 086205603 +000000986 000220681 000255692 D|064344262 046331311 +000000986 000232420 000279211 D|087593727 058279136 +000000986 000243136 000337925 D|030446101 029366161 +000000986 000250045 000351840 D|028725565 053747454 +000000986 000293967 000354578 D|063976122 085963418 +000000986 000306497 000373022 D|085326871 064887286 +000000986 000327911 000383872 D|024465244 036798723 +000000986 000340262 000409011 D|080997648 049692188 +000000986 000359238 000436109 D|011520840 083090139 +000000986 000408861 000472464 D|024193402 008534555 +000000986 000421967 000488455 D|046903578 041624049 +000000986 000428531 000519347 D|021069535 018330827 +000000986 000434024 000531022 D|054966235 041338242 +000000986 000483231 000538061 D|046099592 063894525 +000000986 000496663 000561724 D|054963916 000589265 +000000986 000542070 000572411 D|001086678 065366332 +000000986 000577505 000576712 D|034531220 088316407 +000000986 000605054 000581635 D|001797109 053500585 +000000986 000643852 000601487 D|083387382 083698025 +000000986 000680613 000671234 D|000012094 067707987 +000000986 000687200 000671920 D|045160497 059844623 +000000986 000741843 000682566 D|088334852 014915343 +000000986 000745641 000692894 D|021894193 084502234 +000000986 000759706 000692976 D|011512139 001858164 +000000986 000766030 000703530 D|069160120 070734183 +000000986 000768997 000705970 D|060352135 017408799 +000000986 000779153 000725915 D|013580842 094271920 +000000986 000783473 000725959 D|059969145 021764957 +000000986 000820901 000728394 D|038087780 036401017 +000000986 000847335 000745157 D|056907106 021964631 +000000986 000889322 000764315 D|051673492 031132000 +000000986 000909081 000772532 D|046293294 030055278 +000000986 000919261 000776234 D|097374445 008909160 +000000986 000921831 000817611 D|005780877 020639707 +000000986 000935048 000824651 D|001485257 089711584 +000000986 000937246 000826432 D|040787519 002520740 +000000986 000951903 000859945 D|062777591 046247864 +000000986 000960504 000869383 D|004423646 025353036 +000000986 000987529 000892734 D|052125360 066444749 +000000986 000992133 000941128 D|092800694 076693834 +000000987 000017317 000007462 D|045242141 016294599 +000000987 000045785 000007858 D|010433378 020962179 +000000987 000082774 000008951 D|041456980 077449974 +000000987 000159101 000028975 D|004633978 032328074 +000000987 000161912 000064710 D|018828013 028792055 +000000987 000170957 000075463 D|091900767 017537282 +000000987 000208363 000081559 D|002373392 067817994 +000000987 000219656 000148201 D|050163293 016991069 +000000987 000230248 000166987 D|011697101 023760097 +000000987 000258103 000194757 D|021062634 028311784 +000000987 000277824 000205454 D|072992506 026530911 +000000987 000279109 000219860 D|015767136 053584209 +000000987 000302930 000254096 D|034815926 011006282 +000000987 000303577 000287227 D|008241114 031696217 +000000987 000319944 000289267 D|099262903 043715933 +000000987 000335417 000290138 D|060472681 022632859 +000000987 000337893 000308395 D|011026732 002466262 +000000987 000338021 000367422 D|052499159 060751651 +000000987 000362907 000427940 D|057808217 077797419 +000000987 000391063 000445459 D|028140652 048150610 +000000987 000408999 000449329 D|054425080 040601896 +000000987 000438658 000487497 D|037980348 029428309 +000000987 000477448 000503628 D|053440505 000106626 +000000987 000481500 000538924 D|036263277 080418370 +000000987 000526306 000579067 D|002017346 009006900 +000000987 000538521 000596844 D|011991746 072846598 +000000987 000569872 000611069 D|086908485 094292623 +000000987 000582903 000629334 D|074636182 055206763 +000000987 000587479 000639356 D|047326084 088672988 +000000987 000593022 000695267 D|055142524 050618867 +000000987 000597808 000703500 D|084541175 059441225 +000000987 000609436 000706521 D|014094318 099269076 +000000987 000622979 000742055 D|060341133 088663269 +000000987 000630381 000750962 D|042874014 018563910 +000000987 000686449 000764213 D|099316224 076562526 +000000987 000694044 000773521 D|059700175 020981417 +000000987 000696285 000829952 D|022989481 041451495 +000000987 000711427 000833348 D|091268005 078351093 +000000987 000727746 000868836 D|098906516 028288704 +000000987 000744835 000881758 D|076255161 046646190 +000000987 000757700 000889307 D|034106569 060801197 +000000987 000758111 000926862 D|044117364 030696207 +000000987 000769144 000939784 D|049584479 026681702 +000000987 000781667 000940024 D|019126669 005187304 +000000987 000787636 000942101 D|054857189 011578589 +000000987 000811380 000953987 D|032905635 043872246 +000000987 000815822 000968920 D|036882938 086700038 +000000987 000872321 000990580 D|014421321 029436270 +000000987 000889103 000995738 D|017938379 010261785 +000000987 000901783 000997114 D|024303016 041756570 +000000988 000025136 000004924 D|046561744 037820026 +000000988 000028266 000024677 D|013600470 054965660 +000000988 000044675 000027113 D|072549782 029380904 +000000988 000106059 000043405 D|005437350 083595117 +000000988 000119566 000060131 D|074720767 007673697 +000000988 000152753 000080429 D|029065945 085986754 +000000988 000152878 000103826 D|023811225 026064760 +000000988 000155630 000115083 D|002681200 004490423 +000000988 000160265 000120576 D|052625797 014987066 +000000988 000196350 000151152 D|044863341 053019271 +000000988 000206059 000217201 D|008412050 005923476 +000000988 000207106 000245160 D|072029879 091935956 +000000988 000210033 000247927 D|083142595 051311961 +000000988 000227752 000257420 D|045423270 000527949 +000000988 000231411 000331380 D|004721771 047778268 +000000988 000253238 000348570 D|026920079 044242232 +000000988 000256066 000354416 D|098097632 031157478 +000000988 000299133 000397443 D|030751596 060012862 +000000988 000305991 000406593 D|097205638 070004281 +000000988 000310035 000415152 D|082863744 064247297 +000000988 000339509 000418849 D|018764604 056191462 +000000988 000344624 000421736 D|012754863 082662326 +000000988 000386113 000444576 D|042625162 007529812 +000000988 000426124 000489617 D|097575794 096093246 +000000988 000473516 000516814 D|004690678 079728035 +000000988 000502383 000527359 D|037616418 061310191 +000000988 000504311 000560948 D|003698991 081729453 +000000988 000529263 000653496 D|058370210 002595478 +000000988 000541110 000653849 D|090284845 000093032 +000000988 000558399 000676264 D|023406123 030300404 +000000988 000558561 000703142 D|089911500 087966813 +000000988 000617647 000706285 D|088050873 066617447 +000000988 000646074 000715119 D|085589175 020232108 +000000988 000697019 000723502 D|006826807 080939556 +000000988 000703591 000730695 D|091828417 086400579 +000000988 000755215 000739661 D|075514962 057258582 +000000988 000774749 000744924 D|014433243 075003145 +000000988 000782839 000781320 D|008852101 052698400 +000000988 000823470 000794814 D|094976484 013103130 +000000988 000839307 000817534 D|098003802 068304960 +000000988 000847077 000854484 D|035513616 011244141 +000000988 000878570 000856858 D|010240329 088044489 +000000988 000907170 000859202 D|068911784 031668648 +000000988 000915840 000882473 D|082682733 081522545 +000000988 000939255 000900828 D|052371845 074545242 +000000988 000948254 000907858 D|055775102 058160842 +000000988 000966774 000926114 D|002475499 043276056 +000000988 000975350 000927896 D|035281235 028524165 +000000988 000986492 000941694 D|011277797 034277402 +000000988 000996707 000968633 D|080184850 044337116 +000000989 000012284 000023895 D|036487531 025981194 +000000989 000016350 000059107 D|099719281 053341533 +000000989 000049059 000067017 D|068148556 098199309 +000000989 000076635 000071957 D|029950768 042331603 +000000989 000115859 000104459 D|043717883 033106758 +000000989 000116526 000133978 D|035868420 097288559 +000000989 000116865 000136747 D|002346192 059181547 +000000989 000126896 000166873 D|045849848 035791110 +000000989 000127857 000210558 D|008138269 060530539 +000000989 000135056 000241941 D|039124252 034023196 +000000989 000149051 000272209 D|035646690 095077523 +000000989 000186230 000284862 D|038911149 009888413 +000000989 000199015 000301133 D|074061786 019597436 +000000989 000199901 000331444 D|038177271 070384371 +000000989 000203172 000342317 D|018747625 063564915 +000000989 000205706 000346864 D|015942094 038822217 +000000989 000224501 000353004 D|025812305 091933316 +000000989 000231643 000354083 D|034619881 038764397 +000000989 000237551 000370656 D|010720132 049717209 +000000989 000241902 000374375 D|056562954 077625138 +000000989 000260358 000385629 D|094231987 096120446 +000000989 000272211 000394737 D|014539629 035426713 +000000989 000298022 000403343 D|083930108 010354439 +000000989 000332724 000420406 D|070775110 005474595 +000000989 000428449 000428972 D|079489856 058707395 +000000989 000441513 000435090 D|007913879 069283605 +000000989 000444567 000447150 D|030095163 093373856 +000000989 000447331 000447604 D|043933063 098541484 +000000989 000463764 000472920 D|099669844 028512414 +000000989 000479250 000504856 D|025615923 099172014 +000000989 000519014 000538921 D|075939229 008584964 +000000989 000560931 000582027 D|018875024 076558651 +000000989 000581851 000633347 D|005254135 018162953 +000000989 000587333 000643293 D|010021696 071343880 +000000989 000602151 000656448 D|046198271 000109613 +000000989 000668830 000664387 D|098971466 087249603 +000000989 000718330 000695559 D|023059564 072110104 +000000989 000745212 000748545 D|033966159 088070959 +000000989 000797898 000766847 D|041749356 040228804 +000000989 000803012 000788022 D|073693544 044989345 +000000989 000822041 000830478 D|060210819 061905356 +000000989 000837756 000848483 D|087973992 006239076 +000000989 000895124 000874709 D|033306153 053208370 +000000989 000927108 000886666 D|006783660 014234905 +000000989 000931468 000910369 D|008156716 003809473 +000000989 000933620 000919648 D|085509362 006605577 +000000989 000934997 000930839 D|051161112 001395070 +000000989 000971486 000947960 D|076566925 074051532 +000000989 000990166 000952868 D|001740159 011723848 +000000989 000994555 000998785 D|024620001 072442549 +000000990 000013720 000025685 D|088255086 042022862 +000000990 000019134 000028895 D|063641883 099785416 +000000990 000062895 000032154 D|039788146 026959645 +000000990 000081275 000049639 D|020111711 056619475 +000000990 000090573 000050115 D|064153859 054615214 +000000990 000093954 000070493 D|086564119 088852067 +000000990 000135512 000083210 D|053934106 070821549 +000000990 000183307 000090550 D|093164267 041967447 +000000990 000200651 000100629 D|023501096 001874038 +000000990 000203288 000108600 D|079974914 082006823 +000000990 000219892 000118044 D|089575288 013890995 +000000990 000242997 000170026 D|082495779 042024929 +000000990 000244444 000181809 D|082071710 068914197 +000000990 000257759 000215475 D|080695465 079971978 +000000990 000290560 000240582 D|060338197 080847826 +000000990 000291286 000256768 D|094548491 022163843 +000000990 000321894 000271767 D|035505865 040315118 +000000990 000326388 000299580 D|090517593 076871541 +000000990 000339768 000311507 D|060937395 091524287 +000000990 000365013 000326066 D|013840907 094251810 +000000990 000374196 000328770 D|019416951 057688934 +000000990 000403477 000348174 D|043741065 034854112 +000000990 000416987 000386299 D|027932497 076214448 +000000990 000435241 000417351 D|048287567 009314971 +000000990 000457031 000468997 D|031102010 089780816 +000000990 000492115 000501217 D|001350378 031261156 +000000990 000539044 000503107 D|095204331 074644216 +000000990 000548287 000530922 D|061929022 046159800 +000000990 000553438 000561966 D|077782743 047611731 +000000990 000573465 000578977 D|035221980 060169623 +000000990 000578128 000603795 D|068238944 072931518 +000000990 000586245 000646795 D|047982718 048513998 +000000990 000604313 000670581 D|048396386 095573149 +000000990 000605569 000674118 D|031286944 084795727 +000000990 000641194 000678099 D|072073242 043863804 +000000990 000642167 000714170 D|074780284 021120473 +000000990 000691840 000717913 D|013062207 087643363 +000000990 000714645 000730530 D|032982641 003177392 +000000990 000742280 000734344 D|069802741 056007892 +000000990 000742997 000736844 D|033208081 009321557 +000000990 000748442 000754767 D|057494009 022444474 +000000990 000760448 000801444 D|000020951 062844564 +000000990 000790487 000825761 D|073179792 079854803 +000000990 000796353 000884013 D|023880325 043737211 +000000990 000812765 000908240 D|031965284 026129968 +000000990 000816877 000922034 D|024084607 080341484 +000000990 000837252 000926896 D|017446299 067393302 +000000990 000850200 000933072 D|045219543 014895719 +000000990 000914220 000933654 D|044715237 074837893 +000000990 000979457 000937410 D|075664576 091319389 +000000991 000015255 000018965 D|062105835 097336658 +000000991 000016049 000019900 D|026459563 098778146 +000000991 000033808 000032076 D|086407226 078722889 +000000991 000039787 000084232 D|037706801 000844197 +000000991 000041103 000120077 D|051316814 065276304 +000000991 000044133 000176791 D|066030810 088194435 +000000991 000089706 000194992 D|057972326 007250751 +000000991 000113390 000232511 D|090452251 097860774 +000000991 000139883 000236702 D|071166019 070942447 +000000991 000146780 000256643 D|051704024 071138960 +000000991 000157674 000258180 D|022922110 003755521 +000000991 000173904 000268051 D|069588167 009438012 +000000991 000176913 000273004 D|037833327 000477195 +000000991 000199992 000302734 D|096617138 062856293 +000000991 000215896 000307443 D|053218036 077321745 +000000991 000228505 000308623 D|064079632 010331840 +000000991 000230588 000346289 D|001583277 064521235 +000000991 000240200 000357087 D|054676181 016015245 +000000991 000286680 000365295 D|012670772 075421392 +000000991 000341472 000393001 D|042717359 084510663 +000000991 000343069 000414806 D|026056198 088531263 +000000991 000387924 000440096 D|091638856 086845775 +000000991 000391396 000449176 D|067453246 055817424 +000000991 000391565 000495856 D|046632988 027196166 +000000991 000414116 000509014 D|003304643 018639455 +000000991 000423040 000510080 D|050840254 010279317 +000000991 000457118 000519106 D|070473587 060794590 +000000991 000539764 000525410 D|041258361 075504977 +000000991 000552577 000556949 D|009494306 096986769 +000000991 000557851 000598726 D|084551380 086238031 +000000991 000565713 000613586 D|040642387 086505197 +000000991 000578455 000626373 D|096424447 047235562 +000000991 000663811 000632424 D|067276139 042730189 +000000991 000727358 000671598 D|022252915 097998757 +000000991 000759103 000692737 D|085568232 006096623 +000000991 000785972 000732264 D|040574314 064508744 +000000991 000788909 000763680 D|032179169 098323381 +000000991 000819268 000776876 D|008470006 018026332 +000000991 000829415 000789886 D|097750449 086947479 +000000991 000836771 000810826 D|077119066 068971486 +000000991 000844524 000811881 D|082490108 003417614 +000000991 000853332 000835076 D|054865223 001299741 +000000991 000872484 000862590 D|042536079 033786893 +000000991 000881199 000865071 D|030229812 096125838 +000000991 000908571 000882048 D|033900019 082548254 +000000991 000943970 000893078 D|026202087 097651830 +000000991 000950803 000935687 D|032271640 091784300 +000000991 000992074 000947330 D|010911513 001531829 +000000991 000993332 000982845 D|015538505 016019775 +000000991 000993813 000992023 D|005659426 029524317 +000000992 000004503 000005542 D|057028257 030391241 +000000992 000030788 000010427 D|008405779 046220287 +000000992 000150236 000011980 D|055559706 054696097 +000000992 000160266 000031841 D|093613303 062167405 +000000992 000190908 000057056 D|068653815 022995181 +000000992 000206870 000096789 D|062722100 010074571 +000000992 000211559 000105969 D|068407042 082805777 +000000992 000220644 000109298 D|084088201 027136749 +000000992 000255471 000114158 D|027934270 093854665 +000000992 000326099 000131581 D|002208294 044882744 +000000992 000364440 000182126 D|089821079 083728856 +000000992 000386733 000193781 D|044012311 078617536 +000000992 000399857 000204335 D|058246821 009447819 +000000992 000406531 000216811 D|092515102 009032235 +000000992 000419951 000249370 D|015701878 088232543 +000000992 000426289 000256081 D|008912374 038272462 +000000992 000434384 000266892 D|050009790 040882969 +000000992 000438926 000273115 D|050623648 018446905 +000000992 000456689 000310039 D|059211952 077617745 +000000992 000478504 000318251 D|052728685 043773715 +000000992 000512999 000329407 D|052909386 002547425 +000000992 000514971 000339277 D|082673514 010416733 +000000992 000517818 000370225 D|076914506 073225341 +000000992 000539372 000370627 D|091759738 000939981 +000000992 000551985 000371998 D|029105598 010136070 +000000992 000591184 000379196 D|057247582 006811021 +000000992 000594007 000388380 D|087013646 049614353 +000000992 000628825 000438422 D|007518876 039230808 +000000992 000662708 000488729 D|033970584 046685112 +000000992 000681530 000548100 D|046527404 076429984 +000000992 000709820 000586738 D|010519673 069154045 +000000992 000709923 000595745 D|018591163 070384710 +000000992 000724163 000616846 D|058365073 050256961 +000000992 000731024 000624785 D|062433910 026602940 +000000992 000732340 000649996 D|015829946 004750296 +000000992 000757041 000662808 D|007556598 097328057 +000000992 000768190 000668285 D|047257148 098769669 +000000992 000780665 000770172 D|049721271 029138695 +000000992 000828690 000771323 D|008271023 074368656 +000000992 000843646 000788640 D|090252196 066355448 +000000992 000846856 000801793 D|019868477 044959523 +000000992 000880105 000811017 D|031042670 009560302 +000000992 000880137 000819732 D|090552758 008665541 +000000992 000904510 000897747 D|039014983 050893148 +000000992 000912811 000908636 D|023309294 029995059 +000000992 000914138 000921977 D|000352542 040874847 +000000992 000931224 000940652 D|014605607 041236534 +000000992 000957942 000974802 D|066878598 094266895 +000000992 000970344 000980000 D|052050876 085348552 +000000992 000988282 000991550 D|087231489 061688554 +000000993 000003312 000016249 D|055364407 007060760 +000000993 000005140 000018260 D|040737414 056698671 +000000993 000008563 000054635 D|098313931 089239996 +000000993 000039291 000066454 D|038709170 059531561 +000000993 000040608 000068934 D|030263535 000481032 +000000993 000070112 000078188 D|061262556 003437406 +000000993 000085789 000145935 D|081418644 060601331 +000000993 000114483 000174249 D|074979758 083607591 +000000993 000117340 000192699 D|038008273 022514240 +000000993 000137168 000212054 D|032216892 069424573 +000000993 000156316 000233373 D|033187323 093301395 +000000993 000166548 000237043 D|061917144 049677886 +000000993 000176281 000249325 D|043974376 059935538 +000000993 000182976 000254429 D|093939496 059527102 +000000993 000193981 000309171 D|067837240 064158627 +000000993 000197731 000335544 D|013552788 058031677 +000000993 000236686 000356914 D|020114120 048248219 +000000993 000256153 000360113 D|030426839 046804516 +000000993 000272424 000373990 D|062022136 037895296 +000000993 000298697 000385487 D|035999594 065572846 +000000993 000299728 000399524 D|084365754 031564109 +000000993 000359465 000451057 D|016895246 090504084 +000000993 000365779 000455602 D|030105717 005133574 +000000993 000407455 000488903 D|080787580 024333850 +000000993 000409781 000494181 D|082171317 087835121 +000000993 000410547 000530408 D|018775399 040052654 +000000993 000422955 000540965 D|054255862 001733374 +000000993 000435657 000548575 D|025348961 003395521 +000000993 000455065 000619808 D|050304748 043641976 +000000993 000475930 000631778 D|091445276 049233073 +000000993 000523279 000653732 D|022800402 073689935 +000000993 000544401 000659336 D|076319560 060315290 +000000993 000545386 000669440 D|001328735 056577397 +000000993 000578842 000733605 D|053231517 096894373 +000000993 000589476 000747397 D|010139123 085410815 +000000993 000633047 000749237 D|099655698 032846726 +000000993 000676975 000784493 D|090628235 060676368 +000000993 000750727 000792678 D|079751102 026000360 +000000993 000782408 000825856 D|069116489 049771470 +000000993 000826926 000843733 D|062516597 072164101 +000000993 000868189 000851172 D|089086287 085364536 +000000993 000874271 000870040 D|095169037 084097195 +000000993 000882076 000906412 D|090092748 052994905 +000000993 000901102 000916133 D|020751412 070027034 +000000993 000950349 000921496 D|082943630 056179508 +000000993 000955849 000943231 D|038220805 010200706 +000000993 000976387 000954685 D|001785906 005360048 +000000993 000977181 000956373 D|029045359 020487949 +000000993 000979239 000980517 D|048471594 000086727 +000000993 000996134 000983613 D|089563895 026578528 +000000994 000013897 000017072 D|098513030 057916363 +000000994 000016809 000032297 D|093902160 008303342 +000000994 000031948 000060055 D|070223251 083541623 +000000994 000083405 000072919 D|025798538 007463725 +000000994 000084631 000074074 D|033215129 015066674 +000000994 000099621 000146657 D|012529168 047641062 +000000994 000158981 000188095 D|085580260 032884709 +000000994 000159474 000194662 D|039341170 006691795 +000000994 000183318 000293858 D|017921933 004261433 +000000994 000184812 000302232 D|088632830 096829184 +000000994 000186780 000328543 D|055356822 084929564 +000000994 000200668 000337438 D|035833759 056483919 +000000994 000215086 000356397 D|026722477 018649825 +000000994 000246507 000362962 D|019468661 048157920 +000000994 000267328 000403426 D|023395531 097620209 +000000994 000298013 000404744 D|066447641 003793590 +000000994 000301467 000409487 D|094778728 097593057 +000000994 000321199 000429231 D|044647911 098084408 +000000994 000340288 000471121 D|056897659 018727329 +000000994 000347649 000493920 D|004693113 076320171 +000000994 000365369 000508334 D|017840144 003380928 +000000994 000370541 000525190 D|074431979 031690459 +000000994 000377043 000532137 D|060940441 062468183 +000000994 000388177 000536918 D|008871328 085421666 +000000994 000419431 000558503 D|038336050 044106509 +000000994 000427248 000563270 D|026303013 083205062 +000000994 000427596 000577244 D|061632457 042295271 +000000994 000430789 000592939 D|012063045 061952897 +000000994 000435030 000613230 D|062109113 009201715 +000000994 000438022 000643441 D|016078117 045010438 +000000994 000467408 000643876 D|087163430 089033201 +000000994 000497592 000646596 D|045268720 088222377 +000000994 000542122 000649097 D|095414609 078319110 +000000994 000558733 000697896 D|004242735 040495908 +000000994 000567407 000699492 D|070019314 032823121 +000000994 000596506 000710321 D|061864545 094011055 +000000994 000615697 000769684 D|029134075 061296179 +000000994 000642569 000782724 D|005241494 032755747 +000000994 000718570 000794094 D|071451659 094183000 +000000994 000742325 000814082 D|078913340 075669253 +000000994 000744414 000814937 D|099825076 081714617 +000000994 000801008 000815606 D|017226088 016084913 +000000994 000822321 000831098 D|029843114 053791730 +000000994 000865064 000833296 D|019764661 055187075 +000000994 000891252 000885931 D|024665439 043995482 +000000994 000931816 000942583 D|051374466 028328222 +000000994 000937059 000943650 D|045274785 029037801 +000000994 000955269 000956982 D|022324721 066632637 +000000994 000966337 000966890 D|029678345 048899611 +000000994 000996337 000967082 D|055902704 087203092 +000000995 000003165 000004740 D|078467002 014496729 +000000995 000066481 000004750 D|075030875 082761019 +000000995 000070641 000011712 D|033566040 017439417 +000000995 000072621 000053218 D|083087459 063952232 +000000995 000084509 000070247 D|093437092 078054086 +000000995 000090058 000074614 D|083018885 061011229 +000000995 000099112 000114676 D|065699909 047591980 +000000995 000105407 000119931 D|009762187 095963430 +000000995 000111294 000122413 D|097428674 099345796 +000000995 000117847 000136404 D|099583666 090520220 +000000995 000154498 000167147 D|067291299 006168581 +000000995 000163304 000174469 D|008106771 024682183 +000000995 000173480 000190808 D|086045108 012335364 +000000995 000183920 000225217 D|063197305 082862675 +000000995 000184771 000233046 D|033081694 041462573 +000000995 000187032 000266017 D|086425706 033837636 +000000995 000188543 000274256 D|029643699 008033860 +000000995 000214993 000293228 D|086592453 067151674 +000000995 000215569 000303356 D|047070230 069054176 +000000995 000241882 000315911 D|005975896 039201202 +000000995 000274999 000318875 D|001611125 076775023 +000000995 000279375 000409995 D|010056645 042833885 +000000995 000317829 000428364 D|018502771 091549508 +000000995 000338636 000476023 D|070119564 039900423 +000000995 000382841 000535822 D|023623547 030746349 +000000995 000393744 000545408 D|016556042 028080401 +000000995 000412394 000649797 D|088455650 003729038 +000000995 000415598 000672242 D|002194195 005098069 +000000995 000420807 000686672 D|013833935 012354542 +000000995 000455253 000691360 D|078561876 065813553 +000000995 000459964 000696043 D|096205366 089153488 +000000995 000464397 000711029 D|043542102 081709546 +000000995 000504635 000726278 D|057734436 073112277 +000000995 000506953 000733746 D|085106191 074141428 +000000995 000542713 000745945 D|054213162 002914869 +000000995 000576289 000771682 D|065886551 081725823 +000000995 000580321 000774612 D|058007479 039334692 +000000995 000585258 000774923 D|092114516 099462547 +000000995 000596489 000779391 D|042043774 031560253 +000000995 000630556 000788017 D|018884993 034795729 +000000995 000708450 000796279 D|028730699 018625719 +000000995 000758064 000834839 D|070222358 072119571 +000000995 000761590 000843204 D|040851914 061635211 +000000995 000767542 000844285 D|039349678 033328260 +000000995 000853828 000849003 D|054086514 082300835 +000000995 000890130 000850955 D|096467994 052175068 +000000995 000904238 000919289 D|019535778 073276460 +000000995 000910944 000951710 D|047217059 090163189 +000000995 000953591 000953012 D|000869000 074778817 +000000995 000986765 000974784 D|054002396 028493181 +000000996 000007203 000014139 D|044872973 032972018 +000000996 000012349 000023950 D|049501253 028956415 +000000996 000018290 000025183 D|045849524 073779671 +000000996 000020634 000041589 D|053207659 095977095 +000000996 000064788 000053353 D|020085791 075911346 +000000996 000068136 000074661 D|077571702 014131526 +000000996 000087969 000076301 D|067361994 013780427 +000000996 000092390 000099300 D|004765842 007148936 +000000996 000109084 000129384 D|095209824 026535120 +000000996 000112753 000159772 D|035347284 096222153 +000000996 000125137 000204428 D|080162032 089588944 +000000996 000126130 000215084 D|070327805 007291561 +000000996 000184714 000219258 D|097761867 099491806 +000000996 000217034 000235910 D|024660455 007265153 +000000996 000271231 000270053 D|045427079 095533167 +000000996 000288115 000312571 D|010158065 073784563 +000000996 000313638 000380781 D|055986549 051545478 +000000996 000317460 000405412 D|090106187 029657641 +000000996 000333805 000457799 D|008305146 048294631 +000000996 000342304 000459266 D|064965060 081793275 +000000996 000362747 000471322 D|050705045 064690090 +000000996 000411802 000503709 D|034949573 046784247 +000000996 000431263 000506305 D|069085917 021713520 +000000996 000440497 000514895 D|087407287 062831966 +000000996 000446046 000517052 D|065623166 016087278 +000000996 000500323 000644433 D|074377561 078854725 +000000996 000524160 000645302 D|069344386 062212033 +000000996 000534016 000657111 D|078344140 080414578 +000000996 000538044 000661369 D|043032002 032476410 +000000996 000547050 000683803 D|080023377 009464315 +000000996 000590348 000691525 D|003605099 025147000 +000000996 000591279 000720194 D|055111897 029885570 +000000996 000603471 000751349 D|014787315 067347890 +000000996 000615468 000752526 D|041841882 059496976 +000000996 000641125 000797814 D|026767488 082514024 +000000996 000668767 000807992 D|042669529 017686179 +000000996 000725461 000810638 D|051814906 091037531 +000000996 000737502 000828324 D|045954359 099194426 +000000996 000754565 000831043 D|088742153 007287110 +000000996 000790700 000832719 D|062736344 014372039 +000000996 000795577 000854730 D|098813260 090107494 +000000996 000799728 000867159 D|040548448 055416004 +000000996 000821149 000882846 D|023524084 085629643 +000000996 000832344 000902051 D|083042444 095556604 +000000996 000846235 000902795 D|040389886 068416500 +000000996 000913109 000968124 D|095607155 008663374 +000000996 000914192 000968539 D|018120305 074981288 +000000996 000943199 000975419 D|032367754 008403140 +000000996 000980845 000985833 D|023650982 080570888 +000000996 000985037 000999751 D|001493958 028627178 +000000997 000008167 000023885 D|085621694 022610999 +000000997 000023873 000052802 D|007408033 064146707 +000000997 000033000 000074423 D|075853894 074570490 +000000997 000093113 000130762 D|024217729 058218950 +000000997 000108970 000139016 D|075559279 057764575 +000000997 000130750 000142128 D|004488775 057626801 +000000997 000152758 000160727 D|044129340 010323986 +000000997 000155014 000190821 D|007878868 055318659 +000000997 000164014 000230340 D|058744033 019855144 +000000997 000169914 000259530 D|000200502 067254770 +000000997 000227071 000259688 D|088004765 014750979 +000000997 000236513 000276590 D|047544217 028582333 +000000997 000330031 000290899 D|029151380 076587313 +000000997 000331311 000300065 D|003614254 082469052 +000000997 000345263 000301200 D|010290401 089483966 +000000997 000419070 000301831 D|001451521 031848561 +000000997 000423366 000316693 D|034671599 084147127 +000000997 000425231 000353356 D|015469758 043406084 +000000997 000490520 000365271 D|015129949 054664931 +000000997 000498007 000383071 D|013960515 053687367 +000000997 000499451 000385198 D|045133689 044840436 +000000997 000533778 000426349 D|090594918 095648458 +000000997 000535975 000427129 D|031577713 073902249 +000000997 000539067 000453998 D|020803197 078663440 +000000997 000552372 000458109 D|086970631 059803736 +000000997 000573406 000492215 D|036414745 018597625 +000000997 000603777 000499715 D|081300987 079903739 +000000997 000612885 000544913 D|010896092 079052934 +000000997 000626331 000562004 D|061192033 006613359 +000000997 000638027 000569782 D|037303651 080428776 +000000997 000642643 000599344 D|005493868 089846501 +000000997 000693712 000602861 D|020237158 017050565 +000000997 000698166 000603247 D|059151966 018794484 +000000997 000721882 000608083 D|031807260 005066703 +000000997 000745078 000626931 D|077908372 090563430 +000000997 000769291 000656496 D|065893502 091990635 +000000997 000779041 000658890 D|045013834 004618413 +000000997 000825057 000669283 D|050202645 019755118 +000000997 000835876 000753905 D|013707695 044865793 +000000997 000840833 000765562 D|003354462 046518297 +000000997 000861906 000806678 D|029626427 029896218 +000000997 000867661 000811570 D|069620037 014167642 +000000997 000878443 000855439 D|017610461 057092818 +000000997 000881505 000864164 D|089860037 009097782 +000000997 000883311 000894684 D|098855617 073796319 +000000997 000924947 000925864 D|060730307 096918385 +000000997 000935186 000953682 D|098821635 086898653 +000000997 000968632 000967290 D|040114865 024033554 +000000997 000977009 000976410 D|026161594 001676837 +000000997 000984989 000984120 D|040011999 015278034 +000000998 000001427 000019770 D|042489996 054473214 +000000998 000002656 000053332 D|050000683 012000748 +000000998 000004344 000063038 D|038065722 002584685 +000000998 000047057 000084198 D|017987200 097102851 +000000998 000073130 000201126 D|042117106 087630640 +000000998 000090904 000203200 D|088316450 068832406 +000000998 000116530 000230145 D|019304945 059021724 +000000998 000130878 000234016 D|011886980 056596010 +000000998 000146286 000236856 D|032497298 078334414 +000000998 000153525 000251911 D|018610894 081096397 +000000998 000159466 000265579 D|040034455 025678087 +000000998 000163463 000283313 D|034206796 083663249 +000000998 000185358 000312827 D|053491425 047970263 +000000998 000187667 000354838 D|010104212 003711181 +000000998 000221917 000364406 D|095005717 061053381 +000000998 000250772 000440641 D|063407184 024242058 +000000998 000296342 000549012 D|055574534 049520741 +000000998 000319056 000563977 D|058771511 009748627 +000000998 000373320 000567935 D|058117500 025021731 +000000998 000379394 000571527 D|018180513 055857803 +000000998 000394840 000578960 D|013602689 081470528 +000000998 000407160 000587042 D|007937654 049359664 +000000998 000443811 000600229 D|056562479 058428517 +000000998 000508590 000626404 D|096103008 039891762 +000000998 000513421 000649947 D|059629910 073531391 +000000998 000531111 000652340 D|075933455 073989445 +000000998 000534612 000654322 D|001284480 015233340 +000000998 000547679 000660366 D|067261851 015547053 +000000998 000549772 000688947 D|033409106 041076425 +000000998 000591324 000700602 D|033762829 076239437 +000000998 000593217 000705421 D|026673979 017303384 +000000998 000661596 000708057 D|018091306 084812931 +000000998 000674882 000712964 D|069831943 057551827 +000000998 000681793 000722425 D|055164093 041500284 +000000998 000690567 000747399 D|058793426 065252285 +000000998 000699341 000757877 D|011898649 031909518 +000000998 000740282 000764229 D|066429158 045935112 +000000998 000752979 000776443 D|051482129 078440710 +000000998 000754315 000784983 D|022835346 087145245 +000000998 000771644 000800701 D|027950600 081745251 +000000998 000790780 000823039 D|026524890 044647975 +000000998 000799324 000826370 D|022518666 095628364 +000000998 000806513 000876593 D|075138546 085938072 +000000998 000823311 000879749 D|098639395 066688086 +000000998 000842519 000881743 D|007865384 023163748 +000000998 000854265 000912604 D|036644433 050637942 +000000998 000864088 000928809 D|033906547 042131447 +000000998 000867992 000983791 D|034267285 054368553 +000000998 000975277 000992736 D|084924260 053855922 +000000998 000977438 000996826 D|048830698 019569757 +000000999 000087649 000000344 D|066927703 069990507 +000000999 000157452 000001233 D|061843026 048398792 +000000999 000165105 000003942 D|096344248 090634178 +000000999 000171107 000014097 D|080611413 047269999 +000000999 000177116 000016892 D|093966525 039304480 +000000999 000184153 000023197 D|033641099 065075226 +000000999 000208959 000024948 D|093730117 010317488 +000000999 000220228 000068329 D|084646233 086276666 +000000999 000304638 000134626 D|076988452 093518558 +000000999 000325759 000229920 D|040100061 077433613 +000000999 000327185 000231819 D|016892751 023826406 +000000999 000328438 000238417 D|031592617 019553825 +000000999 000328775 000265207 D|096998901 073758398 +000000999 000332307 000276998 D|027061996 070335796 +000000999 000371903 000334944 D|044621730 066454720 +000000999 000420298 000382401 D|079899431 023452619 +000000999 000437341 000388577 D|005213781 056538189 +000000999 000482552 000427704 D|083081384 013584493 +000000999 000484781 000443601 D|068188867 081042350 +000000999 000508717 000480929 D|028674862 090455846 +000000999 000509407 000482237 D|083333174 044867233 +000000999 000516142 000506026 D|073477035 026462355 +000000999 000522737 000528732 D|071962874 090677327 +000000999 000547172 000529567 D|079538997 060384594 +000000999 000552664 000533206 D|030556550 000242591 +000000999 000557054 000564106 D|028213587 098753079 +000000999 000573806 000587559 D|005515656 025469595 +000000999 000581781 000593259 D|007130259 024680775 +000000999 000582856 000596952 D|086013766 000707754 +000000999 000591555 000643360 D|005650273 084105458 +000000999 000613161 000647986 D|095646063 069949988 +000000999 000615461 000691934 D|029099388 038243358 +000000999 000631547 000704565 D|011990785 074868127 +000000999 000642108 000705150 D|076281632 042428787 +000000999 000677689 000717850 D|065427699 029702835 +000000999 000732803 000719931 D|086755800 035837523 +000000999 000749185 000728680 D|045556414 008809995 +000000999 000789341 000734947 D|059428629 067323253 +000000999 000799206 000749240 D|050510631 066708599 +000000999 000802983 000768606 D|031415410 078976875 +000000999 000815514 000828199 D|019206195 015808047 +000000999 000861124 000837053 D|005573767 027912189 +000000999 000886268 000839321 D|010632146 096107560 +000000999 000911847 000855242 D|098483223 048129042 +000000999 000915133 000891886 D|061419497 098059466 +000000999 000940400 000924457 D|011586687 046226426 +000000999 000940542 000934596 D|091746688 030866933 +000000999 000953704 000946824 D|040043560 036621437 +000000999 000958779 000949861 D|034088165 043014872 +000000999 000959004 000967173 D|028182033 014940355 +000001000 000063192 000068704 D|049149216 072731320 +000001000 000068274 000075011 D|037979357 017579173 +000001000 000068434 000098471 D|027361240 094344150 +000001000 000116524 000103819 D|050110269 097017967 +000001000 000122972 000107012 D|057093681 032387337 +000001000 000142958 000107338 D|032326294 018236999 +000001000 000208490 000118587 D|003249545 085219757 +000001000 000215816 000122699 D|032867776 093358383 +000001000 000231156 000130086 D|015695279 067128131 +000001000 000241999 000136674 D|047495446 075515205 +000001000 000262727 000137886 D|051828589 034340992 +000001000 000276263 000154551 D|061608654 082876625 +000001000 000295960 000172074 D|052461498 066149533 +000001000 000309683 000229635 D|006918200 042368051 +000001000 000312465 000242127 D|044012224 049120707 +000001000 000312541 000244662 D|052218357 060059604 +000001000 000314253 000249714 D|024991062 055040287 +000001000 000325656 000250262 D|018419410 042156455 +000001000 000377590 000368514 D|042901569 046841326 +000001000 000402251 000390063 D|009806187 028249330 +000001000 000410412 000390884 D|086008389 051280019 +000001000 000414404 000452301 D|098116544 074912871 +000001000 000414895 000472118 D|097892986 017002271 +000001000 000518812 000484798 D|027393452 065526609 +000001000 000563943 000561641 D|098631831 036603925 +000001000 000570068 000575278 D|053632983 062175102 +000001000 000591001 000603885 D|025633890 050994569 +000001000 000591359 000610581 D|054229785 050700295 +000001000 000609313 000630519 D|065136226 046100892 +000001000 000643724 000638496 D|025299101 083822609 +000001000 000679754 000694966 D|039917294 051478154 +000001000 000706506 000697939 D|081594768 012101272 +000001000 000718495 000699263 D|013857458 052464665 +000001000 000728206 000704951 D|026672425 085444514 +000001000 000740325 000761844 D|082587996 094011518 +000001000 000743428 000764117 D|004034622 009662015 +000001000 000802649 000773995 D|006358116 065760935 +000001000 000814935 000814349 D|047978929 050314919 +000001000 000819695 000816164 D|053302899 062198655 +000001000 000835821 000840590 D|062572560 005999807 +000001000 000884278 000843239 D|009945149 001439453 +000001000 000913646 000858729 D|048196474 064954110 +000001000 000932437 000872721 D|082065335 091124531 +000001000 000932789 000886401 D|019125316 020583644 +000001000 000937300 000888225 D|014822281 002491949 +000001000 000942039 000928053 D|081356491 014759192 +000001000 000952047 000943657 D|053295659 013544542 +000001000 000969765 000951526 D|025611860 068222835 +000001000 000974336 000962973 D|065790154 024743751 +000001000 000982481 000976601 D|078960436 067043992 diff --git a/pace/signatures/sign.py b/pace/signatures/sign.py new file mode 100644 index 0000000..c0086e4 --- /dev/null +++ b/pace/signatures/sign.py @@ -0,0 +1,144 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Signature code for accumulo clients +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 25 Jun 2014 ZS Original file +## ************** +""" This module implements cell signatures for Accumulo. These functions allow + a user to sign entries before ingestion and to verify the signatures at + read time. The signature is stored at the end of the column visibility + field. +""" + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import base64 +import logging + +from pace.signatures.acc_sig import PyCryptopp_ECDSA_AccSig +from pace.signatures.vars import SIGNATURE_FUNCTIONS, MAX_ERROR_LEN +from pace.signatures.signconfig import VisibilityFieldConfig + +class AccumuloSigner: + """ Class for signing accumulo entries. Keeps track of various constants + (private key, signature functions, max error length). + """ + + def __init__(self, + privkey, + sig_f=PyCryptopp_ECDSA_AccSig, + default_visibility='default', + signerID=None, + conf=VisibilityFieldConfig()): + """ Arguments: + + self - the object to be initialized + privkey - the private key to use to sign entries + sig_f - the signature function to use (default: ECDSA) + default_visibility - the value to use in the visibility field in + the case where the visibility field was + originally empty (default: 'default') + signerID - the string representing the entity signing this batch, + or None if no such string is to be added (default: None) + conf - a configuration object (as defined in signconfig.py) + specifying various properties of the signature (default: + VisibilityFieldConfig(), which stores the signature in + the visibility field) + """ + + self.privkey = privkey + self.sig_f = sig_f + self.default_visibility = default_visibility + self.signerID = signerID + self.conf = conf + + def sign_mutation(self, mutation, table=None): + """ Sign all entries for a mutation + + keyword arguments: + mutation - an Accumulo mutation object with some number of entries + table - the table the mutation is part of, if signing the mutation + with the table name, and None otherwise. Default: None + """ + # If the signer has an ID string they want to keep track of, make sure + # to write it. + if self.signerID: + base_metadata = self.signerID + else: + base_metadata = self.sig_f.name + + #iterate through all entries in the mutation + for u in mutation.updates: + # Add a visibility field if one does not already exist, and parenthesize it to + # make sure Accumulo will be able to parse the result. (e.g. if visibility was A&B, + # need to make the new one (A&B)|, since A&B| is ambiguous) + if not u.colVisibility: + vis = '(' + self.default_visibility + ')' + u.colVisibility = vis + else: + vis = '(' + u.colVisibility + ')' + u.colVisibility = vis + entry_tup = (mutation.row, u.colFamily, u.colQualifier, vis, + u.deleteCell, u.value) + cell_string = str(entry_tup) + + if table is not None: + cell_string = ','.join([table, cell_string]) + + encoded = self.sign_entry(cell_string) + + self.conf._add_signature(mutation, u, base_metadata, encoded) + + + def sign_entry(self, cell_string): + """ Sign a single string. + + keyword arguments: + cell_string - the message to sign, as a string + + returns: + sig - the signature as a python string encoded in base 64 + """ + try: + encoded = self.sign_data(cell_string) + except ValueError: + raise SigningException( + "The RSA key length is not sufficient for provided hash \ + algorithm.") + except TypeError: + raise SigningException("The RSA key has no private half.") + + return base64.b64encode(encoded) + + def sign_data(self, data): + """ Signs some data with the object's private key + + Input: + data - the data to be signed + + Returns the signature of the data by self + """ + #TODO: inline this, or figure out how to make sure python does it for us + + #sign the message + return self.sig_f.sign(data, self.privkey) + +class SigningException(Exception): + """ Exception raised when unable to verify a signature. + + Attributes: + msg - error message associated with the failure + """ + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg diff --git a/pace/signatures/sign_test.py b/pace/signatures/sign_test.py new file mode 100644 index 0000000..b0c3d74 --- /dev/null +++ b/pace/signatures/sign_test.py @@ -0,0 +1,413 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Unit tests for accumulo client signature code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 25 Jun 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from Crypto.PublicKey import RSA +from Crypto.Signature import PKCS1_v1_5 + +from base64 import b64encode, b64decode +from pyaccumulo import Mutation + +from nose.tools import ok_, eq_ +import time, datetime +import random +import logging +import StringIO + +from pace.signatures.sign import AccumuloSigner, SigningException +from pace.signatures.vars import SUPPORTED_SIGNATURES, ALL_SIGNATURES +from pace.signatures.signconfig import new_config +from pace.signatures.acc_sig import PyCryptopp_ECDSA_AccSig +from pace.common.fakeconn import FakeConnection +from pace.common.pacetest import DEFAULT_NUM_ITERS, DEFAULT_SIZE +from pace.signatures.verify import AccumuloVerifier, VerificationException +from pace.signatures.signaturepki import DummySignaturePKI, SignatureMixin + +PATH = os.path.dirname(__file__) + +NUM_ITERS = DEFAULT_NUM_ITERS +SIZE = DEFAULT_SIZE +LOCATIONS = ['vis', 'val', 'tab'] +SIGNATURES = ALL_SIGNATURES +CONFIG_FILES = [PATH+'/cfg/batch_test.cfg', + PATH+'/cfg/stream_test.cfg', + PATH+'/cfg/value_test.cfg'] + +seed = int(time.time()) +random.seed(int(time.time())) + +def _generate_truncation_data(): + msg = str(random.randint(1, 1000000000)) + num_equals_signs = random.randint(0, 2) + + if num_equals_signs == 1: + msg = msg + "=" + elif num_equals_signs == 2: + msg = msg + "==" + + return msg, num_equals_signs + +def _log_sign_test_info(sigClass, signer, pubkey, data): + logging.debug("Attempting to sign with " + + sigClass.name + " key") + logging.debug('Public key: %s', pubkey) + logging.debug('Private key: %s', signer.privkey) + logging.debug('Data: %s', data) + +def _check_verify_succeeds(sigClass): + # Make sure we verify everything that's signed, and nothing unsigned + # (at least, not due to any bugs in our code...) + for i in range(0, NUM_ITERS): + data = str(random.randint(1, 1000000000)) + + pubkey, privkey = sigClass.test_keys() + signer = AccumuloSigner(privkey, sigClass) + + _log_sign_test_info( + sigClass, signer, pubkey, data) + + signature = signer.sign_data(data) + ok_( + AccumuloVerifier._verify_signature_bool(signature, + data, + pubkey, + sigClass, + None), + "Failed to verify data against its signature") + +def _check_bad_data(sigClass): + # Make sure signatures only verify against their data + for i in range(0, NUM_ITERS): + data = str(random.randint(1, 1000000000)) + + pubkey, privkey = sigClass.test_keys() + signer = AccumuloSigner(privkey, sigClass) + + _log_sign_test_info( + sigClass, signer, pubkey, data) + + signature = signer.sign_data(data) + + result = AccumuloVerifier._verify_signature_bool( + signature, data + data, pubkey, + sigClass, None) + + eq_(result, False, + "Claims data verifies against the wrong signature.") + +def _random_mutation(default_vis='default', append_vis=None): + + row = str(random.randint(0, 10)) + col = str(random.randint(0, 100000000)) + val = str(random.randint(0, 100000000)) + cq = str(random.randint(0, 100000000)) + if append_vis is None: + cv = '|'.join([default_vis, str(random.randint(0, 100000000))]) + else: + cv = '|'.join([default_vis, append_vis]) + + m = Mutation(row) + m.put(cf=col, cv=cv, cq=cq, val=val) + + return m + +def _check_sign_and_read(sigClass, cfg_file): + # Make sure writing & reading a signature verifies correctly with no + # extra features, using a FakeConn in place of a live Accumulo instance. + table_prefix = 'table' + num_tables = 5 + + pubkey, privkey = sigClass.test_keys() + + for i in range(0, NUM_ITERS): + conn = FakeConnection() + conf = new_config(cfg_file, conn) + + signer = AccumuloSigner(privkey, sig_f=sigClass, conf=conf) + verifier = AccumuloVerifier(pubkey, conf=conf) + + inputs = [(table_prefix + str(random.randint(0, num_tables)), + _random_mutation()) + for _ in range(SIZE)] + + conf.start_batch() + + for table, mutation in inputs: + if not conn.table_exists(table): + conn.create_table(table) + + signer.sign_mutation(mutation) + conn.write(table, mutation) + + conf.end_batch() + + tables = set(table for table, _ in inputs) + + for table in tables: + if table != '__metadata_table__': + for entry in conn.scan(table): + try: + verifier.verify_entry(entry) + except VerificationException: + ok_(False, 'entry failed to verify') + + # reset the file so it can be reused in the next iteration + cfg_file.seek(0) + +def _check_sign_table(sigClass, cfg_file): + # Make sure including the table's name in the signature works correctly + table_prefix = 'table' + num_tables = 5 + + pubkey, privkey = sigClass.test_keys() + + for i in range(0, NUM_ITERS): + conn = FakeConnection() + conf = new_config(cfg_file, conn) + + signer = AccumuloSigner(privkey, sig_f=sigClass, conf=conf) + verifier = AccumuloVerifier(pubkey, conf=conf) + + inputs = [(table_prefix + str(random.randint(0, num_tables)), + _random_mutation()) + for _ in range(SIZE)] + + conf.start_batch() + for table, mutation in inputs: + if not conn.table_exists(table): + conn.create_table(table) + + signer.sign_mutation(mutation, table=table) + conn.write(table, mutation) + conf.end_batch() + + tables = set(table for table, _ in inputs) + + for table in tables: + if table != '__metadata_table__': + for entry in conn.scan(table): + try: + verifier.verify_entry(entry, table=table) + except VerificationException as ve: + print ve.msg + errmsg = 'entry failed to verify' + if ve.cell is not None: + errmsg += ':\nrow: %s\nval: %s' %(ve.cell.row, + ve.cell.val) + ok_(False, errmsg) + + # reset the file so it can be reused in the next iteration + cfg_file.seek(0) + +def test_signer_id(): + # Make sure writing with the signer ID works + table_prefix = 'table' + num_tables = 5 + + verifier = AccumuloVerifier(DummySignaturePKI()) + + for i in range(0, NUM_ITERS): + all_inputs = [] + tables = [] + conn = FakeConnection() + for sc in SIGNATURES: + pubkey, privkey = sc.test_keys() + signer = AccumuloSigner(privkey, sig_f=sc, signerID=sc.name+'ID') + inputs = [(table_prefix + str(random.randint(0, num_tables)), + _random_mutation()) + for _ in range(SIZE)] + all_inputs += inputs + + for table, mutation in inputs: + if not conn.table_exists(table): + tables.append(table) + conn.create_table(table) + + signer.sign_mutation(mutation) + conn.write(table, mutation) + + for table in tables: + for entry in conn.scan(table): + try: + verifier.verify_entry(entry) + except VerificationException: + ok_(False, 'entry failed to verify') + +def test_signer_id_and_table(): + # Make sure writing with the signer ID and signing the table work together + table_prefix = 'table' + num_tables = 5 + + signers = dict((sc.name+'ID', (sc.test_keys()[0], sc)) for sc in SIGNATURES) + verifier = AccumuloVerifier(DummySignaturePKI()) + + for i in range(0, NUM_ITERS): + all_inputs = [] + tables = [] + conn = FakeConnection() + for sc in SIGNATURES: + pubkey, privkey = sc.test_keys() + signer = AccumuloSigner(privkey, sig_f=sc, signerID=sc.name+'ID') + inputs = [(table_prefix + str(random.randint(0, num_tables)), + _random_mutation()) + for _ in range(SIZE)] + all_inputs += inputs + + for table, mutation in inputs: + if not conn.table_exists(table): + tables.append(table) + conn.create_table(table) + + signer.sign_mutation(mutation, table=table) + conn.write(table, mutation) + + for table in tables: + for entry in conn.scan(table): + try: + verifier.verify_entry(entry, table=table) + except VerificationException as ve: + ok_(False, 'entry failed to verify: %s' %ve.msg) + +def test_no_metadata(): + # Makes sure the verification code fails when there's no metadata + table_prefix = 'table' + num_tables = 5 + pubkey, _ = SIGNATURES[0].test_keys() + verifier = AccumuloVerifier(pubkey) + + for i in range(0, NUM_ITERS): + conn = FakeConnection() + tables = [] + inputs = [(table_prefix + str(random.randint(0, num_tables)), + _random_mutation()) + for _ in range(SIZE)] + + for table, mutation in inputs: + if not conn.table_exists(table): + tables.append(table) + conn.create_table(table) + + conn.write(table, mutation) + + for table in tables: + for entry in conn.scan(table): + try: + verifier.verify_entry(entry) + ok_(False, 'unsigned entry somehow verified') + except VerificationException: + ok_(True, 'success') + + +def test_fake_metadata(): + # Makes sure the verification code fails when there's something formatted + # the same as metadata + table_prefix = 'table' + num_tables = 5 + pubkey, _ = SIGNATURES[0].test_keys() + verifier = AccumuloVerifier(pubkey) + + for i in range(0, NUM_ITERS): + conn = FakeConnection() + tables = [] + inputs = [(table_prefix + str(random.randint(0, num_tables)), + _random_mutation( + append_vis=('",%s,%s,"' + %(str(random.randint(0,10000000)), + str(random.randint(0,10000000)))))) + for _ in range(SIZE)] + + for table, mutation in inputs: + if not conn.table_exists(table): + tables.append(table) + conn.create_table(table) + + conn.write(table, mutation) + + for table in tables: + for entry in conn.scan(table): + try: + verifier.verify_entry(entry) + ok_(False, 'unsigned entry somehow verified') + except VerificationException as ve: + print ve.msg + ok_(True, 'success') + +def test_misleading_signature(): + # Makes sure the verification code fails when there's no metadata, but + # commas elsewhere in the visibility label + table_prefix = 'table' + num_tables = 5 + pubkey, _ = SIGNATURES[0].test_keys() + verifier = AccumuloVerifier(pubkey) + + for i in range(0, NUM_ITERS): + conn = FakeConnection() + tables = [] + inputs = [(table_prefix + str(random.randint(0, num_tables)), + _random_mutation( + default_vis=('",%s,%s,"' + %(str(random.randint(0,10000000)), + str(random.randint(0,10000000)))))) + for _ in range(SIZE)] + + for table, mutation in inputs: + if not conn.table_exists(table): + tables.append(table) + conn.create_table(table) + + conn.write(table, mutation) + + for table in tables: + for entry in conn.scan(table): + try: + verifier.verify_entry(entry) + ok_(False, 'unsigned entry somehow verified') + except VerificationException as ve: + print ve.msg + ok_(True, 'success') + + +def _check_parse_key(sigClass): + pub, _ = sigClass.test_keys() + + ser = sigClass.serialize_key(pub) + key = sigClass.parse_key(ser) + + ok_(sigClass.serialize_key(key) == sigClass.serialize_key(pub), + 'serialization and deserialization did not return the same key') + + +def test_all_signature_functions(): + + for sigClass in SIGNATURES: + yield _check_bad_data, sigClass + yield _check_verify_succeeds, sigClass + + yield _check_sign_and_read, sigClass, StringIO.StringIO('[Location]') + yield _check_sign_table, sigClass, StringIO.StringIO('[Location]') + + sigClass = PyCryptopp_ECDSA_AccSig + + for fname in CONFIG_FILES: + with open(fname, 'r') as cfg_file: + yield _check_sign_and_read, sigClass, cfg_file + + with open(fname, 'r') as cfg_file: + yield _check_sign_table, sigClass, cfg_file + +def test_parse_key(): + for sigClass in SUPPORTED_SIGNATURES: + yield _check_parse_key, sigClass diff --git a/pace/signatures/sign_utils.py b/pace/signatures/sign_utils.py new file mode 100644 index 0000000..cff0ce4 --- /dev/null +++ b/pace/signatures/sign_utils.py @@ -0,0 +1,199 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS, SS +## Description: Utility functions for testing the signature code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 25 Jun 2014 ZS Original file +## 15 Dec 2015 SS Added data generation functionality +## ************** +""" Utility functions and tests for mass verification of rows written to + Accumulo. For unit tests, see sign_tests.py + Any randomized test should use the same seed so that they are equivalent. +""" + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import time, datetime + +from pyaccumulo import Accumulo, Mutation, Range +from Crypto.PublicKey import RSA + +from pace.signatures.sign import AccumuloSigner +from pace.signatures.verify import AccumuloVerifier, VerificationException +from pace.signatures.signconfig import VisibilityFieldConfig +from pace.common import common_utils + +def sanitize(string): + return common_utils.sanitize(string) + +def generate_data(filename, + seed, + vis=False, + default_vis="default", + vis_in_value=False, + num_entries=50000, + num_rows=1000, + vis_length=9, + row_length=9): + """ Generate a tab-delimited text file with five columns: + row, col fam, col qual, col vis, value + + keyword arguments: + filename - name of file to which the data will be written + seed - a string to be used as the seed for the random number generator + visibility - if True, random column visibilities are added. If False, + the default visibility string is added. (default False) + default_vis - the default visibility string to use if 'visibiilty' is + set to False. (default "default") + vis_in_value - if True, a random "column visibility" is generated, but + this is appended to the value rather than column visibility. If + True, the param vis is treated as False. + num_entries - Number of entries written. In practice, this is a maximum, + as the true number will be floor(num_entries/num_rows) * num_rows + num_rows - Number of rows in the data written. + vis_length - The length (in chars) of the random col visibility added + (true length will be this + 2) + row_length - Number of chars in each row ID. Numbers are zero padded to + reach this length + + returns: the number of elements actually generated + """ + common_utils.generate_data(filename, seed, + vis = vis, + default_vis = default_vis, + vis_in_value = vis_in_value, + num_entries = num_entries, + num_rows = num_rows, + vis_length = vis_length, + row_length = row_length) + + +def write_and_sign_data(file_in, conn, table, signer, benchmark=False, + include_table=False): + """ Given a file with data in it (as written by generate_data), + parse the file, sign it, and write it out to the given Accumulo + connection. + + Arguments: + + file_in - a string denoting the path of a file + conn - the Accumulo connection to use + table - the table to write to + signer - the Signer (as in sign.py) to sign the data with + benchmark - whether or not to record the time it takes to + sign all the provided cells (defult: False) + include_table - whether or not to include the name of the table + in the signature (default: False) + + Returns: + + If benchmark=True, returns a pair (start, end) containing the times + recorded by time.clock() at the start and end of benchmarking, + respectively. + + Otherwise, returns nothing. + """ + + + # Create table and create batch writer + if not conn.table_exists(table): + conn.create_table(table) + writer = conn.create_batch_writer(table) + + # Iterate over file, sign each entry individually, and add to the writer + with open(file_in) as f: + lines = f.readlines() + + with common_utils.Timer() as t: + + for line in lines: + + # parse entry and put it in a mutation + (row, col_fam, col_qual, col_vis, val) = tuple(line.rstrip('\n').split('\t')) + mutation = Mutation(row) + mutation.put(cf=col_fam, cq=col_qual, cv=col_vis, val=val) + + # sign and write mutation + signer.sign_mutation(mutation, table=table if include_table else None) + writer.add_mutation(mutation) + + writer.close() + if benchmark: + return (t.start, t.end) + + +def write_data(file_in, conn, table): + """ Given a file with data in it (as written by generate_data), + parse the file and write it out to the given Accumulo connection. + + Arguments: + + file_in - a string denoting the path of a file + conn - the Accumulo connection to use + table - the table to write to + + """ + + # Create table and batch writer + if not conn.table_exists(table): + conn.create_table(table) + writer = conn.create_batch_writer(table) + + # Iterate over file, add each mutation to the writer + with open(file_in) as f: + for line in f: + (row, col_fam, col_qual, col_vis, val) = tuple(line.rstrip('\n').split('\t')) + mutation = Mutation(row) + mutation.put(cf=col_fam, cq=col_qual, cv=col_vis, val=val) + writer.add_mutation(mutation) + + writer.close() + + +def verify_data(conn, table, pubkey, benchmark=False, + include_table=False, + conf=VisibilityFieldConfig()): + """ Verify the signed data in a table. + + Arguments: + conn - the connection to the accumulo server + table - the name of the table on the server to verify + pubkey - the public key to verify the signature against + benchmark - whether we're benchmarking the verification (default: False) + include_table - whether to include the table name in the signature + (default: False) + conf - an instance of an implementation of the AbstractSignConfig + class, as defined in signconfig.py + (Default: VisibilityFieldConfig()) + + Returns: + + If benchmark=True, returns a triple (success, start, end), as follows: + - success: True if all entries successfully verified, + False otherwise + - start, end: the times recorded by time.clock() at the start + and end of benchmarking, respectively. + + Otherwise, returns True if all entries successfully verified, and + False otherwise. + """ + success = True + with common_utils.Timer() as t: + + verifier = AccumuloVerifier(pubkey, conf=conf) + + for entry in conn.scan(table): + try: + verifier.verify_entry(entry, table=table if include_table else None) + except VerificationException: + success = False + + return (success, t.start, t.end) if benchmark else success diff --git a/pace/signatures/sign_utils_old.py b/pace/signatures/sign_utils_old.py new file mode 100644 index 0000000..f2fbaea --- /dev/null +++ b/pace/signatures/sign_utils_old.py @@ -0,0 +1,217 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Utility functions for testing the signature code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 25 Jun 2014 ZS Original file +## ************** +""" Utility functions and tests for mass verification of rows written to + Accumulo. For unit tests, see sign_tests.py + Any randomized test should use the same seed so that they are equivalent. +""" + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import random +import time, datetime + +from pyaccumulo import Accumulo, Mutation, Range +from Crypto.PublicKey import RSA + +from pace.signatures.sign import AccumuloSigner +from pace.signatures.verify import AccumuloVerifier, VerificationException +from pace.signatures.signconfig import VisibilityFieldConfig +from pace.common import common_utils + +def sanitize(string): + return common_utils.sanitize(string) + +def generate_data(filename, + seed, + vis=False, + default_vis="default", + vis_in_value=False, + num_entries=50000, + num_rows=1000, + vis_length=9, + row_length=9): + """ Generate a tab-delimited text file with five columns: + row, col fam, col qual, col vis, value + + keyword arguments: + filename - name of file to which the data will be written + seed - a string to be used as the seed for the random number generator + visibility - if True, random column visibilities are added. If False, + the default visibility string is added. (default False) + default_vis - the default visibility string to use if 'visibiilty' is + set to False. (default "default") + vis_in_value - if True, a random "column visibility" is generated, but + this is appended to the value rather than column visibility. If + True, the param vis is treated as False. + num_entries - Number of entries written. In practice, this is a maximum, + as the true number will be floor(num_entries/num_rows) * num_rows + num_rows - Number of rows in the data written. + vis_length - The length (in chars) of the random col visibility added + (true length will be this + 2) + row_length - Number of chars in each row ID. Numbers are zero padded to + reach this length. + + returns: + the number of elements actually generated + """ + common_utils.generate_data(filename, seed, + vis = vis, + default_vis = default_vis, + vis_in_value = vis_in_value, + num_entries = num_entries, + num_rows = num_rows, + vis_length = vis_length, + row_length = row_length) + + +def write_and_sign_data(file_in, conn, table, signer, benchmark=False, + include_table=False): + + #Get the lines from the file + print "Opening file", file_in + f = open(file_in, 'r') + lines = f.readlines() + f.close() + assert lines + print "Lines (%d) are now in memory." %len(lines) + #create the table if it doesn't exist yet + if not conn.table_exists(table): + conn.create_table(table) + print table, 'table created' + print "Beginning write." + + wr = conn.create_batch_writer(table) + row = '340930563???poitapeoita' + m = None + + signer.conf.start_batch() + + if benchmark: + print "Starting signing..." + start = time.clock() + + for l in lines: + pieces = l.split('\t') + if (row != pieces[0]): + if m: + if include_table: + signer.sign_mutation(m, table) + else: + signer.sign_mutation(m) + wr.add_mutation(m) + row = pieces[0] + m = Mutation(row) + vis = pieces[3] + if vis == '': + vis = None + m.put(cf=pieces[1], cq=pieces[2], cv=vis, val=pieces[4][:-1]) + + if benchmark: + print "Signing finished!" + end = time.clock() + + if include_table: + signer.sign_mutation(m, table) + else: + signer.sign_mutation(m) + + signer.conf.end_batch() + wr.add_mutation(m) + wr.close() + + print "Write completed." + + if benchmark: + return (start, end) + +def write_data(file_in, conn, table): + """ Just writes the data without signing it. + """ + + #Get the lines from the file + f = open(file_in, 'r') + lines = f.readlines() + f.close() + #create the table if it doesn't exist yet + if not conn.table_exists(table): + conn.create_table(table) + + wr = conn.create_batch_writer(table) + m = None + + for l in lines: + pieces = l.split('\t') + row = pieces[0] + m = Mutation(row) + vis = pieces[3] + if vis == '': + vis = None + m.put(cf=pieces[1], cq=pieces[2], cv=vis, val=pieces[4][:-1]) + wr.add_mutation(m) + + wr.close() + +def verify_data(conn, table, pubkey, benchmark=False, include_table=False, conf=VisibilityFieldConfig()): + """ Verify the signed data in a table. + + Arguments: + conn - the connection to the accumulo server + table - the name of the table on the server to verify + pubkey - the public key to verify the signature against + benchmark - whether we're benchmarking the verification (default: False) + expecting_id - whether a signer's ID is expected in the cells + (default: False) + include_table - whether to include the table name in the signature + (default: False) + + Returns: True if all entries successfully verified, False otherwise + """ + success = True + count = 0 + verifier = AccumuloVerifier(pubkey, conf=conf) + + if benchmark: + print "Starting verification..." + start = time.clock() + + for entry in conn.scan(table): + count += 1 + try: + if include_table: + verifier.verify_entry(entry, table) + else: + verifier.verify_entry(entry) + except VerificationException as ve: + print "Verification error:", ve.msg + success = False + + if benchmark: + print "Verification finished!" + end = time.clock() + + if success and count > 0: + print "Verification of all (%d) entries succeeded." %count + elif count <= 0: + print "WARNING: no entries to verify" + else: + print "FAILURE: some entries failed to verify." + + if benchmark: + return (success, start, end) + else: + return success + + + diff --git a/pace/signatures/signaturepki.py b/pace/signatures/signaturepki.py new file mode 100644 index 0000000..bcc432f --- /dev/null +++ b/pace/signatures/signaturepki.py @@ -0,0 +1,59 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Definitions for PKIs for signature creation/verification +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 29 Dec 2014 CS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +from collections import namedtuple + +from pace.pki.abstractpki import PKILookupError +from pace.signatures.vars import ALL_SIGNATURES + +class SignatureMixin(object): + """ Mixin to use for PKI implementations that support + lookup of verifying keys and signature algorithms. + """ + + def get_verifying_key(self, identifier): + """ + Arguments: + identifier - unique to a single user that is used + to map between a user and their security profile, which + may take the form of an X509 certificate or something + similiar + + Returns: + verifying_key - the verifying key of the user + signature_scheme - the name of the signature algorithm + used by the user, as a string. + """ + + profile = self.get_profile(identifier) + return profile.verifying_key, profile.signature_scheme + +# Bare minimum namedtuple class to satisfy the SignatureMixin mixin +SigTuple = namedtuple('SigTuple', 'verifying_key, signature_scheme') + +class DummySignaturePKI(SignatureMixin): + def __init__(self): + self.signers = dict( + (sc.name+'ID', (sc.test_keys()[0], sc.name)) + for sc in ALL_SIGNATURES) + + def get_profile(self, identifier): + try: + return SigTuple(*self.signers[identifier]) + except KeyError: + raise PKILookupError('ERROR: identifier %s not found' %identifier) + diff --git a/pace/signatures/signconfig.py b/pace/signatures/signconfig.py new file mode 100644 index 0000000..465bb61 --- /dev/null +++ b/pace/signatures/signconfig.py @@ -0,0 +1,352 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Objects to keep track of global constants for signatures +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 06 Jan 2015 CS Original file +## ************** + +import string +import logging + +import ConfigParser +from abc import abstractmethod, ABCMeta +from collections import namedtuple +from pyaccumulo import Mutation, Range, Cell + +# Named tuple for signed entries +SignedEntry = namedtuple('SignedEntry', 'cell_string, metadata, sig') + +class AbstractSignConfig(object): + """ Class for keeping track of various global config options + for signatures, such as a connection to the Accumulo instance, + where the signatures are being stored, and whether it's doing + batch or stream inserting. + """ + + __metaclass__ = ABCMeta + + @abstractmethod + def _add_signature(self, mutation, update, metadata, sig): + pass + + @abstractmethod + def _split_entry(self, entry): + """ Extract the original visibility, signature, and other signature + metadata from the visibility field. + + keyword arguments: + entry - a pyaccumulo entry + + Returns two values: + - A named tuple containing the original string, the + metadata associated with the signature (either the signature + algorithm's name or the signer's ID), and the signature itself. + - A Cell object (from pyaccumulo) representing the original + cell, without metadata + """ + pass + + @abstractmethod + def start_batch(self): + pass + + @abstractmethod + def update_batch(self, mutation): + pass + + @abstractmethod + def end_batch(self): + pass + +class BatchIndifferentConfigMixin(object): + """ Mixin for configuration objects that do not batch their signatures + at all and therefore can do nothing for all the batch-related ops. + """ + def start_batch(self): + pass + + def update_batch(self, mutation): + pass + + def end_batch(self): + pass + +class VisibilityFieldConfig(BatchIndifferentConfigMixin, AbstractSignConfig): + + def __init__(self): + pass + + def _add_signature(self, mutation, update, metadata, sig): + # Signed visibility field format: + # | + # "," + # where is either the signer's unique ID or the + # name of the signature algorithm used (if signer IDs are not + # provided) + vis = '%s|",%s,"' %(update.colVisibility, + ','.join([metadata, sig])) + update.colVisibility = vis + + + def _split_entry(self, entry): + """ Extract the original visibility, signature, and other signature + metadata from the visibility field. + + This function assumes that the entry has been signed, and that the + signature metadata is put in quotation marks and appended to the + end of the visibility field, as follows: + + |",,," + + keyword arguments: + entry - a pyaccumulo entry + + Returns two values: + - A named tuple containing the original string, the + metadata associated with the signature (either the signature + algorithm's name or the signer's ID), and the signature itself. + - A Cell object (from pyaccumulo) representing the original + cell, without metadata + """ + #split the visibility field into actual visibility and + #signature + full_vis = entry.cv + pieces = full_vis.split(',') + + # Check a couple of simple invariants about the signature field. + # Note that these will NOT prevent the code from interpreting any + # malformed or unsigned piece of metadata, but they should catch a + # lot of cases, and help provide better error messages in the case + # that an entry up for verification was not actually signed. + + if len(pieces) < 4: + raise VerificationException( + 'Visibility field contains too few entries to contain metadata') + + if not (pieces[-1] == '"' and pieces[-4][-2:] == '|"'): + raise VerificationException( + 'Visibility field contains wrong formatting for signature metadata') + + metadata, sig = pieces[-3:-1] + + # Join up with any other commas that may have existed, and truncate + # the trailing |" that was added to the end, before the first + # metadata comma. + cell_vis = ','.join(pieces[0:-3])[:-2] + + #construct the data tuple and convert it to a string + tup = (entry.row, entry.cf, entry.cq, cell_vis, None, entry.val) + cell_string = str(tup) + + return SignedEntry(cell_string=cell_string, + metadata=metadata, + sig=sig), Cell(*tup) + +class ValueConfig(BatchIndifferentConfigMixin, AbstractSignConfig): + + def __init__(self): + pass + + def _add_signature(self, mutation, update, metadata, sig): + val = '|'.join([metadata, sig, update.value]) + update.value = val + + def _split_entry(self, entry): + # Value format: || + metadata, sig, value = string.split(entry.val, '|', maxsplit=2) + + tup = (entry.row, entry.cf, entry.cq, entry.cv, None, value) + + return (SignedEntry(cell_string=str(tup), metadata=metadata, sig=sig), + Cell(*tup)) + +class AbstractTableConfig(AbstractSignConfig): + + def __init__(self, conn, table): + self.conn = conn + self.table = table + if not conn.table_exists(table): + conn.create_table(table) + + def _add_signature(self, mutation, update, metadata, sig): + """ Write signature metadata to a new cell in the Accumulo instance. + The user specifies the name of the metadata table to store all this + metadata in, the row is the stringified version of the cell tuple, + the column family and qualifier are blank, and the signature + metadata is stored in the value. + + NB: storing signature information in a separate column family or + qualifier would likely be more efficient for most use cases, + but it would require nontrivial modifications to how queries + are handled by the user. This is something we may write later + as a separate library, but for now, we choose this slightly + less efficient but more compositional approach. + """ + entry_tup = (mutation.row, update.colFamily, update.colQualifier, + update.colVisibility, update.deleteCell) + cell_string = str(entry_tup) + meta_mutation = Mutation(cell_string) + meta_mutation.put(cf='', cq='', cv=update.colVisibility, val=','.join([metadata, sig])) + self.update_batch(meta_mutation) + + def _split_entry(self, entry): + tup = (entry.row, entry.cf, entry.cq, entry.cv, None, entry.val) + cell_string = str(tup) + lookup_string = str(tup[:-1]) + + sig_entries = [x for x in + self.conn.scan(self.table, + scanrange=Range(srow=lookup_string, + erow=lookup_string))] + + assert len(sig_entries) == 1 + + sig_entry = sig_entries[0] + metadata, sig = sig_entry.val.split(',') + + return (SignedEntry(cell_string=cell_string, + metadata=metadata, + sig=sig), + entry) # no metadata in the entry, so just return it + +class StreamingSignConfigMixin(object): + """ Mixin for SignConfig classes that don't store up any entries + in a batch, but write them out to self.table each time update_batch() + is called. + """ + def start_batch(self): + pass + + def update_batch(self, mutation): + self.conn.write(self.table, mutation) + + def end_batch(self): + pass + +class BatchSignConfigMixin(object): + """ Mixin for SignConfig classes taht store up entries in a pyaccumulo + batch writer, then write them all out at once at the end of each + batch. + """ + + def start_batch(self): + self.batch = self.conn.create_batch_writer(self.table) + + def update_batch(self, mutation): + self.batch.add_mutation(mutation) + + def end_batch(self): + self.batch.close() + self.batch = None + +class StreamingTableConfig(StreamingSignConfigMixin, AbstractTableConfig): + """ Config for writing signatures to a separate Accumulo table one at + a time as they are computed. + """ + pass + +class BatchTableConfig(BatchSignConfigMixin, AbstractTableConfig): + """ Config for holding on to signatures, then writing them all out to + a separate table at once at the end of each batch. + """ + pass + +def new_config(config_file, conn): + """ Return a new configuration object based on the information received, + perhaps from command-line arguments or a config file. + + Every config file must include a section called 'Location'. The + default behavior for a config file is to store the signature in the + visibility field of each cell. To override this behavior, a config file + should be formatted as follows: + + - In the Location section, include an option called 'loc' that + is one of the following: + + - 'vis' (for storing the signature in the visibility field. This + is the default behavior) + - 'val' (for storing the signature in the value field.) + - 'tab' (for storing the signature in a separate table.) + + - If the location was 'tab', the following options also need to be + included: + + - 'is_batch' (either 'true' or 'false', representing whether the + writes to the signature metadata table should be + batched or not.) + - 'metadata_table' (the name of the table for the signature data + to be stored in.) + + The folder cfg/ contains some example configuration files. + + Arguments: + config_file - a file pointer (or file-like object, such as from + StringIO) that points to the information in the + config file. + + conn - a connection to the Accumulo instance this is a configuration + object for. + """ + + config_parser = ConfigParser.RawConfigParser(defaults={'loc' : 'vis'}) + config_parser.readfp(config_file) + + try: + loc = config_parser.get('Location', 'loc') + except ConfigParser.Error as e: + print e + raise ConfigException('malformed config file: no location information') + + if loc == 'vis': + return VisibilityFieldConfig() + elif loc == 'val': + return ValueConfig() + elif loc == 'tab': + try: + metadata_table = config_parser.get('Location', 'metadata_table') + except ConfigParser.Error: + raise ConfigException( + 'malformed config file: no metadata table specified') + + try: + is_batch = config_parser.getboolean('Location', 'is_batch') + except ValueError: + raise ConfigException( + 'malformed config file: invalid value for is_batch') + + if is_batch: + return BatchTableConfig(conn, metadata_table) + else: + return StreamingTableConfig(conn, metadata_table) + else: + raise ConfigException('Invalid location %s' %loc) + +class ConfigException(Exception): + """ Exception raised when a config file is malformed. + + Attributes: + msg - error message associated with the failure + """ + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + +class VerificationException(Exception): + """ Exception raised when unable to verify a signature. + + Attributes: + msg - error message associated with the failure + cell - Accumulo cell with the metadata parsed out, if any + """ + def __init__(self, msg, cell=None): + self.msg = msg + self.cell = cell + + def __str__(self): + return self.msg diff --git a/pace/signatures/test.sh b/pace/signatures/test.sh new file mode 100755 index 0000000..1b292bc --- /dev/null +++ b/pace/signatures/test.sh @@ -0,0 +1,59 @@ +#!/bin/bash +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Tests for signatures against a live accumulo db +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 17 Jul 2014 CS Original file +## ************** + +TABLE='finalisher_vm_benchmarks' +HOSTNAME='localhost' +PORT='42424' +USER='root' +PASSWORD='secret' +ACTIONS='full verify benchmark fancy-benchmark full-benchmark fastfail-benchmark signer-id signed-table value-signature-test' +CONFIGS='cfg/value_test.cfg cfg/batch_test.cfg cfg/stream_test.cfg' + +if [ "$1" = "help" ]; then + echo "Test script usage: ./test.sh " + echo "Arguments:" + echo " help - print this message" + echo " all - run tests & benchmarks against a live Accumulo instance on all available actions" + echo " nose - only run the unit tests in this directory" + echo " live - only run the live test in this directory" + echo " specific - run the live test on the specified action" +elif [ "$1" = "all" ]; then + for a in $ACTIONS; do + echo "==========================" + echo "Testing action ${a}" + echo "==========================" + python test_main.py --table "${TABLE}_${a}" --scheme ALL --port ${PORT} --user ${USER} --hostname ${HOSTNAME} --password ${PASSWORD} --action "${a}" + echo + done + + for cfg in $CONFIGS; do + echo "==========================" + echo "Testing config file ${cfg}" + echo "==========================" + python test_main.py --table "${TABLE}_${a}" --scheme ALL --port ${PORT} --user ${USER} --hostname ${HOSTNAME} --password ${PASSWORD} --action cfg-test --cfg ${cfg} + echo + done + +elif [ "$1" = "nose" ]; then + nosetests sign_test + nosetests truststore_test +elif [ "$1" = "live" ]; then + python test_main.py --table ${TABLE} --scheme ALL --port ${PORT} --user ${USER} --hostname ${HOSTNAME} --password ${PASSWORD} +elif [ "$1" = "specific" ]; then + python test_main.py --table "${TABLE}_${a}" --scheme ALL --port ${PORT} --user ${USER} --hostname ${HOSTNAME} --password ${PASSWORD} --action "${2}" +elif [ "$1" = "cfg" ]; then + python test_main.py --table "${TABLE}_${a}" --scheme ALL --port ${PORT} --user ${USER} --hostname ${HOSTNAME} --password ${PASSWORD} --action cfg-test --cfg "${2}" +else + nosetests sign_test + nosetests truststore_test + python test_main.py --table ${TABLE} --scheme ALL --port ${PORT} --user ${USER} --hostname ${HOSTNAME} --password ${PASSWORD} +fi diff --git a/pace/signatures/test_main.py b/pace/signatures/test_main.py new file mode 100644 index 0000000..affe2c4 --- /dev/null +++ b/pace/signatures/test_main.py @@ -0,0 +1,187 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: ZS +## Description: Tests for signatures against a live accumulo db +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 9 Jul 2014 ZS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import argparse +import profile + +from pace.signatures.benchmarker import Benchmarker +from pace.signatures.vars import SIGNATURE_FUNCTIONS + +def main(): + parser = argparse.ArgumentParser(description=( + 'Test the signature code with a running Accumulo server instance.')) + + parser.add_argument('--profile', + dest='profile', + action='store_const', + default=False, + const=True, + help='profile the test performed') + + parser.add_argument('--vis', + dest='vis', + action='store', + default=False, + help='the visibility field to use (currently only for fastfail benchmarking)') + + parser.add_argument('--action', + dest='action', + action='store', + default='full', + choices=['full', 'verify', 'benchmark', 'fancy-benchmark', 'full-benchmark', 'fastfail-benchmark', 'signer-id', 'signed-table', 'cfg-test'], + help='determine what action to take \ + (default: write data & then verify)') + + parser.add_argument('--scheme', + dest='scheme', + action='store', + default='RSA', + choices=SIGNATURE_FUNCTIONS.keys().append("ALL"), + help='specify an encryption scheme to use \ + (default: RSA)') + + parser.add_argument('--cfg', + dest='cfg_file', + action='store', + help='specify a config file to use') + + parser.add_argument('--seed', + dest='seed', + action='store', + help='specify a seed to use for the randomness') + + parser.add_argument('--table', + dest='table', + action='store', + required=True, + help='specify the table in the accumulo database \ + to use') + + parser.add_argument('--port', + dest='port', + action='store', + default='42424', + type=int, + help='the port to connect to the Accumulo instance on') + + parser.add_argument('--user', + dest='user', + action='store', + default='root', + help='the username to connect to the Accumulo instance with') + + parser.add_argument('--hostname', + dest='hostname', + action='store', + default='localhost', + help='the hostname of the Accumulo instance') + + parser.add_argument('--password', + dest='password', + action='store', + default='secret', + help='the password for the Accumulo instance') + + args = parser.parse_args() + + if args.action == 'benchmark': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_benchmarks(table_prefix=args.table)', + globals(), + locals()) + else: + bench.run_benchmarks(table_prefix=args.table) + + elif args.action == 'fancy-benchmark': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_fancy_benchmarks(table_prefix=args.table)', + globals(), + locals()) + else: + bench.run_fancy_benchmarks(table_prefix=args.table) + + elif args.action == 'full': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_test(signClassName=args.scheme,\ + table=args.table,\ + write=True)', + globals(), + locals()) + else: + bench.run_test(signClassName=args.scheme, + table=args.table, + write=True) + + elif args.action == 'verify': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + if args.profile: + profile.runctx( + 'bench.run_test(signClassName=args.scheme,\ + table=args.table,\ + write=False)', + globals(), locals()) + else: + bench.run_test(signClassName=args.scheme, + table=args.table, + write=False) + + elif args.action == 'full-benchmark': + # Doesn't support profiling + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + bench.run_full_benchmarks(table_prefix=args.table) + + elif args.action == 'fastfail-benchmark': + # Doesn't support profiling + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + bench.run_fastfail_benchmarks(table_prefix=args.table, + one_vis=args.vis) + + elif args.action == 'signer-id': + # Doesn't support profiling + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + bench.id_test(args.table) + + elif args.action == 'signed-table': + # Doesn't support profiling + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + bench.table_test(args.table) + + elif args.action == 'cfg-test': + bench = Benchmarker(args.hostname, args.port, args.user, args.password, + seed=args.seed) + with open(args.cfg_file, 'r') as cfg_file: + bench.location_test(table_prefix=args.table, cfg_file=cfg_file) + + else: + print "Invalid action: " + args.action + +if __name__ == "__main__": + main() diff --git a/pace/signatures/truststore_test.py b/pace/signatures/truststore_test.py new file mode 100644 index 0000000..0d1c0a2 --- /dev/null +++ b/pace/signatures/truststore_test.py @@ -0,0 +1,162 @@ +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Unit tests for manualtruststore.py +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 24 Jun 2015 CS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.abspath(__file__)) +base_dir = os.path.join(this_dir, '../../..') +sys.path.append(base_dir) + +from unittest import TestCase + +import time +import random +import shutil + +from pace.common.pacetest import PACETestCase +from pace.signatures.manualtruststore import ManualTrustStore, TrustStoreCreationException +from pace.signatures.vars import SIGNATURE_FUNCTIONS +from pace.signatures.acc_sig import PKCS1_v1_5_AccSig as v15 +from pace.signatures.acc_sig import PKCS1_PSS_AccSig as PSS +from pace.signatures.acc_sig import PyCryptopp_ECDSA_AccSig as ECDSA + +ABS_PATH = os.path.dirname(__file__) +TEST_STORE = ABS_PATH + '/keys/test_store' +TMP_PATH = ABS_PATH + '/tmp' +WRITE_STORE = TMP_PATH + '/test_written_store' + + +class TrustStoreTests(PACETestCase): + + def setUp(self): + random.seed(int(time.time())) + + def test_create_store(self): + path = TEST_STORE + try: + ts = ManualTrustStore(path) + except TrustStoreCreationException as tsce: + self.assertTrue(False, tsce.msg) + self.assertTrue(ts != None) + + def test_use_store(self, path=TEST_STORE): + ts = ManualTrustStore(path) + + pubkey1, scheme1name = ts.get_verifying_key('user1') + realpub1, _ = v15.test_keys() + + scheme1 = SIGNATURE_FUNCTIONS[scheme1name] + + self.assertEqual(scheme1, PSS) + self.assertEqual(scheme1.serialize_key(pubkey1), + PSS.serialize_key(realpub1)) + + pubkey2, scheme2name = ts.get_verifying_key('user2') + realpub2, _ = PSS.test_keys() + + scheme2 = SIGNATURE_FUNCTIONS[scheme2name] + + self.assertEqual(scheme2, v15) + self.assertEqual(scheme2.serialize_key(pubkey2), + v15.serialize_key(realpub2)) + + pubkey3, scheme3name = ts.get_verifying_key('user3') + realpub3, _ = ECDSA.test_keys() + + scheme3 = SIGNATURE_FUNCTIONS[scheme3name] + + self.assertEqual(scheme3, ECDSA) + self.assertEqual(scheme3.serialize_key(pubkey3), + ECDSA.serialize_key(realpub3)) + + def test_store_file(self): + """ Test the writing out of a dictionary-based store to a file. + """ + + if os.path.exists(TMP_PATH): + self.assertTrue(False, 'ERROR: tmp file or directory already exists. Delete and try again.') + + os.mkdir(TMP_PATH) + + path = WRITE_STORE + + pk1, _ = PSS.test_keys() + pk2, _ = v15.test_keys() + pk3, _ = ECDSA.test_keys() + + store = {'user1' : (PSS, pk1), + 'user2' : (v15, pk2), + 'user3' : (ECDSA, pk3)} + + ManualTrustStore.create_store_file(store, path) + self.test_use_store(path=path) + + shutil.rmtree(TMP_PATH) + + def test_bad_header_footer(self): + """ Make sure it fails to parse a store file with a poorly + formatted header and footer. + """ + + path = ABS_PATH + '/keys/bad_store_1' + + try: + ts = ManualTrustStore(path) + self.assertTrue(False, 'Succeeded to read in an invalid store') + except TrustStoreCreationException as tsce: + self.assertTrue(True, tsce.msg) + + def test_alg_key_mismatch(self): + """ Make sure it fails to parse a store file where the named algorithm + does not match the key used. + """ + + path = ABS_PATH + '/keys/bad_store_2' + + try: + ts = ManualTrustStore(path) + self.assertTrue(False, 'Succeeded to read in an invalid store') + except TrustStoreCreationException as tsce: + self.assertTrue(True, tsce.msg) + + def test_bad_footer(self): + """ Make sure it fails to parse a store file with a poorly formatted + footer (and correct header) + """ + + path = ABS_PATH + '/keys/bad_store_3' + + try: + ts = ManualTrustStore(path) + self.assertTrue(False, 'Succeeded to read in an invalid store') + except TrustStoreCreationException as tsce: + self.assertTrue(True, tsce.msg) + + def test_empty_key(self): + """ Make sure it fails to parse a file with an empty key. + """ + + path = ABS_PATH + '/keys/bad_store_4' + + try: + ts = ManualTrustStore(path) + self.assertTrue(False, 'Succeeded to read in an invalid store') + except TrustStoreCreationException as tsce: + self.assertTrue(True, tsce.msg) + + path = ABS_PATH + '/keys/bad_store_4b' + + try: + ts = ManualTrustStore(path) + self.assertTrue(False, 'Succeeded to read in an invalid store') + except TrustStoreCreationException as tsce: + self.assertTrue(True, tsce.msg) + diff --git a/pace/signatures/vars.py b/pace/signatures/vars.py new file mode 100644 index 0000000..e448bf1 --- /dev/null +++ b/pace/signatures/vars.py @@ -0,0 +1,40 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Miscellaneous global variables for the signatures code +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 12 Nov 2014 CS Original file +## ************** + +from collections import namedtuple + +from pace.signatures.acc_sig import PKCS1_v1_5_AccSig, PyCryptopp_ECDSA_AccSig, PKCS1_PSS_AccSig, Symmetric_HMAC_SHA256_AccSig + +SIGNATURE_FUNCTIONS = { + 'RSA' : PKCS1_v1_5_AccSig, + 'PKCS1_v1_5' : PKCS1_v1_5_AccSig, + 'RSASSA_PKCS1-v1_5' : PKCS1_v1_5_AccSig, + 'RSASSA-PKCS1-v1_5' : PKCS1_v1_5_AccSig, + 'RSASSA_PKCS-v1_5' : PKCS1_v1_5_AccSig, + 'PyCryptopp_ECDSA' : PyCryptopp_ECDSA_AccSig, + 'ECDSA' : PyCryptopp_ECDSA_AccSig, + 'ECC_ECDSA' : PyCryptopp_ECDSA_AccSig, + 'PSS' : PKCS1_PSS_AccSig, + 'RSASSA-PSS' : PKCS1_PSS_AccSig, + 'HMAC-SHA256' : Symmetric_HMAC_SHA256_AccSig + } + +SUPPORTED_SIGNATURES = [ + PKCS1_v1_5_AccSig, + PyCryptopp_ECDSA_AccSig, + PKCS1_PSS_AccSig, + ] + +ALL_SIGNATURES = SUPPORTED_SIGNATURES + [ + Symmetric_HMAC_SHA256_AccSig + ] + +MAX_ERROR_LEN = 256 # truncate error messages to a reasonable length diff --git a/pace/signatures/verify.py b/pace/signatures/verify.py new file mode 100644 index 0000000..c2f0653 --- /dev/null +++ b/pace/signatures/verify.py @@ -0,0 +1,121 @@ +## ************** +## Copyright 2014 MIT Lincoln Laboratory +## Project: PACE +## Authors: CS +## Description: Verification code for accumulo clients +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 18 Dec 2014 CS Original file +## ************** + +import os +import sys +this_dir = os.path.dirname(os.path.dirname(__file__)) +base_dir = os.path.join(this_dir, '../..') +sys.path.append(base_dir) + +import base64 +import logging + +from pace.signatures.vars import SIGNATURE_FUNCTIONS, MAX_ERROR_LEN +from pace.signatures.signconfig import VisibilityFieldConfig, VerificationException + +from pace.signatures.signaturepki import SignatureMixin + +class AccumuloVerifier(object): + + def __init__(self, get_key, conf=VisibilityFieldConfig()): + """ Class for verifying Accumulo entries. Keeps track of various + configuration options for signatures on this instance. + + Arguments: + get_key - either a PKI instance (see pki.abstract_key_management.py) + or the public key to use to verify the signature. + conf - The configuration object for the accumulo instance this + object will be verifying entries from + (Default: VisibilityFieldConfig(), which looks for signatures + in the visibility field) + """ + self.get_key = get_key + self.conf = conf + + + def verify_entry(self, raw_entry, table=None): + """ Verify that a single string was signed using the provided key. + + keyword arguments: + raw_entry - the (un-decoded) entry in the table + table - the name of the table the entry is in, if expecting the + table to be part of the signature, and None if the table + name was not included. Default: None. + returns: + The entry with the signature metadata parsed out. + + Raises VerificationException if the entry fails to verify. + """ + + entry, cell = self.conf._split_entry(raw_entry) + + if table is not None: + cell_string = ','.join([table, entry.cell_string]) + else: + cell_string = entry.cell_string + + if isinstance(self.get_key, SignatureMixin): + key, signame = self.get_key.get_verifying_key(entry.metadata) + else: + key = self.get_key + signame = entry.metadata + + try: + sigf = SIGNATURE_FUNCTIONS[signame] + except KeyError: + # didn't recognize signature algorithm, so failed to verify + raise VerificationException( + "unrecognized signing algorithm: " + + entry.metadata[:MAX_ERROR_LEN], cell) + + sig = base64.b64decode(entry.sig) + AccumuloVerifier._verify_signature(sig, cell_string, key, sigf, cell) + + return entry + + @staticmethod + def _verify_signature(sig, data, key, sigf, cell): + """ Verifies that the given signature comes from the right entity + + Input: + sig - the signature to check + data - the data to check against sig + key - the public key to check the signature against + sigf - the signing function to use + cell - the metadata-less cell to return if there was an error + + Raises an exception with a string explaining the error if the + signature fails to verify, and returns (no value) if the + verification succeeds. + """ + + #verify the message + verified = sigf.verify(data, sig, key) + + if not verified: + raise VerificationException("Failed to verify the signature", cell) + + @staticmethod + def _verify_signature_bool(sig, data, key, sigf, cell): + """ Wrapper for _verify_signature that returns a boolean value rather + than maybe raising an exception, throwing away any error message + and cell returned in the failure case. + """ + + try: + AccumuloVerifier._verify_signature(sig, data, key, sigf, cell) + except VerificationException as ve: + logging.debug("Error: " + ve.msg) + return False + + return True + + diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..861a9f5 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,5 @@ +[egg_info] +tag_build = +tag_date = 0 +tag_svn_revision = 0 + diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..0d39184 --- /dev/null +++ b/setup.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +## ************** +## Copyright 2015 MIT Lincoln Laboratory +## Project: PACE +## Authors: SS +## Description: Installation file for PACE. Run by entering "python setup.py install" in terminal +## Modifications: +## Date Name Modification +## ---- ---- ------------ +## 06 Oct 2015 SS Original file +## 19 Nov 2015 SS Added dependencies +## ************** + +from setuptools import setup, find_packages +import os.path + +VERSION = '1.3' +README = 'README.md' + +setup( + # Package name, version, and short description + name='pace', + version=VERSION, + description='Proactively-Secure Accumulo with Cryptographic Enforcement', + + # Long description is the README + long_description=open(os.path.join(os.path.dirname(__file__), README)).read(), + + # Author details + author='MIT Lincoln Laboratory', + author_email='pace-contact@ll.mit.edu', + + # License and online information commented out until open-sourcing + #license='', + #url='', + #keywords='', + + # Recursively find all packages (folders containing __init__.py files) in the pace directory + packages=find_packages(), + + # Dependencies that can be automatically installed. + # Note that there are some dependencies that must be manually installed. + # They can be installed using install.sh or by checking the dependency + # list in the README and downloaded manually. + install_requires=[ + 'Beaker>=1.7.0', + 'enum34>=1.0.4', + 'nose>=1.1.2', + 'pyaccumulo>=1.5.0.6', + 'distribute>=0.6.14', + ], +) +