# HG changeset patch # User Wolfgang Rosenauer # Date 1541858851 -3600 # Node ID 9f49c406dc11d9bad6567f0b342aa1900eeb9fea # Parent d8601c72c87bedea893944029753b71c2df2618e 63.0.1 release candidate with several build updates and required fixes diff -r d8601c72c87b -r 9f49c406dc11 MozillaFirefox/MozillaFirefox.changes --- a/MozillaFirefox/MozillaFirefox.changes Thu Nov 08 17:56:27 2018 +0100 +++ b/MozillaFirefox/MozillaFirefox.changes Sat Nov 10 15:07:31 2018 +0100 @@ -54,6 +54,10 @@ Memory safety bugs fixed in Firefox 63 and Firefox ESR 60.3 - requires NSPR 4.20, NSS 3.39 and Rust 1.28 - latest rust does not provide rust-std so stop requiring it +- requires cargo-crate-cbindgen >= 0.6.2 to build +- requires nodejs to build +- added mozilla-bmo1491289.patch to fix system NSS build (bmo#1491289) +- added mozilla-cubeb-noreturn.patch to fix non-return function ------------------------------------------------------------------- Thu Oct 25 14:39:04 UTC 2018 - guillaume.gardet@opensuse.org diff -r d8601c72c87b -r 9f49c406dc11 MozillaFirefox/MozillaFirefox.spec --- a/MozillaFirefox/MozillaFirefox.spec Thu Nov 08 17:56:27 2018 +0100 +++ b/MozillaFirefox/MozillaFirefox.spec Sat Nov 10 15:07:31 2018 +0100 @@ -66,7 +66,6 @@ %else BuildRequires: gcc-c++ %endif -BuildRequires: cargo BuildRequires: libXcomposite-devel BuildRequires: libcurl-devel BuildRequires: libidl-devel @@ -76,10 +75,13 @@ BuildRequires: makeinfo BuildRequires: mozilla-nspr-devel >= 4.20 BuildRequires: mozilla-nss-devel >= 3.39 +BuildRequires: nodejs BuildRequires: python-devel BuildRequires: python2-xml BuildRequires: python3 >= 3.5 BuildRequires: rust >= 1.28 +BuildRequires: cargo >= 1.28 +BuildRequires: cargo-crate-cbindgen >= 0.6.2 BuildRequires: startup-notification-devel BuildRequires: unzip BuildRequires: update-desktop-files @@ -158,6 +160,8 @@ Patch7: mozilla-aarch64-startup-crash.patch Patch8: mozilla-bmo256180.patch Patch9: mozilla-bmo1463035.patch +Patch10: mozilla-bmo1491289.patch +Patch11: mozilla-cubeb-noreturn.patch # Firefox/browser Patch101: firefox-kde.patch Patch102: firefox-branded-icons.patch @@ -267,6 +271,8 @@ %patch7 -p1 %patch8 -p1 %patch9 -p1 +%patch10 -p1 +%patch11 -p1 # Firefox %patch101 -p1 %patch102 -p1 diff -r d8601c72c87b -r 9f49c406dc11 MozillaFirefox/mozilla-bmo1491289.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MozillaFirefox/mozilla-bmo1491289.patch Sat Nov 10 15:07:31 2018 +0100 @@ -0,0 +1,1 @@ +../mozilla-bmo1491289.patch \ No newline at end of file diff -r d8601c72c87b -r 9f49c406dc11 MozillaFirefox/mozilla-cubeb-noreturn.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MozillaFirefox/mozilla-cubeb-noreturn.patch Sat Nov 10 15:07:31 2018 +0100 @@ -0,0 +1,1 @@ +../mozilla-cubeb-noreturn.patch \ No newline at end of file diff -r d8601c72c87b -r 9f49c406dc11 mozilla-bmo1491289.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mozilla-bmo1491289.patch Sat Nov 10 15:07:31 2018 +0100 @@ -0,0 +1,24896 @@ +diff --git a/third_party/prio/LICENSE b/third_party/prio/LICENSE +deleted file mode 100644 +--- a/third_party/prio/LICENSE ++++ /dev/null +@@ -1,373 +0,0 @@ +-Mozilla Public License Version 2.0 +-================================== +- +-1. Definitions +--------------- +- +-1.1. "Contributor" +- means each individual or legal entity that creates, contributes to +- the creation of, or owns Covered Software. +- +-1.2. "Contributor Version" +- means the combination of the Contributions of others (if any) used +- by a Contributor and that particular Contributor's Contribution. +- +-1.3. "Contribution" +- means Covered Software of a particular Contributor. +- +-1.4. "Covered Software" +- means Source Code Form to which the initial Contributor has attached +- the notice in Exhibit A, the Executable Form of such Source Code +- Form, and Modifications of such Source Code Form, in each case +- including portions thereof. +- +-1.5. "Incompatible With Secondary Licenses" +- means +- +- (a) that the initial Contributor has attached the notice described +- in Exhibit B to the Covered Software; or +- +- (b) that the Covered Software was made available under the terms of +- version 1.1 or earlier of the License, but not also under the +- terms of a Secondary License. +- +-1.6. "Executable Form" +- means any form of the work other than Source Code Form. +- +-1.7. "Larger Work" +- means a work that combines Covered Software with other material, in +- a separate file or files, that is not Covered Software. +- +-1.8. "License" +- means this document. +- +-1.9. "Licensable" +- means having the right to grant, to the maximum extent possible, +- whether at the time of the initial grant or subsequently, any and +- all of the rights conveyed by this License. +- +-1.10. "Modifications" +- means any of the following: +- +- (a) any file in Source Code Form that results from an addition to, +- deletion from, or modification of the contents of Covered +- Software; or +- +- (b) any new file in Source Code Form that contains any Covered +- Software. +- +-1.11. "Patent Claims" of a Contributor +- means any patent claim(s), including without limitation, method, +- process, and apparatus claims, in any patent Licensable by such +- Contributor that would be infringed, but for the grant of the +- License, by the making, using, selling, offering for sale, having +- made, import, or transfer of either its Contributions or its +- Contributor Version. +- +-1.12. "Secondary License" +- means either the GNU General Public License, Version 2.0, the GNU +- Lesser General Public License, Version 2.1, the GNU Affero General +- Public License, Version 3.0, or any later versions of those +- licenses. +- +-1.13. "Source Code Form" +- means the form of the work preferred for making modifications. +- +-1.14. "You" (or "Your") +- means an individual or a legal entity exercising rights under this +- License. For legal entities, "You" includes any entity that +- controls, is controlled by, or is under common control with You. For +- purposes of this definition, "control" means (a) the power, direct +- or indirect, to cause the direction or management of such entity, +- whether by contract or otherwise, or (b) ownership of more than +- fifty percent (50%) of the outstanding shares or beneficial +- ownership of such entity. +- +-2. License Grants and Conditions +--------------------------------- +- +-2.1. Grants +- +-Each Contributor hereby grants You a world-wide, royalty-free, +-non-exclusive license: +- +-(a) under intellectual property rights (other than patent or trademark) +- Licensable by such Contributor to use, reproduce, make available, +- modify, display, perform, distribute, and otherwise exploit its +- Contributions, either on an unmodified basis, with Modifications, or +- as part of a Larger Work; and +- +-(b) under Patent Claims of such Contributor to make, use, sell, offer +- for sale, have made, import, and otherwise transfer either its +- Contributions or its Contributor Version. +- +-2.2. Effective Date +- +-The licenses granted in Section 2.1 with respect to any Contribution +-become effective for each Contribution on the date the Contributor first +-distributes such Contribution. +- +-2.3. Limitations on Grant Scope +- +-The licenses granted in this Section 2 are the only rights granted under +-this License. No additional rights or licenses will be implied from the +-distribution or licensing of Covered Software under this License. +-Notwithstanding Section 2.1(b) above, no patent license is granted by a +-Contributor: +- +-(a) for any code that a Contributor has removed from Covered Software; +- or +- +-(b) for infringements caused by: (i) Your and any other third party's +- modifications of Covered Software, or (ii) the combination of its +- Contributions with other software (except as part of its Contributor +- Version); or +- +-(c) under Patent Claims infringed by Covered Software in the absence of +- its Contributions. +- +-This License does not grant any rights in the trademarks, service marks, +-or logos of any Contributor (except as may be necessary to comply with +-the notice requirements in Section 3.4). +- +-2.4. Subsequent Licenses +- +-No Contributor makes additional grants as a result of Your choice to +-distribute the Covered Software under a subsequent version of this +-License (see Section 10.2) or under the terms of a Secondary License (if +-permitted under the terms of Section 3.3). +- +-2.5. Representation +- +-Each Contributor represents that the Contributor believes its +-Contributions are its original creation(s) or it has sufficient rights +-to grant the rights to its Contributions conveyed by this License. +- +-2.6. Fair Use +- +-This License is not intended to limit any rights You have under +-applicable copyright doctrines of fair use, fair dealing, or other +-equivalents. +- +-2.7. Conditions +- +-Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +-in Section 2.1. +- +-3. Responsibilities +-------------------- +- +-3.1. Distribution of Source Form +- +-All distribution of Covered Software in Source Code Form, including any +-Modifications that You create or to which You contribute, must be under +-the terms of this License. You must inform recipients that the Source +-Code Form of the Covered Software is governed by the terms of this +-License, and how they can obtain a copy of this License. You may not +-attempt to alter or restrict the recipients' rights in the Source Code +-Form. +- +-3.2. Distribution of Executable Form +- +-If You distribute Covered Software in Executable Form then: +- +-(a) such Covered Software must also be made available in Source Code +- Form, as described in Section 3.1, and You must inform recipients of +- the Executable Form how they can obtain a copy of such Source Code +- Form by reasonable means in a timely manner, at a charge no more +- than the cost of distribution to the recipient; and +- +-(b) You may distribute such Executable Form under the terms of this +- License, or sublicense it under different terms, provided that the +- license for the Executable Form does not attempt to limit or alter +- the recipients' rights in the Source Code Form under this License. +- +-3.3. Distribution of a Larger Work +- +-You may create and distribute a Larger Work under terms of Your choice, +-provided that You also comply with the requirements of this License for +-the Covered Software. If the Larger Work is a combination of Covered +-Software with a work governed by one or more Secondary Licenses, and the +-Covered Software is not Incompatible With Secondary Licenses, this +-License permits You to additionally distribute such Covered Software +-under the terms of such Secondary License(s), so that the recipient of +-the Larger Work may, at their option, further distribute the Covered +-Software under the terms of either this License or such Secondary +-License(s). +- +-3.4. Notices +- +-You may not remove or alter the substance of any license notices +-(including copyright notices, patent notices, disclaimers of warranty, +-or limitations of liability) contained within the Source Code Form of +-the Covered Software, except that You may alter any license notices to +-the extent required to remedy known factual inaccuracies. +- +-3.5. Application of Additional Terms +- +-You may choose to offer, and to charge a fee for, warranty, support, +-indemnity or liability obligations to one or more recipients of Covered +-Software. However, You may do so only on Your own behalf, and not on +-behalf of any Contributor. You must make it absolutely clear that any +-such warranty, support, indemnity, or liability obligation is offered by +-You alone, and You hereby agree to indemnify every Contributor for any +-liability incurred by such Contributor as a result of warranty, support, +-indemnity or liability terms You offer. You may include additional +-disclaimers of warranty and limitations of liability specific to any +-jurisdiction. +- +-4. Inability to Comply Due to Statute or Regulation +---------------------------------------------------- +- +-If it is impossible for You to comply with any of the terms of this +-License with respect to some or all of the Covered Software due to +-statute, judicial order, or regulation then You must: (a) comply with +-the terms of this License to the maximum extent possible; and (b) +-describe the limitations and the code they affect. Such description must +-be placed in a text file included with all distributions of the Covered +-Software under this License. Except to the extent prohibited by statute +-or regulation, such description must be sufficiently detailed for a +-recipient of ordinary skill to be able to understand it. +- +-5. Termination +--------------- +- +-5.1. The rights granted under this License will terminate automatically +-if You fail to comply with any of its terms. However, if You become +-compliant, then the rights granted under this License from a particular +-Contributor are reinstated (a) provisionally, unless and until such +-Contributor explicitly and finally terminates Your grants, and (b) on an +-ongoing basis, if such Contributor fails to notify You of the +-non-compliance by some reasonable means prior to 60 days after You have +-come back into compliance. Moreover, Your grants from a particular +-Contributor are reinstated on an ongoing basis if such Contributor +-notifies You of the non-compliance by some reasonable means, this is the +-first time You have received notice of non-compliance with this License +-from such Contributor, and You become compliant prior to 30 days after +-Your receipt of the notice. +- +-5.2. If You initiate litigation against any entity by asserting a patent +-infringement claim (excluding declaratory judgment actions, +-counter-claims, and cross-claims) alleging that a Contributor Version +-directly or indirectly infringes any patent, then the rights granted to +-You by any and all Contributors for the Covered Software under Section +-2.1 of this License shall terminate. +- +-5.3. In the event of termination under Sections 5.1 or 5.2 above, all +-end user license agreements (excluding distributors and resellers) which +-have been validly granted by You or Your distributors under this License +-prior to termination shall survive termination. +- +-************************************************************************ +-* * +-* 6. Disclaimer of Warranty * +-* ------------------------- * +-* * +-* Covered Software is provided under this License on an "as is" * +-* basis, without warranty of any kind, either expressed, implied, or * +-* statutory, including, without limitation, warranties that the * +-* Covered Software is free of defects, merchantable, fit for a * +-* particular purpose or non-infringing. The entire risk as to the * +-* quality and performance of the Covered Software is with You. * +-* Should any Covered Software prove defective in any respect, You * +-* (not any Contributor) assume the cost of any necessary servicing, * +-* repair, or correction. This disclaimer of warranty constitutes an * +-* essential part of this License. No use of any Covered Software is * +-* authorized under this License except under this disclaimer. * +-* * +-************************************************************************ +- +-************************************************************************ +-* * +-* 7. Limitation of Liability * +-* -------------------------- * +-* * +-* Under no circumstances and under no legal theory, whether tort * +-* (including negligence), contract, or otherwise, shall any * +-* Contributor, or anyone who distributes Covered Software as * +-* permitted above, be liable to You for any direct, indirect, * +-* special, incidental, or consequential damages of any character * +-* including, without limitation, damages for lost profits, loss of * +-* goodwill, work stoppage, computer failure or malfunction, or any * +-* and all other commercial damages or losses, even if such party * +-* shall have been informed of the possibility of such damages. This * +-* limitation of liability shall not apply to liability for death or * +-* personal injury resulting from such party's negligence to the * +-* extent applicable law prohibits such limitation. Some * +-* jurisdictions do not allow the exclusion or limitation of * +-* incidental or consequential damages, so this exclusion and * +-* limitation may not apply to You. * +-* * +-************************************************************************ +- +-8. Litigation +-------------- +- +-Any litigation relating to this License may be brought only in the +-courts of a jurisdiction where the defendant maintains its principal +-place of business and such litigation shall be governed by laws of that +-jurisdiction, without reference to its conflict-of-law provisions. +-Nothing in this Section shall prevent a party's ability to bring +-cross-claims or counter-claims. +- +-9. Miscellaneous +----------------- +- +-This License represents the complete agreement concerning the subject +-matter hereof. If any provision of this License is held to be +-unenforceable, such provision shall be reformed only to the extent +-necessary to make it enforceable. Any law or regulation which provides +-that the language of a contract shall be construed against the drafter +-shall not be used to construe this License against a Contributor. +- +-10. Versions of the License +---------------------------- +- +-10.1. New Versions +- +-Mozilla Foundation is the license steward. Except as provided in Section +-10.3, no one other than the license steward has the right to modify or +-publish new versions of this License. Each version will be given a +-distinguishing version number. +- +-10.2. Effect of New Versions +- +-You may distribute the Covered Software under the terms of the version +-of the License under which You originally received the Covered Software, +-or under the terms of any subsequent version published by the license +-steward. +- +-10.3. Modified Versions +- +-If you create software not governed by this License, and you want to +-create a new license for such software, you may create and use a +-modified version of this License if you rename the license and remove +-any references to the name of the license steward (except to note that +-such modified license differs from this License). +- +-10.4. Distributing Source Code Form that is Incompatible With Secondary +-Licenses +- +-If You choose to distribute Source Code Form that is Incompatible With +-Secondary Licenses under the terms of this version of the License, the +-notice described in Exhibit B of this License must be attached. +- +-Exhibit A - Source Code Form License Notice +-------------------------------------------- +- +- This Source Code Form is subject to the terms of the Mozilla Public +- License, v. 2.0. If a copy of the MPL was not distributed with this +- file, You can obtain one at http://mozilla.org/MPL/2.0/. +- +-If it is not possible or desirable to put the notice in a particular +-file, then You may include the notice in a location (such as a LICENSE +-file in a relevant directory) where a recipient would be likely to look +-for such a notice. +- +-You may add additional accurate notices of copyright ownership. +- +-Exhibit B - "Incompatible With Secondary Licenses" Notice +---------------------------------------------------------- +- +- This Source Code Form is "Incompatible With Secondary Licenses", as +- defined by the Mozilla Public License, v. 2.0. +diff --git a/third_party/prio/README-mozilla b/third_party/prio/README-mozilla +--- a/third_party/prio/README-mozilla ++++ b/third_party/prio/README-mozilla +@@ -1,7 +1,7 @@ + This directory contains the Prio source from the upstream repo: + https://github.com/mozilla/libprio + +-Current version: 1.0 [commit bfbcf1f95001047c61f4a29c3e68499b2f0c9f3b] ++Current version: 1.1 [commit 488da2d729d73f18ed45add59edd18b257e1ceaa] + + UPDATING: + +@@ -14,4 +14,4 @@ + from within the third_party/libprio directory. + + If the collection of source files changes, manual updates to moz.build may be +-needed as we don't use the upstream makefiles. +\ No newline at end of file ++needed as we don't use the upstream makefiles. +diff --git a/third_party/prio/README.md b/third_party/prio/README.md +deleted file mode 100644 +--- a/third_party/prio/README.md ++++ /dev/null +@@ -1,136 +0,0 @@ +-# libprio - A Prio library in C using NSS +- +-**Warning:** +-We do our best to write bug-free code, but I have no doubt +-that there are scary bugs, side-channel attacks, and memory leaks +-lurking herein. +- +-**Important:** +-We have not yet implemented the items +-described in the "Security-Critical TODOs" section below. +-Without these features, do not use the code in a production environment. +- +- +-## Overview +- +-This is an implementation of the core cryptographic routines +-for the [Prio system](https://crypto.stanford.edu/prio/) +-for the private computation of aggregate statistics: +-> "Prio: Private, Robust, and Scalable Computation of Aggregate Statistics"
+-> by Henry Corrigan-Gibbs and Dan Boneh
+-> USENIX Symposium on Networked Systems Design and Implementation
+-> March 2017 +-> +-> Available online at: +-> https://crypto.stanford.edu/prio/ +- +-**Usage scenario.** +-The library implements the cryptographic routines necessary +-for the following application scenario: +-Each client holds a vector of boolean values. +-Each client uses the library to encode her private vector into two +-encoded packets—one for server A and one for server B. +- +-After receiving shares from a client, the servers can use the routines +-implemented here to check whether the client-provided packets are +-well formed. +-(Without this check, a single malicious client can corrupt the +-output of the computation.) +- +-After collecting data packets from many clients, the servers +-can combine their state to learn how many clients had the +-*i*th bit of their data vector set to `true` and how many +-clients had the *i*th bit of their data vector set to `false`. +-As long as at least one of the two servers is honest +-(i.e., runs the correct code), +-the servers learn *nothing else* about the clients' data, +-under standard cryptographic assumptions. +- +-For example, the *i*th bit of the data vector could indicate +-whether the client ever visited the *i*th-ranked website +-in the Alexa Top 500. +-The servers would learn how many clients visited each of the +-Top 500 websites *without learning* which clients visited +-which websites. +- +-**Efficiency considerations.** +-The code makes no use of public-key crypto, so it should +-be relatively fast. +-When each a data packet is of length *N*, +-all arithmetic is modulo a prime *p* (we use an 87-bit prime by default), +-and "elements" are integers modulo *p*, +-the dominant costs of the system are: +-* **Client compute:** O(*N* log *N*) multiplications +-* **Client-to-server communication:** 2*N* + O(1) elements
+-* **Server compute:** O(*N* log *N*) multiplications to check each packet
+- (NOTE: Using an optimization we haven't yet implemented, we can +- drop this cost to O(*N*) multiplications per packet.) +-* **Server-to-server communication:** O(1) elements +-* **Server storage:** O(*N*) elements +- +-## Running the code +- +-You must first install +-[NSS/NSPR](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS), +-[scons](http://scons.org/), and +-[msgpack-c](https://github.com/msgpack/msgpack-c) version 2.1.5 (or newer?). +-On Ubuntu, you can instal NSS and scons with: +- +- $ sudo apt install scons libnspr4-dev libnss3-dev +- +-and you will have to download [msgpack-c 2.1.5 or newer here](https://github.com/msgpack/msgpack-c/releases), +-since the Ubuntu packages for msgpack are far out of date. +- +-For macOS using Homebrew: +- $ brew install nss nspr scons msgpack +- +- $ export LDFLAGS="-L/usr/local/opt/nss/lib" +- $ export CPPFLAGS="-I/usr/local/opt/nss/include -I/usr/local/opt/nspr/include/nspr" +- +-To compile the code, run: +- +- $ scons +- +-To run the test suite, execute: +- +- $ build/ptest/ptest -v +- +-To print debug messages while compiling: +- +- $ scons VERBOSE=1 +- +-To compile with debug symbols, run: +- +- $ scons BUILDTYPE=DEBUG +- +-To clean up the object and binary files, run: +- +- $ scons -c +- +-The files in this directory are: +-```` +-/build - Binaries, object files, etc. +-/include - Exported header files +- (Note: The public header is since +- NSPR already has a file called .) +-/mpi - NSS MPI bignum library +-/pclient - Example code that uses the Prio library +-/prio - Prio library core code +-/ptest - Tests and test runner +-```` +- +-## Optimizations and features not yet implemented +-* **Server compute.** +- By using a fast polynomial interpolation-and-evaluation +- routine, we can reduce the cost of checking a single client +- request from O(*N* log *N*) multiplications down to O(*N*) +- multiplications, for a data packet of *N* items. +-* **Differential privacy.** +- It would be very straightforward to add some small amount of +- noise to the final statistics to provide differential privacy. +- If this would be useful, I can add it. +-* **Misc.** +- There are TODO notes scattered throughout code indicating +- places for potential performance optimizations. +- +- +diff --git a/third_party/prio/SConstruct b/third_party/prio/SConstruct +deleted file mode 100644 +--- a/third_party/prio/SConstruct ++++ /dev/null +@@ -1,41 +0,0 @@ +-# This Source Code Form is subject to the terms of the Mozilla Public +-# License, v. 2.0. If a copy of the MPL was not distributed with this +-# file, You can obtain one at http://mozilla.org/MPL/2.0/. +- +-import os +-import SCons +- +-opts = Variables() +-opts.AddVariables( +- BoolVariable("DEBUG", "Make debug build", 1), +- BoolVariable("VERBOSE", "Show full build information", 0)) +- +-env = Environment(options = opts, +- ENV = os.environ) +-if "CFLAGS" in os.environ: +- env.Append(CFLAGS = SCons.Util.CLVar(os.getenv("CFLAGS"))) +-if "CPPFLAGS" in os.environ: +- env.Append(CPPFLAGS = SCons.Util.CLVar(os.getenv("CPPFLAGS"))) +-if "CXXFLAGS" in os.environ: +- env.Append(CXXFLAGS = SCons.Util.CLVar(os.getenv("CXXFLAGS"))) +-if "LDFLAGS" in os.environ: +- env.Append(LINKFLAGS = SCons.Util.CLVar(os.getenv("LDFLAGS"))) +- +-if env["DEBUG"]: +- print "DEBUG MODE!" +- env.Append(CPPFLAGS = [ "-g", "-DDEBUG"]) +- +-env.Append(LIBS = ["mprio", "mpi", "nss3", "nspr4"], \ +- LIBPATH = ['#build/prio', "#build/mpi"], +- CFLAGS = [ "-Wall", "-Werror", "-Wextra", "-O3", "-std=c99", +- "-I/usr/include/nspr", "-Impi", "-DDO_PR_CLEANUP"]) +- +-env.Append(CPPPATH = ["#include", "#."]) +-Export('env') +- +-SConscript('browser-test/SConscript', variant_dir='build/browser-test') +-SConscript('mpi/SConscript', variant_dir='build/mpi') +-SConscript('pclient/SConscript', variant_dir='build/pclient') +-SConscript('prio/SConscript', variant_dir='build/prio') +-SConscript('ptest/SConscript', variant_dir='build/ptest') +- +diff --git a/third_party/prio/browser-test/SConscript b/third_party/prio/browser-test/SConscript +deleted file mode 100644 +--- a/third_party/prio/browser-test/SConscript ++++ /dev/null +@@ -1,19 +0,0 @@ +-import sys +- +-Import('env') +- +-prio_env = env.Clone() +- +-src = [ +- "main.c", +-] +- +-libs = [ +- "mprio", +- "msgpackc", +-] +- +-prio_env.Append(LIBS = libs) +-prio_env.Install("encode-once.js") +-prio_env.Program("browser-test", src) +- +diff --git a/third_party/prio/browser-test/encode-once.js b/third_party/prio/browser-test/encode-once.js +deleted file mode 100644 +--- a/third_party/prio/browser-test/encode-once.js ++++ /dev/null +@@ -1,45 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-ChromeUtils.import('resource://gre/modules/Services.jsm'); +- +-let [publicKeyA, publicKeyB, batchID, param1, param2, param3] = arguments; +- +-Services.prefs.setStringPref('prio.publicKeyA', publicKeyA); +-Services.prefs.setStringPref('prio.publicKeyB', publicKeyB); +- +-async function test() { +- let params = { +- 'startupCrashDetected': Number(param1), +- 'safeModeUsage': Number(param2), +- 'browserIsUserDefault': Number(param3) +- }; +- +- try { +- let result = await PrioEncoder.encode(batchID, params); +- +- const toTypedArray = byteString => { +- let u8Array = new Uint8Array(byteString.length); +- for (let i in byteString) { +- u8Array[i] = byteString.charCodeAt(i); +- } +- return u8Array; +- } +- +- const toHexString = bytes => +- bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0') + ',', ''); +- +- console.log(toHexString(result.a) + '$' + toHexString(result.b)); +- console.log(''); +- } catch(e) { +- console.log('Failure.', e); +- console.log(v); +- } +-} +- +-test().then(); +diff --git a/third_party/prio/browser-test/main.c b/third_party/prio/browser-test/main.c +deleted file mode 100644 +--- a/third_party/prio/browser-test/main.c ++++ /dev/null +@@ -1,320 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#define _GNU_SOURCE +- +-#include +-#include +-#include +-#include +-#include +- +-#include "prio/encrypt.h" +-#include "prio/util.h" +- +-static void +-init_data (bool *data, int datalen) +-{ +- // The client's data submission is an arbitrary boolean vector. +- for (int i=0; i < datalen; i++) { +- // Arbitrary data +- data[i] = rand () % 2; +- } +-} +- +-static SECStatus +-read_string_from_hex (unsigned char **str_out, unsigned int *strLen, +- const char *input, const char **new_input) +-{ +- SECStatus rv = SECSuccess; +- *strLen = 0; +- int read = 0; +- int outCount = 0; +- const char *inp = input; +- +- while (true) { +- unsigned char byte = '\0'; +- const int retval = sscanf(inp, "%02hhx,%n", &byte, &read); +- if (retval < 1 || read != 3) { +- break; +- } +- +- inp += read; +- (*str_out)[outCount] = byte; +- outCount++; +- *strLen = *strLen + 1; +- } +- +- if (new_input) +- *new_input = inp + 1; +- +- return rv; +-} +- +-static SECStatus +-read_browser_reply (FILE *infile, +- unsigned char **for_server_a, unsigned int *aLen, +- unsigned char **for_server_b, unsigned int *bLen) +-{ +- SECStatus rv = SECFailure; +- char *raw_input = NULL; +- size_t rawLen = 0; +- +- puts ("Getting line of input."); +- P_CHECKCB (getline (&raw_input, &rawLen, infile) > 0); +- puts ("Got line of input."); +- +- P_CHECKA (*for_server_a = malloc (rawLen * sizeof (unsigned char))); +- P_CHECKA (*for_server_b = malloc (rawLen * sizeof (unsigned char))); +- +- *aLen = 0; +- *bLen = 0; +- +- P_CHECKCB (rawLen > 14); +- +- // Header is 14 chars long +- const char *new_input; +- puts ("Reading string A"); +- P_CHECKC (read_string_from_hex (for_server_a, aLen, raw_input + 14, &new_input)); +- puts ("Read string A"); +- +- // Skip over for_server_a string and one-char delimeter +- puts ("Reading string B"); +- P_CHECKC (read_string_from_hex (for_server_b, bLen, new_input, NULL)); +- puts ("Read string B"); +- +-cleanup: +- if (raw_input) free (raw_input); +- return rv; +-} +- +-static int +-verify_full (const char *path_to_xpcshell, int pathlen) +-{ +- SECStatus rv = SECSuccess; +- +- PublicKey pkA = NULL; +- PublicKey pkB = NULL; +- PrivateKey skA = NULL; +- PrivateKey skB = NULL; +- +- PrioConfig cfg = NULL; +- PrioServer sA = NULL; +- PrioServer sB = NULL; +- PrioVerifier vA = NULL; +- PrioVerifier vB = NULL; +- PrioPacketVerify1 p1A = NULL; +- PrioPacketVerify1 p1B = NULL; +- PrioPacketVerify2 p2A = NULL; +- PrioPacketVerify2 p2B = NULL; +- PrioTotalShare tA = NULL; +- PrioTotalShare tB = NULL; +- +- FILE *shell = NULL; +- int cmdlen = pathlen + 2*CURVE25519_KEY_LEN_HEX + 128; +- char cmd[cmdlen]; +- memset (cmd, 0, cmdlen); +- +- unsigned char *for_server_a = NULL; +- unsigned char *for_server_b = NULL; +- +- const int seed = time (NULL); +- srand (seed); +- printf ("Using srand seed %d\n", seed); +- +- // Number of different boolean data fields we collect. +- const int ndata = 3; +- +- //unsigned char batch_id_str[] = "abcde"; +- unsigned char batch_id_str[32]; +- memset (batch_id_str, 0, sizeof batch_id_str); +- snprintf ((char *)batch_id_str, sizeof batch_id_str, "%d", rand()); +- +- bool data_items[ndata]; +- unsigned long output[ndata]; +- init_data (data_items, ndata); +- +- // Initialize NSS random number generator. +- P_CHECKC (Prio_init ()); +- +- // Generate keypairs for servers +- P_CHECKC (Keypair_new (&skA, &pkA)); +- P_CHECKC (Keypair_new (&skB, &pkB)); +- +- // Export public keys to hex and print to stdout +- unsigned char pk_hexA[CURVE25519_KEY_LEN_HEX+1]; +- unsigned char pk_hexB[CURVE25519_KEY_LEN_HEX+1]; +- P_CHECKC (PublicKey_export_hex (pkA, pk_hexA)); +- P_CHECKC (PublicKey_export_hex (pkB, pk_hexB)); +- +- snprintf (cmd, cmdlen, "%s %s %s %s %s %d %d %d", +- path_to_xpcshell, "encode-once.js", +- pk_hexA, pk_hexB, batch_id_str, +- data_items[0], data_items[1], data_items[2]); +- +- printf ("> %s\n", cmd); +- P_CHECKA (shell = popen(cmd, "r")); +- puts("Ran command."); +- +- // Use the default configuration parameters. +- P_CHECKA (cfg = PrioConfig_new (ndata, pkA, pkB, batch_id_str, +- strlen ((char *)batch_id_str))); +- +- PrioPRGSeed server_secret; +- P_CHECKC (PrioPRGSeed_randomize (&server_secret)); +- +- // Initialize two server objects. The role of the servers need not +- // be symmetric. In a deployment, we envision that: +- // * Server A is the main telemetry server that is always online. +- // Clients send their encrypted data packets to Server A and +- // Server A stores them. +- // * Server B only comes online when the two servers want to compute +- // the final aggregate statistics. +- P_CHECKA (sA = PrioServer_new (cfg, PRIO_SERVER_A, skA, server_secret)); +- P_CHECKA (sB = PrioServer_new (cfg, PRIO_SERVER_B, skB, server_secret)); +- +- // Initialize empty verifier objects +- P_CHECKA (vA = PrioVerifier_new (sA)); +- P_CHECKA (vB = PrioVerifier_new (sB)); +- +- // Initialize shares of final aggregate statistics +- P_CHECKA (tA = PrioTotalShare_new ()); +- P_CHECKA (tB = PrioTotalShare_new ()); +- +- // Initialize shares of verification packets +- P_CHECKA (p1A = PrioPacketVerify1_new ()); +- P_CHECKA (p1B = PrioPacketVerify1_new ()); +- P_CHECKA (p2A = PrioPacketVerify2_new ()); +- P_CHECKA (p2B = PrioPacketVerify2_new ()); +- +- // I. CLIENT DATA SUBMISSION. +- // +- // Read in the client data packets +- unsigned int aLen = 0, bLen = 0; +- +- puts ("Reading..."); +- P_CHECKC (read_browser_reply (shell, &for_server_a, &aLen, &for_server_b, &bLen)); +- printf ("Read reply from browser. LenA: %u, LenB: %u\n", aLen, bLen); +- +- // II. VALIDATION PROTOCOL. (at servers) +- // +- // The servers now run a short 2-step protocol to check each +- // client's packet: +- // 1) Servers A and B broadcast one message (PrioPacketVerify1) +- // to each other. +- // 2) Servers A and B broadcast another message (PrioPacketVerify2) +- // to each other. +- // 3) Servers A and B can both determine whether the client's data +- // submission is well-formed (in which case they add it to their +- // running total of aggregate statistics) or ill-formed +- // (in which case they ignore it). +- // These messages must be sent over an authenticated channel, so +- // that each server is assured that every received message came +- // from its peer. +- +- // Set up a Prio verifier object. +- P_CHECKC (PrioVerifier_set_data (vA, for_server_a, aLen)); +- P_CHECKC (PrioVerifier_set_data (vB, for_server_b, bLen)); +- puts("Imported data."); +- +- // Both servers produce a packet1. Server A sends p1A to Server B +- // and vice versa. +- P_CHECKC (PrioPacketVerify1_set_data (p1A, vA)); +- P_CHECKC (PrioPacketVerify1_set_data (p1B, vB)); +- puts("Set data."); +- +- // Both servers produce a packet2. Server A sends p2A to Server B +- // and vice versa. +- P_CHECKC (PrioPacketVerify2_set_data(p2A, vA, p1A, p1B)); +- P_CHECKC (PrioPacketVerify2_set_data(p2B, vB, p1A, p1B)); +- +- // Using p2A and p2B, the servers can determine whether the request +- // is valid. (In fact, only Server A needs to perform this +- // check, since Server A can just tell Server B whether the check +- // succeeded or failed.) +- puts ("Checking validity."); +- P_CHECKC (PrioVerifier_isValid (vA, p2A, p2B)); +- P_CHECKC (PrioVerifier_isValid (vB, p2A, p2B)); +- puts ("Are valid."); +- +- // If we get here, the client packet is valid, so add it to the aggregate +- // statistic counter for both servers. +- P_CHECKC (PrioServer_aggregate (sA, vA)); +- P_CHECKC (PrioServer_aggregate (sB, vB)); +- +- // The servers repeat the steps above for each client submission. +- +- // III. PRODUCTION OF AGGREGATE STATISTICS. +- // +- // After collecting aggregates from MANY clients, the servers can compute +- // their shares of the aggregate statistics. +- // +- // Server B can send tB to Server A. +- P_CHECKC (PrioTotalShare_set_data (tA, sA)); +- P_CHECKC (PrioTotalShare_set_data (tB, sB)); +- +- // Once Server A has tA and tB, it can learn the aggregate statistics +- // in the clear. +- P_CHECKC (PrioTotalShare_final (cfg, output, tA, tB)); +- +- for (int i=0; i < ndata; i++) { +- //printf("output[%d] = %lu\n", i, output[i]); +- //printf("data[%d] = %d\n", i, (int)data_items[i]); +- P_CHECKCB (output[i] == data_items[i]); +- } +- +- puts ("Success!"); +- +-cleanup: +- if (rv != SECSuccess) { +- fprintf (stderr, "Warning: unexpected failure.\n"); +- } +- +- if (for_server_a) free (for_server_a); +- if (for_server_b) free (for_server_b); +- +- PrioTotalShare_clear (tA); +- PrioTotalShare_clear (tB); +- +- PrioPacketVerify2_clear (p2A); +- PrioPacketVerify2_clear (p2B); +- +- PrioPacketVerify1_clear (p1A); +- PrioPacketVerify1_clear (p1B); +- +- PrioVerifier_clear (vA); +- PrioVerifier_clear (vB); +- +- PrioServer_clear (sA); +- PrioServer_clear (sB); +- PrioConfig_clear (cfg); +- +- PublicKey_clear (pkA); +- PublicKey_clear (pkB); +- +- PrivateKey_clear (skA); +- PrivateKey_clear (skB); +- +- Prio_clear (); +- +- return !(rv == SECSuccess); +-} +- +-int +-main (int argc, char **argv) +-{ +- puts("== Prio browser test utility. =="); +- puts("(Note: Expects to be run in the same directory as encode-once.js.)"); +- if (argc != 2) { +- fprintf (stderr, "Usage ./%s \n", argv[0]); +- return 1; +- } +- +- return verify_full (argv[1], strlen (argv[1])); +-} +- +diff --git a/third_party/prio/include/mprio.h b/third_party/prio/include/mprio.h +--- a/third_party/prio/include/mprio.h ++++ b/third_party/prio/include/mprio.h +@@ -1,6 +1,6 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +@@ -13,10 +13,10 @@ + extern "C" { + #endif + ++#include + #include +-#include +-#include +-#include ++#include ++#include + #include + #include + +@@ -33,47 +33,44 @@ + /* + * Type for each of the two servers. + */ +-typedef enum { +- PRIO_SERVER_A, +- PRIO_SERVER_B +-} PrioServerId; ++typedef enum { PRIO_SERVER_A, PRIO_SERVER_B } PrioServerId; + + /* + * Opaque types + */ +-typedef struct prio_config *PrioConfig; +-typedef const struct prio_config *const_PrioConfig; ++typedef struct prio_config* PrioConfig; ++typedef const struct prio_config* const_PrioConfig; + +-typedef struct prio_server *PrioServer; +-typedef const struct prio_server *const_PrioServer; ++typedef struct prio_server* PrioServer; ++typedef const struct prio_server* const_PrioServer; + +-typedef struct prio_verifier *PrioVerifier; +-typedef const struct prio_verifier *const_PrioVerifier; ++typedef struct prio_verifier* PrioVerifier; ++typedef const struct prio_verifier* const_PrioVerifier; + +-typedef struct prio_packet_verify1 *PrioPacketVerify1; +-typedef const struct prio_packet_verify1 *const_PrioPacketVerify1; ++typedef struct prio_packet_verify1* PrioPacketVerify1; ++typedef const struct prio_packet_verify1* const_PrioPacketVerify1; + +-typedef struct prio_packet_verify2 *PrioPacketVerify2; +-typedef const struct prio_packet_verify2 *const_PrioPacketVerify2; ++typedef struct prio_packet_verify2* PrioPacketVerify2; ++typedef const struct prio_packet_verify2* const_PrioPacketVerify2; + +-typedef struct prio_total_share *PrioTotalShare; +-typedef const struct prio_total_share *const_PrioTotalShare; ++typedef struct prio_total_share* PrioTotalShare; ++typedef const struct prio_total_share* const_PrioTotalShare; + +-typedef SECKEYPublicKey *PublicKey; +-typedef const SECKEYPublicKey *const_PublicKey; ++typedef SECKEYPublicKey* PublicKey; ++typedef const SECKEYPublicKey* const_PublicKey; + +-typedef SECKEYPrivateKey *PrivateKey; +-typedef const SECKEYPrivateKey *const_PrivateKey; ++typedef SECKEYPrivateKey* PrivateKey; ++typedef const SECKEYPrivateKey* const_PrivateKey; + +-/* ++/* + * Initialize and clear random number generator state. + * You must call Prio_init() before using the library. + * To avoid memory leaks, call Prio_clear() afterwards. + */ +-SECStatus Prio_init (); ++SECStatus Prio_init(); + void Prio_clear(); + +-/* ++/* + * PrioConfig holds the system parameters. The two relevant things determined + * by the config object are: + * (1) the number of data fields we are collecting, and +@@ -87,35 +84,37 @@ + * Each set of aggregate statistics should use a different `batch_id`. + * + * `PrioConfig_new` does not keep a pointer to the `batch_id` string that the +- * caller passes in, so you may free the `batch_id` string as soon as ++ * caller passes in, so you may free the `batch_id` string as soon as + * `PrioConfig_new` returns. + */ +-PrioConfig PrioConfig_new (int n_fields, PublicKey server_a, PublicKey server_b, +- const unsigned char *batch_id, unsigned int batch_id_len); +-void PrioConfig_clear (PrioConfig cfg); +-int PrioConfig_numDataFields (const_PrioConfig cfg); ++PrioConfig PrioConfig_new(int n_fields, PublicKey server_a, PublicKey server_b, ++ const unsigned char* batch_id, ++ unsigned int batch_id_len); ++void PrioConfig_clear(PrioConfig cfg); ++int PrioConfig_numDataFields(const_PrioConfig cfg); + + /* +- * Create a PrioConfig object with no encryption keys. This routine is ++ * Create a PrioConfig object with no encryption keys. This routine is + * useful for testing, but PrioClient_encode() will always fail when used with + * this config. + */ +-PrioConfig PrioConfig_newTest (int n_fields); ++PrioConfig PrioConfig_newTest(int n_fields); + +- +-/* ++/* + * We use the PublicKey and PrivateKey objects for public-key encryption. Each + * Prio server has an associated public key, and the clients use these keys to + * encrypt messages to the servers. + */ +-SECStatus Keypair_new (PrivateKey *pvtkey, PublicKey *pubkey); ++SECStatus Keypair_new(PrivateKey* pvtkey, PublicKey* pubkey); + + /* +- * Import a new curve25519 public key from the raw bytes given. The key passed in ++ * Import a new curve25519 public key from the raw bytes given. The key passed ++ * in + * as `data` should be of length `CURVE25519_KEY_LEN`. This function allocates + * a new PublicKey object, which the caller must free using `PublicKey_clear`. + */ +-SECStatus PublicKey_import (PublicKey *pk, const unsigned char *data, unsigned int dataLen); ++SECStatus PublicKey_import(PublicKey* pk, const unsigned char* data, ++ unsigned int dataLen); + + /* + * Import a new curve25519 public key from a hex string that contains only the +@@ -123,138 +122,136 @@ + * length `CURVE25519_KEY_LEN_HEX`. This function allocates a new PublicKey + * object, which the caller must free using `PublicKey_clear`. + */ +-SECStatus PublicKey_import_hex (PublicKey *pk, const unsigned char *hex_data, +- unsigned int dataLen); ++SECStatus PublicKey_import_hex(PublicKey* pk, const unsigned char* hex_data, ++ unsigned int dataLen); + + /* + * Export a curve25519 public key as a raw byte-array. + */ +-SECStatus PublicKey_export (const_PublicKey pk, unsigned char data[CURVE25519_KEY_LEN]); ++SECStatus PublicKey_export(const_PublicKey pk, ++ unsigned char data[CURVE25519_KEY_LEN]); + + /* + * Export a curve25519 public key as a NULL-terminated hex string. + */ +-SECStatus PublicKey_export_hex (const_PublicKey pk, +- unsigned char data[CURVE25519_KEY_LEN_HEX+1]); +- ++SECStatus PublicKey_export_hex(const_PublicKey pk, ++ unsigned char data[CURVE25519_KEY_LEN_HEX + 1]); + +-void PublicKey_clear (PublicKey pubkey); +-void PrivateKey_clear (PrivateKey pvtkey); +- ++void PublicKey_clear(PublicKey pubkey); ++void PrivateKey_clear(PrivateKey pvtkey); + + /* + * PrioPacketClient_encode + * +- * Takes as input a pointer to an array (`data_in`) of boolean values +- * whose length is equal to the number of data fields specified in ++ * Takes as input a pointer to an array (`data_in`) of boolean values ++ * whose length is equal to the number of data fields specified in + * the config. It then encodes the data for servers A and B into a +- * string. ++ * string. + * + * NOTE: The caller must free() the strings `for_server_a` and + * `for_server_b` to avoid memory leaks. + */ +-SECStatus +-PrioClient_encode (const_PrioConfig cfg, const bool *data_in, +- unsigned char **for_server_a, unsigned int *aLen, +- unsigned char **for_server_b, unsigned int *bLen); ++SECStatus PrioClient_encode(const_PrioConfig cfg, const bool* data_in, ++ unsigned char** for_server_a, unsigned int* aLen, ++ unsigned char** for_server_b, unsigned int* bLen); + + /* + * Generate a new PRG seed using the NSS global randomness source. + * Use this routine to initialize the secret that the two Prio servers + * share. + */ +-SECStatus PrioPRGSeed_randomize (PrioPRGSeed *seed); ++SECStatus PrioPRGSeed_randomize(PrioPRGSeed* seed); + + /* + * The PrioServer object holds the state of the Prio servers. + * Pass in the _same_ secret PRGSeed when initializing the two servers. + * The PRGSeed must remain secret to the two servers. + */ +-PrioServer PrioServer_new (const_PrioConfig cfg, PrioServerId server_idx, +- PrivateKey server_priv, const PrioPRGSeed server_shared_secret); +-void PrioServer_clear (PrioServer s); ++PrioServer PrioServer_new(const_PrioConfig cfg, PrioServerId server_idx, ++ PrivateKey server_priv, ++ const PrioPRGSeed server_shared_secret); ++void PrioServer_clear(PrioServer s); + +- +-/* ++/* + * After receiving a client packet, each of the servers generate + * a PrioVerifier object that they use to check whether the client's + * encoded packet is well formed. + */ +-PrioVerifier PrioVerifier_new (PrioServer s); +-void PrioVerifier_clear (PrioVerifier v); ++PrioVerifier PrioVerifier_new(PrioServer s); ++void PrioVerifier_clear(PrioVerifier v); + +-/* ++/* + * Read in encrypted data from the client, decrypt it, and prepare to check the + * request for validity. + */ +-SECStatus PrioVerifier_set_data (PrioVerifier v, +- unsigned char *data, unsigned int dataLen); ++SECStatus PrioVerifier_set_data(PrioVerifier v, unsigned char* data, ++ unsigned int dataLen); + + /* + * Generate the first packet that servers need to exchange to verify the + * client's submission. This should be sent over a TLS connection between the + * servers. + */ +-PrioPacketVerify1 PrioPacketVerify1_new (void); +-void PrioPacketVerify1_clear (PrioPacketVerify1 p1); ++PrioPacketVerify1 PrioPacketVerify1_new(void); ++void PrioPacketVerify1_clear(PrioPacketVerify1 p1); + +-SECStatus PrioPacketVerify1_set_data (PrioPacketVerify1 p1, +- const_PrioVerifier v); ++SECStatus PrioPacketVerify1_set_data(PrioPacketVerify1 p1, ++ const_PrioVerifier v); + +-SECStatus PrioPacketVerify1_write (const_PrioPacketVerify1 p, +- msgpack_packer *pk); +-SECStatus PrioPacketVerify1_read (PrioPacketVerify1 p, +- msgpack_unpacker *upk, const_PrioConfig cfg); ++SECStatus PrioPacketVerify1_write(const_PrioPacketVerify1 p, ++ msgpack_packer* pk); ++SECStatus PrioPacketVerify1_read(PrioPacketVerify1 p, msgpack_unpacker* upk, ++ const_PrioConfig cfg); + +-/* ++/* + * Generate the second packet that the servers need to exchange to verify the + * client's submission. The routine takes as input the PrioPacketVerify1 + * packets from both server A and server B. + * + * This should be sent over a TLS connection between the servers. + */ +-PrioPacketVerify2 PrioPacketVerify2_new (void); +-void PrioPacketVerify2_clear (PrioPacketVerify2 p); ++PrioPacketVerify2 PrioPacketVerify2_new(void); ++void PrioPacketVerify2_clear(PrioPacketVerify2 p); + +-SECStatus PrioPacketVerify2_set_data (PrioPacketVerify2 p2, const_PrioVerifier v, +- const_PrioPacketVerify1 p1A, const_PrioPacketVerify1 p1B); ++SECStatus PrioPacketVerify2_set_data(PrioPacketVerify2 p2, const_PrioVerifier v, ++ const_PrioPacketVerify1 p1A, ++ const_PrioPacketVerify1 p1B); + +-SECStatus PrioPacketVerify2_write (const_PrioPacketVerify2 p, +- msgpack_packer *pk); +-SECStatus PrioPacketVerify2_read (PrioPacketVerify2 p, +- msgpack_unpacker *upk, const_PrioConfig cfg); ++SECStatus PrioPacketVerify2_write(const_PrioPacketVerify2 p, ++ msgpack_packer* pk); ++SECStatus PrioPacketVerify2_read(PrioPacketVerify2 p, msgpack_unpacker* upk, ++ const_PrioConfig cfg); + +-/* ++/* + * Use the PrioPacketVerify2s from both servers to check whether + * the client's submission is well formed. + */ +-SECStatus PrioVerifier_isValid (const_PrioVerifier v, +- const_PrioPacketVerify2 pA, const_PrioPacketVerify2 pB); ++SECStatus PrioVerifier_isValid(const_PrioVerifier v, const_PrioPacketVerify2 pA, ++ const_PrioPacketVerify2 pB); + + /* + * Each of the two servers calls this routine to aggregate the data + * submission from a client that is included in the PrioVerifier object. + * + * IMPORTANT: This routine does *not* check the validity of the client's +- * data packet. The servers must execute the verification checks ++ * data packet. The servers must execute the verification checks + * above before aggregating any client data. + */ +-SECStatus PrioServer_aggregate (PrioServer s, PrioVerifier v); ++SECStatus PrioServer_aggregate(PrioServer s, PrioVerifier v); + +-/* ++/* + * After the servers have aggregated data packets from "enough" clients + * (this determines the anonymity set size), each server runs this routine +- * to get a share of the aggregate statistics. ++ * to get a share of the aggregate statistics. + */ +-PrioTotalShare PrioTotalShare_new (void); +-void PrioTotalShare_clear (PrioTotalShare t); ++PrioTotalShare PrioTotalShare_new(void); ++void PrioTotalShare_clear(PrioTotalShare t); + +-SECStatus PrioTotalShare_set_data (PrioTotalShare t, const_PrioServer s); ++SECStatus PrioTotalShare_set_data(PrioTotalShare t, const_PrioServer s); + +-SECStatus PrioTotalShare_write (const_PrioTotalShare t, +- msgpack_packer *pk); +-SECStatus PrioTotalShare_read (PrioTotalShare t, +- msgpack_unpacker *upk, const_PrioConfig cfg); ++SECStatus PrioTotalShare_write(const_PrioTotalShare t, msgpack_packer* pk); ++SECStatus PrioTotalShare_read(PrioTotalShare t, msgpack_unpacker* upk, ++ const_PrioConfig cfg); + + /* + * Read the output data into an array of unsigned longs. You should +@@ -262,9 +259,9 @@ + * the pointer `output` points to a buffer large enough to store + * one long per data field. + */ +-SECStatus PrioTotalShare_final (const_PrioConfig cfg, unsigned long *output, +- const_PrioTotalShare tA, const_PrioTotalShare tB); +- ++SECStatus PrioTotalShare_final(const_PrioConfig cfg, unsigned long* output, ++ const_PrioTotalShare tA, ++ const_PrioTotalShare tB); + + #endif /* __PRIO_H__ */ + +diff --git a/third_party/prio/pclient/SConscript b/third_party/prio/pclient/SConscript +deleted file mode 100644 +--- a/third_party/prio/pclient/SConscript ++++ /dev/null +@@ -1,18 +0,0 @@ +-import sys +- +-Import('env') +- +-prio_env = env.Clone() +- +-src = [ +- "main.c", +-] +- +-libs = [ +- "mprio", +- "msgpackc", +-] +- +-prio_env.Append(LIBS = libs) +-prio_env.Program("pclient", src) +- +diff --git a/third_party/prio/pclient/main.c b/third_party/prio/pclient/main.c +deleted file mode 100644 +--- a/third_party/prio/pclient/main.c ++++ /dev/null +@@ -1,229 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +-#include +-#include +- +-#include "prio/util.h" +- +-int +-verify_full (void) +-{ +- SECStatus rv = SECSuccess; +- +- PublicKey pkA = NULL; +- PublicKey pkB = NULL; +- PrivateKey skA = NULL; +- PrivateKey skB = NULL; +- +- PrioConfig cfg = NULL; +- PrioServer sA = NULL; +- PrioServer sB = NULL; +- PrioVerifier vA = NULL; +- PrioVerifier vB = NULL; +- PrioPacketVerify1 p1A = NULL; +- PrioPacketVerify1 p1B = NULL; +- PrioPacketVerify2 p2A = NULL; +- PrioPacketVerify2 p2B = NULL; +- PrioTotalShare tA = NULL; +- PrioTotalShare tB = NULL; +- +- unsigned char *for_server_a = NULL; +- unsigned char *for_server_b = NULL; +- +- const unsigned char *batch_id = (unsigned char *)"prio_batch_2018-04-17"; +- const unsigned int batch_id_len = strlen ((char *)batch_id); +- +- // Initialize NSS random number generator. +- P_CHECKC (Prio_init ()); +- +- // Number of different boolean data fields we collect. +- const int ndata = 100; +- +- // Number of clients to simulate. +- const int nclients = 10; +- +- +- // New scope to avoid goto weirdness +- { +- bool data_items[ndata]; +- +- // Generate keypairs for servers +- P_CHECKC (Keypair_new (&skA, &pkA)); +- P_CHECKC (Keypair_new (&skB, &pkB)); +- +- // Use the default configuration parameters. +- P_CHECKA (cfg = PrioConfig_new (ndata, pkA, pkB, batch_id, batch_id_len)); +- +- PrioPRGSeed server_secret; +- P_CHECKC (PrioPRGSeed_randomize (&server_secret)); +- +- // Initialize two server objects. The role of the servers need not +- // be symmetric. In a deployment, we envision that: +- // * Server A is the main telemetry server that is always online. +- // Clients send their encrypted data packets to Server A and +- // Server A stores them. +- // * Server B only comes online when the two servers want to compute +- // the final aggregate statistics. +- P_CHECKA (sA = PrioServer_new (cfg, PRIO_SERVER_A, skA, server_secret)); +- P_CHECKA (sB = PrioServer_new (cfg, PRIO_SERVER_B, skB, server_secret)); +- +- // Initialize empty verifier objects +- P_CHECKA (vA = PrioVerifier_new (sA)); +- P_CHECKA (vB = PrioVerifier_new (sB)); +- +- // Initialize shares of final aggregate statistics +- P_CHECKA (tA = PrioTotalShare_new ()); +- P_CHECKA (tB = PrioTotalShare_new ()); +- +- // Initialize shares of verification packets +- P_CHECKA (p1A = PrioPacketVerify1_new ()); +- P_CHECKA (p1B = PrioPacketVerify1_new ()); +- P_CHECKA (p2A = PrioPacketVerify2_new ()); +- P_CHECKA (p2B = PrioPacketVerify2_new ()); +- +- // Generate client data packets. +- for (int c=0; c < nclients; c++) { +- +- // The client's data submission is an arbitrary boolean vector. +- for (int i=0; i < ndata; i++) { +- // Arbitrary data +- data_items[i] = (i % 3 == 1) || (c % 5 == 3); +- } +- +- // I. CLIENT DATA SUBMISSION. +- // +- // Construct the client data packets. +- unsigned int aLen, bLen; +- P_CHECKC (PrioClient_encode (cfg, data_items, +- &for_server_a, &aLen, &for_server_b, &bLen)); +- +- // The Prio servers A and B can come online later (e.g., at the end of +- // each day) to download the encrypted telemetry packets from the +- // telemetry server and run the protocol that computes the aggregate +- // statistics. In this way, the client only needs to send a +- // single message (the pair of encrypted ClientPacketData packets) +- // to a single server (the telemetry-data-collection server). +- +- // THE CLIENT'S JOB IS DONE. The rest of the processing just takes place +- // between the two servers A and B. +- +- +- // II. VALIDATION PROTOCOL. (at servers) +- // +- // The servers now run a short 2-step protocol to check each +- // client's packet: +- // 1) Servers A and B broadcast one message (PrioPacketVerify1) +- // to each other. +- // 2) Servers A and B broadcast another message (PrioPacketVerify2) +- // to each other. +- // 3) Servers A and B can both determine whether the client's data +- // submission is well-formed (in which case they add it to their +- // running total of aggregate statistics) or ill-formed +- // (in which case they ignore it). +- // These messages must be sent over an authenticated channel, so +- // that each server is assured that every received message came +- // from its peer. +- +- // Set up a Prio verifier object. +- P_CHECKC (PrioVerifier_set_data (vA, for_server_a, aLen)); +- P_CHECKC (PrioVerifier_set_data (vB, for_server_b, bLen)); +- +- // Both servers produce a packet1. Server A sends p1A to Server B +- // and vice versa. +- P_CHECKC (PrioPacketVerify1_set_data (p1A, vA)); +- P_CHECKC (PrioPacketVerify1_set_data (p1B, vB)); +- +- // Both servers produce a packet2. Server A sends p2A to Server B +- // and vice versa. +- P_CHECKC (PrioPacketVerify2_set_data(p2A, vA, p1A, p1B)); +- P_CHECKC (PrioPacketVerify2_set_data(p2B, vB, p1A, p1B)); +- +- // Using p2A and p2B, the servers can determine whether the request +- // is valid. (In fact, only Server A needs to perform this +- // check, since Server A can just tell Server B whether the check +- // succeeded or failed.) +- P_CHECKC (PrioVerifier_isValid (vA, p2A, p2B)); +- P_CHECKC (PrioVerifier_isValid (vB, p2A, p2B)); +- +- // If we get here, the client packet is valid, so add it to the aggregate +- // statistic counter for both servers. +- P_CHECKC (PrioServer_aggregate (sA, vA)); +- P_CHECKC (PrioServer_aggregate (sB, vB)); +- +- free (for_server_a); +- free (for_server_b); +- for_server_a = NULL; +- for_server_b = NULL; +- } +- +- // The servers repeat the steps above for each client submission. +- +- // III. PRODUCTION OF AGGREGATE STATISTICS. +- // +- // After collecting aggregates from MANY clients, the servers can compute +- // their shares of the aggregate statistics. +- // +- // Server B can send tB to Server A. +- P_CHECKC (PrioTotalShare_set_data (tA, sA)); +- P_CHECKC (PrioTotalShare_set_data (tB, sB)); +- +- // Once Server A has tA and tB, it can learn the aggregate statistics +- // in the clear. +- unsigned long output[ndata]; +- P_CHECKC (PrioTotalShare_final (cfg, output, tA, tB)); +- +- // Now the output[i] contains a counter that indicates how many clients +- // submitted TRUE for data value i. We print out this data. +- for (int i=0; i < ndata; i++) +- printf("output[%d] = %lu\n", i, output[i]); +- } +- +-cleanup: +- if (rv != SECSuccess) { +- fprintf (stderr, "Warning: unexpected failure.\n"); +- } +- +- if (for_server_a) free (for_server_a); +- if (for_server_b) free (for_server_b); +- +- PrioTotalShare_clear (tA); +- PrioTotalShare_clear (tB); +- +- PrioPacketVerify2_clear (p2A); +- PrioPacketVerify2_clear (p2B); +- +- PrioPacketVerify1_clear (p1A); +- PrioPacketVerify1_clear (p1B); +- +- PrioVerifier_clear (vA); +- PrioVerifier_clear (vB); +- +- PrioServer_clear (sA); +- PrioServer_clear (sB); +- PrioConfig_clear (cfg); +- +- PublicKey_clear (pkA); +- PublicKey_clear (pkB); +- +- PrivateKey_clear (skA); +- PrivateKey_clear (skB); +- +- Prio_clear (); +- +- return !(rv == SECSuccess); +-} +- +-int +-main (void) +-{ +- puts ("This utility demonstrates how to invoke the Prio API."); +- return verify_full (); +-} +- +diff --git a/third_party/prio/prio/SConscript b/third_party/prio/prio/SConscript +--- a/third_party/prio/prio/SConscript ++++ b/third_party/prio/prio/SConscript +@@ -21,9 +21,6 @@ + "msgpackc" + ] + +-# Enable mp_print() +-penv.Append(CFLAGS = ['-DMP_IOFUNC']) +- + penv.Append(LIBS = libs) + penv.StaticLibrary("mprio", src) + +diff --git a/third_party/prio/prio/client.h b/third_party/prio/prio/client.h +--- a/third_party/prio/prio/client.h ++++ b/third_party/prio/prio/client.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __CLIENT_H__ +@@ -13,23 +13,24 @@ + #include "prg.h" + #include "share.h" + +- + /* + * The PrioPacketClient object holds the encoded client data. + * The client sends one packet to server A and one packet to + * server B. The `for_server` parameter determines which server + * the packet is for. + */ +-typedef struct prio_packet_client *PrioPacketClient; +-typedef const struct prio_packet_client *const_PrioPacketClient; ++typedef struct prio_packet_client* PrioPacketClient; ++typedef const struct prio_packet_client* const_PrioPacketClient; + +-struct server_a_data { ++struct server_a_data ++{ + // These values are only set for server A. + MPArray data_shares; + MPArray h_points; + }; + +-struct server_b_data { ++struct server_b_data ++{ + // This value is only used for server B. + // + // We use a pseudo-random generator to compress the secret-shared data +@@ -39,9 +40,10 @@ + }; + + /* +- * The data that a Prio client sends to each server. ++ * The data that a Prio client sends to each server. + */ +-struct prio_packet_client { ++struct prio_packet_client ++{ + // TODO: Can also use a PRG to avoid need for sending Beaver triple shares. + // Since this optimization only saves ~30 bytes of communication, we haven't + // bothered implementing it yet. +@@ -50,25 +52,26 @@ + mp_int f0_share, g0_share, h0_share; + PrioServerId for_server; + +- union { ++ union ++ { + struct server_a_data A; + struct server_b_data B; + } shares; + }; + +- +-PrioPacketClient PrioPacketClient_new (const_PrioConfig cfg, PrioServerId for_server); +-void PrioPacketClient_clear (PrioPacketClient p); +-SECStatus PrioPacketClient_set_data (const_PrioConfig cfg, const bool *data_in, +- PrioPacketClient for_server_a, PrioPacketClient for_server_b); ++PrioPacketClient PrioPacketClient_new(const_PrioConfig cfg, ++ PrioServerId for_server); ++void PrioPacketClient_clear(PrioPacketClient p); ++SECStatus PrioPacketClient_set_data(const_PrioConfig cfg, const bool* data_in, ++ PrioPacketClient for_server_a, ++ PrioPacketClient for_server_b); + +-SECStatus PrioPacketClient_decrypt (PrioPacketClient p, +- const_PrioConfig cfg, PrivateKey server_priv, +- const unsigned char *data_in, unsigned int data_len); ++SECStatus PrioPacketClient_decrypt(PrioPacketClient p, const_PrioConfig cfg, ++ PrivateKey server_priv, ++ const unsigned char* data_in, ++ unsigned int data_len); + +-bool PrioPacketClient_areEqual (const_PrioPacketClient p1, +- const_PrioPacketClient p2); +- ++bool PrioPacketClient_areEqual(const_PrioPacketClient p1, ++ const_PrioPacketClient p2); + + #endif /* __CLIENT_H__ */ +- +diff --git a/third_party/prio/prio/client.c b/third_party/prio/prio/client.c +--- a/third_party/prio/prio/client.c ++++ b/third_party/prio/prio/client.c +@@ -1,6 +1,6 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +@@ -21,7 +21,7 @@ + #include "util.h" + + // Let the points of data_in be [x1, x2, x3, ... ]. +-// We construct the polynomial f such that ++// We construct the polynomial f such that + // (a) f(0) = random, + // (b) f(i) = x_i for all i >= 1, + // (c) degree(f)+1 is a power of two. +@@ -30,10 +30,10 @@ + // and we return f(0) as `const_term`. + static SECStatus + data_polynomial_evals(const_PrioConfig cfg, const_MPArray data_in, +- MPArray evals_out, mp_int *const_term) ++ MPArray evals_out, mp_int* const_term) + { + SECStatus rv = SECSuccess; +- const mp_int *mod = &cfg->modulus; ++ const mp_int* mod = &cfg->modulus; + MPArray points_f = NULL; + MPArray poly_f = NULL; + +@@ -43,88 +43,87 @@ + // Little n is the number of points on the polynomials. + // The constant term is randomized, so it's (mul_gates + 1). + const int n = mul_gates + 1; +- ++ + // Big N is n rounded up to a power of two. +- const int N = next_power_of_two (n); ++ const int N = next_power_of_two(n); + +- P_CHECKA (points_f = MPArray_new (N)); +- P_CHECKA (poly_f = MPArray_new (N)); ++ P_CHECKA(points_f = MPArray_new(N)); ++ P_CHECKA(poly_f = MPArray_new(N)); + + // Set constant term f(0) to random +- P_CHECKC (rand_int (&points_f->data[0], mod)); +- MP_CHECKC (mp_copy (&points_f->data[0], const_term)); ++ P_CHECKC(rand_int(&points_f->data[0], mod)); ++ MP_CHECKC(mp_copy(&points_f->data[0], const_term)); + + // Set other values of f(x) +- for (int i=1; idata[i-1], &points_f->data[i])); ++ for (int i = 1; i < n; i++) { ++ MP_CHECKC(mp_copy(&data_in->data[i - 1], &points_f->data[i])); + } + + // Interpolate through the Nth roots of unity +- P_CHECKC (poly_fft(poly_f, points_f, cfg, true)); ++ P_CHECKC(poly_fft(poly_f, points_f, cfg, true)); + +- // Evaluate at all 2N-th roots of unity. ++ // Evaluate at all 2N-th roots of unity. + // To do so, first resize the eval arrays and fill upper + // values with zeros. +- P_CHECKC (MPArray_resize (poly_f, 2*N)); +- P_CHECKC (MPArray_resize (evals_out, 2*N)); +- ++ P_CHECKC(MPArray_resize(poly_f, 2 * N)); ++ P_CHECKC(MPArray_resize(evals_out, 2 * N)); ++ + // Evaluate at the 2N-th roots of unity +- P_CHECKC (poly_fft(evals_out, poly_f, cfg, false)); ++ P_CHECKC(poly_fft(evals_out, poly_f, cfg, false)); + + cleanup: +- MPArray_clear (points_f); +- MPArray_clear (poly_f); ++ MPArray_clear(points_f); ++ MPArray_clear(poly_f); + + return rv; + } + +- + static SECStatus +-share_polynomials (const_PrioConfig cfg, const_MPArray data_in, +- PrioPacketClient pA, PrioPacketClient pB, PRG prgB) ++share_polynomials(const_PrioConfig cfg, const_MPArray data_in, ++ PrioPacketClient pA, PrioPacketClient pB, PRG prgB) + { + SECStatus rv = SECSuccess; +- const mp_int *mod = &cfg->modulus; ++ const mp_int* mod = &cfg->modulus; + const_MPArray points_f = data_in; + + mp_int f0, g0; +- MP_DIGITS (&f0) = NULL; +- MP_DIGITS (&g0) = NULL; ++ MP_DIGITS(&f0) = NULL; ++ MP_DIGITS(&g0) = NULL; + + MPArray points_g = NULL; + MPArray evals_f_2N = NULL; + MPArray evals_g_2N = NULL; + +- P_CHECKA (points_g = MPArray_dup (points_f)); +- P_CHECKA (evals_f_2N = MPArray_new (0)); +- P_CHECKA (evals_g_2N = MPArray_new (0)); +- MP_CHECKC (mp_init (&f0)); +- MP_CHECKC (mp_init (&g0)); ++ P_CHECKA(points_g = MPArray_dup(points_f)); ++ P_CHECKA(evals_f_2N = MPArray_new(0)); ++ P_CHECKA(evals_g_2N = MPArray_new(0)); ++ MP_CHECKC(mp_init(&f0)); ++ MP_CHECKC(mp_init(&g0)); + +- for (int i=0; ilen; i++) { ++ for (int i = 0; i < points_f->len; i++) { + // For each input value x_i, we compute x_i * (x_i-1). + // f(i) = x_i + // g(i) = x_i - 1 +- MP_CHECKC (mp_sub_d (&points_g->data[i], 1, &points_g->data[i])); +- MP_CHECKC (mp_mod (&points_g->data[i], mod, &points_g->data[i])); ++ MP_CHECKC(mp_sub_d(&points_g->data[i], 1, &points_g->data[i])); ++ MP_CHECKC(mp_mod(&points_g->data[i], mod, &points_g->data[i])); + } + +- P_CHECKC (data_polynomial_evals(cfg, points_f, evals_f_2N, &f0)); +- P_CHECKC (data_polynomial_evals(cfg, points_g, evals_g_2N, &g0)); ++ P_CHECKC(data_polynomial_evals(cfg, points_f, evals_f_2N, &f0)); ++ P_CHECKC(data_polynomial_evals(cfg, points_g, evals_g_2N, &g0)); + + // The values f(0) and g(0) are set to random values. + // We must send to each server a share of the points + // f(0), g(0), and h(0) = f(0)*g(0) +- P_CHECKC (share_int (cfg, &f0, &pA->f0_share, &pB->f0_share)); +- P_CHECKC (share_int (cfg, &g0, &pA->g0_share, &pB->g0_share)); ++ P_CHECKC(share_int(cfg, &f0, &pA->f0_share, &pB->f0_share)); ++ P_CHECKC(share_int(cfg, &g0, &pA->g0_share, &pB->g0_share)); + + // Compute h(0) = f(0)*g(0). +- MP_CHECKC (mp_mulmod (&f0, &g0, mod, &f0)); ++ MP_CHECKC(mp_mulmod(&f0, &g0, mod, &f0)); + // Give one share of h(0) to each server. +- P_CHECKC (share_int (cfg, &f0, &pA->h0_share, &pB->h0_share)); ++ P_CHECKC(share_int(cfg, &f0, &pA->h0_share, &pB->h0_share)); + +- //const int lenN = (evals_f_2N->len/2); +- //P_CHECKC (MPArray_resize (pA->shares.A.h_points, lenN)); ++ // const int lenN = (evals_f_2N->len/2); ++ // P_CHECKC (MPArray_resize (pA->shares.A.h_points, lenN)); + + // We need to send to the servers the evaluations of + // f(r) * g(r) +@@ -135,34 +134,35 @@ + // send a share of this value to each server. + int j = 0; + for (int i = 1; i < evals_f_2N->len; i += 2) { +- MP_CHECKC (mp_mulmod (&evals_f_2N->data[i], &evals_g_2N->data[i], mod, &f0)); +- P_CHECKC (PRG_share_int (prgB, &pA->shares.A.h_points->data[j], &f0, cfg)); ++ MP_CHECKC(mp_mulmod(&evals_f_2N->data[i], &evals_g_2N->data[i], mod, &f0)); ++ P_CHECKC(PRG_share_int(prgB, &pA->shares.A.h_points->data[j], &f0, cfg)); + j++; + } + + cleanup: +- MPArray_clear (evals_f_2N); +- MPArray_clear (evals_g_2N); +- MPArray_clear (points_g); +- mp_clear (&f0); +- mp_clear (&g0); ++ MPArray_clear(evals_f_2N); ++ MPArray_clear(evals_g_2N); ++ MPArray_clear(points_g); ++ mp_clear(&f0); ++ mp_clear(&g0); + return rv; + } + + PrioPacketClient +-PrioPacketClient_new (const_PrioConfig cfg, PrioServerId for_server) ++PrioPacketClient_new(const_PrioConfig cfg, PrioServerId for_server) + { +- SECStatus rv = SECSuccess; ++ SECStatus rv = SECSuccess; + const int data_len = cfg->num_data_fields; + PrioPacketClient p = NULL; +- p = malloc (sizeof (*p)); +- if (!p) return NULL; ++ p = malloc(sizeof(*p)); ++ if (!p) ++ return NULL; + + p->for_server = for_server; + p->triple = NULL; +- MP_DIGITS (&p->f0_share) = NULL; +- MP_DIGITS (&p->g0_share) = NULL; +- MP_DIGITS (&p->h0_share) = NULL; ++ MP_DIGITS(&p->f0_share) = NULL; ++ MP_DIGITS(&p->g0_share) = NULL; ++ MP_DIGITS(&p->h0_share) = NULL; + + switch (p->for_server) { + case PRIO_SERVER_A: +@@ -170,7 +170,7 @@ + p->shares.A.h_points = NULL; + break; + case PRIO_SERVER_B: +- memset (p->shares.B.seed, 0, PRG_SEED_LENGTH); ++ memset(p->shares.B.seed, 0, PRG_SEED_LENGTH); + break; + default: + // Should never get here +@@ -178,20 +178,20 @@ + goto cleanup; + } + +- MP_CHECKC (mp_init (&p->f0_share)); +- MP_CHECKC (mp_init (&p->g0_share)); +- MP_CHECKC (mp_init (&p->h0_share)); +- P_CHECKA (p->triple = BeaverTriple_new ()); ++ MP_CHECKC(mp_init(&p->f0_share)); ++ MP_CHECKC(mp_init(&p->g0_share)); ++ MP_CHECKC(mp_init(&p->h0_share)); ++ P_CHECKA(p->triple = BeaverTriple_new()); + + if (p->for_server == PRIO_SERVER_A) { +- const int num_h_points = PrioConfig_hPoints (cfg); +- P_CHECKA (p->shares.A.data_shares = MPArray_new (data_len)); +- P_CHECKA (p->shares.A.h_points = MPArray_new (num_h_points)); ++ const int num_h_points = PrioConfig_hPoints(cfg); ++ P_CHECKA(p->shares.A.data_shares = MPArray_new(data_len)); ++ P_CHECKA(p->shares.A.h_points = MPArray_new(num_h_points)); + } + + cleanup: + if (rv != SECSuccess) { +- PrioPacketClient_clear (p); ++ PrioPacketClient_clear(p); + return NULL; + } + +@@ -199,69 +199,74 @@ + } + + SECStatus +-PrioPacketClient_set_data (const_PrioConfig cfg, const bool *data_in, +- PrioPacketClient pA, PrioPacketClient pB) ++PrioPacketClient_set_data(const_PrioConfig cfg, const bool* data_in, ++ PrioPacketClient pA, PrioPacketClient pB) + { + MPArray client_data = NULL; + PRG prgB = NULL; + SECStatus rv = SECSuccess; + const int data_len = cfg->num_data_fields; + +- if (!data_in) return SECFailure; +- +- P_CHECKC (PrioPRGSeed_randomize (&pB->shares.B.seed)); +- P_CHECKA (prgB = PRG_new (pB->shares.B.seed)); ++ if (!data_in) ++ return SECFailure; + +- P_CHECKC (BeaverTriple_set_rand (cfg, pA->triple, pB->triple)); +- P_CHECKA (client_data = MPArray_new_bool (data_len, data_in)); +- P_CHECKC (PRG_share_array (prgB, pA->shares.A.data_shares, +- client_data, cfg)); +- P_CHECKC (share_polynomials (cfg, client_data, pA, pB, prgB)); ++ P_CHECKC(PrioPRGSeed_randomize(&pB->shares.B.seed)); ++ P_CHECKA(prgB = PRG_new(pB->shares.B.seed)); ++ ++ P_CHECKC(BeaverTriple_set_rand(cfg, pA->triple, pB->triple)); ++ P_CHECKA(client_data = MPArray_new_bool(data_len, data_in)); ++ P_CHECKC(PRG_share_array(prgB, pA->shares.A.data_shares, client_data, cfg)); ++ P_CHECKC(share_polynomials(cfg, client_data, pA, pB, prgB)); + + cleanup: +- MPArray_clear (client_data); +- PRG_clear (prgB); ++ MPArray_clear(client_data); ++ PRG_clear(prgB); + + return rv; + } + + void +-PrioPacketClient_clear (PrioPacketClient p) ++PrioPacketClient_clear(PrioPacketClient p) + { +- if (p == NULL) return; ++ if (p == NULL) ++ return; + + if (p->for_server == PRIO_SERVER_A) { +- MPArray_clear (p->shares.A.h_points); +- MPArray_clear (p->shares.A.data_shares); ++ MPArray_clear(p->shares.A.h_points); ++ MPArray_clear(p->shares.A.data_shares); + } + +- BeaverTriple_clear (p->triple); +- mp_clear (&p->f0_share); +- mp_clear (&p->g0_share); +- mp_clear (&p->h0_share); +- free (p); ++ BeaverTriple_clear(p->triple); ++ mp_clear(&p->f0_share); ++ mp_clear(&p->g0_share); ++ mp_clear(&p->h0_share); ++ free(p); + } + +-bool +-PrioPacketClient_areEqual (const_PrioPacketClient p1, +- const_PrioPacketClient p2) ++bool ++PrioPacketClient_areEqual(const_PrioPacketClient p1, const_PrioPacketClient p2) + { +- if (!BeaverTriple_areEqual (p1->triple, p2->triple)) return false; +- if (mp_cmp (&p1->f0_share, &p2->f0_share)) return false; +- if (mp_cmp (&p1->g0_share, &p2->g0_share)) return false; +- if (mp_cmp (&p1->h0_share, &p2->h0_share)) return false; +- if (p1->for_server != p2->for_server) return false; ++ if (!BeaverTriple_areEqual(p1->triple, p2->triple)) ++ return false; ++ if (mp_cmp(&p1->f0_share, &p2->f0_share)) ++ return false; ++ if (mp_cmp(&p1->g0_share, &p2->g0_share)) ++ return false; ++ if (mp_cmp(&p1->h0_share, &p2->h0_share)) ++ return false; ++ if (p1->for_server != p2->for_server) ++ return false; + + switch (p1->for_server) { + case PRIO_SERVER_A: +- if (!MPArray_areEqual (p1->shares.A.data_shares, +- p2->shares.A.data_shares)) return false; +- if (!MPArray_areEqual (p1->shares.A.h_points, +- p2->shares.A.h_points)) return false; +- break; ++ if (!MPArray_areEqual(p1->shares.A.data_shares, p2->shares.A.data_shares)) ++ return false; ++ if (!MPArray_areEqual(p1->shares.A.h_points, p2->shares.A.h_points)) ++ return false; ++ break; + case PRIO_SERVER_B: +- if (memcmp (p1->shares.B.seed, p2->shares.B.seed, +- PRG_SEED_LENGTH)) return false; ++ if (memcmp(p1->shares.B.seed, p2->shares.B.seed, PRG_SEED_LENGTH)) ++ return false; + break; + default: + // Should never get here. +@@ -271,83 +276,85 @@ + return true; + } + +-SECStatus +-PrioClient_encode (const_PrioConfig cfg, const bool *data_in, +- unsigned char **for_server_a, unsigned int *aLen, +- unsigned char **for_server_b, unsigned int *bLen) ++SECStatus ++PrioClient_encode(const_PrioConfig cfg, const bool* data_in, ++ unsigned char** for_server_a, unsigned int* aLen, ++ unsigned char** for_server_b, unsigned int* bLen) + { + SECStatus rv = SECSuccess; + PrioPacketClient pA = NULL; + PrioPacketClient pB = NULL; + *for_server_a = NULL; + *for_server_b = NULL; +- +- P_CHECKA (pA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); +- P_CHECKA (pB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); ++ ++ P_CHECKA(pA = PrioPacketClient_new(cfg, PRIO_SERVER_A)); ++ P_CHECKA(pB = PrioPacketClient_new(cfg, PRIO_SERVER_B)); + + msgpack_sbuffer sbufA, sbufB; + msgpack_packer packerA, packerB; + +- msgpack_sbuffer_init (&sbufA); +- msgpack_sbuffer_init (&sbufB); +- msgpack_packer_init (&packerA, &sbufA, msgpack_sbuffer_write); +- msgpack_packer_init (&packerB, &sbufB, msgpack_sbuffer_write); ++ msgpack_sbuffer_init(&sbufA); ++ msgpack_sbuffer_init(&sbufB); ++ msgpack_packer_init(&packerA, &sbufA, msgpack_sbuffer_write); ++ msgpack_packer_init(&packerB, &sbufB, msgpack_sbuffer_write); + +- P_CHECKC (PrioPacketClient_set_data (cfg, data_in, pA, pB)); +- P_CHECKC (serial_write_packet_client (&packerA, pA, cfg)); +- P_CHECKC (serial_write_packet_client (&packerB, pB, cfg)); ++ P_CHECKC(PrioPacketClient_set_data(cfg, data_in, pA, pB)); ++ P_CHECKC(serial_write_packet_client(&packerA, pA, cfg)); ++ P_CHECKC(serial_write_packet_client(&packerB, pB, cfg)); + +- P_CHECKC (PublicKey_encryptSize (sbufA.size, aLen)); +- P_CHECKC (PublicKey_encryptSize (sbufB.size, bLen)); ++ P_CHECKC(PublicKey_encryptSize(sbufA.size, aLen)); ++ P_CHECKC(PublicKey_encryptSize(sbufB.size, bLen)); + +- P_CHECKA (*for_server_a = malloc (*aLen)); +- P_CHECKA (*for_server_b = malloc (*bLen)); ++ P_CHECKA(*for_server_a = malloc(*aLen)); ++ P_CHECKA(*for_server_b = malloc(*bLen)); + + unsigned int writtenA; + unsigned int writtenB; +- P_CHECKC (PublicKey_encrypt (cfg->server_a_pub, *for_server_a, &writtenA, *aLen, +- (unsigned char *)sbufA.data, sbufA.size)); +- P_CHECKC (PublicKey_encrypt (cfg->server_b_pub, *for_server_b, &writtenB, *bLen, +- (unsigned char *)sbufB.data, sbufB.size)); ++ P_CHECKC(PublicKey_encrypt(cfg->server_a_pub, *for_server_a, &writtenA, *aLen, ++ (unsigned char*)sbufA.data, sbufA.size)); ++ P_CHECKC(PublicKey_encrypt(cfg->server_b_pub, *for_server_b, &writtenB, *bLen, ++ (unsigned char*)sbufB.data, sbufB.size)); + +- P_CHECKCB (writtenA == *aLen); +- P_CHECKCB (writtenB == *bLen); ++ P_CHECKCB(writtenA == *aLen); ++ P_CHECKCB(writtenB == *bLen); + + cleanup: + if (rv != SECSuccess) { +- if (*for_server_a) free (*for_server_a); +- if (*for_server_b) free (*for_server_b); ++ if (*for_server_a) ++ free(*for_server_a); ++ if (*for_server_b) ++ free(*for_server_b); + *for_server_a = NULL; + *for_server_b = NULL; + } + +- PrioPacketClient_clear (pA); +- PrioPacketClient_clear (pB); +- msgpack_sbuffer_destroy (&sbufA); +- msgpack_sbuffer_destroy (&sbufB); +- ++ PrioPacketClient_clear(pA); ++ PrioPacketClient_clear(pB); ++ msgpack_sbuffer_destroy(&sbufA); ++ msgpack_sbuffer_destroy(&sbufB); ++ + return rv; + } + +-SECStatus +-PrioPacketClient_decrypt (PrioPacketClient p, const_PrioConfig cfg, +- PrivateKey server_priv, const unsigned char *data_in, unsigned int data_len) ++SECStatus ++PrioPacketClient_decrypt(PrioPacketClient p, const_PrioConfig cfg, ++ PrivateKey server_priv, const unsigned char* data_in, ++ unsigned int data_len) + { + SECStatus rv = SECSuccess; + msgpack_unpacker upk; +- P_CHECKCB (msgpack_unpacker_init (&upk, data_len)); ++ P_CHECKCB(msgpack_unpacker_init(&upk, data_len)); + + // Decrypt the ciphertext into dec_buf + unsigned int bytes_decrypted; +- P_CHECKC (PrivateKey_decrypt (server_priv, +- (unsigned char *)msgpack_unpacker_buffer (&upk), &bytes_decrypted, +- data_len, data_in, data_len)); +- msgpack_unpacker_buffer_consumed (&upk, bytes_decrypted); ++ P_CHECKC(PrivateKey_decrypt(server_priv, ++ (unsigned char*)msgpack_unpacker_buffer(&upk), ++ &bytes_decrypted, data_len, data_in, data_len)); ++ msgpack_unpacker_buffer_consumed(&upk, bytes_decrypted); + +- P_CHECKC (serial_read_packet_client (&upk, p, cfg)); ++ P_CHECKC(serial_read_packet_client(&upk, p, cfg)); + + cleanup: +- msgpack_unpacker_destroy (&upk); ++ msgpack_unpacker_destroy(&upk); + return rv; + } +- +diff --git a/third_party/prio/prio/config.h b/third_party/prio/prio/config.h +--- a/third_party/prio/prio/config.h ++++ b/third_party/prio/prio/config.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __CONFIG_H__ +@@ -13,12 +13,12 @@ + + #include "mparray.h" + +-struct prio_config { ++struct prio_config ++{ + int num_data_fields; +- unsigned char *batch_id; ++ unsigned char* batch_id; + unsigned int batch_id_len; + +- + PublicKey server_a_pub; + PublicKey server_b_pub; + +@@ -30,7 +30,6 @@ + MPArray rootsInv; + }; + +-int PrioConfig_hPoints (const_PrioConfig cfg); ++int PrioConfig_hPoints(const_PrioConfig cfg); + + #endif /* __CONFIG_H__ */ +- +diff --git a/third_party/prio/prio/config.c b/third_party/prio/prio/config.c +--- a/third_party/prio/prio/config.c ++++ b/third_party/prio/prio/config.c +@@ -1,47 +1,47 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #include + #include + + #include "config.h" ++#include "mparray.h" + #include "params.h" +-#include "mparray.h" + #include "rand.h" + #include "util.h" + + // The PrioConfig object stores "2^k-th roots of unity" modulo +-// the prime modulus we use for all arithmetic. We use +-// these roots to perform fast FFT-style polynomial ++// the prime modulus we use for all arithmetic. We use ++// these roots to perform fast FFT-style polynomial + // interpolation and evaluation. + // +-// In particular, we use a prime modulus p such that ++// In particular, we use a prime modulus p such that + // p = (2^k)q + 1. + // The roots are integers such that r^{2^k} = 1 mod p. + static SECStatus +-initialize_roots (MPArray arr, const char *values[]) ++initialize_roots(MPArray arr, const char* values[]) + { + // TODO: Read in only the number of roots of unity we need. + // Right now we read in all 4096 roots whether or not we use + // them all. +- for (int i=0; i < arr->len; i++) { +- MP_CHECK (mp_read_radix (&arr->data[i], values[i], 16)); ++ for (int i = 0; i < arr->len; i++) { ++ MP_CHECK(mp_read_radix(&arr->data[i], values[i], 16)); + } +- ++ + return SECSuccess; + } + +-PrioConfig +-PrioConfig_new (int n_fields, PublicKey server_a, PublicKey server_b, +- const unsigned char *batch_id, unsigned int batch_id_len) ++PrioConfig ++PrioConfig_new(int n_fields, PublicKey server_a, PublicKey server_b, ++ const unsigned char* batch_id, unsigned int batch_id_len) + { + SECStatus rv = SECSuccess; +- PrioConfig cfg = malloc (sizeof (*cfg)); ++ PrioConfig cfg = malloc(sizeof(*cfg)); + if (!cfg) + return NULL; + +@@ -61,72 +61,73 @@ + goto cleanup; + } + +- P_CHECKA (cfg->batch_id = malloc (batch_id_len)); +- strncpy ((char *)cfg->batch_id, (char *)batch_id, batch_id_len); ++ P_CHECKA(cfg->batch_id = malloc(batch_id_len)); ++ strncpy((char*)cfg->batch_id, (char*)batch_id, batch_id_len); + +- MP_CHECKC (mp_init (&cfg->modulus)); +- MP_CHECKC (mp_read_radix (&cfg->modulus, Modulus, 16)); ++ MP_CHECKC(mp_init(&cfg->modulus)); ++ MP_CHECKC(mp_read_radix(&cfg->modulus, Modulus, 16)); + + // Compute 2^{-1} modulo M +- MP_CHECKC (mp_init (&cfg->inv2)); +- mp_set (&cfg->inv2, 2); +- MP_CHECKC (mp_invmod (&cfg->inv2, &cfg->modulus, &cfg->inv2)); ++ MP_CHECKC(mp_init(&cfg->inv2)); ++ mp_set(&cfg->inv2, 2); ++ MP_CHECKC(mp_invmod(&cfg->inv2, &cfg->modulus, &cfg->inv2)); + +- P_CHECKA (cfg->roots = MPArray_new (cfg->n_roots)); +- P_CHECKA (cfg->rootsInv = MPArray_new (cfg->n_roots)); +- MP_CHECKC (initialize_roots (cfg->roots, Roots)); +- MP_CHECKC (initialize_roots (cfg->rootsInv, RootsInv)); ++ P_CHECKA(cfg->roots = MPArray_new(cfg->n_roots)); ++ P_CHECKA(cfg->rootsInv = MPArray_new(cfg->n_roots)); ++ MP_CHECKC(initialize_roots(cfg->roots, Roots)); ++ MP_CHECKC(initialize_roots(cfg->rootsInv, RootsInv)); + + cleanup: + if (rv != SECSuccess) { +- PrioConfig_clear (cfg); ++ PrioConfig_clear(cfg); + return NULL; + } + + return cfg; + } + +-PrioConfig +-PrioConfig_newTest (int nFields) +-{ +- return PrioConfig_new (nFields, NULL, NULL, +- (unsigned char *)"testBatch", 9); +-} +- +-void +-PrioConfig_clear (PrioConfig cfg) ++PrioConfig ++PrioConfig_newTest(int nFields) + { +- if (!cfg) return; +- if (cfg->batch_id) free (cfg->batch_id); +- MPArray_clear (cfg->roots); +- MPArray_clear (cfg->rootsInv); +- mp_clear (&cfg->modulus); +- mp_clear (&cfg->inv2); +- free (cfg); +-} +- +-int +-PrioConfig_numDataFields (const_PrioConfig cfg) +-{ +- return cfg->num_data_fields; +- +-} +- +-SECStatus +-Prio_init (void) +-{ +- return rand_init (); ++ return PrioConfig_new(nFields, NULL, NULL, (unsigned char*)"testBatch", 9); + } + + void +-Prio_clear (void) ++PrioConfig_clear(PrioConfig cfg) + { +- rand_clear (); ++ if (!cfg) ++ return; ++ if (cfg->batch_id) ++ free(cfg->batch_id); ++ MPArray_clear(cfg->roots); ++ MPArray_clear(cfg->rootsInv); ++ mp_clear(&cfg->modulus); ++ mp_clear(&cfg->inv2); ++ free(cfg); ++} ++ ++int ++PrioConfig_numDataFields(const_PrioConfig cfg) ++{ ++ return cfg->num_data_fields; + } + +-int PrioConfig_hPoints (const_PrioConfig cfg) ++SECStatus ++Prio_init(void) ++{ ++ return rand_init(); ++} ++ ++void ++Prio_clear(void) ++{ ++ rand_clear(); ++} ++ ++int ++PrioConfig_hPoints(const_PrioConfig cfg) + { + const int mul_gates = cfg->num_data_fields + 1; +- const int N = next_power_of_two (mul_gates); ++ const int N = next_power_of_two(mul_gates); + return N; + } +diff --git a/third_party/prio/prio/debug.h b/third_party/prio/prio/debug.h +--- a/third_party/prio/prio/debug.h ++++ b/third_party/prio/prio/debug.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __DEBUG_H__ +@@ -12,10 +12,12 @@ + #include + + #ifdef DEBUG +-#define PRIO_DEBUG(msg) do { fprintf(stderr, "Error: %s\n", msg); } while(false); ++#define PRIO_DEBUG(msg) \ ++ do { \ ++ fprintf(stderr, "Error: %s\n", msg); \ ++ } while (false); + #else + #define PRIO_DEBUG(msg) ; + #endif + + #endif /* __DEBUG_H__ */ +- +diff --git a/third_party/prio/prio/encrypt.h b/third_party/prio/prio/encrypt.h +--- a/third_party/prio/prio/encrypt.h ++++ b/third_party/prio/prio/encrypt.h +@@ -1,12 +1,11 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +- + #ifndef __ENCRYPT_H__ + #define __ENCRYPT_H__ + +@@ -15,7 +14,7 @@ + + /******* + * These functions attempt to implement CCA-secure public-key encryption using +- * the NSS library. We use hashed-ElGamal encryption with Curve25519 as the ++ * the NSS library. We use hashed-ElGamal encryption with Curve25519 as the + * underlying group and AES128-GCM as the bulk encryption mode of operation. + * + * I make no guarantees that I am using NSS correctly or that this encryption +@@ -25,7 +24,7 @@ + * to implement these functions. + */ + +-/* ++/* + * Messages encrypted using this library must be smaller than MAX_ENCRYPT_LEN. + * Enforcing this length limit helps avoid integer overflow. + */ +@@ -38,12 +37,12 @@ + * is too large (larger than `MAX_ENCRYPT_LEN`), this function returns + * an error. + */ +-SECStatus PublicKey_encryptSize (unsigned int inputLen, unsigned int *outputLen); ++SECStatus PublicKey_encryptSize(unsigned int inputLen, unsigned int* outputLen); + + /* + * Generate a new keypair for public-key encryption. + */ +-SECStatus Keypair_new (PrivateKey *pvtkey, PublicKey *pubkey); ++SECStatus Keypair_new(PrivateKey* pvtkey, PublicKey* pubkey); + + /* + * Encrypt an arbitrary bitstring to the specified public key. The buffer +@@ -53,22 +52,17 @@ + * + * The value `inputLen` must be smaller than `MAX_ENCRYPT_LEN`. + */ +-SECStatus PublicKey_encrypt (PublicKey pubkey, +- unsigned char *output, +- unsigned int *outputLen, +- unsigned int maxOutputLen, +- const unsigned char *input, unsigned int inputLen); ++SECStatus PublicKey_encrypt(PublicKey pubkey, unsigned char* output, ++ unsigned int* outputLen, unsigned int maxOutputLen, ++ const unsigned char* input, unsigned int inputLen); + + /* + * Decrypt an arbitrary bitstring using the specified private key. The output + * buffer should be at least 16 bytes larger than the plaintext you expect. If + * `outputLen` >= `inputLen`, you should be safe. + */ +-SECStatus PrivateKey_decrypt (PrivateKey privkey, +- unsigned char *output, +- unsigned int *outputLen, +- unsigned int maxOutputLen, +- const unsigned char *input, unsigned int inputLen); ++SECStatus PrivateKey_decrypt(PrivateKey privkey, unsigned char* output, ++ unsigned int* outputLen, unsigned int maxOutputLen, ++ const unsigned char* input, unsigned int inputLen); + + #endif /* __ENCRYPT_H__ */ +- +diff --git a/third_party/prio/prio/encrypt.c b/third_party/prio/prio/encrypt.c +--- a/third_party/prio/prio/encrypt.c ++++ b/third_party/prio/prio/encrypt.c +@@ -1,14 +1,14 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +-#include +-#include +-#include ++#include ++#include ++#include + #include + + #include "encrypt.h" +@@ -24,222 +24,251 @@ + #define GCM_TAG_LEN_BYTES 16 + + #define PRIO_TAG "PrioPacket" +-#define AAD_LEN (strlen (PRIO_TAG) + CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES) ++#define AAD_LEN (strlen(PRIO_TAG) + CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES) + + // The all-zeros curve25519 public key, as DER-encoded SKPI blob. + static const uint8_t curve25519_spki_zeros[] = { +- 0x30, 0x39, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x09, 0x2b, +- 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01, 0x03, 0x21, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, ++ 0x30, 0x39, 0x30, 0x14, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, ++ 0x01, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01, ++ 0x03, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + ++// Note that we do not use isxdigit because it is locale-dependent ++// See: https://github.com/mozilla/libprio/issues/20 ++static inline char ++is_hex_digit(char c) ++{ ++ return ('0' <= c && c <= '9') || ('a' <= c && c <= 'f') || ++ ('A' <= c && c <= 'F'); ++} ++ ++// Note that we do not use toupper because it is locale-dependent ++// See: https://github.com/mozilla/libprio/issues/20 ++static inline char ++to_upper(char c) ++{ ++ if (c >= 'a' && c <= 'z') { ++ return c - 0x20; ++ } else { ++ return c; ++ } ++} ++ + static inline uint8_t +-hex_to_int (char h) ++hex_to_int(char h) + { +- return (h > '9') ? toupper (h) - 'A' + 10 : (h - '0'); ++ return (h > '9') ? to_upper(h) - 'A' + 10 : (h - '0'); + } + +-static inline unsigned char +-int_to_hex (uint8_t i) ++static inline unsigned char ++int_to_hex(uint8_t i) + { + return (i > 0x09) ? ((i - 10) + 'A') : i + '0'; + } + +- +-static SECStatus +-derive_dh_secret (PK11SymKey **shared_secret, PrivateKey priv, PublicKey pub) ++static SECStatus ++derive_dh_secret(PK11SymKey** shared_secret, PrivateKey priv, PublicKey pub) + { +- if (priv == NULL) return SECFailure; +- if (pub == NULL) return SECFailure; +- if (shared_secret == NULL) return SECFailure; ++ if (priv == NULL) ++ return SECFailure; ++ if (pub == NULL) ++ return SECFailure; ++ if (shared_secret == NULL) ++ return SECFailure; + + SECStatus rv = SECSuccess; + *shared_secret = NULL; + +- P_CHECKA (*shared_secret = PK11_PubDeriveWithKDF (priv, pub, PR_FALSE, +- NULL, NULL, CKM_ECDH1_DERIVE, CKM_AES_GCM, +- CKA_ENCRYPT | CKA_DECRYPT, 16, +- CKD_SHA256_KDF, NULL, NULL)); ++ P_CHECKA(*shared_secret = PK11_PubDeriveWithKDF( ++ priv, pub, PR_FALSE, NULL, NULL, CKM_ECDH1_DERIVE, CKM_AES_GCM, ++ CKA_ENCRYPT | CKA_DECRYPT, 16, CKD_SHA256_KDF, NULL, NULL)); + + cleanup: + return rv; + } + + SECStatus +-PublicKey_import (PublicKey *pk, const unsigned char *data, unsigned int dataLen) ++PublicKey_import(PublicKey* pk, const unsigned char* data, unsigned int dataLen) + { + SECStatus rv = SECSuccess; +- CERTSubjectPublicKeyInfo *pkinfo = NULL; ++ CERTSubjectPublicKeyInfo* pkinfo = NULL; + *pk = NULL; + + if (dataLen != CURVE25519_KEY_LEN) + return SECFailure; + + unsigned char key_bytes[dataLen]; +- memcpy (key_bytes, data, dataLen); ++ memcpy(key_bytes, data, dataLen); + +- const int spki_len = sizeof (curve25519_spki_zeros); ++ const int spki_len = sizeof(curve25519_spki_zeros); + uint8_t spki_data[spki_len]; +- memcpy (spki_data, curve25519_spki_zeros, spki_len); ++ memcpy(spki_data, curve25519_spki_zeros, spki_len); + SECItem spki_item = { siBuffer, spki_data, spki_len }; + +- // Import the all-zeros curve25519 public key. +- P_CHECKA (pkinfo = SECKEY_DecodeDERSubjectPublicKeyInfo (&spki_item)); +- P_CHECKA (*pk = SECKEY_ExtractPublicKey (pkinfo)); ++ // Import the all-zeros curve25519 public key. ++ P_CHECKA(pkinfo = SECKEY_DecodeDERSubjectPublicKeyInfo(&spki_item)); ++ P_CHECKA(*pk = SECKEY_ExtractPublicKey(pkinfo)); + + // Overwrite the all-zeros public key with the 32-byte curve25519 public key + // given as input. +- memcpy ((*pk)->u.ec.publicValue.data, data, CURVE25519_KEY_LEN); ++ memcpy((*pk)->u.ec.publicValue.data, data, CURVE25519_KEY_LEN); + + cleanup: +- if (pkinfo) +- SECKEY_DestroySubjectPublicKeyInfo (pkinfo); ++ if (pkinfo) ++ SECKEY_DestroySubjectPublicKeyInfo(pkinfo); + + if (rv != SECSuccess) +- PublicKey_clear (*pk); ++ PublicKey_clear(*pk); + return rv; + } + + SECStatus +-PublicKey_import_hex (PublicKey *pk, const unsigned char *hex_data, unsigned int dataLen) ++PublicKey_import_hex(PublicKey* pk, const unsigned char* hex_data, ++ unsigned int dataLen) + { + unsigned char raw_bytes[CURVE25519_KEY_LEN]; + + if (dataLen != CURVE25519_KEY_LEN_HEX) + return SECFailure; + +- for (unsigned int i=0; iu.ec.publicValue.data, CURVE25519_KEY_LEN); ++ memcpy(data, pk->u.ec.publicValue.data, CURVE25519_KEY_LEN); + + return SECSuccess; + } + +-SECStatus +-PublicKey_export_hex (const_PublicKey pk, unsigned char data[(2*CURVE25519_KEY_LEN)+1]) ++SECStatus ++PublicKey_export_hex(const_PublicKey pk, ++ unsigned char data[(2 * CURVE25519_KEY_LEN) + 1]) + { + unsigned char raw_data[CURVE25519_KEY_LEN]; +- if (PublicKey_export (pk, raw_data) != SECSuccess) ++ if (PublicKey_export(pk, raw_data) != SECSuccess) + return SECFailure; + +- const unsigned char *p = raw_data; +- for (unsigned int i=0; i> 4; +- data[2*i] = int_to_hex (byteu); +- data[2*i + 1] = int_to_hex (bytel); ++ data[2 * i] = int_to_hex(byteu); ++ data[2 * i + 1] = int_to_hex(bytel); + p++; + } + +- data[2*CURVE25519_KEY_LEN] = '\0'; ++ data[2 * CURVE25519_KEY_LEN] = '\0'; + return SECSuccess; + } + +-SECStatus +-Keypair_new (PrivateKey *pvtkey, PublicKey *pubkey) ++SECStatus ++Keypair_new(PrivateKey* pvtkey, PublicKey* pubkey) + { +- if (pvtkey == NULL) return SECFailure; +- if (pubkey == NULL) return SECFailure; ++ if (pvtkey == NULL) ++ return SECFailure; ++ if (pubkey == NULL) ++ return SECFailure; + + SECStatus rv = SECSuccess; +- SECOidData *oid_data = NULL; ++ SECOidData* oid_data = NULL; + *pubkey = NULL; + *pvtkey = NULL; + + SECKEYECParams ecp; + ecp.data = NULL; +- PK11SlotInfo *slot = NULL; ++ PK11SlotInfo* slot = NULL; + +- P_CHECKA (oid_data = SECOID_FindOIDByTag (CURVE_OID_TAG)); ++ P_CHECKA(oid_data = SECOID_FindOIDByTag(CURVE_OID_TAG)); + const int oid_struct_len = 2 + oid_data->oid.len; + +- P_CHECKA (ecp.data = malloc (oid_struct_len)); ++ P_CHECKA(ecp.data = malloc(oid_struct_len)); + ecp.len = oid_struct_len; +- ++ + ecp.type = siDEROID; + + ecp.data[0] = SEC_ASN1_OBJECT_ID; + ecp.data[1] = oid_data->oid.len; +- memcpy (&ecp.data[2], oid_data->oid.data, oid_data->oid.len); ++ memcpy(&ecp.data[2], oid_data->oid.data, oid_data->oid.len); + +- P_CHECKA (slot = PK11_GetInternalSlot ()); +- P_CHECKA (*pvtkey = PK11_GenerateKeyPair(slot, CKM_EC_KEY_PAIR_GEN, &ecp, +- (SECKEYPublicKey **)pubkey, PR_FALSE, PR_FALSE, NULL)); +- PK11_FreeSlot (slot); ++ P_CHECKA(slot = PK11_GetInternalSlot()); ++ P_CHECKA(*pvtkey = PK11_GenerateKeyPair(slot, CKM_EC_KEY_PAIR_GEN, &ecp, ++ (SECKEYPublicKey**)pubkey, PR_FALSE, ++ PR_FALSE, NULL)); ++ PK11_FreeSlot(slot); + + cleanup: + if (ecp.data) +- free (ecp.data); ++ free(ecp.data); + if (rv != SECSuccess) { +- PublicKey_clear (*pubkey); +- PrivateKey_clear (*pvtkey); ++ PublicKey_clear(*pubkey); ++ PrivateKey_clear(*pvtkey); + } + return rv; + } + +-void +-PublicKey_clear (PublicKey pubkey) ++void ++PublicKey_clear(PublicKey pubkey) + { +- if (pubkey) ++ if (pubkey) + SECKEY_DestroyPublicKey(pubkey); + } + +-void +-PrivateKey_clear (PrivateKey pvtkey) ++void ++PrivateKey_clear(PrivateKey pvtkey) + { +- if (pvtkey) +- SECKEY_DestroyPrivateKey(pvtkey); ++ if (pvtkey) ++ SECKEY_DestroyPrivateKey(pvtkey); + } + +-const SECItem * +-PublicKey_toBytes (const_PublicKey pubkey) ++const SECItem* ++PublicKey_toBytes(const_PublicKey pubkey) + { + return &pubkey->u.ec.publicValue; + } + + SECStatus +-PublicKey_encryptSize (unsigned int inputLen, unsigned int *outputLen) ++PublicKey_encryptSize(unsigned int inputLen, unsigned int* outputLen) + { + if (outputLen == NULL || inputLen >= MAX_ENCRYPT_LEN) + return SECFailure; + + // public key, IV, tag, and input +- *outputLen = CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES + GCM_TAG_LEN_BYTES + inputLen; ++ *outputLen = ++ CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES + GCM_TAG_LEN_BYTES + inputLen; + return SECSuccess; + } + +-static void +-set_gcm_params (SECItem *paramItem, CK_GCM_PARAMS *param, unsigned char *nonce, +- const_PublicKey pubkey, unsigned char *aadBuf) ++static void ++set_gcm_params(SECItem* paramItem, CK_GCM_PARAMS* param, unsigned char* nonce, ++ const_PublicKey pubkey, unsigned char* aadBuf) + { + int offset = 0; +- memcpy (aadBuf, PRIO_TAG, strlen (PRIO_TAG)); +- offset += strlen (PRIO_TAG); +- memcpy (aadBuf + offset, PublicKey_toBytes (pubkey)->data, CURVE25519_KEY_LEN); ++ memcpy(aadBuf, PRIO_TAG, strlen(PRIO_TAG)); ++ offset += strlen(PRIO_TAG); ++ memcpy(aadBuf + offset, PublicKey_toBytes(pubkey)->data, CURVE25519_KEY_LEN); + offset += CURVE25519_KEY_LEN; +- memcpy (aadBuf + offset, nonce, GCM_IV_LEN_BYTES); +- ++ memcpy(aadBuf + offset, nonce, GCM_IV_LEN_BYTES); ++ + param->pIv = nonce; + param->ulIvLen = GCM_IV_LEN_BYTES; + param->pAAD = aadBuf; +@@ -247,17 +276,14 @@ + param->ulTagBits = GCM_TAG_LEN_BYTES * 8; + + paramItem->type = siBuffer; +- paramItem->data = (void *)param; +- paramItem->len = sizeof (*param); +- ++ paramItem->data = (void*)param; ++ paramItem->len = sizeof(*param); + } + +-SECStatus +-PublicKey_encrypt (PublicKey pubkey, +- unsigned char *output, +- unsigned int *outputLen, +- unsigned int maxOutputLen, +- const unsigned char *input, unsigned int inputLen) ++SECStatus ++PublicKey_encrypt(PublicKey pubkey, unsigned char* output, ++ unsigned int* outputLen, unsigned int maxOutputLen, ++ const unsigned char* input, unsigned int inputLen) + { + if (pubkey == NULL) + return SECFailure; +@@ -266,55 +292,53 @@ + return SECFailure; + + unsigned int needLen; +- if (PublicKey_encryptSize (inputLen, &needLen) != SECSuccess) ++ if (PublicKey_encryptSize(inputLen, &needLen) != SECSuccess) + return SECFailure; + +- if (maxOutputLen < needLen) ++ if (maxOutputLen < needLen) + return SECFailure; + + SECStatus rv = SECSuccess; +- PublicKey eph_pub = NULL; +- PrivateKey eph_priv = NULL; +- PK11SymKey *aes_key = NULL; ++ PublicKey eph_pub = NULL; ++ PrivateKey eph_priv = NULL; ++ PK11SymKey* aes_key = NULL; + + unsigned char nonce[GCM_IV_LEN_BYTES]; + unsigned char aadBuf[AAD_LEN]; +- P_CHECKC (rand_bytes (nonce, GCM_IV_LEN_BYTES)); ++ P_CHECKC(rand_bytes(nonce, GCM_IV_LEN_BYTES)); + +- P_CHECKC (Keypair_new (&eph_priv, &eph_pub)); +- P_CHECKC (derive_dh_secret (&aes_key, eph_priv, pubkey)); ++ P_CHECKC(Keypair_new(&eph_priv, &eph_pub)); ++ P_CHECKC(derive_dh_secret(&aes_key, eph_priv, pubkey)); + + CK_GCM_PARAMS param; + SECItem paramItem; +- set_gcm_params (¶mItem, ¶m, nonce, eph_pub, aadBuf); ++ set_gcm_params(¶mItem, ¶m, nonce, eph_pub, aadBuf); + +- const SECItem *pk = PublicKey_toBytes (eph_pub); +- P_CHECKCB (pk->len == CURVE25519_KEY_LEN); +- memcpy (output, pk->data, pk->len); +- memcpy (output + CURVE25519_KEY_LEN, param.pIv, param.ulIvLen); ++ const SECItem* pk = PublicKey_toBytes(eph_pub); ++ P_CHECKCB(pk->len == CURVE25519_KEY_LEN); ++ memcpy(output, pk->data, pk->len); ++ memcpy(output + CURVE25519_KEY_LEN, param.pIv, param.ulIvLen); + + const int offset = CURVE25519_KEY_LEN + param.ulIvLen; +- P_CHECKC (PK11_Encrypt (aes_key, CKM_AES_GCM, ¶mItem, output + offset, +- outputLen, maxOutputLen - offset, input, inputLen)); ++ P_CHECKC(PK11_Encrypt(aes_key, CKM_AES_GCM, ¶mItem, output + offset, ++ outputLen, maxOutputLen - offset, input, inputLen)); + *outputLen = *outputLen + CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES; + + cleanup: +- PublicKey_clear (eph_pub); +- PrivateKey_clear (eph_priv); +- if (aes_key) +- PK11_FreeSymKey (aes_key); ++ PublicKey_clear(eph_pub); ++ PrivateKey_clear(eph_priv); ++ if (aes_key) ++ PK11_FreeSymKey(aes_key); + + return rv; + } + +-SECStatus +-PrivateKey_decrypt (PrivateKey privkey, +- unsigned char *output, +- unsigned int *outputLen, +- unsigned int maxOutputLen, +- const unsigned char *input, unsigned int inputLen) ++SECStatus ++PrivateKey_decrypt(PrivateKey privkey, unsigned char* output, ++ unsigned int* outputLen, unsigned int maxOutputLen, ++ const unsigned char* input, unsigned int inputLen) + { +- PK11SymKey *aes_key = NULL; ++ PK11SymKey* aes_key = NULL; + PublicKey eph_pub = NULL; + unsigned char aad_buf[AAD_LEN]; + +@@ -323,34 +347,33 @@ + + SECStatus rv = SECSuccess; + unsigned int headerLen; +- if (PublicKey_encryptSize (0, &headerLen) != SECSuccess) ++ if (PublicKey_encryptSize(0, &headerLen) != SECSuccess) + return SECFailure; + +- if (inputLen < headerLen) ++ if (inputLen < headerLen) + return SECFailure; + + const unsigned int msglen = inputLen - headerLen; + if (maxOutputLen < msglen || msglen >= MAX_ENCRYPT_LEN) + return SECFailure; + +- P_CHECKC (PublicKey_import (&eph_pub, input, CURVE25519_KEY_LEN)); ++ P_CHECKC(PublicKey_import(&eph_pub, input, CURVE25519_KEY_LEN)); + unsigned char nonce[GCM_IV_LEN_BYTES]; +- memcpy (nonce, input + CURVE25519_KEY_LEN, GCM_IV_LEN_BYTES); ++ memcpy(nonce, input + CURVE25519_KEY_LEN, GCM_IV_LEN_BYTES); + + SECItem paramItem; + CK_GCM_PARAMS param; +- set_gcm_params (¶mItem, ¶m, nonce, eph_pub, aad_buf); +- +- P_CHECKC (derive_dh_secret (&aes_key, privkey, eph_pub)); ++ set_gcm_params(¶mItem, ¶m, nonce, eph_pub, aad_buf); ++ ++ P_CHECKC(derive_dh_secret(&aes_key, privkey, eph_pub)); + + const int offset = CURVE25519_KEY_LEN + GCM_IV_LEN_BYTES; +- P_CHECKC (PK11_Decrypt (aes_key, CKM_AES_GCM, ¶mItem, output, +- outputLen, maxOutputLen, input + offset, inputLen - offset)); ++ P_CHECKC(PK11_Decrypt(aes_key, CKM_AES_GCM, ¶mItem, output, outputLen, ++ maxOutputLen, input + offset, inputLen - offset)); + + cleanup: +- PublicKey_clear (eph_pub); +- if (aes_key) +- PK11_FreeSymKey (aes_key); ++ PublicKey_clear(eph_pub); ++ if (aes_key) ++ PK11_FreeSymKey(aes_key); + return rv; + } +- +diff --git a/third_party/prio/prio/mparray.h b/third_party/prio/prio/mparray.h +--- a/third_party/prio/prio/mparray.h ++++ b/third_party/prio/prio/mparray.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __MPARRAY_H__ +@@ -12,60 +12,59 @@ + #include + #include + +-struct mparray { ++struct mparray ++{ + int len; +- mp_int *data; ++ mp_int* data; + }; + +-typedef struct mparray *MPArray; +-typedef const struct mparray *const_MPArray; ++typedef struct mparray* MPArray; ++typedef const struct mparray* const_MPArray; + + /* + * Initialize an array of `mp_int`s of the given length. + */ +-MPArray MPArray_new (int len); +-void MPArray_clear (MPArray arr); ++MPArray MPArray_new(int len); ++void MPArray_clear(MPArray arr); + +-/* ++/* + * Copies secret sharing of data from src into arrays + * arrA and arrB. The lengths of the three input arrays + * must be identical. + */ +-SECStatus MPArray_set_share (MPArray arrA, MPArray arrB, +- const_MPArray src, const_PrioConfig cfg); ++SECStatus MPArray_set_share(MPArray arrA, MPArray arrB, const_MPArray src, ++ const_PrioConfig cfg); + +-/* ++/* + * Initializes array with 0/1 values specified in boolean array `data_in` + */ +-MPArray MPArray_new_bool (int len, const bool *data_in); ++MPArray MPArray_new_bool(int len, const bool* data_in); + +-/* ++/* + * Expands or shrinks the MPArray to the desired size. If shrinking, + * will clear the values on the end of array. + */ +-SECStatus MPArray_resize (MPArray arr, int newlen); ++SECStatus MPArray_resize(MPArray arr, int newlen); + + /* +- * Initializes dst and creates a duplicate of the array in src. ++ * Initializes dst and creates a duplicate of the array in src. + */ +-MPArray MPArray_dup (const_MPArray src); ++MPArray MPArray_dup(const_MPArray src); + + /* + * Copies array from src to dst. Arrays must have the same length. + */ +-SECStatus MPArray_copy (MPArray dst, const_MPArray src); ++SECStatus MPArray_copy(MPArray dst, const_MPArray src); + + /* For each index i into the array, set: + * dst[i] = dst[i] + to_add[i] (modulo mod) + */ +-SECStatus MPArray_addmod (MPArray dst, const_MPArray to_add, +- const mp_int *mod); ++SECStatus MPArray_addmod(MPArray dst, const_MPArray to_add, const mp_int* mod); + + /* + * Return true iff the two arrays are equal in length + * and contents. This comparison is NOT constant time. + */ +-bool MPArray_areEqual (const_MPArray arr1, const_MPArray arr2); ++bool MPArray_areEqual(const_MPArray arr1, const_MPArray arr2); + + #endif /* __MPARRAY_H__ */ +- +diff --git a/third_party/prio/prio/mparray.c b/third_party/prio/prio/mparray.c +--- a/third_party/prio/prio/mparray.c ++++ b/third_party/prio/prio/mparray.c +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #include +@@ -15,31 +15,31 @@ + #include "util.h" + + MPArray +-MPArray_new (int len) ++MPArray_new(int len) + { + SECStatus rv = SECSuccess; +- MPArray arr = malloc (sizeof *arr); +- if (!arr) ++ MPArray arr = malloc(sizeof *arr); ++ if (!arr) + return NULL; + + arr->data = NULL; + arr->len = len; + +- P_CHECKA(arr->data = calloc (len, sizeof (mp_int))); ++ P_CHECKA(arr->data = calloc(len, sizeof(mp_int))); + + // Initialize these to NULL so that we can figure + // out which allocations failed (if any) +- for (int i=0; idata[i]) = NULL; ++ for (int i = 0; i < len; i++) { ++ MP_DIGITS(&arr->data[i]) = NULL; + } + +- for (int i=0; idata[i])); ++ for (int i = 0; i < len; i++) { ++ MP_CHECKC(mp_init(&arr->data[i])); + } + + cleanup: + if (rv != SECSuccess) { +- MPArray_clear (arr); ++ MPArray_clear(arr); + return NULL; + } + +@@ -47,87 +47,89 @@ + } + + MPArray +-MPArray_new_bool (int len, const bool *data_in) ++MPArray_new_bool(int len, const bool* data_in) + { +- MPArray arr = MPArray_new (len); +- if (arr == NULL) return NULL; ++ MPArray arr = MPArray_new(len); ++ if (arr == NULL) ++ return NULL; + +- for (int i=0; idata[i], data_in[i]); ++ for (int i = 0; i < len; i++) { ++ mp_set(&arr->data[i], data_in[i]); + } +- ++ + return arr; + } + + SECStatus +-MPArray_resize (MPArray arr, int newlen) ++MPArray_resize(MPArray arr, int newlen) + { + SECStatus rv = SECSuccess; + const int oldlen = arr->len; + + if (oldlen == newlen) +- return rv; ++ return rv; + + // TODO: Use realloc for this? +- mp_int *newdata = calloc (newlen, sizeof (mp_int)); ++ mp_int* newdata = calloc(newlen, sizeof(mp_int)); + if (newdata == NULL) + return SECFailure; + + for (int i = 0; i < newlen; i++) { +- MP_DIGITS (&newdata[i]) = NULL; ++ MP_DIGITS(&newdata[i]) = NULL; + } + + // Initialize new array + for (int i = 0; i < newlen; i++) { +- MP_CHECKC (mp_init (&newdata[i])); ++ MP_CHECKC(mp_init(&newdata[i])); + } + + // Copy old data into new array + for (int i = 0; i < newlen && i < oldlen; i++) { +- MP_CHECKC (mp_copy (&arr->data[i], &newdata[i])); ++ MP_CHECKC(mp_copy(&arr->data[i], &newdata[i])); + } + + // Free old data + for (int i = 0; i < oldlen; i++) { +- mp_clear (&arr->data[i]); ++ mp_clear(&arr->data[i]); + } +- free (arr->data); ++ free(arr->data); + arr->data = newdata; + arr->len = newlen; + + cleanup: + if (rv != SECSuccess) { +- for (int i=0; i < newlen; i++) { +- mp_clear (&newdata[i]); ++ for (int i = 0; i < newlen; i++) { ++ mp_clear(&newdata[i]); + } +- free (newdata); ++ free(newdata); + } + + return rv; + } + + MPArray +-MPArray_dup (const_MPArray src) ++MPArray_dup(const_MPArray src) + { +- MPArray dst = MPArray_new (src->len); +- if (!dst) return NULL; ++ MPArray dst = MPArray_new(src->len); ++ if (!dst) ++ return NULL; + +- SECStatus rv = MPArray_copy (dst, src); ++ SECStatus rv = MPArray_copy(dst, src); + if (rv == SECSuccess) { + return dst; + } else { +- MPArray_clear (dst); ++ MPArray_clear(dst); + return NULL; + } + } + + SECStatus +-MPArray_copy (MPArray dst, const_MPArray src) ++MPArray_copy(MPArray dst, const_MPArray src) + { + if (dst->len != src->len) + return SECFailure; + +- for (int i=0; ilen; i++) { ++ for (int i = 0; i < src->len; i++) { + if (mp_copy(&src->data[i], &dst->data[i]) != MP_OKAY) { + return SECFailure; + } +@@ -136,10 +138,9 @@ + return SECSuccess; + } + +- + SECStatus +-MPArray_set_share (MPArray arrA, MPArray arrB, +- const_MPArray src, const_PrioConfig cfg) ++MPArray_set_share(MPArray arrA, MPArray arrB, const_MPArray src, ++ const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; + if (arrA->len != src->len || arrB->len != src->len) +@@ -147,48 +148,49 @@ + + const int len = src->len; + +- for (int i=0; i < len; i++) { +- P_CHECK(share_int (cfg, &src->data[i], &arrA->data[i], &arrB->data[i])); ++ for (int i = 0; i < len; i++) { ++ P_CHECK(share_int(cfg, &src->data[i], &arrA->data[i], &arrB->data[i])); + } + + return rv; + } + +- +-void +-MPArray_clear (MPArray arr) ++void ++MPArray_clear(MPArray arr) + { +- if (arr == NULL) return; ++ if (arr == NULL) ++ return; + + if (arr->data != NULL) { +- for (int i=0; ilen; i++) { ++ for (int i = 0; i < arr->len; i++) { + mp_clear(&arr->data[i]); + } +- free (arr->data); ++ free(arr->data); + } +- free (arr); ++ free(arr); + } + + SECStatus +-MPArray_addmod (MPArray dst, const_MPArray to_add, const mp_int *mod) ++MPArray_addmod(MPArray dst, const_MPArray to_add, const mp_int* mod) + { + if (dst->len != to_add->len) + return SECFailure; + +- for (int i=0; ilen; i++) { +- MP_CHECK (mp_addmod (&dst->data[i], &to_add->data[i], mod, &dst->data[i])); ++ for (int i = 0; i < dst->len; i++) { ++ MP_CHECK(mp_addmod(&dst->data[i], &to_add->data[i], mod, &dst->data[i])); + } + + return SECSuccess; + } + +-bool +-MPArray_areEqual (const_MPArray arr1, const_MPArray arr2) ++bool ++MPArray_areEqual(const_MPArray arr1, const_MPArray arr2) + { +- if (arr1->len != arr2->len) return false; ++ if (arr1->len != arr2->len) ++ return false; + +- for (int i=0; ilen; i++) { +- if (mp_cmp (&arr1->data[i], &arr2->data[i])) ++ for (int i = 0; i < arr1->len; i++) { ++ if (mp_cmp(&arr1->data[i], &arr2->data[i])) + return false; + } + +diff --git a/third_party/prio/prio/params.h b/third_party/prio/prio/params.h +--- a/third_party/prio/prio/params.h ++++ b/third_party/prio/prio/params.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + /**** +@@ -15,7 +15,7 @@ + #define __PARAMS_H__ + + // A prime modulus p. +-static const char *Modulus = "8000000000000000080001"; ++static const char* Modulus = "8000000000000000080001"; + + // A generator g of a subgroup of Z*_p. + // static const char *Generator = "5569560418e73ff9db709"; +@@ -24,8203 +24,8198 @@ + // order 2^Generator2Order in Z*_p. + static const int Generator2Order = 12; + +-static const char *Roots[] = { +- "1", +- "5569560418e73ff9db709", +- "5bf795c6d548a19b6ac340", +- "760df490123f6613b0a970", +- "7cec29d14a0eefb222bde7", +- "3c70a3f0e9c5b206031a33", +- "1cec8c96472b84936bbc22", +- "3315173915ca23d8c1b814", +- "39a0c4e1da321f1bc126f4", +- "760f3656c1130b21d369d9", +- "452231c3bcde7b7b5b0af8", +- "6fe27c77d57e2feb8cbcbf", +- "3a7a488015e75feec809f8", +- "c16d15fea9d61c8df5121", +- "5a8a9b5c659b71e837ea18", +- "506d84c9f4d4bc400fdd25", +- "4d7566cd294f75be6620f3", +- "5f80095f2580ec4cf13b51", +- "34eea7a66e8ff3dcc8988e", +- "899b1ac6f72ffff8aedfc", +- "3cb5a124ce563c3967dbc3", +- "16d5205447831696c5d6a0", +- "414e761d40341e7f97c304", +- "498104aa12355244a9b0d6", +- "3a8c5a9525f5d62cea294d", +- "1c90fea5f39d8ac4dfc2a3", +- "6a716dae106b9aeff2133e", +- "735cfad9acf49090fb7037", +- "5f4e7c70ff55ff2f888f05", +- "2f39a2788d5c2a24e16acc", +- "38d9d05f9463a537f470b2", +- "72b5d8f8e65cb7509a93d8", +- "75066462fdbbc7301e209b", +- "55afbc51e7c2cc748942ac", +- "47a1f466100bf70dd5689", +- "57d88b5e0b434eb1a0dc08", +- "27ec8c6636679988dd1267", +- "4818e9ef0ea7625cfc3d0", +- "68fa3ecc3845db5d523ad9", +- "4c95bed884bd87ec1d5e70", +- "7136b3dd116ed121aab68", +- "60617400353c1eb8e8832b", +- "19772e34181f57b670bf9", +- "2f58f2df794a35875efc99", +- "690aa96130f8c533d77ce4", +- "df261ad3b5157a525bb81", +- "6a437e22c95fc6c6a4449d", +- "1cc2526113f2bae9b540c1", +- "7fc2bcc524b4326eb8303d", +- "751e9eb348bc8239d6e118", +- "2fb170a11f1aecdf586d25", +- "32aafc640e8c99bda8faa7", +- "552aca5af025ea1e84aadb", +- "30a3461d63ca9807464dd6", +- "3f68fa1a9ab7772758d0ba", +- "6ba1300374acd487b23577", +- "35865b2ca16d3453781f41", +- "3d1155c4a53835d991a0f", +- "74bb588b5553c2b2d4ac78", +- "3778fd3a46ffde4755b6ce", +- "1d2b9ca2f44294070d4e86", +- "38596ed050f14596adc07f", +- "2015aa6fc7e48fa3bc5ab5", +- "2ad2546b270547fc24541b", +- "1dd1b432dc809fe4c879b3", +- "149e6a0b6c6543ae895e07", +- "7851b3168b92e5daed021f", +- "2bee268df09cc40864a917", +- "76c2f0ba37187112ee4d4d", +- "53016aa1427381b9f28ea5", +- "397f144a181805e1a097c9", +- "634478b621f7f0a455c48c", +- "7cc0116bd0bc164835ee72", +- "310e395e429c4494a5f850", +- "63e0dbdfb13b4fbb46f00c", +- "4a9e2e5d8ad0e2e82aa7de", +- "7d0578a8908ba294259bd", +- "17276a59aa9630c1141c17", +- "393fe0be8f011593a7e1ef", +- "475e84f70334cc0bc8292", +- "1ccd174e9aa4e58e7414bc", +- "19b666810d736e639b51f2", +- "2a48d89ce122dfa7deba2f", +- "6520599b30ba3568ad0f09", +- "4b35e35e82bffb49d0d830", +- "3943e926fbe3d426004ea9", +- "4e501beb4617be0f02deb4", +- "343dad4f059acb87d3b0e2", +- "7bb4f9d707b4ee3a20e779", +- "7de4927696bdd6d3b718", +- "6da3828f2d4926651f7a27", +- "3601174a7dc823bf4dc3a6", +- "223160cdd1bfa322ca3e6c", +- "31a504d1dcc251075e4436", +- "1b1ca5d6c688c4cf99448d", +- "4309c1c59a581af63d922d", +- "6077a88144957827c07205", +- "22e321253c3e0fb875c4df", +- "6b4728ee168cd23e2fe47c", +- "1c35e13f8ffb7c470fa61c", +- "4bacbc68650c41520d312c", +- "455c9131bfa1c33274be37", +- "23c82ae839bf5380a55acf", +- "171e59c89024b148534f1b", +- "165ff53589519199fc1846", +- "69bb33c18017fddf18d091", +- "2797689917c95a9d4073ae", +- "527c4b155e3708972293d1", +- "6e007172a16a9c673e635d", +- "1921f3262afb2f3766f357", +- "70a2d453b688803716fdbf", +- "4fbc987e428ed0ce9cb76c", +- "58320debe89492ceee77e", +- "1b0c27c7452322264822f3", +- "66ffe80af410522139e92f", +- "5e56a7d976f1a3334f57c3", +- "536a736ad3a37793dd9f54", +- "407333b3b6a3bed3ef8920", +- "76fed7d89907843db9af52", +- "18019c176b4c9453028db8", +- "4a54d9b3589d5340a01e23", +- "1a4e5bc143bf00e8928403", +- "61f4a55b140e767495cd59", +- "25cab751e23d8e69bb5048", +- "591bac661062f64b8e3f2c", +- "7006ef130d31e12bc44c5a", +- "6a23876a8c802d81d83d29", +- "7cf9338ca9bcab73862b81", +- "e941ecc714605cea72177", +- "4839c6454f97ececa9969f", +- "672d7083ec424e5d883cec", +- "3722a55f27f2c02b34eddc", +- "4f72850630f6f8c1a68862", +- "1a63315aa52cb254b65ce0", +- "5a0c2602dcbbbf468b67e0", +- "23f219093e9b0bb3b5217d", +- "4f6d8c8b0b9b376d42c4b1", +- "7abf68b2e4cc9e3a3b2c5f", +- "75f4eb6de0d35eeaa16cf8", +- "6a81a8d913b71671629ad5", +- "3afeb7cc8f8e5bb8770da", +- "2b0fed7a534d25697e5c7b", +- "2964973c288dced7dae8fc", +- "a6c54d0ec55adb4911efd", +- "7e958697030784ae5ddf86", +- "7fd4ee663460087b793a80", +- "5cafa83a10f929b5076c60", +- "452d3dfff11e24bf680356", +- "39242760b51f2f93fd4721", +- "18ec20d19a478746123b", +- "30f4f5617cc73435ce74c2", +- "1851e925707895d37a37f2", +- "6400e87749e3bcbd750d89", +- "6c8879d694e1a0b99f8e42", +- "3ecf9d05cd62341c4f7784", +- "7895b432001edf846b7b3e", +- "7c6b359299af5c59043711", +- "13f13f9f2c877cb73ba5c", +- "2193bc73ac4b40415c95b5", +- "6351b2a5f477112f552683", +- "48eaf0293f956717b8f048", +- "21a363ab0e08a4336f2e44", +- "d8c34dffd92c1a20d6a9a", +- "7dc98aa964908b313939a9", +- "327b2b8d0b75e0d83a5b04", +- "2d1b2f087facf1fbfc7e69", +- "6e97dd298eaee757a3cec1", +- "504d29ae2e5a021d2bb278", +- "5344962f90f45cfaeb1bce", +- "767dc9d34c09b03db4a0e9", +- "731a7b89f357bfb855a5b2", +- "42cd59499a0ef57d6b0009", +- "5d711409f3faa9ea87abfc", +- "352389083277fbbbe66ac3", +- "30a77107da1d91a699e9f5", +- "39bf9c3f1f0a1a15264530", +- "5ce5e0595ad07c8855357b", +- "4499c1c16fec3546d5903c", +- "5b8e9d8b290e89e5d9afc3", +- "214f18ae0c9aa7a1b8c02e", +- "639c2fcec8b9dfcc987387", +- "1536906705870049755028", +- "e0800809dbab6d41345b4", +- "39489c7fdb445490d498cd", +- "52c4d1c2ad153a3f70bc0a", +- "540f5a33d5aeafadcad19d", +- "6081e77fedf3898fd66607", +- "584b7d6f0b43ddd0b397e4", +- "7d8b341c82b019a8d56c92", +- "2478db790ed59756cef964", +- "93cbb2483673e4e0dda30", +- "18ba9d869c489f11ce52e7", +- "52cfcbd15dfc6c476cfc76", +- "7ae1d007cf030664c6b815", +- "9bea90a26f9e93743a998", +- "7e62c15038abb8244531b4", +- "3cb748f77d638122329dca", +- "1fa330f6dd5f3ca09176ce", +- "779559a53e6b62275896e9", +- "51a9b0945a0908b1d40d24", +- "2b13e041339df4d5a521ce", +- "7256923d608836710a659c", +- "48a999a2dc1a23a934a6fc", +- "ef75fc5d77fc146e975f7", +- "a058b3353ac6290d9f864", +- "290ac68bec8aa8955b7e97", +- "754ffe6bc2e7525e892fe", +- "5d7c2a1d1267b7a252da1", +- "35714b90920ce6fe1f850", +- "456138a50c3717947be48e", +- "1e2093f76475f58a2dfd79", +- "4d8859f357a36792b7211f", +- "3505fcb3eb2690f88b3be3", +- "2735b2e6f5f08a9e9418bb", +- "4c1f6b587fd26654ea69e1", +- "351c5a0b997e45ec21b614", +- "1c960c994194a1366a2222", +- "352a4a136ebd7ef294f370", +- "2df28a1b78b46f16aaf53b", +- "29bbe5fdf14e69065cb80c", +- "30eff32d49c10f325b8e9c", +- "628d18e095a8dbcb9f43bf", +- "1efd2b46d4a8724e929fd9", +- "13221a23af3045ec5cea35", +- "15d4218f4bbf0c95cd9649", +- "3f5027ce278d444a4dd243", +- "2d5e8f78718c2d4660cc69", +- "49cb6ac7a2bfdc54300006", +- "a134915353ce113eb72dd", +- "479e7025ae3fdc2bbcbe22", +- "64ed03e382c11a32e34cf4", +- "3d73fd3c3744e9ec5d2d04", +- "116da33e19c8b80384fe28", +- "68ee183b2208228da8bab7", +- "1abc0d15793c655cee4a9c", +- "307727bd97c5db086074b3", +- "1d6812727d8421d0e03a6f", +- "5b39ddb704fa58142076d", +- "2f78c0f7e7a90558573941", +- "35a3ab4773c5054a30c44d", +- "76c132264ad2a774a55164", +- "620084c5da2910137e2b10", +- "31541f24753a28cc5b51d8", +- "52f5adde99e4501e4d1c61", +- "779eb73caa637aa28db87c", +- "3a89578d6ca992f91249be", +- "536be2b3e3829710aec51b", +- "53c95b2787b88db0682132", +- "4a0fb16cc4d1bdfbb239c", +- "8b462e0f7448b549fd688", +- "783e0229f219bc18b705e4", +- "17dd6e40297f1d32786291", +- "4f2cc1f6f7aba8c20a670c", +- "479fc9912c9c81152eb474", +- "117480f169f81bb3e8609c", +- "df7ae04689867c9ad97d8", +- "70a1107bc42bfb598164ea", +- "557361125249092a7bf932", +- "5cd319aa7906a96d2f6c7e", +- "72a7ca4a8dc56f9c652281", +- "dce90e419e8d3f96eb5b4", +- "15bb5d9b44eebb27a1e60e", +- "2baeaedf76503008b9e428", +- "7aa81a94a5a230cf59a0b9", +- "55d7bf2f5724b5dd0a04ae", +- "e1ef803b3674bf39884ae", +- "1738ee1c8e104064e07249", +- "7ce4bd3337a7333159cb2c", +- "38110b962a169200cc9f0a", +- "1ddeaa1e583e9146210f69", +- "cfc86f804a481df48868e", +- "55a41153a33cb4649703a5", +- "5eb4d93a33b2d2e2c2adad", +- "4cd904fd9401eac5ad7f1c", +- "502c6a2df8916b18106088", +- "6259df76b87ab2eff6659f", +- "2f85e68dfb9aea66d7f07c", +- "1f1eea8231315133cde938", +- "6863984d7793407587e8e2", +- "7b5272bdeb1b01fe56bc29", +- "26b7df388a02a8279b0652", +- "7fe76cd2c5affa913c2b41", +- "733b81816da25936e81af1", +- "235baa54adcc67af92d06d", +- "4e6cb8ec1b00e2f28b3a7e", +- "88b8371baafc87a9713f4", +- "3b0283be973d59ebf4242f", +- "587cce1cbd0dee8b98f262", +- "6cfdd09fe2bd66b85c2e00", +- "12a3196afc09a79694eb31", +- "4feae15528510f186aa1fa", +- "449ccc3923e92a0bd2e3ba", +- "4f74e7ee01738298062093", +- "6ce98c831091728c0e73bb", +- "4bfd93fb985a44ed0569f4", +- "3c8b04f81e14e10396b582", +- "6cf76079225189eb2608ce", +- "76e87d4d2740e137511b26", +- "c62790b24bc842a717e31", +- "516640d56302eb15061b25", +- "60c8d2e958387c0d0627a8", +- "402c7149b20bce787c7e83", +- "64c275af1abda385c2af0b", +- "5088a2317aa34dd5bb1b4d", +- "67a9131aabd5255bdce732", +- "d452f805a2c35e686e107", +- "5ef5512b3384aa1243daa6", +- "6c1076c01e9e44fb047889", +- "46bdbd32d31b2a36e04e0a", +- "527456447c2748239033cf", +- "356211f56936e183312837", +- "449d4feccb40da2e122aa1", +- "43ee4b35cb3cdc84d1d5db", +- "7651ee2e0f4d348cbe95bd", +- "2ef2be0f7e33ace73bab4", +- "4b8968b5c5a93dbb4b2b55", +- "7d2db742721c9ba686ff30", +- "48e4926c40cd6ab5e92ffc", +- "506e6a05e8de5c9198ae69", +- "74a156e77589342bbef3d5", +- "798019b397419c8d54fda1", +- "5a7d2dd2aa2028d4da8f42", +- "5ebb44d93cb77417b61c4f", +- "1630a212afc84f038374d9", +- "3ae30b1b5931eb630bbf6c", +- "37ba1e609c7b12a8e32733", +- "238de3e1606bc0e1c33adb", +- "149d706db4fce00c71da76", +- "524b77666e02692a642407", +- "ac6c9987de6c73f2259d9", +- "51c819b9ec191b60920096", +- "a961f7b95836d3a578170", +- "2bb1db818cfd733dcce0b0", +- "51eb043d3564fa91215f1b", +- "23693b4063cf0fa20dad42", +- "4fbaae68fdb253d715d528", +- "69a784edece7c38bcf7297", +- "1d595362f3a1b4c77729e7", +- "22f18c95264f1fb742c348", +- "5637e5d4438a119a23f043", +- "75a7fc26a6faacf109b345", +- "3a051daeeae9770973713e", +- "4b21ef5da2b744139c3cf1", +- "471eec9edf3f5af18be6bf", +- "341851bd5e48e20f0a412f", +- "f125d56d3c0c2aaf7ad05", +- "c91beeecaf54c95dc1b37", +- "38e1e6200860f4072a8a1d", +- "3b3a5f854ba249c04d075", +- "4170c011864f5582d6a738", +- "17fc45b2690c315a5249e8", +- "1bab6e088abbb7a786ff3d", +- "1b388caec4f8538425d93c", +- "6df80f50564e811e245eb5", +- "65a5c9fe061a38a8c6c2e0", +- "18e5cae7f3bd61293a8c2b", +- "408e6268fcd75479c3bece", +- "514d622fcdfc26212b5d14", +- "435abcd28c0cfc9f321db0", +- "710608c33a517ea5d5359e", +- "96cf28ae783cd1e477aa5", +- "5685392e26e4e637394c54", +- "32f953543bd07093a29e5f", +- "6806f2889f5316f4c57e07", +- "668c0767178119bd41ac3", +- "6e885e79f7b5fe77214da5", +- "3915c8d33da94da27c1249", +- "762f2aec62b91b262cc99f", +- "7ce0b194ba3e31249ab36d", +- "5dd52a5a11350a9b7572fc", +- "404ae85658f9b08174632", +- "7772e0b990ccdc614c11c3", +- "573747456cbe53c844796c", +- "3cf5810d8c38a097a7561f", +- "269c017af27ad44e6b201e", +- "2835e7f4b39073c5a451bb", +- "ba07dcfdd701f16f45aca", +- "1b6a00fcabec41d4b43ba2", +- "67da5d093fc207176dbdb2", +- "311601fec45703953f2b91", +- "483ca240f22946b37af3c", +- "758f193f192584a42ebc31", +- "16fb077509115b4c0ee442", +- "2334ccde40867fa1d0bc15", +- "3f0177714af6ab07d870c0", +- "697c3f9accda8d3543f182", +- "59a5901c521b74864c8fb2", +- "17961b8be9d0332a213177", +- "69defadcac1e44c7a1c0bd", +- "2df92a33b308b4efdcaee3", +- "3a603b28f5e57fbfd764b9", +- "65c75439faa2303912b32e", +- "121daf29269045f5bdd20b", +- "7adedaa3d8ff64ef5910ed", +- "7b59158d38abcc0653e41", +- "63bd657552fcd47a1fea3b", +- "3951fc47c9cf417968c09a", +- "7b97dd845f9509d060f296", +- "67cd089f73cfc8807dd840", +- "b17adb15bd895ea825438", +- "3860f5646a470f19d720f1", +- "1365575dcf06e2b1987b3f", +- "5fdf7c6cf80f5f4d619b9c", +- "1e86f8d9f30e1c9ee2f741", +- "2f4da63191088795366c81", +- "1f527bd93add787e619f2f", +- "1bf7de225f0abb4eae1da2", +- "7eede9c7d2fd05759ff0d5", +- "7c4ebd51c09994a5c2702b", +- "2f27f9f5b37e53f26a3367", +- "1a91f5500bd170effa0820", +- "14e76412c1e117fa60f762", +- "27869ae6bfa80052e928d4", +- "36e5208ae458480078d5d", +- "193c88995f60dbabf1ee79", +- "55509fd3a52bd88fe29e11", +- "60188d16e528a5d2e06d3d", +- "3cd40ccabd157073f9e356", +- "6f7417b6bfc27461fd2524", +- "60f671cf9f662680d04313", +- "6a1b97013fc782623a1d18", +- "4a5a912df871eba16ca2bf", +- "4bafb874450e24655961f3", +- "7fa7e63240bd502dd4b06b", +- "3ac9b63dfc3067c1c4627d", +- "11978ed9a01677cec42ee0", +- "6b488f646fce9835d43f44", +- "2449f6a2ba5fdac5a9c1d4", +- "1fb4d17ac6ee317ce5a547", +- "230119c3b2a6b1bafca00", +- "5ba00e958e1473bae28031", +- "2e0a934adfe422dd136191", +- "64af53c3c0ad963e3055c1", +- "173ee21e60a88ae566e166", +- "c25f982adccb58e81ce02", +- "1c0d48f6283945e321fdac", +- "15b86ea9fb5f9d46bb9d95", +- "12ea1cc2026e4f5211a159", +- "4948e72d6c06974bcf7212", +- "474d5e705efa51e5e97d39", +- "3a928b86dc180342e1f053", +- "68570d0c5fc94ab3c18486", +- "33294a38a5c8a431b3624c", +- "7f5271355a686a4df7e516", +- "2176005ea62a7fae1a0ec5", +- "7b7ba8150a404335a3e978", +- "7ee167869f16d0f3096184", +- "37b012fbed4994b5319766", +- "5a9897a2da0299756dfdb3", +- "22c922d5b0fc736e5f1adc", +- "7c793c0d415e26d57ec92", +- "11326e189db8b15b0744ff", +- "39f2517276288f74c45e3a", +- "47b94fbc156b869e9d16b9", +- "4a27b941aa4c6ad1e07548", +- "796842dd6bfad2f98912a6", +- "561331256e1d21664a1287", +- "4d3db82b9d6efaedc42576", +- "26293d249066a3014c3338", +- "29d711357943b0afaa5b59", +- "3baf4fa4e9f273acdf732c", +- "22f4901fc0a8b24cf62fe4", +- "fa65751eb4d84785986bf", +- "1c89d8520ef104ebd20ee", +- "3251a62ebf3abdb7c9ed58", +- "59db917020bf7253782d5c", +- "52c455dad0b267d43552f0", +- "599102d1f2500d61d762c9", +- "77024358b3e776b2c5e1af", +- "3248d851d401112b750bc", +- "36f20d7e24da8778ce35f5", +- "4dbcbf0e0833361017aadd", +- "7a6a150f8921047e15edcb", +- "5d53571a7cc3688e6944b0", +- "3de0a5abf20a4845d76439", +- "330bf157841f4554c8f5de", +- "7faf5fb28aa48ff83cc07", +- "ff765fa35889a47189d5c", +- "1bb928a5ce5b6a93e4a6be", +- "443f4b4ed3b1f2c8fe8ce8", +- "159314ac561f7431a71dd2", +- "2ad8da8cd83b1521d7659a", +- "2e6c1f41a9866f4d867e01", +- "2bf095a2fbcdb3391aec69", +- "7286bedeaa0c2687819d8a", +- "1a1cfff05adf1a427c023e", +- "7677202d8f05f9287a6047", +- "144036e909f39a00a79653", +- "5d5d0b6bedf48b96c5eb79", +- "2aeb5606838c910769daa9", +- "36b57535eb2f884ec435f1", +- "26639427b4cd468207f354", +- "567c07ffdf5609acdc57cd", +- "46c6a4606b83331dd733e4", +- "214ab6242649bf5f0673b5", +- "456b75b7118ddbd9c05113", +- "23f47a79fc10179e2f1aad", +- "6750d083991451ddf24ddc", +- "9a91d432ec896438ac971", +- "62cba5cd6ece1fcc005653", +- "146e2b3f7404eaa2825f64", +- "73a1489a18b0815a03faf8", +- "4b81add44caab6287f5254", +- "43da9e4b9fc98c3225df02", +- "73c9485e5e5379f878695", +- "4b0e392a6b94b0716bcb0f", +- "627d01094a2553e7bdde46", +- "6e1c49a1adf3346b270d76", +- "2c11fd859f539479044b3d", +- "5ad56a9a03d1277384501c", +- "538b76dc0991647c99d6ab", +- "2fe38c447768175651bb27", +- "2d8207ca3331c2f27a3943", +- "ac1c0028dc3aa005da816", +- "5830e5e1c9294904118c10", +- "4fc1aa30a26bf05e1cf79e", +- "37ca6d3b30cb2687e44f7a", +- "3fbae766d352bf62d71ec9", +- "5b8558cbc60eeb5d4d1e0c", +- "3c0ef922648f93834d2bac", +- "1f216750a4d1686b3b2227", +- "54449f7dccf77fd8f14fff", +- "25b4f424465c145a893505", +- "1533a8f5ee81c2d4352c6", +- "747f5812283a8ba1a43af4", +- "42d3b2e606813eb48865e1", +- "771e23d6155cbd6574be92", +- "6937a623eafb54374944c3", +- "7ebd8ffb86035ffa249a5c", +- "65a59676f2a0f7f5358513", +- "4cc1b8f60c7b3b604dd7f3", +- "8c1b60a22d754654b3b0e", +- "3542a00727cde7902f64", +- "46dbb8e8c99f2d8cf603ab", +- "449f89bc8e75ebc93c06c2", +- "42fe3f1413aec51428fb64", +- "6ea50d7820cf1c46cfdea8", +- "5e81e2ee54fa1c8e9216bf", +- "3cdbf096f176a11d399e68", +- "1b8c58018b9ec962054ab0", +- "292e4d75da1a76fa4eb730", +- "23f737b6f1527cfce0303e", +- "1f2e34fd7020d08b01b7f2", +- "1103bc87eb4e4e572c882c", +- "4796fc52e00fbc5d65fc02", +- "6ecdfc4db1fa1b0104403a", +- "5d780dd5bc1f62ed520130", +- "403ccf27d3ff3c3686d654", +- "7a42533b0f16560c421482", +- "3c52f4c6c583d5b2a18105", +- "32e84128c0dfcdebdcfc5e", +- "db6d45038525122246c3a", +- "7e9e8be590540d41cb48b7", +- "4dac5ec68e30db33d790b3", +- "4a9951c3005ac4b7d775a5", +- "8d7ac16a6c7fb5dcaf362", +- "7a7267a5eeee00421b1bd7", +- "14b9cf8ea7c2a2aef663e9", +- "7a75465db2452d11dbf6bf", +- "49da4e6814895f7566132", +- "6ac2b95852f2b3848657c4", +- "29f43cc681e11325bf172b", +- "41d82e9988854950bdb48c", +- "6f5834f39b940405114e26", +- "754181ae9689816d4fae85", +- "394398fcb25e82a48b8d32", +- "693e564c43456862d84db1", +- "5fa8c4e879ae9ef5c6f178", +- "3937d6181e67f43d9bec08", +- "4bd73bb75df0b9c8f31e93", +- "417a5a771b0fe4694065d", +- "47ddc74fced651c57b4d1f", +- "7746c161815ab2091d9e21", +- "72216a00ebfc9de1e963c8", +- "74c5b771dcd8c4719355d3", +- "450dcdc45566039112cb21", +- "1ffc37c5751a51bd676a97", +- "553adfba4c4a6d20491557", +- "d65fa4e9fad0f9180af7", +- "6151a60a864edd0e7c7b30", +- "57a6c26c5e5dea61f133ee", +- "39f0a0674e65b2cad4a706", +- "29105da153f2a098ad094b", +- "c16242d78c3d8fbfddea4", +- "235bf7672a2cda1ab01fb3", +- "3faddb5ddd2bdc683de72f", +- "75964f1abb3f7cc93e9f96", +- "62019722b2962f2ad1787f", +- "67427f6921fbdb98c3e375", +- "2a0c42a5cba7fe55a006e5", +- "2bcf3f6e0be988750bc0c3", +- "31cc33f2d92bb3dc73372f", +- "553e86c66c2fba13b95f56", +- "75f53c77a2d34dd51c6882", +- "6f8c0ef46d2275dfe7e84f", +- "5c1c9591ed7cecac5be504", +- "e0fd267f226bcb77b4105", +- "1aa73126a375b6cf5e8b5", +- "5e4eaaa44cce4760757194", +- "a15cce75efaba6c1b571b", +- "7f779a7314dbb8bea5c652", +- "2359b0102f9a1f774278d", +- "20bd84ec27cae248ea38a3", +- "38a3fd25a6d9f4f7c85efc", +- "2117da386a0ba848e04619", +- "6db55a7581d577d97e45ef", +- "68437c168764f9b52e36f", +- "5574ce6446f5f9b2cb3ade", +- "2a8fc7a338bd0e95e61238", +- "6dd1e30b456df046e42f20", +- "360136af955e5fa1edc1", +- "403c97fd7a8e612b101803", +- "e8a31983f38b3bc04d83f", +- "2fc4119b8d9484cd86a0bd", +- "23b23c226ec7148e9ecfd4", +- "40f14f4642441c80c723a2", +- "255da48e767df6db73178f", +- "5f4ee2c7a7d447e781b997", +- "4945531dd0d285dff322e3", +- "58de9434dcaeb21007cf50", +- "4eb92d6051c08bfec28d32", +- "46777bd089a8dc8c44ba66", +- "155305c9e80b8231f3fea7", +- "27e0d5b6d5b01b974468e6", +- "3337445fe49877ddd94c8c", +- "23ff36317f41cdc69b5f8c", +- "5798f45a6d32a5d9e220c4", +- "6b1b87bf69d8ba16154459", +- "d959366c9d2eed9c988e", +- "7914f6f164e20860badddb", +- "fca586b3bb595a8d4101", +- "68bf1a165a85b17f192a39", +- "7b94e69ecfb1ba4bdf42b9", +- "363177aa4ad204478f4d2e", +- "4ec109ed0d029a0c6bd1c3", +- "ccd4be560162041ae08e2", +- "3e7a71b985de5c6c7a9f57", +- "1dcb001f06c75da3270a59", +- "7feefa2c38e3a6212b4cc2", +- "58a47971604afebfc2dfe", +- "175182c7cd2ce431b0150e", +- "1ff2197a0e5b3d0b65c928", +- "497b40c11c5d479cab5f20", +- "5448bba652328fd63e3ca2", +- "748cb85b7df9ca5a82d4a0", +- "5b60aca7fe85259aa048ba", +- "68bba5659f4f20356a0cad", +- "16a2f9f4e53133020d693f", +- "75df623177a9cc914a680f", +- "dfa61531c98e389318ffc", +- "12502410f917e813c566e4", +- "385c720d2080ae9544a074", +- "15c5021e3387b5104eda39", +- "6ed402123cbfe00df8030b", +- "4e9e415c8033fbf3989b6d", +- "1ead4bf29c5aa1e11118b1", +- "3eed8387e5a22f84995caa", +- "6207f87b59fc321d1fa8c5", +- "5527388c03206dff6a464b", +- "232706fb395f1e37b2683d", +- "5eacde9e13242553f24977", +- "257f0dc17de9e402db5577", +- "26c8838f41263334d39302", +- "5ed2c798bc4d3df9693b4a", +- "59048c7bc400c1b2f055f1", +- "60ea199093a4e9f80613b6", +- "3fdb397b831af56c0902f1", +- "47be6483decbcd32c50b44", +- "715687651f6925a41a3bf1", +- "5c585a64ca68d89750e9da", +- "1f5e885344b51456b2195b", +- "5d2602e9c7bafe79929bee", +- "25b65fbcf4deba1535165c", +- "4bba04cb6f7dfe33e4bd", +- "4e1dab19fafdbf4d11123", +- "3b79806e60c6443e5b75ae", +- "28390f3626b1fdadbcbfd8", +- "2ac5b705311ca0e8e6bcda", +- "21cbfd5db5cf856bb6980a", +- "31340daa6bee66dc702e47", +- "4520d49550bf0a2328020f", +- "6a91ca9f24a59bd3f77cce", +- "590c069f4d458da38448fb", +- "4eca5fbd35a4778cd18f80", +- "288723d0eb9a25150c0772", +- "6bd55e81cea4df6934b8f5", +- "684e96f56360b04576ab1f", +- "10c2f27dd2e5d8f77a071d", +- "78b61404bffa36b135773d", +- "9b13c11e290284a86caf", +- "415d623b63f929b3ef879f", +- "4dd2e16c6f9989907671be", +- "72e3a111047449df428c07", +- "27c4576460764aabe86ca", +- "509ca3fe7eae200044712a", +- "1488492f946cb788d721d6", +- "5fd2fb0300581c5f59fa7c", +- "cae1cd222ac38b9a89a19", +- "62a4fc7a9af2d27e92b08f", +- "2dd86ec9cb242b4e68016c", +- "615326e14c6c74c717def2", +- "454b67d8b7470679eeda79", +- "359b739ee10f4c4f24e721", +- "6714be0beb22d71708c5e6", +- "571cc10547604b09ba9b69", +- "64981a92737099a91d3794", +- "58b898760417610a09ff41", +- "5e1c654c63269bdc77fee1", +- "37e704706a7967491e3628", +- "76a279212b584d95ed2cd0", +- "64d1d7c43b00bfc99b8bb2", +- "524919eb6636c6c6c14a82", +- "4176799b704bfacae7d897", +- "2113e1a93f5d2f1cba0377", +- "47626057be8af9d92cef74", +- "31fcd9e9b87aae6bf32f83", +- "2cf0b3c6e55d4f6c794d8f", +- "2f36ea2bf51461b1407878", +- "2840ecdbeaf847ed4e56fd", +- "4dba440f7f398ce0198b25", +- "6ef7e0b470470f565c088f", +- "58a41d74e16c1b1fb6cbf", +- "68b020f430372f0b20817e", +- "396792f2585d3e823623df", +- "171772c43b172c6f59b4ee", +- "35da7f1fc27e6edf7e2774", +- "5fe19870cf156902f09ea2", +- "4a99080981fd90fd8f202c", +- "4fb7ac8e103e64af4c501b", +- "32124e45d595b542218cca", +- "4cbbf282cb8d5b492509da", +- "26e8b6fae1b81184be307f", +- "4019e2ed5f4f686e75a334", +- "aebf119c49f1f5d4fa77", +- "214de8b9e305b92a9ebc6a", +- "155503fef8a8a42650f8de", +- "4cfa062853643ca21aa8e4", +- "210804240b673797c1da0b", +- "4499b6e3311b7fe5b9c98e", +- "904098cdbfd4389279e30", +- "575c81fbd5408f583cec84", +- "2cb3e5c4dae6b173319195", +- "411254ef95bca10cdc61b9", +- "14266a10ce4302dd32d262", +- "14a25dabe8f8f9bd2745b5", +- "7c2bf4a989b0889ab6c2ee", +- "7bb42f21df6b474c926cab", +- "4edae7063e31e196fbffc4", +- "706df4fd50e1c42994aed3", +- "312ecee1519b0617d31186", +- "32f8a36cc1b46c25cdcc28", +- "6cc9f90d012be002904668", +- "69498de156a0aa10a4e2dc", +- "6bf558bed09b770ac7b7db", +- "45166035762ea541feeea1", +- "2bcddd9fb0f98505c98aa9", +- "56b71258283af76e7bcfab", +- "3349dac2077bfdf6a12d86", +- "39450177cdd3980c4efafa", +- "4ebe9580f66ecfa62bdae4", +- "2d2c322dac49b5fc4277a6", +- "63a2efcfe030b5eb3fd526", +- "2327087d544749f348c909", +- "3d49c943bed92220933501", +- "2501ea3eadb12569e01e7e", +- "7c2fed1746d715eb95529", +- "3adbdefe2bc4d894d3eea5", +- "574f9294e066c8fdb761b7", +- "69527863032c1ba7d7e238", +- "78778c448d7d69eeff19c7", +- "63a482d47b34384d6c0abf", +- "37120883f03d674fbee3d7", +- "46789b05c1e88afd58b2c6", +- "62e55ea318373ea102e458", +- "7bfe5c12baaa86c60d8117", +- "6c065cf636d6bc65762095", +- "45109475272b0ee96581b7", +- "1b4e22a54398ec5712c2f5", +- "c0bc8c55f3b95e521ebf8", +- "614224558d52e5d4eb23b8", +- "532cc2e0afe1d979c42a70", +- "6e48887c0bee3ba8386f63", +- "726d30610282ed39d8f203", +- "53a902325a9087232d64a1", +- "6e72d626e97997cb842159", +- "1fa48382ab305e0404adc", +- "3d3a2d2ef7d22dc8adb10e", +- "59aab11c164124e5cdf604", +- "7529b300b4b89c580a5f62", +- "206a9c38358f291b01e407", +- "47267802b4baf11a616d7b", +- "1d50b663f8750fc777a8a9", +- "4113025c4b26d50d501a53", +- "21e6a33067365b1e718020", +- "1e3f1f00ee5c87d8bcc6a5", +- "37902c15fea70cc2588984", +- "330554538efb3452d928d9", +- "eb12a34ffd8e97426aebf", +- "7f53a40fb6d59c55fc0a6a", +- "2ccc62a5fe0c2d164b78ac", +- "3a82f64175d5b3caec9c53", +- "676d8d92a92b0706da21e1", +- "5c91f707bee21c71c33c34", +- "2ab6145578df975521753c", +- "6e20ab59697e8bf608ee9d", +- "96afde4db924db62eec7", +- "2d980e097ecb2ab91b9b92", +- "352a1b67a355f38121c462", +- "7c3ad9d6ed54817d082b65", +- "65e071aa89e8e9caa17f", +- "4e4d1094ae9ce9f42b1d71", +- "6d82429df8c04f3e8cbdea", +- "201a5f031183f9e3136174", +- "4b31d20ed3a1f68f117d30", +- "309eb70bbb47b20185134f", +- "bf1c05f166718be1c6836", +- "29dc0e371f2a3ea6cf4d60", +- "610a799f5f9443dd8f333", +- "7ca0b74cff2de67657aaa1", +- "31018337a926110b0a5b91", +- "3c066553be4fa2a741db4d", +- "194fc13ec819c9e2289cea", +- "3c7d066200b6ae5892048a", +- "768b4e15703c2b99a95ee7", +- "66673b06f4474ab9ac84e3", +- "75b60c74c3f4835e0ba3f1", +- "282bde17894173789173e7", +- "6b386c8a9795cf0b45e160", +- "1984882a708094eb26643e", +- "7e84a589b79843d0f09d89", +- "7f30d40bb0193bcc3bff38", +- "1e9e640158c2d5ef405818", +- "46f7147d837df6469c39be", +- "717a62d953937ab8d63ef4", +- "29d27ddd5f46b0a514ec85", +- "7f5d5abee4ea627ca346c", +- "1ba30d22d8ca0e3412c0e7", +- "1b892a6bc6d106036dc210", +- "78208a8be2c33504df2573", +- "2d92e146c92e5c2141114e", +- "65ccc844f43d7740c3bb83", +- "6cbec7ee27571943d99309", +- "7ab8d7968452d732fc3362", +- "51e871e33b066886db1e57", +- "70cc62d0a35cccb85972ee", +- "7db23dcfd5b48847b2da44", +- "38863908f348e0ff24d2ea", +- "5f7998cdc984bda089a530", +- "593ba411e3481cff090a6e", +- "30c01b8abdb9d98a7941dd", +- "46861d4c2ab5de181f3e32", +- "2f44e6e7eed452c1b02ade", +- "31e4383d0d65d0adfc3084", +- "44b51755bfc5410d6cfad6", +- "2b89a454954d4c6b2e2120", +- "7a1817cf8f21c4f863437a", +- "1ece2489d9c16fd0d7c093", +- "7fd049d0f5d16bca84fbf0", +- "284cbec8937114a1728cdb", +- "2a6ced30aaeaaa3957eaf", +- "41ec16a5c725c7d32d3a8d", +- "2c1cf6d476ed98aad97b90", +- "715fb02624875de3ce495c", +- "3d325eede75d0a573042e2", +- "4550a8c9126d63e137546e", +- "116c396589d81e0684d5a0", +- "48ad93093caf03d61b0aa8", +- "29bfa87365d098b3fe8377", +- "3e14120ed24ebae50e64ef", +- "1924697a3681efc60e8e70", +- "1e1de465daadd9547d63fe", +- "32c9397c9adff65d943965", +- "41ff1be99bebe99b10f273", +- "cb351e8f1a28278af3af8", +- "5939fc19fad9c14c8917a9", +- "634af4f8ff5eecb70f9b3b", +- "14b126e3c0b0f4dae2ddfb", +- "39bc9fe63b4ca1891dbe7f", +- "3b77afb6ec85d92608bbc9", +- "6308b8f5574126f70ec3cf", +- "2928531ef291fb90d243e3", +- "7d43897c9a717ea4ffaf53", +- "542f3c6130072ffd145c0a", +- "57b79cb347145bcbe43bcf", +- "68855602ae559673b8a2dc", +- "77f657453333dfbed3c7e5", +- "1fb7c568bdffd12b767330", +- "abbcfb2e4c3da6b090978", +- "36224c16a9190272a21e14", +- "47df2e03e1548a16e223be", +- "f6c4daf384fb3d39aa985", +- "6978fb86dcb4ccc82a3738", +- "670c6449f82194e5367c1d", +- "75a29d53450973ae07e5b6", +- "1a0cc5d78d1da3759fd0fb", +- "319945f43efa75c6d6fbd6", +- "4a8154e2948099e7b7c4c5", +- "2353c3f920ce7af530f96d", +- "781973046ae51aa956a060", +- "21789b3595bc366315af2", +- "4d63e68650d056d4e2cca2", +- "6eceb600a9b81fd3aa7175", +- "2021e0329a909a39851fe3", +- "45d43d697cb8503c85839a", +- "7489fd5407cd56abfcfc49", +- "57bcb68e1f52791794bf4b", +- "71db6b9125d5ab5b3e7493", +- "4e72dcffc8f26eb136b7c7", +- "890072ab6d3eb608d30ea", +- "2f1b9eb8c8ceec3aba8c3f", +- "269ad3cfbd18bd255786fd", +- "7e18b1dc04cb3af247aa31", +- "43cebcc2f248fc1fcbd6b4", +- "1b9995439565d095eb8a8c", +- "66e2564796168c2d0a015a", +- "13c9d1e81de8cbb64a1797", +- "657128352843035ba5fee1", +- "58c411222783451febdf82", +- "2970c6e86dd017c5341ddc", +- "7bb1913bf745fa526f18a8", +- "4d0a046c7ec4f54117f367", +- "36f24af02e5318171bea53", +- "9cf05f6855d4068390948", +- "1107ffccdffb2932659325", +- "2ae1383e51812f870ebf41", +- "3aa6d80b7b4477df65330a", +- "6cc6a998d40d1bad211cd", +- "7d58cee39bf1830f1b3ec0", +- "dbd1bb9693e65c5eeef4a", +- "4385d494a7bdb154810c4d", +- "4a64cce2fc4633dbb63e09", +- "3e9654e3940c0f541b93cd", +- "1207aa2a4ea7c882b5e76f", +- "43bc8bffd5b4fa12491d7c", +- "7df66ef2eea696dbe6ad95", +- "4e203019ba4b94cd691d60", +- "61978b574cf8f6d53118d6", +- "14816e04a6b799d1ce9e1e", +- "5c699bfc1a98ced38d7c88", +- "509dfa92ab81408672391b", +- "2025bd13134bf0ca69b0f6", +- "675948e6670907b03227ed", +- "90bd6d6fef2e358a664bf", +- "2f1dd3930a2948f2187f86", +- "6336954989b8a716380f64", +- "2655fc5da8cafdc10e8c6c", +- "be26e79f27c2fffd5718b", +- "7568ac37df7da28c47bab9", +- "3128342c1cd21185c739db", +- "1318f3d7743d8ee4ecfdb2", +- "26102582959271955d45bb", +- "1118a89d656497538996f2", +- "4d74065738715d35d47743", +- "2644cda468b716b53c99d1", +- "2aec8efef6c41604b67a83", +- "76393b1564fa2cd841480e", +- "87eada956963224c06418", +- "44f34a642236b1e7e4c8fe", +- "5edc4541d1854504d071a", +- "4a292844d7aa26520c09b1", +- "1526a67a2f54717285cebc", +- "7decc101d84d7378c8efe2", +- "1f8889a7c0321f5279b37a", +- "71d26320321cdb1dc925e0", +- "b8385ec48f904d72393ba", +- "4a2cef4e3606d1b9422334", +- "db7255fca12f37c452ffa", +- "4374a87512bdcb27925ebe", +- "99539a5120bf06fd3edb8", +- "4f7806a65676c896ee7db9", +- "365cb247c96e7933341e76", +- "7964fb4049b23d750b6f0e", +- "48cd6ee15c4874d342b21f", +- "221728332d3142e3346be", +- "198d839621f761dde4f853", +- "259839d29faddb791e3548", +- "15324434e27844cc4fba51", +- "60e351e7834b181d30a00c", +- "6337453f9c180b8ddb37c4", +- "608a29bc043b54adde90b0", +- "4cb0c7462e90f28fa251d", +- "b5f14620587f1e8ed5a45", +- "3c994e655edabd5cfbe8b8", +- "35ebfb3fd5a71979daee0c", +- "2a1abd32897155b55014be", +- "67d12b5d61741b8623f378", +- "21469f9c49fb4d2fb54baa", +- "728aa131a37012e184c2b6", +- "6f085a8f46a66e79fe4f92", +- "1a95aa2ba56c053acf7e56", +- "1f1c7eef9d0f99e1e209db", +- "5b57bc12988f27dd0ed418", +- "5e9464fbce6027257d92c6", +- "41be4715ccf6dde8b12086", +- "25ff556cf1afefe2cd2ba9", +- "59f67a0c66d5e9744004c6", +- "23c20aae79c2ffaa75a36c", +- "574f95a475dce62a3071ca", +- "4a98326f880a44e2d6ea5e", +- "39f7a72e1daced6411b1a6", +- "37a4477749686070e7e049", +- "51524048af5a6750b1955", +- "43012f86bfa02bf0033ee9", +- "4253e27061630b9343ddfd", +- "520db901eb8309582e12a2", +- "656f70349417ef562616d7", +- "13cc5c5fa7afb2b7468106", +- "1916345f1ad90cf48c6472", +- "a80defe299bf7c4d81738", +- "673a9bc1330de8c0b0abe1", +- "226f7d490aa9d47314570", +- "4762e175d924ca1dff7d06", +- "79ae8d3a65221805ed59d3", +- "65838019d10030d2edd34c", +- "46d2651ce40dd1fdd11e69", +- "4277911fa0e430960db091", +- "5370ef9f2399e3c803b5a6", +- "69110081782c350722756f", +- "be2266f15dfa6e02e4a02", +- "7c64411c354fca180b974e", +- "3669075c083d3a0547d7ee", +- "49212e86ec70f1b328e11a", +- "70628248b6cda7311de5ca", +- "5593dc730a3a85d6ce77d2", +- "4a2416a8cf412f996e9654", +- "56f01f51a5be66f649b1d6", +- "1c7c6456335bb722881302", +- "4f571e68d11ba0c201ec2c", +- "2f615de4e96f8f9837947f", +- "9cc0a7524feb44aafa989", +- "13705ad9594243161047cf", +- "358734094106c4c77371f8", +- "48384f03b178aecb456dbb", +- "336699d6c6f15f6ab914e2", +- "5dd2532249188dbe3d2539", +- "520d412f22645bfa3f3a33", +- "45838fc0d9bd4e814df398", +- "5d172643cb569d9b2ab357", +- "34470b1eee2f871c42ba71", +- "16103ea0d454ef686ebf4d", +- "31e4aec6d42e52c762e301", +- "217d231f2ea4bf28c97e44", +- "15bef1b795296c7e8862d0", +- "225461e731f47cbf2cbf5f", +- "520f0b6932233966b7bdb1", +- "6db3eec1da4e57eacd7cf4", +- "5728f13fbf1367c5292a3a", +- "7856c391e8828b90a94afe", +- "6b36296c1bd668243e920e", +- "2f8aa359ac5538f4834ed7", +- "208dfefbc938eb8f166f28", +- "6506edb4005521bcb61671", +- "202377a9328fcb8f661a5d", +- "6f4a829757301eb1143585", +- "5baffc06fe51f5caa49a4c", +- "1c24006c67392d350aebe9", +- "a3d31a1daca53878fe695", +- "6a3f78db4e25085a772f7a", +- "423813f9eb92bfadf14d9a", +- "60548a10984139e59f5d8a", +- "ee2c219af9300476a7d41", +- "6a4862d59f8198b4ea0fd5", +- "76d72d56a09f253d257f0e", +- "52492b4a4856d777ca0682", +- "2dd44a6d1765874cf1dbb4", +- "73040349f8459e94069012", +- "6c290f053f3f46327ee8ec", +- "6d575f1601945a3ca29eb8", +- "3aac1aff3b6e14d31a91e7", +- "4972dfe88d7e4fb02ffe72", +- "5a86321f172c81fbf185ef", +- "50b37142bd10ca63ad3866", +- "50148cebf8644fa7375aa", +- "322164812a5696cb2322b0", +- "4303859a49916073987344", +- "bac1f8bfa0e63045ec3ea", +- "67b770c97867478cc69b37", +- "2cd2d00d4262f35754bb13", +- "678fb8bf7f6342c5764339", +- "656e5b10b9da085176e0e4", +- "59dbf0c177e94a664cfe3b", +- "1f8b63c5fea99ffd6a5348", +- "4debfa77d5d5f3fa106f86", +- "147a0d7fc26817e7251ada", +- "3f26224827d27901ba392a", +- "24364b397921eedc03333e", +- "361de61b4e6057d1cb2274", +- "14b5583a83133add54d368", +- "6ead11e0936e4bb4e855e1", +- "30e484fb4ce5927a937373", +- "571513666bf5e4e0b1c7c0", +- "4be11f1cd60954626093b7", +- "775bde6bde2d0aa4187fe7", +- "5a1b57c203d09cc8a22696", +- "5d5e844e1fd78c36c3341e", +- "33b05c78a18798e4462d45", +- "624f69e6f91d2b9574cb8", +- "172e3a20b269ac416b7186", +- "1f08599df3ce28d2e2a99", +- "3d50a612150493864e2df9", +- "42e82d8613957e0acb2b09", +- "50e45902fe1a308ec88670", +- "23db937264552bf6dc2858", +- "6395a035a6a5e009dcf586", +- "23931a4d64503bc81a5a33", +- "f6074b1e17e08713a2a46", +- "1e604eea4a6fb7804d131c", +- "246e8276fd64f7af18402a", +- "7fdefc35775213402acc91", +- "31f0df7953457ce90524a8", +- "731437b69ca76a93992caf", +- "3559d5470cc8be88bbee52", +- "2a6da3e3f6425cc4caf185", +- "384ac895940651e4b3df31", +- "20cfa0c6bfbdce5e399a70", +- "72f290cf9ea470dcec1318", +- "77ae05c9ad4bb1a82ee6f6", +- "33f6606f82062475e2caf5", +- "373211f704832f37df113f", +- "c663e7994203d116af45d", +- "25b286320c27c0f91c388", +- "2219a8eabaec2cc4da44cf", +- "3fa82c77c11ef3ce373a08", +- "6c65a41601a28b4854db0b", +- "398768a52710b109c92dcd", +- "45e67b0777cb6facf28d74", +- "21ac3ebe991cfe1bade37d", +- "6db9060a2078f4de4b4e1b", +- "1f6a141f6eb54cb95d54af", +- "68c1092ddd7cea180b7a8a", +- "e5d22d0ba9e3194e2337d", +- "68075aa010a2a7afcb2078", +- "577a2773ebc9e2412cb050", +- "1634b76faeb97237505ef4", +- "1aadb770481974ec7ba970", +- "42a1f9791054781a203d9b", +- "7a520385f587099a8da6a1", +- "1a88cb781abea4a70cdfa7", +- "655b44d3a92231714b14c8", +- "651be8b59b15d629ab774a", +- "550e4c9178e5dead2f815e", +- "ee736adb9b9c1860d483b", +- "ceff6274c7b15ae86dcc", +- "214d49f3e2681b232cf62e", +- "2330589e6c22439bef95d1", +- "7e1ce3bec1e98dd35947ed", +- "72118d192add3aa4c1e0b6", +- "67daf6ba4dc4d74236df77", +- "d16f53a28b7042d305524", +- "6f52ff1c7f6dba719401b2", +- "6ebb0dee9291bd90cd2215", +- "78dfe864170ab14a408743", +- "601b382825c1515525a19c", +- "2e5ffe59b5dd3843fa4c17", +- "2bf32012cc6354c709ad2", +- "669f3588d7a4ca7ee3dd1f", +- "3de21ce46f7c8be3bab3b9", +- "432c0a15a9dc31696b79c7", +- "349470b19ee7a8cf922b33", +- "3c53d6131f8c41d5d7317b", +- "5e83dc6dedd0679793feca", +- "54c245a123767ef7f22e33", +- "563e208513fb23ff9ca7d", +- "b512df0270e6ffe2d4a9f", +- "b0715d55fe0c1edd9613b", +- "c0ecef4f88f5957d4b1b", +- "c8806bb60205886d4ff9d", +- "32c2902887e1700cd5dddb", +- "49d6a78a88159326775c2e", +- "56359d56dcb06ea3ab68ec", +- "2d794034e6ae324ba7041c", +- "64f201a4086e40b2a3a19d", +- "7eaf34148ada80711a86fe", +- "2142584bb5cff6c1e5011e", +- "15060a6e69612092d45768", +- "4de3353d33028c5f557394", +- "70594464b46de9acc11f02", +- "1fc064c4398ccf6bf7b1de", +- "51cf9e84f5414c7907e79a", +- "71be60f1312db2fcc7f045", +- "5fa826fd6352f83c34bb5e", +- "62baea1b89700a3953e872", +- "4a266217d4534cc588119", +- "7bc0acaa724475da5a8a83", +- "3d9a1023138b0e9cbe7d70", +- "388d8c3c958b6abcbf6aba", +- "98079c36403a029b3f0bd", +- "72716051b13a2c1876c8ef", +- "515a0593d1e619118d226b", +- "2a035934ba5fafe2ebaf47", +- "316bc661e89aeb9e7e20a6", +- "25330fc3e5df50eee77cd4", +- "6c8071fad8933706efff6c", +- "3669984e1ddcb753afb878", +- "4781781ebc739ed9d4e35", +- "3915c71f3b447b64ce4513", +- "726dd56f61c4c5016201f9", +- "7b8ff43621b7fb13c3edd2", +- "2bfe7376e8ab62fafbff59", +- "207cf80fa76e8708f88dc9", +- "3a4a4ac73bb38c0c48aea2", +- "52e6bde0fed2ecd82f7bf", +- "523ee7b96bbc2b0977b4f", +- "551b691726c66f9ec1f9e8", +- "361fe28e640ec02ae49613", +- "71e1aa5a9aacb38b66f605", +- "d427f0f9d14ecf4c54fbd", +- "629e9c894bbbebf06d3299", +- "37f7d323d5bf332eed1bcd", +- "7fcd5bd9328b9f06223a1a", +- "744db8f7e25f69bc47f2cb", +- "4b0d1ff6297b378945b906", +- "7c1d3420db42a6ffd37cef", +- "2f8592e02ef759cdd34c72", +- "4dac1ce4b87e60431b8a4d", +- "451e904c04882b739d233e", +- "5bb2eece8c95a515d2e2ea", +- "797d4c38129f52836fa5c7", +- "5d29345f097e1dc041bc7f", +- "6b25878a1ec102b9e883f1", +- "610d07557d991d9db3dea7", +- "5d3293ca54de6a3aa06b08", +- "62e4e44df51bf11734aafc", +- "1945686d70d9df98093dd1", +- "2c16632a312edfedcc7f72", +- "19675db116558d90bb4f6", +- "620c14b60053b660420c4b", +- "39a26bf8336439ba9968b4", +- "376c7a8d0fa0abf4c0bb7c", +- "7f2209419e3163fbb4cd8a", +- "6aece787aae5251b57b3ae", +- "6b380bf5d71fe523ad1e4d", +- "2306ed04565a9cf9fa84c2", +- "7e37a126be9507ba4c717f", +- "67ae2ace35fde529154a8f", +- "352d204330140b3786230b", +- "6927c4b12865ac8f053dcb", +- "7e61e3317d07a1009894dd", +- "2768a7a783d9baa4e5cce3", +- "260213253056e29f0ac6e3", +- "61539cf7b388689e7a260a", +- "3d9131aa5802e27a83eb61", +- "5f87453deb48ed6c9a1afa", +- "418b73330a3b4d1a80474f", +- "5cd3a1cc8bf78e4c7e3747", +- "784bdef1566f244d4ff44d", +- "2c4bac0a0cf06ff50ff71e", +- "3608208e4497b40a62b3a0", +- "6e8b2732511303a48ef731", +- "1ef9edb1f958cdf81fb9d8", +- "4bdbd2765933e2b1d70563", +- "b2687172956319218655e", +- "4f787847feba11bfcbc764", +- "49ede33966bc3f0dc8757c", +- "12a2fa8c4d06a694b748c6", +- "2146fc84389596cf6fa8ca", +- "536bfe32ac8da07b253be0", +- "773a63e6b7c9e3bec91272", +- "6bc6acd592c0200b749e07", +- "3d28e1c12f9c60e500dce7", +- "5687a42dcd55b43227f657", +- "36b36922114363ceb85a26", +- "51e267e9a5a7684ebfd343", +- "5b4aec35da23a27808974", +- "2e684b7951a2526d838fd7", +- "62b2e70d411eb11bf0a695", +- "6473dbfbe4a3f63d08e3f2", +- "661787ba011711628186b7", +- "7234cde8ecc6673caf864a", +- "1e39f05dac576881e6c295", +- "420c1c0074adbe0616df4b", +- "177f43e8d62e87c66b9da", +- "10fafca3d5f71faff8f1a", +- "43dcb4450a256b9a0eb673", +- "460372cf36a22fb6b9641e", +- "a4d6bd96f61637d730c9c", +- "1754f51aa79c3b0803bf00", +- "65fe3a22c7d35ad3f875e7", +- "150c29ddf5483fb74be06", +- "716991a2a17f536244885f", +- "475131d01f3e6dc3b169fe", +- "569bfe59efe21364bf57e7", +- "75ac7a48082d5afa148e7a", +- "63f5fe049f46d509d141d8", +- "2b90f954efc9f58a07a363", +- "39c167fbee27f65e96cc7e", +- "1db83df0a168bac450e4f8", +- "127118c35aaf80dac2a57", +- "20601a054af9d51633fab1", +- "728cea43531fbac95263a5", +- "ff53eda132c9a3cfecc65", +- "786d54b4d5ce74ddde20a8", +- "1175d70c2c07855db37245", +- "2cfcb08879a9aecacf316e", +- "ecef39a1ef4b4d1e8c6dd", +- "70357dabf2c34c8309c723", +- "4db4f1a602cec485019670", +- "735a03f218370f8bd85ee7", +- "3c9ecb18a83b901f901704", +- "4c7d0db8193430b75f41f5", +- "28eb082844c0ed277d2520", +- "a3cfbf8b779e15bf28c99", +- "624d49c04a48d42d76c466", +- "221bb5afe07669d916e136", +- "358d745e0bc4be1c3f4586", +- "1ce2a05bccecd36df96b64", +- "362261ed7c97591714ea9c", +- "20f6e36fbf07174b587397", +- "12413ef53ba7fc6fb5cd35", +- "3dd366ce71f1fed428c326", +- "b66201b62ddf6d13c5534", +- "3164747c95104338a78b5e", +- "5ca6e41b81529e38a59f6d", +- "3834a1b7acb0f05d9e53ca", +- "3a2f442f3b3a9a2af00b28", +- "270dae1c5ccafaa07ae8ff", +- "71e916ff79204bdad49695", +- "4d43f85ff03e3cd18ef302", +- "2a2b13112979d27489208e", +- "442eb4a36ab0287728c1d2", +- "4dd985f2fef5c539fa6a96", +- "522619b83283553c71de74", +- "794294f26a938e1caf3c0", +- "25d1c185377c3cd8e704a2", +- "3e7db1002a9116a5e20032", +- "720aa7a7bdeaa025a23a54", +- "70f2550983dbddb8957b2d", +- "57aede4ca861e5051b15ea", +- "52f87910ef7e6dde1f16dc", +- "79c75783449d733d93b4a7", +- "5186a4a6ce8351b40466bb", +- "1208a98ea1dd68a01d3ec8", +- "3d66483aa6674adb6569c3", +- "728caa6061cb6ff29e6b21", +- "3ca90695aca0fd32b28871", +- "18eecc5a940548e7c51e57", +- "cb8a50376e8204b8b5ea9", +- "7731327e4c6ae66c8e47a1", +- "16f732c5fac8192629ddb6", +- "13b16e69e645c1703bf7c2", +- "789addf402241ff646d77d", +- "169566a480e42dcc8863ac", +- "5ca4bcb81d4d03018b177", +- "8ea7f70a71ad46c0c260d", +- "4a67b54dcc404423e6b631", +- "7b609aae44a59cf088c570", +- "59fdfd7775c9750e48d811", +- "5738f30e5cb40b4ed83e60", +- "78b5c76a3ee8c2ef071fa1", +- "2ff21a8761b9bce5f34f74", +- "71af54a2496a076b559a6a", +- "11f2c34fc87060adca2837", +- "4476f33d15e77d3ea6c712", +- "1dc0a99973375f6c4a4583", +- "5cee3684d600afc7804db0", +- "20fe6d6e332154329f831c", +- "1b9850e5f0f8fec4d967b8", +- "6b5617e9152db554d999bc", +- "144303d93b170584849f6c", +- "8a006b686db9c86eb0756", +- "1d9a776cbeec9f5dec9407", +- "503f8d64438b7a99b8de08", +- "7b084b907f4fc0301dbd5", +- "dea3527d089eceb4c22e3", +- "38a39ada5dac01b5c2adf0", +- "4cfeaacecd47507ead712a", +- "3ff99310762f37d685ca95", +- "492683ece46681328f9912", +- "27c1b7b41af947101d694d", +- "39a95d47cf87d7d7d6bc8e", +- "48b438b41e1bc7e58e6ef2", +- "7b0ba619013363524f168a", +- "557bc3fd4a1a6866c5d19c", +- "46ef25878ebd3ab0b864d2", +- "70044b2b283269e2d14166", +- "47226da695602ab6e77894", +- "142fa830b7ba88d08608e3", +- "3019d2c9a4a70055fade00", +- "6bd645b33c041537bb5186", +- "3fc3e580d2ad754a34bc48", +- "5e8a5f959be2a17534c9bb", +- "5a2cdb29cc6790b45d1f04", +- "1c28b93f693054a06fb391", +- "242cca5b643a5f97a01a20", +- "48a0fd415822566b2ecfbd", +- "308ab3a2c4d7f4df4b6a31", +- "4566810f52dbdc6e52d908", +- "53cf166384d9f967e4ee4a", +- "32a9d4d4f421cf83f9237a", +- "7f4b55a70795b9d26512fa", +- "7222af7c6bff611029c53a", +- "718c4a4aea9ee0da236930", +- "71b31c9be0276caacd1146", +- "4d89a145aa9c4acc9cbc8c", +- "26b549a59dc35ee5ea7b82", +- "59308e5db85655d5ae0c4", +- "2f63eb0fae8122aa717440", +- "4346fce81f02878bbc28d6", +- "3a0c64739838b20476e0bd", +- "389f7a523536bc08e2c52e", +- "1a756f67d7e3e663369a04", +- "732b807455afe5538cf678", +- "421e7c19466e0847ffaea1", +- "75aa7d0184dbe8ff376045", +- "178e61138a7396d55d224e", +- "2a07033e306623cf4e37d", +- "25d293607604db30df2e4e", +- "1e6b9387cb8fb6494ace9", +- "524a00dd634d2f57ac7c6e", +- "106fdb273227296116f40a", +- "47efddee37fa0ef6a72a47", +- "2a17c7297a08a3839ca0e1", +- "4c60164f9602341914167c", +- "656c647508629462e9a821", +- "54e5b2458bb84fd7d4433c", +- "15a3be22e80e0f6f498608", +- "152b3e507f8b7898991275", +- "10cc6c74c4f9fcc9428f7f", +- "7e185faaca849a7f135848", +- "62ae26dfe2273af99c4830", +- "7255e6805e164cf9788cce", +- "49b4801e9a2a64a27691d2", +- "3fd90efbd4f0a4e173f589", +- "4afedaa595cb8c309d3fbf", +- "c57749387141da5f8fd27", +- "1ba28761d3577e14d38b38", +- "10a61010d82426d21109af", +- "4d23f5ec809ab5057c2705", +- "31e9d0607a42f7e54a8c81", +- "37107b083cae132372e4d4", +- "16eaf321bf41ee635d6d46", +- "44bf623ac807d4c96747f7", +- "b720b9f07a6b1f41654e1", +- "68705a826f80224f09c337", +- "798b816a4dea5ab964c64a", +- "2adb843a58d472c17edcb6", +- "17c5a39deb46d102235506", +- "70c9c69419338ba44d6b8e", +- "858c45884b129dd66817a", +- "7ffd3daf76b1e818134f24", +- "5b509a0106f1d06627c353", +- "4d6d3f3602597781bd2ea0", +- "4fb33de912dd8d2f8b8081", +- "2b7758dc0945a30687fabe", +- "38271b1467ee062bfe15c1", +- "1d41ed28d87d24620da24", +- "5b80c6e1a5c4dcb3166335", +- "560e1e8aafcab315236068", +- "31204f9f1e25342bbe28db", +- "35d63c19d36b85b5e96648", +- "38aafca45b266dbeef6fc5", +- "426b930b670412d271a091", +- "59f2c50a64b0c2a3e77442", +- "7cb4b7b324b314195807c8", +- "4a1381ccb93c34dc44cab", +- "14da57f8c43c94d5133d50", +- "499a1abb2a1381278175e6", +- "6334fc3ff70d17dd837781", +- "6717c0177a36454aef446a", +- "7bd177160999a650655c6e", +- "2acc282877d9cac38e38c3", +- "18b021fe09fa8bdc44e567", +- "45638582a87d07b0339df2", +- "664ad54353749f2ad36105", +- "5c53790457f0f66baaae2f", +- "1edb6eab35de11d4922150", +- "38c3b4008c9d0442e7b602", +- "76dcede51c5087d374b20d", +- "1901320882ec0093fcda5d", +- "68f5ab17da1cc5dda22c36", +- "4e4199871aec7ec1f99895", +- "68d4b88b77dfae0da7a5d", +- "a4f6b861d9a460f5b65a6", +- "f7cdb22a187815c33c5e0", +- "7b398d970ad745817bcb61", +- "2e061928a5c3ad9bd6d9be", +- "5be7c40d96f7c97153eaba", +- "21887a11425a371d17db86", +- "2cc7417260782c0d2394d3", +- "6b421c0667b336723fc0a1", +- "1d78f3d7e887debfa04bf3", +- "1d165ccd9ac1e4efca4a32", +- "163690a8fd51b113410cc0", +- "419d9a35dec3e5f421baef", +- "215c7e9a1d796b37a56336", +- "541a69af40655a83e366ca", +- "3f98705d2cf6346bf00972", +- "4ba668ebddeaa069043875", +- "2aad9e8261535baeb20b71", +- "6766e290c73bba54bcc710", +- "65118f1b7c366a8bbffcb8", +- "7d88a8aadc667bc60fcb2e", +- "16d8ad198832545831c93f", +- "567508a3d2a7b4fe3b395b", +- "3282cc1545c9e77ce08abd", +- "57d0cd94e03404b9cc57cb", +- "14f23f2aade2de50fb350d", +- "280bf57e6ab95037683d33", +- "15db077682cfbf170ce259", +- "2e1709b850c77f2d508334", +- "34ddcae84938327a3cbc30", +- "ba357a389bca1484d7e54", +- "bc149e667cbe5a17ed77d", +- "25032025485a4979b90394", +- "467db4fe225847525ef33f", +- "54112eabbed42ad31637c5", +- "14b68001dbf2f798322812", +- "7146b897c3d924725bd0cb", +- "6a76e3eb445dada83ceb12", +- "30abf45ef025352e681192", +- "2f687a83227d2d20f3b227", +- "186605e063004c7e4a9375", +- "21ba4c5acd17d59fca0ed6", +- "2cad73640590abfa319b6a", +- "5db729c46c687ddd7690e6", +- "73673685484b4f3492976d", +- "282a80b8de04941c547168", +- "4b53718060040e8179d82", +- "5d50e00035655b4d4ddcb7", +- "546ec9785ee72a2a72d886", +- "4328d17f00529ea0fead97", +- "71faf2ef0654e97e0c23fb", +- "49374e550d8b335cb151d2", +- "42772160e3ea402851c9c6", +- "c1fd8fe80d24243e7b5eb", +- "111d6b945ff69be530cfca", +- "2dd21df4dbce295378bd06", +- "3d8509040aa8739f034dac", +- "68d439e82561e55cbf1eed", +- "65a1f7025bafea5088145c", +- "5f70485b00138272e9a41b", +- "48ede8d4a9a88f7613388e", +- "1de402b5c6118ec8861aad", +- "50f371336a648ade74999b", +- "17da7c01f870089371d6df", +- "2f64ac4f819f8343111866", +- "648ea8b083a9828f8af17f", +- "28d6cf3e20845dc7283634", +- "7dfd6cbe22024260a179ef", +- "65ab167d8e02a8df26439e", +- "79d07c6a6298d34020dfe7", +- "55407685456c2cb8311d26", +- "413278937e6487a988805d", +- "168ebadbade1cbc44496d4", +- "7d6f33ec4a123fa281cabb", +- "59bc93698864451646a053", +- "4d1a8b95ded29dc79fd401", +- "21b466e3230d809af7aa6b", +- "35fa1fca985387fb7fcd19", +- "1a789636807476ba5bd789", +- "7b115c7c405c6e4356bac1", +- "378ef780c4d32c3f15b3c3", +- "23dfbd70bcc040f36d4c8d", +- "6a545ca829ed278f6ee7f4", +- "c06cc01bfe2a9b427102e", +- "126dab6c2bfc9b83475847", +- "15bf0eb485af1135b0e453", +- "3b929cf6fdabeb45375120", +- "11c773ac555182d789142c", +- "444a50dba1a2bf390bea1e", +- "1976a9fa25af6d21cad47a", +- "2f88b1c87d7d02f6c2614d", +- "7fa540fb3906a29b513bed", +- "2b23443976252ed21088d1", +- "5d9383670de64bf15eb49b", +- "1540f88099c93111d6c8cd", +- "2c33c53227ef5693d69f36", +- "2648a635c5981b8daca07d", +- "7b71ed8d456ee35292c960", +- "62c36a3627b9d2b3c18de1", +- "3e985c35adacaa90f5715b", +- "7401d0da6ddc33225bec4e", +- "740f62900b9523de37b6b0", +- "3aaa2c73e60edc333c904d", +- "35accc5a1e3fb474285daa", +- "1d85b86a2f3f20e2832ec7", +- "6dddda58fac4e8afe0c9e7", +- "2fd82a7276af1cf8b372ed", +- "9377e0e5c8d0de1856f6c", +- "75266a81bf7f77865e6f", +- "1de1227159008ec9b59ac1", +- "1b5200adee3adf189b056e", +- "4d8b0cd0d3401fd04e351", +- "438e5a19094bce43b5b5ae", +- "6f339aa4d977875b1f1f80", +- "297ac1b2d19eb1e6e32d87", +- "638d0229863032ef249643", +- "65c9be7a29bf45e5992a7e", +- "7dcf3e6b7d3d02033c946d", +- "6565aab9eaab16f7430411", +- "374a0e75bc76f0adac7af5", +- "8649a3995ad114bb4d72f", +- "45f5960a9db06a62821bf0", +- "36735381ceff20a76e32eb", +- "1416e580fa8bcb421dc6ae", +- "64f00973a0eb117b548182", +- "7507998b275e3c9bd4e10e", +- "305213c4b30a9e8be153ce", +- "233860a2ed2d566e131431", +- "235809998758cf7e4acb1c", +- "2102dede4011c5cfefb7eb", +- "79486109c44990eca52723", +- "43b23b71c3202b31d91018", +- "63606d420b8e8397875647", +- "697396e6df9539532709dc", +- "581eb843dc9919f85a6644", +- "3b98704f287b0ee4e659aa", +- "3886dff828cc76dd830466", +- "1c9f86b8742e14b6caf79b", +- "bafe681e7e52073b86d32", +- "1a5853834033d093c63d55", +- "736d05572fd4ef85eca2b1", +- "61170002cc409ddc34946c", +- "5fc3c4b7f7ad5deab829bf", +- "4597c1546c899a3656689", +- "6667dbaf666f92bd61da79", +- "a2e07f9d73c5e3effd370", +- "63942ffcaaae948e9056c4", +- "6a7db7fb47d3a18b620d6", +- "58b95d74eb4e654735bebc", +- "78a4c0445f77f31209ed17", +- "7203cc213679d179eabc35", +- "22884c181cdc222cad8e5c", +- "7f8bc7233e2784039454db", +- "aa2cbd696160321682a6c", +- "4356ada1ada2921353892", +- "72f7dab0b2d2a35e62478a", +- "32e5682bfa3fd95762512b", +- "77da1b5a2124b6c9e11847", +- "593c091517fff61973996a", +- "264e4b26d39119bcdc0985", +- "fa33fcce55fe6a32e0915", +- "127c199cd032273073f003", +- "169665894aa2b356779b61", +- "9dfe57d1a9a3265476d14", +- "364f70dfdbb439b78e5236", +- "54fb5f18b6d001ef7be401", +- "321e3fdbb0b890caadc570", +- "64532524c99ecb3c365a41", +- "aa480c5cc76379e0cd2de", +- "6ac2b70efaf88fd42c4044", +- "6810dd5945e01cd2c90841", +- "10aab6ed7d1b631aa4b45b", +- "19537a8ee281cd28d6388e", +- "5ba2a8023e5bb50b06e03", +- "646ce329dbe03b0b8312de", +- "4f0024b5b5580d91de0338", +- "2b4b238bbabe3c70748eff", +- "3bec30574a99903f587887", +- "24e71c2d01e956269446cd", +- "68c4a816c641b5b1090781", +- "6fd170c2ab312a1f05d814", +- "64d8389dc8d1b8910fc0a", +- "4807e0d9a38d358d8e14c5", +- "14ee39af97cd5a57b0e17c", +- "24974593a8d59a89588659", +- "59a7f220e101601c1d1b21", +- "43fea0cf26a3e256438525", +- "2b3c80a17ef583b6205fd4", +- "44741cea6d95eb07e7f01d", +- "2ccb45ece6ec9abb9396c7", +- "5ba0eb3a703d0e42cf4094", +- "400f76e25d392f347d4911", +- "419e79b02e607a42e6e091", +- "36c0bf9a937fe6ca772d0d", +- "2244b09bebeaafafb0c481", +- "1501743c447af65014399b", +- "2791e42c7f90ab8d4e7fbc", +- "150365cfcc4a012a673c13", +- "7869636f37e63a4ffff7cd", +- "211dcdb529a6bab73ad8a6", +- "239309f551f303d0037140", +- "3f1e6a84c6b836f245c178", +- "27b94ffb61590cd0bcd89f", +- "61ade8e7a0bcc40ee4c2a8", +- "750f475708a1369e3fcc26", +- "30bed73f7a94de9252a38c", +- "3e26ac2b23b8b913845e11", +- "42aa10dc273607be680d72", +- "65a0cb312051f321a95f5d", +- "1ae82d51e4845bef8c5d14", +- "37c6007c4a0d223bec9e13", +- "4f140e806dac75cc67fa3c", +- "78acf4423afa2cfe1a6fc1", +- "3915d17a2935e69936525d", +- "7fdd8bd273e4a717226cc", +- "15da282cec1859a9591ab9", +- "75d3c5c33e5a2023adfd4a", +- "51890cd139740ee3c35339", +- "2b514798a553e5bdcd8ec1", +- "722f9dc13384479d1c4455", +- "1e2bd3f41ae5c299bb720f", +- "5ab5c85d4bf835440ff962", +- "178cb915d7350e37948956", +- "184e317201ff0ac25eb6e6", +- "37755ea728b820f0ab2bdf", +- "5e147628ce9e9a9493f495", +- "79790e81fd0d2b63f9d1b9", +- "7252d249ce8cd4fb010950", +- "d165a455f92b5083e0627", +- "6354a865e088a0488f2701", +- "43c2ec8afca87567ee9294", +- "55744f373c8b8520d62370", +- "63069f756c8115e5fc4c52", +- "3f5c0a52d2b564cc250982", +- "6b828169b3ba13bbcddb05", +- "46a78cc83c010019e8b2b", +- "27c6ad85e824da21b1cf9d", +- "6e9f47f009d809f84a56da", +- "255358696f5e9ddbfa467c", +- "738abcc274fbdc4ab5efd7", +- "70b9ea82f6a6c02939510c", +- "5f24e71937dd097c0e8678", +- "41e1bc8a63d042ba714c97", +- "6da26efc24e2d57c26c090", +- "575d4696bb0e4edef99446", +- "4c028ddef259fa2c7d4868", +- "33525d5afa91fda7d5fea5", +- "49a3641c16382337f3c777", +- "760b4f231686ca10ea6ea9", +- "547264d2566596f18bbb5a", +- "703a6cf857e651748dc09a", +- "298200a0909b55e97005f2", +- "5ccbc128a5721a5dd853eb", +- "33d5a814c00e980600811f", +- "5d66f0d9dde7339dbcd24", +- "5ef30e941639d08bff19c4", +- "363a65fc59f4a8184d3d78", +- "366546b3844bf45b7527a5", +- "18bc8168956ccd63ac68a1", +- "83bfa3efcf5b970ad41cd", +- "4bc9c371d07d4a025a739b", +- "4636e2935765905adcc41b", +- "4d08f00a99d95d0043cc4", +- "3e94b32e50da81bb5afc03", +- "48a13c03c03191471f1164", +- "3018be3223f82c7f0c9ebe", +- "185254fa056de9af1a6bd2", +- "1fe069b8c57a9fbe5f6009", +- "6c03f094dfe48c9743be89", +- "1086eae159340e441fa0a4", +- "222ea07afe042cf765ce5f", +- "7754a6a5fe6be54c00f4c8", +- "152dc9fc63d3c1eb6c335f", +- "3f3aeb0a1df198d9c95768", +- "7ef4c5361ca08ac1cb6216", +- "527e969f4f6eefe6289ece", +- "6b105359a1a68d94862411", +- "2674d42d16e97493518d2", +- "369c62fe5aafda2a550912", +- "51eb860c87e1e5b70bb623", +- "29f3402339c3128a1e2c1", +- "413f256a64feb56e242e90", +- "11ea8c21342ce42ebbf9ec", +- "5517c01ca3bd4da9aef0ad", +- "5d2972b12e50e727a2721d", +- "4eac7fa0d6b168c3bec4e3", +- "5cd8f5f9eb6806f67db613", +- "412ae12837a29724832877", +- "770b83b55e13465063e5a", +- "76201f5e0110544f41d9be", +- "c8918a059fa77676f0587", +- "287593985c21589f72c821", +- "6b923e02dfb1da62f37204", +- "2600c04d980b2307982b22", +- "25f7e1ac0d4153b6365c1c", +- "484281d930b8ee32f366f0", +- "3827eb26c007235c46c676", +- "6cd2d14ecc5fc7c2c1b52f", +- "4f0841f63a0c64aad5232e", +- "77c4b593ec648025df03f6", +- "81dc886feeee4945edceb", +- "522afb743f67b3ca56b20", +- "5505b22d0ddba48ae2020b", +- "2f3b362f4b742eb82f8a34", +- "1c7831e5dec267ccb26741", +- "2ddac7db8be22e88618b58", +- "4e6a2eb425fbd18fb02cb2", +- "147b65e0e829ca30fd88c2", +- "36304be3f0777300703af", +- "215dcfa076749277897e0", +- "3c2f54ef99be42fe30d32d", +- "62a01fb38e5c88098fbcc9", +- "5f84ae1685459ae7e24bf2", +- "3ecd8205beb790946eaa8f", +- "5ba344fee845769c2c86d8", +- "36a92b305c21171dd5a616", +- "3650c22d9c1072238cfcfe", +- "9225712405a5bd9ade58d", +- "594ae94ad86b9a719f54a7", +- "59f0f5465ff1e16be9bfb2", +- "4c6a0f6de7e50ac450c0c3", +- "685afb7cdd699d5a8f020e", +- "4f1c406e243fb2af67cd42", +- "2dac9d433ff98cf24eae81", +- "1167717f2d3d6238b3d21d", +- "381012de4c9a82f9ef1d72", +- "7047a4510b8c2107737ece", +- "185033e62f44aa85a7799b", +- "41e135572f9ce788481248", +- "4759751a101953dd340d89", +- "34d59de432c0dbb24ae55b", +- "5bcd4418d37c976110b37c", +- "6545cb112ea4be72bc80f7", +- "52d104741cfa5fa49fa55e", +- "7322c20a545b3845b54b34", +- "783c78a9025283e7188a8b", +- "3c81a9658bae42644c317a", +- "1eb56fdccfc12b22db2048", +- "3c3f770d148b4692e25b59", +- "4f75e255d88657b2ba4755", +- "260d6ba9444df4b85dfb92", +- "34f0f61d6d8d062b6b9d9b", +- "74fc1bfd19b3cbc9867bff", +- "3f0d18b1efb7248950daeb", +- "65b7b50446c767e6fa72fe", +- "1124cfa0e070cf6fe3c638", +- "2d127e6ce6bd0f1872b1", +- "3fdb99cce8884ed923271f", +- "2d2a15867cf9361defac4f", +- "9a39acfeb3a1b4c2bc79c", +- "7adeede80a05e40854e6e", +- "4431184365a358de692057", +- "1e4fdc54209c2229d7ffcb", +- "50cfa48cfb994ab2b77aa3", +- "1f4b918e0e0d47c89aa2d8", +- "78ba33e419cbc7f177437f", +- "5f7482c17a568566c785c9", +- "6fff35974d5f0b86faa46a", +- "5106bba99e6268d7bef3e4", +- "67cb80a136db30b9d60d6f", +- "594a3b6273b1ed2b542eaa", +- "6a1d554c48496d8d543eac", +- "9d8d18a72607c311d6f76", +- "7047889925ed18a885358a", +- "283508a2ed137e839b2207", +- "65fb4589487aa5a16bd767", +- "1a14d5b10cbcbb9ad3216", +- "4a469bacdcaf5434109262", +- "40ebb7bac65bd815945e49", +- "7b2ef1bbf74c4989ed5ddc", +- "5ca51c82df4def8b1588cf", +- "3b22ed42f28069f29c280b", +- "669e7a28f7a7c30460a80a", +- "2071c913edfd4fd6daa6bc", +- "3828df7e9ab6753fb83dc1", +- "4cd15a66ba5a2f18c8823c", +- "1ac96b01993da8677b2fd7", +- "4f9634be1ae125361bd4c2", +- "681fcdfe60f23e3be083f6", +- "2d5bb2b553d4ed5bc0795d", +- "4c4424602626193266d943", +- "2df30214a49a31c21380ef", +- "48b920d23514d06befaf52", +- "4b4c7f0a822537ff62cdcd", +- "ee9d6b69f13ec8f385e6f", +- "793fd256b009d961487499", +- "2d70f946f2915679b314e6", +- "1bc4e87c1100a2d26aeff3", +- "6b1cbac9279eaab9b503c4", +- "5725842b7246179896a39d", +- "4dcc6ee20983f0020ad69", +- "57dbda5c8b230a87030357", +- "78c437adc3b6ce946cdd", +- "20ea7b335b7621642b29a6", +- "179d4134709978c75bf6d2", +- "36a3336f56c91232544e8c", +- "e243f28e043030ee3a43f", +- "2d678e77df571d7ac4859d", +- "5566a844e8b1c572f69612", +- "27244290f774a00786ca95", +- "1812bd60b720f8920fe80d", +- "7f45c48d28fd31ceeb3fd7", +- "1bea5758655f1400515db4", +- "249b7a4d080be0f548cabd", +- "71215d6fd5e662d930a424", +- "7684536a92d49a5af59f1a", +- "74d39a89d87bdaa449438c", +- "3e4e77e268fb6e7602e96c", +- "46c6313b3914ecd376b959", +- "31b9dd76b9ed5f88dd4609", +- "46734211b970f8a6448a60", +- "7a6d5b1013830761b58026", +- "6157a651f2640a73f1f90", +- "38793daa7aa086d5e70798", +- "58d7de0f8254a81b5d0f5a", +- "5a1fe9fffdaa20f4ab7eae", +- "7e8fbf173741aea1b95c93", +- "4bee7e482b290b1d3869be", +- "c075fe6224a62c1010fb8", +- "7340d7daed67bcc5cd4391", +- "2e12097225e5783b545083", +- "518711fe03b241cfb95160", +- "4956721f6a2ced1fc736fe", +- "636b15a893c301ff23f5f5", +- "5696a96208101739ec4ba0", +- "54fc920cc0125e53a92499", +- "7c2e242ec2b95580a9b3bf", +- "4d0e82bdf34ff4cb3a603e", +- "786571b85b2768309c8ed2", +- "1418facce22bf24a5e6a51", +- "681a88fafe4e6f0620910", +- "5e263af53ea065e044720d", +- "1c614cf9a9d87d69154c21", +- "346f2a2b086e1b35095d7e", +- "4b6ed31d0715952774511", +- "67a3f20bb5e980364816b9", +- "339dd42a42d94342bf8399", +- "3b55da90ad9a162be1756", +- "1c07c875b3a9cdedf7611d", +- "33567e972c90754c86a5ff", +- "3ee5a2cc90e335867f0ce8", +- "4b3a8d22fdb2c83abba9b9", +- "5b6b96beb19fb0dbada937", +- "5169af1cd74986160450d0", +- "724f8bcd40bfc9f1ca0c68", +- "51603bcc8667777e664f9d", +- "78aded63d2f85ac948c449", +- "73862de61086c1fd5e0678", +- "5efbbe073364ace07f02c7", +- "144a6c20d0a8d5dce2b12b", +- "2aead0dac004faa8ab67e4", +- "3f8cb5eb229acba822b48d", +- "34c50fc58872b7325366", +- "3c1fd5d9a6223b2ce7b02a", +- "554f5cfd133bac2188241d", +- "559752d946b02da4c2f657", +- "3950591be73642bfa23264", +- "2e8edc0b6dfcfb2392ce87", +- "4c3c570182916f32a6f96c", +- "65cf5014ab215afd17cef7", +- "54ad7fa69dfd0b4c19f7ed", +- "f4af5a6143d8f44e48afc", +- "1a08e273719d3411178252", +- "668b9e16f3948f582a5b94", +- "3fac097802d8f5fb376d58", +- "3c2dca32abbdc029f4a212", +- "753f0795048443573283b2", +- "622b540293b1275c5a9446", +- "5a2c8ca58cb488822e9f49", +- "295932427e10aface718fb", +- "43e36b6d5a937387b49f6c", +- "4e1162d634d0d5811a2441", +- "19915afea85d27cf8df109", +- "7eb8dfe838ec5ef9d3ee21", +- "2c18c59d95a21961c42f21", +- "7233f4136f3ace41bedb12", +- "142c59f31fc82fb58a7dd5", +- "452816c1b54aa2bfddcc17", +- "6f24ffc802a08273be511b", +- "32d68fc9b8a9c17b315382", +- "5aaabbd40fa78dd417edf5", +- "51d8b3e6fa0afa106abc40", +- "394faf6069c716fcf8a76c", +- "3f7d2ee6cb32c6bbeee194", +- "4354f51efc9392bcd6e51d", +- "5e73615c65ae9e74eb1ef3", +- "761e42e1c908c2f09e096a", +- "25df9f831698604e15991c", +- "351db0dca5d74808f36d33", +- "aef2488954588af921ab8", +- "296a247b4b36d5c2a1884f", +- "b1fe15d9ac88348f41a87", +- "97342eefdbc78b9689120", +- "1e47a4330f0bce93db13fd", +- "7511506751237c1959933c", +- "31e8a39712fb3a7a11f909", +- "6116bef6a79fb2fc15f0e2", +- "6d849a39e47370e473a913", +- "42a81f5e10b5435180e643", +- "17715e6c96cbe096c4f9c2", +- "606e14eaa7d60eb7ea925a", +- "30cb89652c8629b5e0dcc3", +- "2625096534f2cf10d83a26", +- "61036fcac29b84e5ca02ad", +- "4669a41d4e444c1284d024", +- "2b81c6e67e55aeb6e93a", +- "23564d97f447b0091e74ce", +- "494807a247f7ffab73a644", +- "692eeb4ff69b42372517d7", +- "3eda92314bf1d09cb5b08", +- "24b22771f303ef742b8ce1", +- "5c616b0d1a7bc591e70e46", +- "4aad58987821ba8f33d96e", +- "10d0aa100248920b9cab77", +- "1ead89a48b89a75ebaa7d8", +- "7fe887d8c5fb53af79cbd6", +- "ab8e1dd4d27b02d09fe48", +- "2294095a6b77aaa416cbd7", +- "69fecb55ba6da700789d7c", +- "681750fd18618072db2068", +- "30a18088f5b2af396bbfd9", +- "2e03d3c0794703b9605de0", +- "f26a2dc235ace7b34f4b6", +- "356497a9675898bccf4e79", +- "3286bf159405584d85567c", +- "464550e0adf269403f3e22", +- "3f603c7b410b4c2db2c8e2", +- "445381f98a1f5669880827", +- "23eabb9cc5f4086c74bc31", +- "4628eb872cffa1868b96ee", +- "6ac77b7cb23565518aa2d4", +- "1cfd8f0d12bcce21589c11", +- "39cdc5e6675ab081ffe60b", +- "1e378fb7157cdaa6fc3a50", +- "669f4c5ec3934953500b78", +- "46a91d898168488fd5ac51", +- "64add9cabf8efdd5f7b57b", +- "45813314ca1d165bcf242c", +- "6f37e3a85128974cdfaa69", +- "7f42b66317d26c3f938805", +- "181ee17c34ab8aea52c900", +- "68e8a818d524954278bbf6", +- "7a6ffa939b86786a779a44", +- "31d809b078cdefaaf45266", +- "7f216769148f0e997c7805", +- "3a82369bb1a4da519bbd70", +- "25920b5c96127e9d8ab05e", +- "29702fc1f57fddc3369967", +- "616dbeafd6aa623c1a7d7e", +- "634d2540fd670a82f219a5", +- "3d9abe3ec82d9602d9dd6b", +- "665bc65420c0b0a151c97e", +- "37d50d7838efaf03049cd7", +- "385f7f48a7be6b46d108ef", +- "5f2bc99aad2f27cdee05f4", +- "3b6b43619a3730d5995ae4", +- "5eb76c6301d8a849a1903f", +- "38910d873da8dfd237e8f0", +- "41558cae58d4f9a9001b87", +- "58fc1b58696f8c22cfe344", +- "64520e4823f48c1f48749a", +- "3827b84269040363e5e02d", +- "6c9c81ea487986867245b8", +- "217bd444ac8e9808b3ae5a", +- "44dd70b9323f17568e4ba3", +- "50226b4aa22a0465ceea0c", +- "6335fb7682400180e10d15", +- "1857324131e535b1b2458f", +- "3845bd22f959dda9197376", +- "4d7797e0b2f77a7ffee785", +- "16bed27a9c005817ccf111", +- "5bf1d1c71be0c49ad75d9a", +- "6d16d10feb1728044f2dc3", +- "3abbf8af06f889daf59c4d", +- "45769a307f5593bbf72056", +- "2a640efe463008db4ed634", +- "57f0f7ecb2d7dad43748ee", +- "8000000000000000080000", +- "7aa96a9fbe718c006a48f8", +- "24086a392ab75e649d3cc1", +- "9f20b6fedc099ec575691", +- "313d62eb5f1104de5421a", +- "438f5c0f163a4dfa04e5ce", +- "63137369b8d47b6c9c43df", +- "4ceae8c6ea35dc274647ed", +- "465f3b1e25cde0e446d90d", +- "9f0c9a93eecf4de349628", +- "3addce3c43218484acf509", +- "101d83882a81d0147b4342", +- "4585b77fea18a0113ff609", +- "73e92ea015629e3728aee0", +- "257564a39a648e17d015e9", +- "2f927b360b2b43bff822dc", +- "328a9932d6b08a41a1df0e", +- "207ff6a0da7f13b316c4b0", +- "4b11585991700c233f6773", +- "77664e53908d00007d1205", +- "434a5edb31a9c3c6a0243e", +- "692adfabb87ce969422961", +- "3eb189e2bfcbe180703cfd", +- "367efb55edcaadbb5e4f2b", +- "4573a56ada0a29d31dd6b4", +- "636f015a0c62753b283d5e", +- "158e9251ef94651015ecc3", +- "ca30526530b6f6f0c8fca", +- "20b1838f00aa00d07f70fc", +- "50c65d8772a3d5db269535", +- "47262fa06b9c5ac8138f4f", +- "d4a270719a348af6d6c29", +- "af99b9d024438cfe9df66", +- "2a5043ae183d338b7ebd55", +- "7b85e0b99eff408f2aa978", +- "282774a1f4bcb14e6723f9", +- "58137399c99866772aed9a", +- "7b7e71610f1589da383c31", +- "1705c133c7ba24a2b5c528", +- "336a41277b427813eaa191", +- "78ec94c22ee912eded5499", +- "1f9e8bffcac3e1471f7cd6", +- "7e688d1cbe7e0a84a0f408", +- "50a70d2086b5ca78a90368", +- "16f5569ecf073acc30831d", +- "720d9e52c4aea85ae24480", +- "15bc81dd36a0393963bb64", +- "633dad9eec0d451652bf40", +- "3d433adb4bcd914fcfc4", +- "ae1614cb7437dc6311ee9", +- "504e8f5ee0e51320af92dc", +- "4d55039bf17366425f055a", +- "2ad535a50fda15e1835526", +- "4f5cb9e29c3567f8c1b22b", +- "409705e5654888d8af2f47", +- "145ecffc8b532b7855ca8a", +- "4a79a4d35e92cbac8fe0c0", +- "7c2eeaa3b5ac7ca26ee5f2", +- "b44a774aaac3d4d335389", +- "488702c5b90021b8b24933", +- "62d4635d0bbd6bf8fab17b", +- "47a6912faf0eba695a3f82", +- "5fea5590381b705c4ba54c", +- "552dab94d8fab803e3abe6", +- "622e4bcd237f601b3f864e", +- "6b6195f4939abc517ea1fa", +- "7ae4ce9746d1a251afde2", +- "5411d9720f633bf7a356ea", +- "93d0f45c8e78eed19b2b4", +- "2cfe955ebd8c7e4615715c", +- "4680ebb5e7e7fa1e676838", +- "1cbb8749de080f5bb23b75", +- "33fee942f43e9b7d2118f", +- "4ef1c6a1bd63bb6b6207b1", +- "1c1f24204ec4b044c10ff5", +- "3561d1a2752f1d17dd5823", +- "782fa87576f745d6c5a644", +- "68d895a65569cf3ef3e3ea", +- "46c01f4170feea6c601e12", +- "7b8a17b08fccb33f4b7d6f", +- "6332e8b1655b1a7193eb45", +- "6649997ef28c919c6cae0f", +- "55b727631edd20582945d2", +- "1adfa664cf45ca975af0f8", +- "34ca1ca17d4004b63727d1", +- "46bc16d9041c2bda07b158", +- "31afe414b9e841f105214d", +- "4bc252b0fa653478344f1f", +- "44b0628f84b11c5e71888", +- "7f821b6d896942293448e9", +- "125c7d70d2b6d99ae885da", +- "49fee8b58237dc40ba3c5b", +- "5dce9f322e405cdd3dc195", +- "4e5afb2e233daef8a9bbcb", +- "64e35a2939773b306ebb74", +- "3cf63e3a65a7e509ca6dd4", +- "1f88577ebb6a87d8478dfc", +- "5d1cdedac3c1f047923b22", +- "14b8d711e9732dc1d81b85", +- "63ca1ec0700483b8f859e5", +- "345343979af3beadfaced5", +- "3aa36ece405e3ccd9341ca", +- "5c37d517c640ac7f62a532", +- "68e1a6376fdb4eb7b4b0e6", +- "69a00aca76ae6e660be7bb", +- "1644cc3e7fe80220ef2f70", +- "58689766e836a562c78c53", +- "2d83b4eaa1c8f768e56c30", +- "11ff8e8d5e956398c99ca4", +- "66de0cd9d504d0c8a10caa", +- "f5d2bac49777fc8f10242", +- "30436781bd712f316b4895", +- "7a7cdf214176b6d3191883", +- "64f3d838badcddd9bfdd0e", +- "190017f50befaddece16d2", +- "21a95826890e5cccb8a83e", +- "2c958c952c5c886c2a60ad", +- "3f8ccc4c495c412c1876e1", +- "901282766f87bc24e50af", +- "67fe63e894b36bad057249", +- "35ab264ca762acbf67e1de", +- "65b1a43ebc40ff17757bfe", +- "1e0b5aa4ebf1898b7232a8", +- "5a3548ae1dc271964cafb9", +- "26e45399ef9d09b479c0d5", +- "ff910ecf2ce1ed443b3a7", +- "15dc7895737fd27e2fc2d8", +- "306cc735643548c81d480", +- "716be1338eb9fa3160de8a", +- "37c639bab06813135e6962", +- "18d28f7c13bdb1a27fc315", +- "48dd5aa0d80d3fd4d31225", +- "308d7af9cf09073e61779f", +- "659ccea55ad34dab51a321", +- "25f3d9fd234440b97c9821", +- "5c0de6f6c164f44c52de84", +- "30927374f464c892c53b50", +- "540974d1b3361c5ccd3a2", +- "a0b14921f2ca115669309", +- "157e5726ec48e98ea5652c", +- "7c50148337071a44808f27", +- "54f01285acb2da9689a386", +- "569b68c3d77231282d1705", +- "7593ab2f13aa524b76e104", +- "16a7968fcf87b51aa207b", +- "2b1199cb9ff7848ec581", +- "235057c5ef06d64b0093a1", +- "3ad2c2000ee1db409ffcab", +- "46dbd89f4ae0d06c0ab8e0", +- "7fe713df2e65b878c1edc6", +- "4f0b0a9e8338cbca398b3f", +- "67ae16da8f876a2c8dc80f", +- "1bff1788b61c434292f278", +- "137786296b1e5f466871bf", +- "413062fa329dcbe3b8887d", +- "76a4bcdffe1207b9c84c3", +- "394ca6d6650a3a703c8f0", +- "7ec0ec060d3788349445a5", +- "5e6c438c53b4bfbeab6a4c", +- "1cae4d5a0b88eed0b2d97e", +- "37150fd6c06a98e84f0fb9", +- "5e5c9c54f1f75bcc98d1bd", +- "7273cb20026d3e5dfa9567", +- "23675569b6f74cecec658", +- "4d84d472f48a1f27cda4fd", +- "52e4d0f780530e040b8198", +- "116822d6715118a8643140", +- "2fb2d651d1a5fde2dc4d89", +- "2cbb69d06f0ba3051ce433", +- "982362cb3f64fc2535f18", +- "ce584760ca84047b25a4f", +- "3d32a6b665f10a829cfff8", +- "228eebf60c055615805405", +- "4adc76f7cd88044421953e", +- "4f588ef825e26e596e160c", +- "464063c0e0f5e5eae1bad1", +- "231a1fa6a52f8377b2ca86", +- "3b663e3e9013cab9326fc5", +- "24716274d6f1761a2e503e", +- "5eb0e751f365585e4f3fd3", +- "1c63d031374620336f8c7a", +- "6ac96f98fa78ffb692afd9", +- "71f7ff7f6245492bf4ba4d", +- "46b7638024bbab6f336734", +- "2d3b2e3d52eac5c09743f7", +- "2bf0a5cc2a5150523d2e64", +- "1f7e1880120c76703199fa", +- "27b48290f4bc222f54681d", +- "274cbe37d4fe65732936f", +- "5b872486f12a68a939069d", +- "76c344db7c98c1b1fa25d1", +- "6745627963b760ee39ad1a", +- "2d30342ea20393b89b038b", +- "51e2ff830fcf99b4147ec", +- "764156f5d90616c8c45669", +- "19d3eafc75447dbc2ce4d", +- "4348b708829c7eddd56237", +- "605ccf0922a0c35f768933", +- "86aa65ac1949dd8af6918", +- "2e564f6ba5f6f74e33f2dd", +- "54ec1fbecc620b2a62de33", +- "da96dc29f77c98efd9a65", +- "3756665d23e5dc56d35905", +- "7108a03a28803eb91e8a0a", +- "75fa74ccac539d6f2e079d", +- "56f539741375576aac816a", +- "78ab001943d18ada1f6d03", +- "7a283d5e2ed98485e2d260", +- "7ca8eb46f6df31902607b1", +- "3a9ec75af3c8e86b8c1b73", +- "61df6c089b8a0a75da0288", +- "3277a60ca85c986d50dee2", +- "4afa034c14d96f077cc41e", +- "58ca4d190a0f756173e746", +- "33e094a7802d99ab1d9620", +- "4ae3a5f46681ba13e649ed", +- "6369f366be6b5ec99ddddf", +- "4ad5b5ec9142810d730c91", +- "520d75e4874b90e95d0ac6", +- "56441a020eb196f9ab47f5", +- "4f100cd2b63ef0cdac7165", +- "1d72e71f6a57243468bc42", +- "6102d4b92b578db1756028", +- "6cdde5dc50cfba13ab15cc", +- "6a2bde70b440f36a3a69b8", +- "40afd831d872bbb5ba2dbe", +- "52a170878e73d2b9a73398", +- "363495385d4023abd7fffb", +- "75ecb6eacac31eec1c8d24", +- "38618fda51c023d44b41df", +- "1b12fc1c7d3ee5cd24b30d", +- "428c02c3c8bb1613aad2fd", +- "6e925cc1e63747fc8301d9", +- "1711e7c4ddf7dd725f454a", +- "6543f2ea86c39aa319b565", +- "4f88d842683a24f7a78b4e", +- "6297ed8d827bde2f27c592", +- "7a4c62248fb05a7ec5f894", +- "50873f081856faa7b0c6c0", +- "4a5c54b88c3afab5d73bb4", +- "93ecdd9b52d588b62ae9d", +- "1dff7b3a25d6efec89d4f1", +- "4eabe0db8ac5d733acae29", +- "2d0a5221661bafe1bae3a0", +- "86148c3559c855d7a4785", +- "4576a87293566d06f5b643", +- "2c941d4c1c7d68ef593ae6", +- "2c36a4d87847724f9fdecf", +- "7b5f04e933b2e4204cdc65", +- "774b9d1f08bb74ab682979", +- "7c1fdd60de643e750fa1d", +- "682291bfd680e2cd8f9d70", +- "30d33e090854573dfd98f5", +- "3860366ed3637eead94b8d", +- "6e8b7f0e9607e44c1f9f65", +- "720851fb976798365a6829", +- "f5eef843bd404a6869b17", +- "2a8c9eedadb6f6d58c06cf", +- "232ce65586f95692d89383", +- "d5835b5723a9063a2dd80", +- "72316f1be6172c06994a4d", +- "6a44a264bb1144d86619f3", +- "5451512089afcff74e1bd9", +- "557e56b5a5dcf30ae5f48", +- "2a2840d0a8db4a22fdfb53", +- "71e107fc4c98b40c6f7b53", +- "68c711e371efbf9b278db8", +- "31b42ccc858ccceae34d5", +- "47eef469d5e96dff3b60f7", +- "622155e1a7c16eb9e6f098", +- "73037907fb5b7e20bf7973", +- "2a5beeac5cc34b9b70fc5c", +- "214b26c5cc4d2d1d455254", +- "3326fb026bfe153a5a80e5", +- "2fd395d2076e94e7f79f79", +- "1da6208947854d10119a62", +- "507a197204651599300f85", +- "60e1157dceceaecc3a16c9", +- "179c67b2886cbf8a80171f", +- "4ad8d4214e4fe01b143d8", +- "594820c775fd57d86cf9af", +- "18932d3a50056ecbd4c0", +- "cc47e7e925da6c91fe510", +- "5ca455ab52339850752f94", +- "31934713e4ff1d0d7cc583", +- "77747c8e4550378570ec0d", +- "44fd7c4168c2a61413dbd2", +- "278331e342f211746f0d9f", +- "13022f601d429947abd201", +- "6d5ce69503f658697314d0", +- "30151eaad7aef0e79d5e07", +- "3b6333c6dc16d5f4351c47", +- "308b1811fe8c7d6801df6e", +- "1316737cef6e8d73f98c46", +- "34026c0467a5bb1302960d", +- "4374fb07e1eb1efc714a7f", +- "13089f86ddae7614e1f733", +- "91782b2d8bf1ec8b6e4db", +- "739d86f4db437bd59681d0", +- "2e99bf2a9cfd14eb01e4dc", +- "1f372d16a7c783f301d859", +- "3fd38eb64df431878b817e", +- "1b3d8a50e5425c7a4550f6", +- "2f775dce855cb22a4ce4b4", +- "1856ece5542adaa42b18cf", +- "72bad07fa5d3ca19811efa", +- "210aaed4cc7b55edc4255b", +- "13ef893fe161bb05038778", +- "394242cd2ce4d5c927b1f7", +- "2d8ba9bb83d8b7dc77cc32", +- "4a9dee0a96c91e7cd6d7ca", +- "3b62b01334bf25d1f5d560", +- "3c11b4ca34c3237b362a26", +- "9ae11d1f0b2cb73496a44", +- "7d10d41f081cc53194454d", +- "3476974a3a56c244bcd4ac", +- "2d248bd8de364598100d1", +- "371b6d93bf32954a1ed005", +- "2f9195fa1721a36e6f5198", +- "b5ea9188a76cbd4490c2c", +- "67fe64c68be6372b30260", +- "2582d22d55dfd72b2d70bf", +- "2144bb26c3488be851e3b2", +- "69cf5ded5037b0fc848b28", +- "451cf4e4a6ce149cfc4095", +- "4845e19f6384ed5724d8ce", +- "5c721c1e9f943f1e44c526", +- "6b628f924b031ff396258b", +- "2db4889991fd96d5a3dbfa", +- "75393667821938c0e5a628", +- "2e37e64613e6e49f75ff6b", +- "7569e0846a7c92c5b07e91", +- "544e247e73028cc23b1f51", +- "2e14fbc2ca9b056ee6a0e6", +- "5c96c4bf9c30f05dfa52bf", +- "30455197024dac28f22ad9", +- "16587b1213183c74388d6a", +- "62a6ac9d0c5e4b3890d61a", +- "5d0e736ad9b0e048c53cb9", +- "29c81a2bbc75ee65e40fbe", +- "a5803d95905530efe4cbc", +- "45fae251151688f6948ec3", +- "34de10a25d48bbec6bc310", +- "38e1136120c0a50e7c1942", +- "4be7ae42a1b71df0fdbed2", +- "70eda2a92c3f3d551052fc", +- "736e4111350ab36a2be4ca", +- "471e19dff79f0bf8dd75e4", +- "7c4c5a07ab45db64032f8c", +- "3e8f3fee79b0aa7d3158c9", +- "6803ba4d96f3cea5b5b619", +- "645491f7754448588100c4", +- "64c773513b07ac7be226c5", +- "1207f0afa9b17ee1e3a14c", +- "1a5a3601f9e5c757413d21", +- "671a35180c429ed6cd73d6", +- "3f719d970328ab86444133", +- "2eb29dd03203d9dedca2ed", +- "3ca5432d73f30360d5e251", +- "ef9f73cc5ae815a32ca63", +- "76930d75187c32e1c0855c", +- "297ac6d1d91b19c8ceb3ad", +- "4d06acabc42f8f6c6561a2", +- "17f90d7760ace90b4281fa", +- "79973f898e87ee6433e53e", +- "1177a186084a0188e6b25c", +- "46ea372cc256b25d8bedb8", +- "9d0d5139d46e4d9db3662", +- "31f4e6b45c1cedb6d4c94", +- "222ad5a5eecaf564928d05", +- "7bfb517a9a7064f7f0b9cf", +- "88d1f466f33239ebbee3e", +- "28c8b8ba9341ac37c38695", +- "430a7ef273c75f6860a9e2", +- "5963fe850d852bb19cdfe3", +- "57ca180b4c6f8c3a63ae46", +- "745f8230228fe0e913a537", +- "6495ff035413be2b53c45f", +- "1825a2f6c03df8e89a424f", +- "4ee9fe013ba8fc6ac8d470", +- "7b7c35dbf0dd6b94d050c5", +- "a70e6c0e6da7b5bd943d0", +- "6904f88af6eea4b3f91bbf", +- "5ccb3321bf79805e3743ec", +- "40fe888eb50954f82f8f41", +- "1683c065332572cac40e7f", +- "265a6fe3ade48b79bb704f", +- "6869e474162fccd5e6ce8a", +- "1621052353e1bb38663f44", +- "5206d5cc4cf74b102b511e", +- "459fc4d70a1a8040309b48", +- "1a38abc6055dcfc6f54cd3", +- "6de250d6d96fba0a4a2df6", +- "521255c27009b10aeef14", +- "784a6ea72c75433fa2c1c0", +- "1c429a8aad032b85e815c6", +- "46ae03b83630be869f3f67", +- "468227ba06af62fa70d6b", +- "1832f7608c30377f8a27c1", +- "74e8524ea4276a1585abc9", +- "479f0a9b95b8f0e630df10", +- "6c9aa8a230f91d4e6f84c2", +- "2020839307f0a0b2a66465", +- "617907260cf1e3612508c0", +- "50b259ce6ef7786ad19380", +- "60ad8426c5228781a660d2", +- "640821dda0f544b159e25f", +- "11216382d02fa8a680f2c", +- "3b142ae3f666b5a458fd6", +- "50d8060a4c81ac0d9dcc9a", +- "656e0aaff42e8f100df7e1", +- "6b189bed3e1ee805a7089f", +- "587965194057ffad1ed72d", +- "7c91adf751ba7b800072a4", +- "66c37766a09f2454161188", +- "2aaf602c5ad427702561f0", +- "1fe772e91ad75a2d2792c4", +- "432bf33542ea8f8c0e1cab", +- "108be849403d8b9e0adadd", +- "1f098e306099d97f37bcee", +- "15e468fec0387d9dcde2e9", +- "35a56ed2078e145e9b5d42", +- "3450478bbaf1db9aae9e0e", +- "5819cdbf42afd2334f96", +- "453649c203cf983e439d84", +- "6e6871265fe9883143d121", +- "14b7709b903167ca33c0bd", +- "5bb6095d45a0253a5e3e2d", +- "604b2e853911ce83225aba", +- "7dcfee63c4d594e4583601", +- "245ff16a71eb8c45257fd0", +- "51f56cb5201bdd22f49e70", +- "1b50ac3c3f5269c1d7aa40", +- "68c11de19f57751aa11e9b", +- "73da067d52334a718631ff", +- "63f2b709d7c6ba1ce60255", +- "6a47915604a062b94c626c", +- "6d15e33dfd91b0adf65ea8", +- "36b718d293f968b4388def", +- "38b2a18fa105ae1a1e82c8", +- "456d747923e7fcbd260fae", +- "17a8f2f3a036b54c467b7b", +- "4cd6b5c75a375bce549db5", +- "ad8ecaa59795b2101aeb", +- "5e89ffa159d58051edf13c", +- "48457eaf5bfbcca641689", +- "11e987960e92f0cfe9e7d", +- "484fed0412b66b4ad6689b", +- "2567685d25fd668a9a024e", +- "5d36dd2a4f038c91a8e525", +- "78386c3f2bea1d92b0136f", +- "6ecd91e762474ea500bb02", +- "460dae8d89d7708b43a1c7", +- "3846b043ea9479616ae948", +- "35d846be55b3952e278ab9", +- "697bd2294052d067eed5b", +- "29ecceda91e2de99bded7a", +- "32c247d46291051243da8b", +- "59d6c2db6f995cfebbccc9", +- "5628eeca86bc4f505da4a8", +- "4450b05b160d8c53288cd5", +- "5d0b6fe03f574db311d01d", +- "7059a8ae14b27b87ae7942", +- "7e37627adf10efb14adf13", +- "4dae59d140c542483e12a9", +- "26246e8fdf408dac8fd2a5", +- "2d3baa252f4d982bd2ad11", +- "266efd2e0daff29e309d38", +- "8fdbca74c18894d421e52", +- "7cdb727ae2bfeeed50af45", +- "490df281db25788739ca0c", +- "324340f1f7ccc9eff05524", +- "595eaf076defb81f21236", +- "22aca8e5833c97719ebb51", +- "421f5a540df5b7ba309bc8", +- "4cf40ea87be0baab3f0a23", +- "78050a04d755b7008433fa", +- "70089a05ca7765b8ef62a5", +- "6446d75a31a4956c235943", +- "3bc0b4b12c4e0d37097319", +- "6a6ceb53a9e08bce60e22f", +- "5527257327c4eade309a67", +- "5193e0be567990b2818200", +- "540f6a5d04324cc6ed1398", +- "d79412155f3d978866277", +- "65e3000fa520e5bd8bfdc3", +- "988dfd270fa06d78d9fba", +- "6bbfc916f60c65ff6069ae", +- "22a2f494120b7469421488", +- "5514a9f97c736ef89e2558", +- "494a8aca14d077b143ca10", +- "599c6bd84b32b97e000cad", +- "2983f80020a9f6532ba834", +- "39395b9f947ccce230cc1d", +- "5eb549dbd9b640a1018c4c", +- "3a948a48ee72242647aeee", +- "5c0b858603efe861d8e554", +- "18af2f7c66ebae2215b225", +- "7656e2bcd13769bc7d3690", +- "1d345a329131e03407a9ae", +- "6b91d4c08bfb155d85a09d", +- "c5eb765e74f7ea6040509", +- "347e522bb35549d788adad", +- "3c2561b4603673cde220ff", +- "78c36b7a1a1ac86080796c", +- "34f1c6d5946b4f8e9c34f2", +- "1d82fef6b5daac184a21bb", +- "11e3b65e520ccb94e0f28b", +- "53ee027a60ac6b8703b4c4", +- "252a9565fc2ed88c83afe5", +- "2c748923f66e9b836e2956", +- "501c73bb8897e8a9b644da", +- "527df835ccce3d0d8dc6be", +- "753e3ffd723c55ffaa57eb", +- "27cf1a1e36d6b6fbf673f1", +- "303e55cf5d940fa1eb0863", +- "483592c4cf34d97823b087", +- "404518992cad409d30e138", +- "247aa73439f114a2bae1f5", +- "43f106dd9b706c7cbad455", +- "60de98af5b2e9794ccddda", +- "2bbb60823308802716b002", +- "5a4b0bdbb9a3eba57ecafc", +- "7eacc570a117e3d2c4ad3b", +- "b80a7edd7c5745e63c50d", +- "3d2c4d19f97ec14b7f9a20", +- "8e1dc29eaa3429a93416f", +- "16c859dc1504abc8bebb3e", +- "142700479fca005e365a5", +- "1a5a69890d5f080ad27aee", +- "333e4709f384c49fba280e", +- "773e49f5dd28ab9abcc4f3", +- "7fcabd5ff8d8321877d09d", +- "392447173660d27311fc56", +- "3b607643718a1436cbf93f", +- "3d01c0ebec513aebdf049d", +- "115af287df30e3b9382159", +- "217e1d11ab05e37175e942", +- "43240f690e895ee2ce6199", +- "6473a7fe7461369e02b551", +- "56d1b28a25e58905b948d1", +- "5c08c8490ead830327cfc3", +- "60d1cb028fdf2f7506480f", +- "6efc437814b1b1a8db77d5", +- "386903ad1ff043a2a203ff", +- "113203b24e05e4ff03bfc7", +- "2287f22a43e09d12b5fed1", +- "3fc330d82c00c3c98129ad", +- "5bdacc4f0e9a9f3c5eb7f", +- "43ad0b393a7c2a4d667efc", +- "4d17bed73f2032142b03a3", +- "72492bafc7adaedde393c7", +- "161741a6fabf2be3cb74a", +- "3253a13971cf24cc306f4e", +- "3566ae3cffa53b48308a5c", +- "772853e9593804a23d0c9f", +- "58d985a1111ffbdece42a", +- "6b463071583d5d51119c18", +- "58ab9a24dbad2ee2c0942", +- "7b625b197eb76a08b19ecf", +- "153d46a7ad0d4c7b81a83d", +- "560bc3397e1eecda48e8d6", +- "3e27d166777ab6af4a4b75", +- "10a7cb0c646bfbfaf6b1db", +- "abe7e5169767e92b8517c", +- "46bc67034da17d5b7c72cf", +- "16c1a9b3bcba979d2fb250", +- "20573b178651610a410e89", +- "46c829e7e1980bc26c13f9", +- "3428c448a20f463714e16e", +- "7be85a588e4f01b973f9a4", +- "382238b03129ae3a8cb2e2", +- "8b93e9e7ea54df6ea61e0", +- "dde95ff1403621e1e9c39", +- "b3a488e23273b8e74aa2e", +- "3af2323baa99fc6ef534e0", +- "6003c83a8ae5ae42a0956a", +- "2ac52045b3b592dfbeeaaa", +- "7f29a05b16052f06eff50a", +- "1eae59f579b122f18b84d1", +- "28593d93a1a2159e16cc13", +- "460f5f98b19a4d353358fb", +- "56efa25eac0d5f675af6b6", +- "73e9dbd2873c27040a215d", +- "5ca40898d5d325e557e04e", +- "405224a222d42397ca18d2", +- "a69b0e544c08336c9606b", +- "1dfe68dd4d69d0d5368782", +- "18bd8096de042467441c8c", +- "55f3bd5a345801aa67f91c", +- "5430c091f416778afc3f3e", +- "4e33cc0d26d44c2394c8d2", +- "2ac1793993d045ec4ea0ab", +- "a0ac3885d2cb22aeb977f", +- "1073f10b92dd8a202017b2", +- "23e36a6e12831353ac1afd", +- "71f02d980dd943488cbefc", +- "7e558ced95c8a49312174c", +- "21b1555bb331b89f928e6d", +- "75ea3318a1054593eca8e6", +- "88658ceb2447416239af", +- "7dca64fefd065e0893d874", +- "5f427b13d8351db71dc75e", +- "475c02da59260b083fa105", +- "5ee825c795f457b727b9e8", +- "124aa58a7e2a882689ba12", +- "797bc83e9789b064b51c92", +- "2a8b319bb90a064d3cc523", +- "5570385cc742f16a21edc9", +- "122e1cf4ba920fb923d0e1", +- "7fc9fec9506aa1a0661240", +- "3fc3680285719ed4f7e7fe", +- "7175ce67c0c74c440327c2", +- "503bee64726b7b32815f44", +- "5c4dc3dd9138eb7169302d", +- "3f0eb0b9bdbbe37f40dc5f", +- "5aa25b718982092494e872", +- "20b11d38582bb81886466a", +- "36baace22f2d7a2014dd1e", +- "27216bcb23514df00030b1", +- "3146d29fae3f74014572cf", +- "3988842f76572373c3459b", +- "6aacfa3617f47dce14015a", +- "581f2a492a4fe468c3971b", +- "4cc8bba01b6788222eb375", +- "5c00c9ce80be32396ca075", +- "28670ba592cd5a2625df3d", +- "14e47840962745e9f2bba8", +- "7f26a6c99362d1126b6773", +- "6eb090e9b1df79f4d2226", +- "7f035a794c44a6a57abf00", +- "1740e5e9a57a4e80eed5c8", +- "46b1961304e45b428bd48", +- "49ce8855b52dfbb878b2d3", +- "313ef612f2fd65f39c2e3e", +- "7332b41a9fe9dfbe59f71f", +- "41858e467a21a3938d60aa", +- "6234ffe0f938a25ce0f5a8", +- "1105d3c71c59dedcb33f", +- "7a75b868e9fb50140bd203", +- "68ae7d3832d31bce57eaf3", +- "600de685f1a4c2f4a236d9", +- "3684bf3ee3a2b8635ca0e1", +- "2bb74459adcd7029c9c35f", +- "b7347a4820635a5852b61", +- "249f5358017ada6567b747", +- "17445a9a60b0dfca9df354", +- "695d060b1aceccfdfa96c2", +- "a209dce8856336ebd97f2", +- "72059eace3671c76d67005", +- "6dafdbef06e817ec42991d", +- "47a38df2df7f516ac35f8d", +- "6a3afde1cc784aefb925c8", +- "112bfdedc3401ff20ffcf6", +- "3161bea37fcc040c6f6494", +- "6152b40d63a55e1ef6e750", +- "41127c781a5dd07b6ea357", +- "1df80784a603cde2e8573c", +- "2ad8c773fcdf92009db9b6", +- "5cd8f904c6a0e1c85597c4", +- "21532161ecdbdaac15b68a", +- "5a80f23e82161bfd2caa8a", +- "59377c70bed9cccb346cff", +- "212d386743b2c2069ec4b7", +- "26fb73843bff3e4d17aa10", +- "1f15e66f6c5b160801ec4b", +- "4024c6847ce50a93fefd10", +- "38419b7c213432cd42f4bd", +- "ea9789ae096da5bedc410", +- "23a7a59b35972768b71627", +- "60a177acbb4aeba955e6a6", +- "22d9fd1638450186756413", +- "5a49a0430b2145ead2e9a5", +- "7fb445fb34908201d41b44", +- "7b1e254e6050240b36eede", +- "44867f919f39bbc1ac8a53", +- "57c6f0c9d94e02524b4029", +- "553a48facee35f17214327", +- "5e3402a24a307a945167f7", +- "4ecbf2559411992397d1ba", +- "3adf2b6aaf40f5dcdffdf2", +- "156e3560db5a642c108333", +- "26f3f960b2ba725c83b706", +- "3135a042ca5b8873367081", +- "5778dc2f1465daeafbf88f", +- "142aa17e315b2096d3470c", +- "17b1690a9c9f4fba9154e2", +- "6f3d0d822d1a27088df8e4", +- "749ebfb4005c94ed288c4", +- "7f64ec3ee1d6fd7b5f9352", +- "3ea29dc49c06d64c187862", +- "322d1e939066766f918e43", +- "d1c5eeefb8bb620c573fa", +- "7d83ba89b9f89b55497937", +- "2f635c018151dfffc38ed7", +- "6b77b6d06b93487730de2b", +- "202d04fcffa7e3a0ae0585", +- "7351e32ddd53c7465f65e8", +- "1d5b0385650d2d81754f72", +- "5227913634dbd4b19ffe95", +- "1eacd91eb3938b38f0210f", +- "3ab4982748b8f986192588", +- "4a648c611ef0b3b0e318e0", +- "18eb41f414dd28e8ff3a1b", +- "28e33efab89fb4f64d6498", +- "1b67e56d8c8f6656eac86d", +- "27476789fbe89ef5fe00c0", +- "21e39ab39cd96423900120", +- "4818fb8f958698b6e9c9d9", +- "95d86ded4a7b26a1ad331", +- "1b2e283bc4ff40366c744f", +- "2db6e61499c9393946b57f", +- "3e8986648fb4053520276a", +- "5eec1e56c0a2d0e34dfc8a", +- "389d9fa841750626db108d", +- "4e0326164785519414d07e", +- "530f4c391aa2b0938eb272", +- "50c915d40aeb9e4ec78789", +- "57bf13241507b812b9a904", +- "3245bbf080c6731fee74dc", +- "11081f4b8fb8f0a9abf772", +- "7a75be28b1e93e4e0c9342", +- "174fdf0bcfc8d0f4e77e83", +- "46986d0da7a2c17dd1dc22", +- "68e88d3bc4e8d390ae4b13", +- "4a2580e03d81912089d88d", +- "201e678f30ea96fd17615f", +- "3566f7f67e026f0278dfd5", +- "30485371efc19b50bbafe6", +- "4dedb1ba2a6a4abde67337", +- "33440d7d3472a4b6e2f627", +- "591749051e47ee7b49cf82", +- "3fe61d12a0b09791925ccd", +- "7f5140ee63b60e0a33058a", +- "5eb217461cfa46d5694397", +- "6aaafc0107575bd9b70723", +- "3305f9d7ac9bc35ded571d", +- "5ef7fbdbf498c8684625f6", +- "3b66491ccee4801a4e3673", +- "76fbf6732402bc76e061d1", +- "28a37e042abf70a7cb137d", +- "534c1a3b25194e8cd66e6c", +- "3eedab106a435ef32b9e48", +- "6bd995ef31bcfd22d52d9f", +- "6b5da25417070642e0ba4c", +- "3d40b56764f7765513d13", +- "44bd0de2094b8b3759356", +- "312518f9c1ce1e690c003d", +- "f920b02af1e3bd673512e", +- "4ed1311eae64f9e834ee7b", +- "4d075c933e4b93da3a33d9", +- "133606f2fed41ffd77b999", +- "16b6721ea95f55ef631d25", +- "140aa7412f6488f5404826", +- "3ae99fca89d15abe091160", +- "543222604f067afa3e7558", +- "2948eda7d7c508918c3056", +- "4cb6253df884020966d27b", +- "46bafe88322c67f3b90507", +- "31416a7f09913059dc251d", +- "52d3cdd253b64a03c5885b", +- "1c5d10301fcf4a14c82adb", +- "5cd8f782abb8b60cbf36f8", +- "42b636bc4126dddf74cb00", +- "5afe15c1524eda9627e183", +- "783d012e8b928ea14eaad8", +- "45242101d43b276b34115c", +- "28b06d6b1f993702509e4a", +- "16ad879cfcd3e458301dc9", +- "78873bb7282961108e63a", +- "1c5b7d2b84cbc7b29bf542", +- "48edf77c0fc298b0491c2a", +- "398764fa3e177502af4d3b", +- "1d1aa15ce7c8c15f051ba9", +- "401a3ed45557939fa7eea", +- "13f9a309c929439a91df6c", +- "3aef6b8ad8d4f116a27e4a", +- "64b1dd5abc6713a8f53d0c", +- "73f4373aa0c46a1ae61409", +- "1ebddbaa72ad1a2b1cdc49", +- "2cd33d1f501e268643d591", +- "11b77783f411c457cf909e", +- "d92cf9efd7d12c62f0dfe", +- "2c56fdcda56f78dcda9b60", +- "118d29d91686683483dea8", +- "7e05b7c7d54cfa1fc7b525", +- "42c5d2d1082dd2375a4ef3", +- "26554ee3e9bedb1a3a09fd", +- "ad64cff4b4763a7fda09f", +- "5f9563c7ca70d6e5061bfa", +- "38d987fd4b450ee5a69286", +- "62af499c078af038905758", +- "3eecfda3b4d92af2b7e5ae", +- "5e195ccf98c9a4e1967fe1", +- "61c0e0ff11a378274b395c", +- "486fd3ea0158f33daf767d", +- "4cfaabac7104cbad2ed728", +- "714ed5cb0027168be15142", +- "ac5bf0492a63aa0bf597", +- "53339d5a01f3d2e9bc8755", +- "457d09be8a2a4c351b63ae", +- "1892726d56d4f8f92dde20", +- "236e08f8411de38e44c3cd", +- "5549ebaa872068aae68ac5", +- "11df54a696817409ff1164", +- "7f695021b246db24a5113a", +- "5267f1f68134d546ec646f", +- "4ad5e4985caa0c7ee63b9f", +- "3c5262912ab7e82ffd49c", +- "7f9a1f8e557617163d5e82", +- "31b2ef6b5163160bdce290", +- "127dbd62073fb0c17b4217", +- "5fe5a0fcee7c061cf49e8d", +- "34ce2df12c5e0970f682d1", +- "4f6148f444b84dfe82ecb2", +- "740e3fa0e998e741eb97cb", +- "5623f1c8e0d5c15938b2a1", +- "79ef58660a06bbc22f0cce", +- "35f48b300d21989b05560", +- "4efe7cc856d9eef4fda470", +- "43f99aac41b05d58c624b4", +- "66b03ec137e6361ddf6317", +- "4382f99dff4951a775fb77", +- "974b1ea8fc3d4665ea11a", +- "1998c4f90bb8b5465b7b1e", +- "a49f38b3c0b7ca1fc5c10", +- "57d421e876be8c87768c1a", +- "14c79375686a30f4c21ea1", +- "667b77d58f7f6b14e19bc3", +- "17b5a764867bc2f176278", +- "cf2bf44fe6c433cc00c9", +- "61619bfea73d2a10c7a7e9", +- "3908eb827c8209b96bc643", +- "e859d26ac6c854731c10d", +- "562d8222a0b94f5af3137c", +- "780a2a5411b159d83dcb95", +- "645cf2dd2735f1cbf53f1a", +- "6476d594392ef9fc9a3df1", +- "7df75741d3ccafb28da8e", +- "526d1eb936d1a3dec6eeb3", +- "1a3337bb0bc288bf44447e", +- "13413811d8a8e6bc2e6cf8", +- "54728697bad28cd0bcc9f", +- "2e178e1cc4f997792ce1aa", +- "f339d2f5ca33347ae8d13", +- "24dc2302a4b77b85525bd", +- "4779c6f70cb71f00e32d17", +- "20866732367b425f7e5ad1", +- "26c45bee1cb7e300fef593", +- "4f3fe475424626758ebe24", +- "3979e2b3d54a21e7e8c1cf", +- "50bb1918112bad3e57d523", +- "4e1bc7c2f29a2f520bcf7d", +- "3b4ae8aa403abef29b052b", +- "54765bab6ab2b394d9dee1", +- "5e7e83070de3b07a4bc87", +- "6131db76263e902f303f6e", +- "2fb62f0a2e9435830411", +- "57b341376c8eeb5e957326", +- "7d59312cf551555c728152", +- "3e13e95a38da382cdac574", +- "53e3092b891267552e8471", +- "ea04fd9db78a21c39b6a5", +- "42cda11218a2f5a8d7bd1f", +- "3aaf5736ed929c1ed0ab93", +- "6e93c69a7627e1f9832a61", +- "37526cf6c350fc29ecf559", +- "5640578c9a2f674c097c8a", +- "41ebedf12db1451af99b12", +- "66db9685c97e1039f97191", +- "61e21b9a255226ab8a9c03", +- "4d36c683652009a273c69c", +- "3e00e41664141664f70d8e", +- "734cae170e5d7d8758c509", +- "26c603e605263eb37ee858", +- "1cb50b0700a11348f864c6", +- "6b4ed91c3f4f0b25252206", +- "46436019c4b35e76ea4182", +- "44885049137a26d9ff4438", +- "1cf7470aa8bed908f93c32", +- "56d7ace10d6e046f35bc1e", +- "2bc7683658e815b0850ae", +- "2bd0c39ecff8d002f3a3f7", +- "2848634cb8eba43423c432", +- "177aa9fd51aa698c4f5d25", +- "809a8bacccc204134381c", +- "60483a9742002ed4918cd1", +- "7544304d1b3c2594fef689", +- "49ddb3e956e6fd8d65e1ed", +- "3820d1fc1eab75e925dc43", +- "7093b250c7b04c2c6d567c", +- "16870479234b3337ddc8c9", +- "18f39bb607de6b1ad183e4", +- "a5d62acbaf68c52001a4b", +- "65f33a2872e25c8a682f06", +- "4e66ba0bc1058a3931042b", +- "357eab1d6b7f6618503b3c", +- "5cac3c06df31850ad70694", +- "7e68cfb951ae556b15fa1", +- "7de8764ca6a43c99d6a50f", +- "329c1979af2fa92b25335f", +- "113149ff5647e02c5d8e8c", +- "5fde1fcd656f65c682e01e", +- "3a2bc2968347afc3827c67", +- "b7602abf832a9540b03b8", +- "28434971e0ad86e87340b6", +- "e24946eda2a54a4c98b6e", +- "318d2300370d914ed1483a", +- "776ff8d5492c149f7acf17", +- "50e46147373113c54d73c2", +- "59652c3042e742dab07904", +- "1e74e23fb34c50dc055d0", +- "3c31433d0db703e03c294d", +- "64666abc6a9a2f6a1c7575", +- "191da9b869e973d2fdfea7", +- "6c362e17e2173449bde86a", +- "1a8ed7cad7bcfca4620120", +- "273beeddd87cbae01c207f", +- "568f3917922fe83ad3e225", +- "44e6ec408ba05ad98e759", +- "32f5fb93813b0abef00c9a", +- "490db50fd1ace7e8ec15ae", +- "7630fa097aa2bf97cef6b9", +- "6ef800332004d6cda26cdc", +- "551ec7c1ae7ed078f940c0", +- "455927f484bb8820a2ccf7", +- "7933956672bf2e4535ee34", +- "2a7311c640e7cf0ecc141", +- "7242e44696c19a3a1910b7", +- "3c7a2b6b58424eab86f3b4", +- "359b331d03b9cc2451c1f8", +- "4169ab1c6bf3f0abec6c34", +- "6df855d5b158377d521892", +- "3c4374002a4b05edbee285", +- "209910d1159692421526c", +- "31dfcfe645b46b329ee2a1", +- "1e6874a8b307092ad6e72b", +- "6b7e91fb5948662e3961e3", +- "23966403e567312c7a8379", +- "2f62056d547ebf7995c6e6", +- "5fda42ececb40f359e4f0b", +- "18a6b71998f6f84fd5d814", +- "76f42929010d1ca7619b42", +- "50e22c6cf5d6b70def807b", +- "1cc96ab6764758e9cff09d", +- "59aa03a25735023ef97395", +- "741d91860d83d000328e76", +- "a9753c820825d73c04548", +- "4ed7cbd3e32dee7a40c626", +- "6ce70c288bc2711b1b024f", +- "59efda7d6a6d8e6aaaba46", +- "6ee757629a9b68ac7e690f", +- "328bf9a8c78ea2ca3388be", +- "59bb325b9748e94acb6630", +- "55137101093be9fb51857e", +- "9c6c4ea9b05d327c6b7f3", +- "77815256a969cddb479be9", +- "3b0cb59bddc94e18233703", +- "7a123babe2e7abafbaf8e7", +- "35d6d7bb2855d9adfbf650", +- "6ad95985d0ab8e8d823145", +- "2133efe27b28c873f101f", +- "607776583fcde0ad8e4c87", +- "e2d9cdfcde324e23eda21", +- "747c7a13b706fb28e46c47", +- "35d310b1c9f92e46c5dccd", +- "7248daa035ed0c83c2d007", +- "3c8b578aed4234d875a143", +- "766ac65aedf40f90341249", +- "3087f959a9893769198248", +- "49a34db8369186ccd3e18b", +- "69b04bfb64dc28afc90f3", +- "3732911ea3b78b2cc54de2", +- "7dde8d7ccd2cebd1d4b943", +- "66727c69de089e222307ae", +- "5a67c62d60522486e9cab9", +- "6acdbbcb1d87bb33b845b0", +- "1f1cae187cb4e7e2d75ff5", +- "1cc8bac063e7f4722cc83d", +- "1f75d643fbc4ab52296f51", +- "7b34f38b9d16f0d70ddae4", +- "74a0eb9dfa780e171aa5bc", +- "4366b19aa12542a30c1749", +- "4a1404c02a58e6862d11f5", +- "55e542cd768eaa4ab7eb43", +- "182ed4a29e8be479e40c89", +- "5eb96063b604b2d052b457", +- "d755ece5c8fed1e833d4b", +- "10f7a570b959918609b06f", +- "656a55d45a93fac53881ab", +- "60e3811062f0661e25f626", +- "24a843ed6770d822f92be9", +- "216b9b04319fd8da8a6d3b", +- "3e41b8ea3309221756df7b", +- "5a00aa930e50101d3ad458", +- "260985f3992a168bc7fb3b", +- "5c3df551863d0055925c95", +- "28b06a5b8a2319d5d78e37", +- "3567cd9077f5bb1d3115a3", +- "460858d1e253129bf64e5b", +- "485bb888b6979f8f201fb8", +- "7aeadbfb750a598afce6ac", +- "3cfed079405fd41004c118", +- "3dac1d8f9e9cf46cc42204", +- "2df246fe147cf6a7d9ed5f", +- "1a908fcb6be810a9e1e92a", +- "6c33a3a058504d48c17efb", +- "66e9cba0e526f30b7b9b8f", +- "757f2101d664083b2fe8c9", +- "18c5643eccf2173f575420", +- "7dd9082b6f5562b8d6ba91", +- "389d1e8a26db35e20882fb", +- "65172c59adde7fa1aa62e", +- "1a7c7fe62effcf2d1a2cb5", +- "392d9ae31bf22e0236e198", +- "3d886ee05f1bcf69fa4f70", +- "2c8f1060dc661c38044a5b", +- "16eeff7e87d3caf8e58a92", +- "741dd990ea20591fd9b5ff", +- "39bbee3cab035e7fc68b3", +- "4996f8a3f7c2c5fac02813", +- "36ded179138f0e4cdf1ee7", +- "f9d7db7493258ceea1a37", +- "2a6c238cf5c57a2939882f", +- "35dbe95730bed0669969ad", +- "290fe0ae5a419909be4e2b", +- "63839ba9cca448dd7fecff", +- "30a8e1972ee45f3e0613d5", +- "509ea21b16907067d06b82", +- "7633f58adb014bb5585678", +- "6c8fa526a6bdbce9f7b832", +- "4a78cbf6bef93b38948e09", +- "37c7b0fc4e875134c29246", +- "4c996629390ea0954eeb1f", +- "222dacddb6e77241cadac8", +- "2df2bed0dd9ba405c8c5ce", +- "3a7c703f2642b17eba0c69", +- "22e8d9bc34a96264dd4caa", +- "4bb8f4e111d078e3c54590", +- "69efc15f2bab10979940b4", +- "4e1b51392bd1ad38a51d00", +- "5e82dce0d15b40d73e81bd", +- "6a410e486ad693817f9d31", +- "5dab9e18ce0b8340db40a2", +- "2df0f496cddcc699504250", +- "124c113e25b1a8153a830d", +- "28d70ec040ec983aded5c7", +- "7a93c6e177d746f5eb503", +- "14c9d693e42997dbc96df3", +- "50755ca653aac70b84b12a", +- "5f72010436c71470f190d9", +- "1af9124bffaade4351e990", +- "5fdc8856cd703470a1e5a4", +- "10b57d68a8cfe14ef3ca7c", +- "245003f901ae0a356365b5", +- "63dbff9398c6d2cafd1418", +- "75c2ce5e2535ac7878196c", +- "15c08724b1daf7a590d087", +- "3dc7ec06146d405216b267", +- "1fab75ef67bec61a68a277", +- "711d3de6506cffb89d82c0", +- "15b79d2a607e674b1df02c", +- "928d2a95f60dac2e280f3", +- "2db6d4b5b7a928883df97f", +- "522bb592e89a78b316244d", +- "cfbfcb607ba616c016fef", +- "13d6f0fac0c0b9cd891715", +- "12a8a0e9fe6ba5c3656149", +- "4553e500c491eb2ced6e1a", +- "368d20177281b04fd8018f", +- "2579cde0e8d37e04167a12", +- "2f4c8ebd42ef359c5ac79b", +- "7afeb7314079bb05948a57", +- "4dde9b7ed5a96934e4dd51", +- "3cfc7a65b66e9f8c6f8cbd", +- "7453e07405f19cfba93c17", +- "18488f368798b8734164ca", +- "532d2ff2bd9d0ca8b344ee", +- "18704740809cbd3a91bcc8", +- "1a91a4ef4625f7ae911f1d", +- "26240f3e8816b599bb01c6", +- "60749c3a015660029dacb9", +- "321405882a2a0c05f7907b", +- "6b85f2803d97e818e2e527", +- "40d9ddb7d82d86fe4dc6d7", +- "5bc9b4c686de112404ccc3", +- "49e219e4b19fa82e3cdd8d", +- "6b4aa7c57cecc522b32c99", +- "1152ee1f6c91b44b1faa20", +- "4f1b7b04b31a6d85748c8e", +- "28eaec99940a1b1f563841", +- "341ee0e329f6ab9da76c4a", +- "8a4219421d2f55bef801a", +- "25e4a83dfc2f633765d96b", +- "22a17bb1e02873c944cbe3", +- "4c4fa3875e78671bc1d2bc", +- "79db0961906e2d46b0b349", +- "68d1c5df4d9653be9c8e7b", +- "7e0f7a6620c31d72d9d568", +- "42af59edeafb6c79b9d208", +- "3d17d279ec6a81f53cd4f8", +- "2f1ba6fd01e5cf713f7991", +- "5c246c8d9baad4092bd7a9", +- "1c6a5fca595a1ff62b0a7b", +- "5c6ce5b29bafc437eda5ce", +- "709f8b4e1e81f78ecdd5bb", +- "619fb115b590487fbaece5", +- "5b917d89029b0850efbfd7", +- "2103ca88adecbfdd3370", +- "4e0f2086acba831702db59", +- "cebc8496358956c6ed352", +- "4aa62ab8f33741774c11af", +- "55925c1c09bda33b3d0e7c", +- "47b5376a6bf9ae1b5420d0", +- "5f305f39404231a1ce6591", +- "d0d6f30615b8f231bece9", +- "851fa3652b44e57d9190b", +- "4c099f907df9db8a25350c", +- "48cdee08fb7cd0c828eec2", +- "7399c1866bdfc2ee9d0ba4", +- "7da4d79cdf3d83f0763c79", +- "5de657154513d33b2dbb32", +- "4057d3883ee10c31d0c5f9", +- "139a5be9fe5d74b7b324f6", +- "4678975ad8ef4ef63ed234", +- "3a1984f88834905315728d", +- "5e53c14166e301e45a1c84", +- "1246f9f5df870b21bcb1e6", +- "6095ebe0914ab346aaab52", +- "173ef6d2228315e7fc8577", +- "71a2dd2f4561ce6b25cc84", +- "17f8a55fef5d58503cdf89", +- "2885d88c14361dbedb4fb1", +- "69cb489051468dc8b7a10d", +- "6552488fb7e68b138c5691", +- "3d5e0686efab87e5e7c266", +- "5adfc7a0a78f6657a5960", +- "65773487e5415b58fb205a", +- "1aa4bb2c56ddce8ebceb39", +- "1ae4174a64ea29d65c88b7", +- "2af1b36e871a2152d87ea3", +- "7118c95246463e79fab7c6", +- "7f31009d8b384ea51f9235", +- "5eb2b60c1d97e4dcdb09d3", +- "5ccfa76193ddbc64186a30", +- "1e31c413e16722caeb814", +- "dee72e6d522c55b461f4b", +- "18250945b23b28bdd1208a", +- "72e90ac5d748fbd2d7aadd", +- "10ad00e38092458e73fe4f", +- "1144f2116d6e426f3addec", +- "720179be8f54eb5c778be", +- "1fe4c7d7da3eaeaae25e65", +- "51a001a64a22c7bc0db3ea", +- "7d40cdfed339cab397652f", +- "1960ca77285b35812422e2", +- "421de31b9083741c4d4c48", +- "3cd3f5ea5623ce969c863a", +- "4b6b8f4e6118573075d4ce", +- "43ac29ece073be2a30ce86", +- "217c2392122f9868740137", +- "2b3dba5edc89810815d1ce", +- "7a9c1df7aec04dc00e3584", +- "74aed20fd8f19001dab562", +- "74f8ea2aa01f3e122e9ec6", +- "7f3f1310b0770a6a8ab4e6", +- "7377f9449fdfa779330064", +- "4d3d6fd7781e8ff3322226", +- "3629587577ea6cd990a3d3", +- "29ca62a9234f915c5c9715", +- "5286bfcb1951cdb460fbe5", +- "1b0dfe5bf791bf4d645e64", +- "150cbeb75257f8eed7903", +- "5ebda7b44a30093e22fee3", +- "6af9f591969edf6d33a899", +- "321ccac2ccfd73a0b28c6d", +- "fa6bb9b4b92165346e0ff", +- "603f9b3bc6733094104e23", +- "2e30617b0abeb387001867", +- "e419f0eced24d03400fbc", +- "2057d9029cad07c3d344a3", +- "1d4515e4768ff5c6b4178f", +- "7b5d99de82bacb33af7ee8", +- "43f53558dbb8a25ad757e", +- "4265efdcec74f163498291", +- "477273c36a749543489547", +- "767f863c9bfc5fd6540f44", +- "d8e9fae4ec5d3e7913712", +- "2ea5fa6c2e19e6ee7add96", +- "55fca6cb45a0501d1c50ba", +- "4e94399e1765146189df5b", +- "5accf03c1a20af1120832d", +- "137f8e05276cc8f9180095", +- "499667b1e22348ac584789", +- "7b87e87e1438c6126ab1cc", +- "46ea38e0c4bb849b39baee", +- "d922a909e3b3afea5fe08", +- "4700bc9de4804ec44122f", +- "54018c8917549d050c00a8", +- "5f8307f0589178f70f7238", +- "45b5b538c44c73f3bf515f", +- "7ad19421f012d132850842", +- "7adc118469443d4f7084b2", +- "2ae496e8d9399061460619", +- "49e01d719bf13fd52369ee", +- "e1e55a565534c74a109fc", +- "72bd80f062eb130b42b044", +- "1d616376b444140f9acd68", +- "48082cdc2a40ccd11ae434", +- "32a426cd7460f9e5c5e7", +- "bb247081da09643c00d36", +- "34f2e009d684c876c246fb", +- "3e2cbdf24bd5900348312", +- "507a6d1fd108a63234b38f", +- "3253e31b47819fbcec75b4", +- "3ae16fb3fb77d48c6adcc3", +- "244d1131736a5aea351d17", +- "682b3c7ed60ad7c985a3a", +- "22d6cba0f681e23fc64382", +- "14da7875e13efd461f7c10", +- "1ef2f8aa8266e26254215a", +- "22cd6c35ab2195c56794f9", +- "1d1b1bb20ae40ee8d35505", +- "66ba97928f262067fec230", +- "53e99cd5ced120123b808f", +- "7e698a24ee9aa726fc4b0b", +- "1df3eb49ffac499fc5f3b6", +- "465d9407cc9bc6456e974d", +- "48938572f05f540b474485", +- "ddf6be61ce9c04533277", +- "15131878551adae4b04c53", +- "14c7f40a28e01adc5ae1b4", +- "5cf912fba9a563060d7b3f", +- "1c85ed9416af845bb8e82", +- "1851d531ca021ad6f2b572", +- "4ad2dfbccfebf4c881dcf6", +- "16d83b4ed79a537102c236", +- "19e1cce82f85eff6f6b24", +- "589758587c26455b22331e", +- "59fdecdacfa91d60fd391e", +- "1eac63084c7797618dd9f7", +- "426ece55a7fd1d858414a0", +- "2078bac214b712936de507", +- "3e748cccf5c4b2e587b8b2", +- "232c5e33740871b389c8ba", +- "7b4210ea990dbb2b80bb4", +- "53b453f5f30f900af808e3", +- "49f7df71bb684bf5a54c61", +- "1174d8cdaeecfc5b7908d0", +- "6106124e06a73207e84629", +- "34242d89a6cc1d4e30fa9e", +- "74d978e8d6a9ce6def9aa3", +- "308787b80145ee403c389d", +- "36121cc69943c0f23f8a85", +- "6d5d0573b2f9596b50b73b", +- "5eb9037bc76a6930985737", +- "2c9401cd53725f84e2c421", +- "8c59c1948361c413eed8f", +- "1439532a6d3fdff49361fa", +- "42d71e3ed0639f1b07231a", +- "29785bd232aa4bcde009aa", +- "494c96ddeebc9c314fa5db", +- "2e1d98165a5897b1482cbe", +- "7a4b513ca25dc5d887768d", +- "5197b486ae5dad9284702a", +- "1d4d18f2bee14ee417596c", +- "1b8c24041b5c09c2ff1c0f", +- "19e87845fee8ee9d86794a", +- "dcb3217133998c35879b7", +- "61c60fa253a8977e213d6c", +- "3df3e3ff8b5241f9f120b6", +- "7e880bc1729d1783a14627", +- "7ef05035c2a08e050870e7", +- "3c234bbaf5da9465f9498e", +- "39fc8d30c95dd0494e9be3", +- "75b29426909e9c8294f365", +- "68ab0ae55863c4f8044101", +- "1a01c5dd382ca52c0f8a1a", +- "7eaf3d6220ab7c049341fb", +- "e966e5d5e80ac9dc377a2", +- "38aece2fe0c1923c569603", +- "296401a6101dec9b48a81a", +- "a5385b7f7d2a505f37187", +- "1c0a01fb60b92af636be29", +- "546f06ab10360a76005c9e", +- "463e980411d809a1713383", +- "6247c20f5e97453bb71b09", +- "7ed8ee73ca5507f25bd5aa", +- "5f9fe5fab5062ae9d40550", +- "d7315bcace04536b59c5c", +- "700ac125ecd365c309339c", +- "792ab4b2a318b2229df59", +- "6e8a28f3d3f87aa2548dbc", +- "53034f778656513538ce93", +- "71310c65e10b4b2e1f3924", +- "fca82540d3cb37cfe38de", +- "324b0e59fd313b7b066991", +- "ca5fc0de7c8f0742fa11a", +- "436134e757c46fe077e8fd", +- "3382f247e6cbcf48a8be0c", +- "5714f7d7bb3f12d88adae1", +- "75c3040748861ea4157368", +- "1db2b63fb5b72bd2913b9b", +- "5de44a501f899626f11ecb", +- "4a728ba1f43b41e3c8ba7b", +- "631d5fa433132c920e949d", +- "49dd9e128368a6e8f31565", +- "5f091c9040f8e8b4af8c6a", +- "6dbec10ac45803905232cc", +- "422c99318e0e012bdf3cdb", +- "7499dfe49d22092ecbaacd", +- "4e9b8b836aefbcc76074a3", +- "23591be47ead61c7626094", +- "47cb5e48534f0fa269ac37", +- "45d0bbd0c4c565d517f4d9", +- "58f251e3a335055f8d1702", +- "e16e90086dfb42533696c", +- "32bc07a00fc1c32e790cff", +- "55d4eceed6862d8b7edf73", +- "3bd14b5c954fd788df3e2f", +- "32267a0d010a3ac60d956b", +- "2dd9e647cd7caac396218d", +- "786bd6b0d956c71e3d0c41", +- "5a2e3e7ac883c32720fb5f", +- "41824effd56ee95a25ffcf", +- "df5585842155fda65c5ad", +- "f0daaf67c2422477284d4", +- "285121b3579e1afaecea17", +- "2d0786ef10819221e8e925", +- "638a87cbb628cc2744b5a", +- "2e795b59317cae4c039946", +- "6df756715e22975feac139", +- "4299b7c55998b524a2963e", +- "d73559f9e34900d6994e0", +- "4356f96a535f02cd557790", +- "671133a56bfab71842e1aa", +- "73475afc8917dfb47ca158", +- "8cecd81b395199379b860", +- "6908cd3a0537e6d9de224b", +- "6c4e919619ba3e8fcc083f", +- "765220bfddbe009c12884", +- "696a995b7f1bd2337f9c55", +- "7a35b4347e2b2fcfef4e8a", +- "7715808f58e52b93fbd9f4", +- "35984ab233bfbbdc2149d0", +- "49f6551bb5a630f7f3a91", +- "260202888a368af1bf27f0", +- "28c70cf1a34bf4b12fc1a1", +- "74a3895c1173d1100e060", +- "500de5789e46431a14b08d", +- "e50ab5db695f894b26597", +- "6e0d3cb0378f9f523dd7ca", +- "3b890cc2ea1882c16138ef", +- "623f56668cc8a093bdba7e", +- "2311c97b29ff503887b251", +- "5f019291ccdeabcd687ce5", +- "6467af1a0f07013b2e9849", +- "14a9e816ead24aab2e6645", +- "6bbcfc26c4e8fa7b836095", +- "775ff949792463791cf8ab", +- "62658893411360a21b6bfa", +- "2fc0729bbc7485664f21f9", +- "784f7b46f80b03fd06242c", +- "7215cad82f761314bbdd1e", +- "475c6525a253fe4a455211", +- "3301553132b8af815a8ed7", +- "40066cef89d0c82982356c", +- "36d97c131b997ecd7866ef", +- "583e484be506b8efea96b4", +- "4656a2b830782828314373", +- "374bc74be1e4381a79910f", +- "4f459e6fecc9cadb8e977", +- "2a843c02b5e59799422e65", +- "3910da787142c54f4f9b2f", +- "ffbb4d4d7cd961d36be9b", +- "38dd92596a9fd54920876d", +- "6bd057cf4845772f81f71e", +- "4fe62d365b58ffaa0d2201", +- "1429ba4cc3fbeac84cae7b", +- "403c1a7f2d528ab5d343b9", +- "2175a06a641d5e8ad33646", +- "25d324d633986f4baae0fd", +- "63d746c096cfab5f984c70", +- "5bd335a49bc5a06867e5e1", +- "375f02bea7dda994d93044", +- "4f754c5d3b280b20bc95d0", +- "3a997ef0ad242391b526f9", +- "2c30e99c7b2606982311b7", +- "4d562b2b0bde307c0edc87", +- "b4aa58f86a462da2ed07", +- "ddd508394009eefde3ac7", +- "e73b5b515611f25e496d1", +- "e4ce3641fd893553aeebb", +- "32765eba5563b5336b4375", +- "594ab65a623ca11a1d847f", +- "7a6cf71a247a9aa2ad1f3d", +- "509c14f0517edd55968bc1", +- "3cb90317e0fd78744bd72b", +- "45f39b8c67c74dfb911f44", +- "476085adcac943f7253ad3", +- "658a9098281c199cd165fd", +- "cd47f8baa501aac7b0989", +- "3de183e6b991f7b8085160", +- "a5582fe7b241700d09fbc", +- "68719eec758c692aaaddb3", +- "7d5f8fcc1cf99dc3131c84", +- "5a2d6c9f89fb24cf28d1b3", +- "7e1946c78347049b735318", +- "2db5ff229cb2d0a85b8393", +- "6f9024d8cdd8d69ef10bf7", +- "38102211c805f10960d5ba", +- "55e838d685f75c7c6b5f20", +- "339fe9b069fdcbe6f3e985", +- "1a939b8af79d6b9d1e57e0", +- "2b1a4dba7447b02833bcc5", +- "6a5c41dd17f1f090be79f9", +- "6ad4c1af807487676eed8c", +- "6f33938b3b060336c57082", +- "1e7a055357b6580f4a7b9", +- "1d51d9201dd8c5066bb7d1", +- "daa197fa1e9b3068f7333", +- "364b7fe165d59b5d916e2f", +- "4026f1042b0f5b1e940a78", +- "3501255a6a3473cf6ac042", +- "73a88b6c78ebe25a0f02da", +- "645d789e2ca881eb3474c9", +- "6f59efef27dbd92df6f652", +- "32dc0a137f654afa8bd8fc", +- "4e162f9f85bd081abd7380", +- "48ef84f7c351ecdc951b2d", +- "69150cde40be119caa92bb", +- "3b409dc537f82b36a0b80a", +- "748df460f8594e0bf1ab20", +- "178fa57d907fddb0fe3cca", +- "6747e95b215a546a339b7", +- "55247bc5a72b8d3e89234b", +- "683a5c6214b92efde4aafb", +- "f36396be6cc745bba9473", +- "77a73ba77b4ed622a17e87", +- "2c250894e17e7f4b0dd", +- "24af65fef90e2f99e03cae", +- "3292c0c9fda6887e4ad161", +- "304cc216ed2272d07c7f80", +- "5488a723f6ba5cf9800543", +- "47d8e4eb9811f9d409ea40", +- "7e2be12d72782db9e725dd", +- "247f391e5a3b234cf19ccc", +- "29f1e17550354ceae49f99", +- "4edfb060e1dacbd449d726", +- "4a29c3e62c947a4a1e99b9", +- "4755035ba4d9924118903c", +- "3d946cf498fbed2d965f70", +- "260d3af59b4f3d5c208bbf", +- "34b484cdb4cebe6aff839", +- "7b5ec7e3346c3cb243b356", +- "6b25a8073bc36b2af4c2b1", +- "3665e544d5ec7ed8868a1b", +- "1ccb03c008f2e822848880", +- "18e83fe885c9bab518bb97", +- "42e88e9f66659afa2a393", +- "5533d7d78826353c79c73e", +- "674fde01f6057423c31a9a", +- "3a9c7a7d5782f84fd4620f", +- "19b52abcac8b60d5349efc", +- "23ac86fba80f09945d51d2", +- "61249154ca21ee2b75deb1", +- "473c4bff7362fbbd2049ff", +- "923121ae3af782c934df4", +- "66fecdf77d13ff6c0b25a4", +- "170a54e825e33a2265d3cb", +- "31be6678e513813e0e676c", +- "7972b4774882051f2d85a4", +- "75b09479e265b9f0ac9a5b", +- "708324dd5e787ea3d43a21", +- "4c67268f528ba7e8c34a0", +- "51f9e6d75a3c5264312643", +- "24183bf26908368eb41547", +- "5e7785eebda5c8e2f0247b", +- "5338be8d9f87d3f2e46b2e", +- "14bde3f9984cc98dc83f60", +- "62870c281778214067b40e", +- "62e9a332653e1b103db5cf", +- "69c96f5702ae4eecc6f341", +- "3e6265ca213c1a0be64512", +- "5ea38165e28694c8629ccb", +- "2be59650bf9aa57c249937", +- "40678fa2d309cb9417f68f", +- "3459971422155f9703c78c", +- "5552617d9eaca45155f490", +- "18991d6f38c445ab4b38f1", +- "1aee70e483c99574480349", +- "277575523998439f834d3", +- "692752e677cdaba7d636c2", +- "298af75c2d584b01ccc6a6", +- "4d7d33eaba361883277544", +- "282f326b1fcbfb463ba836", +- "6b0dc0d5521d21af0ccaf4", +- "57f40a819546afc89fc2ce", +- "6a24f8897d3040e8fb1da8", +- "51e8f647af3880d2b77ccd", +- "4b223517b6c7cd85cb43d1", +- "745ca85c76435eb7ba81ad", +- "743eb61998341a5e892884", +- "5afcdfdab7a5b6864efc6d", +- "39824b01dda7b8ada90cc2", +- "2beed154412bd52cf1c83c", +- "6b497ffe240d0867d5d7ef", +- "eb947683c26db8dac2f36", +- "15891c14bba25257cb14ef", +- "4f540ba10fdacad19fee6f", +- "5097857cdd82d2df144dda", +- "6799fa1f9cffb381bd6c8c", +- "5e45b3a532e82a603df12b", +- "53528c9bfa6f5405d66497", +- "2248d63b93978222916f1b", +- "c98c97ab7b4b0cb756894", +- "57d57f4721fb6be3b38e99", +- "7b4ac8e7f9ffbf17f0627f", +- "22af1fffca9aa4b2ba234a", +- "2b913687a118d5d595277b", +- "3cd72e80ffad615f09526a", +- "e050d10f9ab1681fbdc06", +- "36c8b1aaf274cca356ae2f", +- "3d88de9f1c15bfd7b6363b", +- "73e027017f2dbdbc204a16", +- "6ee2946ba009641ad73037", +- "522de20b2431d6ac8f42fb", +- "427af6fbf5578c6104b255", +- "172bc617da9e1aa348e114", +- "1a5e08fda45015af7feba5", +- "208fb7a4ffec7d8d1e5be6", +- "3712172b56577089f4c773", +- "621bfd4a39ee713781e554", +- "2f0c8ecc959b7521936666", +- "682583fe078ff76c962922", +- "509b53b07e607cbcf6e79b", +- "1b71574f7c567d707d0e82", +- "572930c1df7ba238dfc9cd", +- "2029341ddfdbd9f668612", +- "1a54e98271fd5720e1bc63", +- "62f83959d672cbfe7201a", +- "2abf897aba93d347d6e2db", +- "3ecd876c819b78567f7fa4", +- "69714524521e343bc3692d", +- "290cc13b5edc05d863546", +- "26436c96779bbae9c15fae", +- "32e5746a212d6238682c00", +- "5e4b991cdcf27f65105596", +- "4a05e03567ac78048832e8", +- "658769c97f8b8945ac2878", +- "4eea383bfa391bcb14540", +- "4871087f3b2cd3c0f24c3e", +- "5c20428f433fbf0c9ab374", +- "15aba357d612d87099180d", +- "73f933fe401d564be0efd3", +- "6d925493d403647cc0a7ba", +- "6a40f14b7a50eeca571bae", +- "446d6309025414bad0aee1", +- "6e388c53aaae7d287eebd5", +- "3bb5af245e5d40c6fc15e3", +- "66895605da5092de3d2b87", +- "50774e378282fd09459eb4", +- "5abf04c6f95d64b6c414", +- "54dcbbc689dad12df77730", +- "226c7c98f219b40ea94b66", +- "6abf077f6636ceee313734", +- "53cc3acdd810a96c3160cb", +- "59b759ca3a67e4725b5f84", +- "48e1272ba911cad7536a1", +- "1d3c95c9d8462d4c467220", +- "4167a3ca5253556f128ea6", +- "bfe2f259223ccddac13b3", +- "bf09d6ff46adc21d04951", +- "4555d38c19f123cccb6fb4", +- "4a5333a5e1c04b8bdfa257", +- "627a4795d0c0df1d84d13a", +- "122225a7053b175027361a", +- "5027d58d8950e307548d14", +- "76c881f1a372f21e829095", +- "7f8ad9957e40808881a192", +- "621edd8ea6ff7136526540", +- "64adff5211c520e76cfa93", +- "7b274f32f2cbfe03031cb0", +- "3c71a5e6f6b431bc524a53", +- "10cc655b268878a4e8e081", +- "56853e4d2e614e1924d27a", +- "1c72fdd679cfcd10e369be", +- "1a364185d640ba1a6ed583", +- "230c19482c2fdfccb6b94", +- "1a9a55461554e908c4fbf0", +- "48b5f18a43890f525b850c", +- "779b65c66a52eeb45328d2", +- "3a0a69f5624f959d85e411", +- "498cac7e3100df5899cd16", +- "6be91a7f057434bdea3953", +- "1b0ff68c5f14ee84b37e7f", +- "af86674d8a1c364331ef3", +- "4fadec3b4cf5617426ac33", +- "5cc79f5d12d2a991f4ebd0", +- "5ca7f66678a73081bd34e5", +- "5efd2121bfee3a30184816", +- "6b79ef63bb66f1362d8de", +- "3c4dc48e3cdfd4ce2eefe9", +- "1c9f92bdf4717c6880a9ba", +- "168c6919206ac6ace0f625", +- "27e147bc2366e607ad99bd", +- "44678fb0d784f11b21a657", +- "47792007d733892284fb9b", +- "636079478bd1eb493d0866", +- "7450197e181adf8c4f92cf", +- "65a7ac7cbfcc2f6c41c2ac", +- "c92faa8d02b107a1b5d50", +- "1ee8fffd33bf6223d36b95", +- "203c3b480852a2154fd642", +- "7ba683eab937665ca29978", +- "1998245099906d42a62588", +- "75d1f80628c3a1c1082c91", +- "1c6bd00355516b7177a93d", +- "795824804b82c5e751df2b", +- "2746a28b14b19ab8d24145", +- "75b3fbba0880cedfe12ea", +- "dfc33dec9862e861d43cc", +- "5d77b3e7e323ddd35a71a5", +- "7438dcc1d87bfc73ab26", +- "755d342969e9fcde9fd595", +- "7bca9525e525d6ded2c76f", +- "d08254f4d2d5ca1a5b877", +- "4d1a97d405c026a8a5aed6", +- "825e4a5dedb493626e7ba", +- "26c3f6eae80009e6946697", +- "59b1b4d92c6ee6432bf67c", +- "705cc0331aa0195cd9f6ec", +- "6d83e6632fcdd8cf940ffe", +- "69699a76b55d4ca99064a0", +- "76201a82e565cd9ac092ed", +- "49b08f20244bc64879adcb", +- "2b04a0e7492ffe108c1c00", +- "4de1c0244f476f355a3a91", +- "1bacdadb366134c3d1a5c0", +- "755b7f3a3389c861fb2d23", +- "153d48f10507702bdbbfbd", +- "17ef22a6ba1fe32d3ef7c0", +- "6f55491282e49ce5634ba6", +- "66ac85711d7e32d731c773", +- "7a45d57fdc1a44af5791fe", +- "1b931cd6241fc4f484ed23", +- "30ffdb4a4aa7f26e29fcc9", +- "54b4dc744541c38f937102", +- "4413cfa8b5666fc0af877a", +- "5b18e3d2fe16a9d973b934", +- "173b57e939be4a4efef880", +- "102e8f3d54ced5e10227ed", +- "79b27c762372e476f703f7", +- "37f81f265c72ca7279eb3c", +- "6b11c6506832a5a8571e85", +- "5b68ba6c572a6576af79a8", +- "26580ddf1efe9fe3eae4e0", +- "3c015f30d95c1da9c47adc", +- "54c37f5e810a7c49e7a02d", +- "3b8be315926a14f8200fe4", +- "5334ba131913654474693a", +- "245f14c58fc2f1bd38bf6d", +- "3ff0891da2c6d0cb8ab6f0", +- "3e61864fd19f85bd211f70", +- "493f40656c80193590d2f4", +- "5dbb4f6414155050573b80", +- "6afe8bc3bb8509aff3c666", +- "586e1bd3806f5472b98045", +- "6afc9a3033b5fed5a0c3ee", +- "7969c90c819c5b0080834", +- "5ee2324ad6594548cd275b", +- "5c6cf60aae0cfc30048ec1", +- "40e1957b3947c90dc23e89", +- "5846b0049ea6f32f4b2762", +- "1e5217185f433bf1233d59", +- "af0b8a8f75ec961c833db", +- "4f4128c0856b216db55c75", +- "41d953d4dc4746ec83a1f0", +- "3d55ef23d8c9f8419ff28f", +- "1a5f34cedfae0cde5ea0a4", +- "6517d2ae1b7ba4107ba2ed", +- "4839ff83b5f2ddc41b61ee", +- "30ebf17f92538a33a005c5", +- "7530bbdc505d301ed9040", +- "46ea2e85d6ca1966d1ada4", +- "78022742d8c1b58e95d935", +- "6a25d7d313e7a656aee548", +- "a2c3a3cc1a5dfdc5a02b7", +- "2e76f32ec68bf11c44acc8", +- "54aeb8675aac1a423a7140", +- "dd0623ecc7bb862ebbbac", +- "61d42c0be51a3d664c8df2", +- "254a37a2b407cabbf8069f", +- "687346ea28caf1c87376ab", +- "67b1ce8dfe00f53da9491b", +- "488aa158d747df0f5cd422", +- "21eb89d73161656b740b6c", +- "686f17e02f2d49c0e2e48", +- "dad2db631732b0506f6b1", +- "72e9a5baa06d4af7c9f9da", +- "1cab579a1f775fb778d900", +- "3c3d137503578a98196d6d", +- "2a8bb0c8c3747adf31dc91", +- "1cf9608a937eea1a0bb3af", +- "40a3f5ad2d4a9b33e2f67f", +- "147d7e964c45ec443a24fc", +- "7b9587337c3feffe6974d6", +- "5839527a17db25de563064", +- "1160b80ff627f607bda927", +- "5aaca79690a162240db985", +- "c75433d8b0423b552102a", +- "f46157d09593fd6ceaef5", +- "20db18e6c822f683f97989", +- "3e1e43759c2fbd4596b36a", +- "125d9103db1d2a83e13f71", +- "28a2b96944f1b1210e6bbb", +- "33fd72210da605d38ab799", +- "4cada2a5056e025832015c", +- "365c9be3e9c7dcc814388a", +- "9f4b0dce97935ef1d9158", +- "2b8d9b2da99a690e7c44a7", +- "fc59307a819ae8b7a3f67", +- "567dff5f6f64aa1697fa0f", +- "23343ed75a8de5a22fac16", +- "4c2a57eb3ff167fa077ee2", +- "7a2990f262218cc62c32dd", +- "210cf16be9c62f7408e63d", +- "49c59a03a60b57e7bac289", +- "499ab94c7bb40ba492d85c", +- "67437e976a93329c5b9760", +- "77c405c1030a468f5abe34", +- "34363c8e2f82b5fdad8c66", +- "39c91d6ca89a6fa52b3be6", +- "7b2f70ff56626a3003c33d", +- "416b4cd1af257e44ad03fe", +- "375ec3fc3fce6eb8e8ee9d", +- "4fe741cddc07d380fb6143", +- "67adab05fa921650ed942f", +- "601f96473a856041a89ff8", +- "13fc0f6b201b7368c44178", +- "6f79151ea6cbf1bbe85f5d", +- "5dd15f8501fbd308a231a2", +- "8ab595a01941ab4070b39", +- "6ad236039c2c3e149bcca2", +- "40c514f5e20e67263ea899", +- "10b3ac9e35f753e3c9deb", +- "2d816960b0911019df6133", +- "14efaca65e59726b81dbf0", +- "7d98b2bd2e9168b6d2e72f", +- "49639d01a55025d5b2f6ef", +- "2e1479f3781e1a48fc49de", +- "7d60cbfdcc63ced7661d40", +- "3ec0da959b014a91e3d171", +- "6e1573decbd31bd14c0615", +- "2ae83fe35c42b256590f54", +- "22d68d4ed1af18d8658de4", +- "3153805f294e973c493b1e", +- "23270a061497f9098a49ee", +- "3ed51ed7c85d68db84d78a", +- "788f47c4aa1ecb9b01c1a7", +- "9dfe0a1feefabb0c62643", +- "7376e75fa605889898fa7a", +- "578a6c67a3dea7609537e0", +- "146dc1fd204e259d148dfd", +- "59ff3fb267f4dcf86fd4df", +- "5a081e53f2beac49d1a3e5", +- "37bd7e26cf4711cd149911", +- "47d814d93ff8dca3c1398b", +- "132d2eb133a0383d464ad2", +- "30f7be09c5f39b5532dcd3", +- "83b4a6c139b7fda28fc0b", +- "77e2377901111b6ba92316", +- "7add5048bc0984c36294e1", +- "2afa4dd2f2245b7525fdf6", +- "50c4c9d0b48bd147d875cd", +- "6387ce1a213d98335598c0", +- "52253824741dd177a674a9", +- "3195d14bda042e7057d34f", +- "6b849a1f17d635cf0a773f", +- "7c9cfb41c0f888d000fc52", +- "7dea2305f898b6d88f6821", +- "43d0ab106641bd01d72cd4", +- "1d5fe04c71a377f6784338", +- "207b51e97aba651825b40f", +- "41327dfa41486f6b995572", +- "245cbb0117ba8963db7929", +- "4956d4cfa3dee8e23259eb", +- "49af3dd263ef8ddc7b0303", +- "76dda8edbfa5a4265a1a74", +- "26b516b52794658e68ab5a", +- "260f0ab9a00e1e941e404f", +- "3395f092181af53bb73f3e", +- "17a50483229662a578fdf3", +- "30e3bf91dbc04d50a032bf", +- "525362bcc006730db95180", +- "6e988e80d2c29dc7542de4", +- "47efed21b3657d0618e28f", +- "fb85baef473def8948133", +- "67afcc19d0bb557a608666", +- "3e1ecaa8d0631877bfedb9", +- "38a68ae5efe6ac22d3f278", +- "4b2a621bcd3f244dbd1aa6", +- "2432bbe72c83689ef74c85", +- "1aba34eed15b418d4b7f0a", +- "2d2efb8be305a05b685aa3", +- "cdd3df5aba4c7ba52b4cd", +- "7c38756fdad7c18ef7576", +- "437e569a7451bd9bbbce87", +- "614a9023303ed4dd2cdfb9", +- "43c088f2eb74b96d25a4a8", +- "308a1daa2779a84d4db8ac", +- "59f29456bbb20b47aa046f", +- "4b0f09e29272f9d49c6266", +- "b03e402e64c3436818402", +- "40f2e74e1048db76b72516", +- "1a484afbb93898190d8d03", +- "6edb305f1f8f30902439c9", +- "7fd2ed81931942f0ef8d50", +- "402466331777b126e4d8e2", +- "52d5ea798306c9e21853b2", +- "765c653014c5e4b3dc3865", +- "785211217f5fa1bf82b193", +- "3bcee7bc9a5ca7219edfaa", +- "61b023abdf63ddd6300036", +- "2f305b730466b54d50855e", +- "60b46e71f1f2b8376d5d29", +- "745cc1be634380e90bc82", +- "208b7d3e85a97a99407a38", +- "1000ca68b2a0f4790d5b97", +- "2ef94456619d9728490c1d", +- "18347f5ec924cf4631f292", +- "26b5c49d8c4e12d4b3d157", +- "15e2aab3b7b69272b3c155", +- "76272e758d9f83ceea908b", +- "fb87766da12e75782ca77", +- "57caf75d12ec817c6cddfa", +- "1a04ba76b7855a5e9c289a", +- "7e5eb2a4ef3434465acdeb", +- "35b964532350abcbf76d9f", +- "3f14484539a427ea73a1b8", +- "4d10e4408b3b6761aa225", +- "235ae37d20b21074f27732", +- "44dd12bd0d7f960d6bd7f6", +- "196185d708583cfba757f7", +- "5f8e36ec1202b0292d5945", +- "47d7208165498ac04fc240", +- "332ea59945a5d0e73f7dc5", +- "653694fe66c257988cd02a", +- "3069cb41e51edac9ec2b3f", +- "17e032019f0dc1c4277c0b", +- "52a44d4aac2b12a44786a4", +- "33bbdb9fd9d9e6cda126be", +- "520cfdeb5b65ce3df47f12", +- "3746df2dcaeb2f941850af", +- "34b380f57ddac800a53234", +- "7116294960ec1370cfa192", +- "6c02da94ff6269ebf8b68", +- "528f06b90d6ea98654eb1b", +- "643b1783eeff5d2d9d100e", +- "14e34536d861554652fc3d", +- "28da7bd48db9e867715c64", +- "7b233911df67c0ffe75298", +- "282425a374dcf57904fcaa", +- "7f873bc8523c4931739324", +- "5f1584cca489de9bdcd65b", +- "6862becb8f668738ac092f", +- "495ccc90a936edcdb3b175", +- "71dbc0d71fbcfcf1245bc2", +- "5298718820a8e285437a64", +- "2a9957bb174e3a8d1169ef", +- "58dbbd6f088b5ff881356c", +- "67ed429f48df076df817f4", +- "ba3b72d702ce311cc02a", +- "6415a8a79aa0ebffb6a24d", +- "5b6485b2f7f41f0abf3544", +- "edea2902a199d26d75bdd", +- "97bac956d2b65a51260e7", +- "b2c65762784255bbebc75", +- "41b1881d9704918a051695", +- "3939cec4c6eb132c9146a8", +- "4e4622894612a0772ab9f8", +- "398cbdee468f0759c375a1", +- "592a4efec7cf89e527fdb", +- "79ea859ae0d9bf58c8e071", +- "4786c255855f792a20f869", +- "272821f07dab57e4aaf0a7", +- "25e016000255df0b5c8153", +- "17040e8c8be515e4ea36e", +- "341181b7d4d6f4e2cf9643", +- "73f8a019ddb59d3f06f049", +- "cbf28251298433a3abc70", +- "51edf68dda1a87c4b3af7e", +- "2e78ee01fc4dbe304eaea1", +- "36a98de095d312e040c903", +- "1c94ea576c3cfe00e40a0c", +- "2969569df7efe8c61bb461", +- "2b036df33feda1ac5edb68", +- "3d1dbd13d46aa7f5e4c42", +- "32f17d420cb00b34cd9fc3", +- "79a8e47a4d897cf6b712f", +- "6be705331dd40db5a995b0", +- "797e5770501b190fa5f6f1", +- "21d9c50ac15f9a1fc38df4", +- "639eb30656278296f2b3e0", +- "4b90d5d4f791e4cafea283", +- "7b4912ce2f8ea6ad90baf0", +- "185c0df44a167fc9bfe948", +- "4c622bd5bd26bcbd487c68", +- "7c4aa256f5265e9d49e8ab", +- "63f8378a4c563212109ee4", +- "4ca98168d36f8ab3815a02", +- "411a5d336f1cca7988f319", +- "34c572dd024d37c54c5648", +- "249469414e604f245a56ca", +- "2e9650e328b679ea03af31", +- "db07432bf40360e3df399", +- "2e9fc43379988881a1b064", +- "752129c2d07a536bf3bb8", +- "c79d219ef793e02a9f989", +- "210441f8cc9b531f88fd3a", +- "6bb593df2f572a23254ed6", +- "55152f253ffb05575c981d", +- "40734a14dd653457e54b74", +- "7fcb3af03a778d48d5ac9b", +- "43e02a2659ddc4d3204fd7", +- "2ab0a302ecc453de7fdbe4", +- "2a68ad26b94fd25b4509aa", +- "46afa6e418c9bd4065cd9d", +- "517123f4920304dc75317a", +- "33c3a8fe7d6e90cd610695", +- "1a30afeb54dea502f0310a", +- "2b5280596202f4b3ee0814", +- "70b50a59ebc270bb237505", +- "65f71d8c8e62cbeef07daf", +- "197461e90c6b70a7dda46d", +- "4053f687fd270a04d092a9", +- "43d235cd54423fd6135def", +- "ac0f86afb7bbca8d57c4f", +- "1dd4abfd6c4ed8a3ad6bbb", +- "25d3735a734b777dd960b8", +- "56a6cdbd81ef505320e706", +- "3c1c9492a56c8c78536095", +- "31ee9d29cb2f2a7eeddbc0", +- "666ea50157a2d8307a0ef8", +- "1472017c713a1063411e0", +- "53e73a626a5de69e43d0e0", +- "dcc0bec90c531be4924ef", +- "6bd3a60ce037d04a7d822c", +- "3ad7e93e4ab55d402a33ea", +- "10db0037fd5f7d8c49aee6", +- "4d29703647563e84d6ac7f", +- "2555442bf058722bf0120c", +- "2e274c1905f505ef9d43c1", +- "46b0509f9638e9030f5895", +- "4082d11934cd3944191e6d", +- "3cab0ae1036c6d43311ae4", +- "218c9ea39a51618b1ce10e", +- "9e1bd1e36f73d0f69f697", +- "5a20607ce9679fb1f266e5", +- "4ae24f235a28b7f71492ce", +- "7510db776aba775075e549", +- "5695db84b4c92a3d6677b2", +- "74e01ea265377cb713e57a", +- "768cbd11024387469f6ee1", +- "61b85bccf0f4316c2cec04", +- "aeeaf98aedc83e6ae6cc5", +- "4e175c68ed04c585f606f8", +- "1ee9410958604d03f20f1f", +- "127b65c61b8c8f1b9456ee", +- "3d57e0a1ef4abcae8719be", +- "688ea19369341f6943063f", +- "1f91eb155829f1481d6da7", +- "4f34769ad379d64a27233e", +- "59daf69acb0d30ef2fc5db", +- "1efc90353d647b1a3dfd54", +- "39965be2b1bbb3ed832fdd", +- "7fd47e391981aa515116c7", +- "5ca9b2680bb84ff6e98b33", +- "36b7f85db80800549459bd", +- "16d114b00964bdc8e2e82a", +- "7c1256dceb40e2f63ca4f9", +- "5b4dd88e0cfc108bdc7320", +- "239e94f2e5843a6e20f1bb", +- "3552a76787de4570d42693", +- "6f2f55effdb76df46b548a", +- "6152765b747658a14d5829", +- "1778273a04ac508e342b", +- "75471e22b2d84fd2fe01b9", +- "5d6bf6a59488555bf1342a", +- "160134aa459258ff8f6285", +- "17e8af02e79e7f8d2cdf99", +- "4f5e7f770a4d50c69c4028", +- "51fc2c3f86b8fc46a7a221", +- "70d95d23dca53184d30b4b", +- "4a9b685698a7674338b188", +- "4d7940ea6bfaa7b282a985", +- "39baaf1f520d96bfc8c1df", +- "409fc384bef4b3d255371f", +- "3bac7e0675e0a9967ff7da", +- "5c1544633a0bf7939343d0", +- "39d71478d3005e797c6913", +- "153884834dca9aae7d5d2d", +- "630270f2ed4331deaf63f0", +- "46323a1998a54f7e0819f6", +- "61c87048ea8325590bc5b1", +- "1960b3a13c6cb6acb7f489", +- "3956e2767e97b7703253b0", +- "1b5226354071022a104a86", +- "3a7ecceb35e2e9a438dbd5", +- "10c81c57aed768b3285598", +- "bd499ce82d93c07477fc", +- "67e11e83cb547515b53701", +- "171757e72adb6abd8f440b", +- "590056c647987959065bd", +- "4e27f64f8732105513ad9b", +- "de9896eb70f1668b87fc", +- "457dc9644e5b25ae6c4291", +- "5a6df4a369ed81627d4fa3", +- "568fd03e0a80223cd1669a", +- "1e92415029559dc3ed8283", +- "1cb2dabf0298f57d15e65c", +- "426541c137d269fd2e2296", +- "19a439abdf3f4f5eb63683", +- "482af287c71050fd03632a", +- "47a080b7584194b936f712", +- "20d4366552d0d83219fa0d", +- "4494bc9e65c8cf2a6ea51d", +- "2148939cfe2757b6666fc2", +- "476ef278c257202dd01711", +- "3eaa7351a72b065707e47a", +- "2703e4a7969073dd381cbd", +- "1badf1b7dc0b73e0bf8b67", +- "47d847bd96fbfc9c221fd4", +- "13637e15b786797995ba49", +- "5e842bbb537167f75451a7", +- "3b228f46cdc0e8a979b45e", +- "2fdd94b55dd5fb9a3915f5", +- "1cca04897dbffe7f26f2ec", +- "67a8cdbece1aca4e55ba72", +- "47ba42dd06a62256ee8c8b", +- "3288681f4d08858009187c", +- "69412d8563ffa7e83b0ef0", +- "240e2e38e41f3b6530a267", +- "12e92ef014e8d7fbb8d23e", +- "45440750f90776251263b4", +- "3a8965cf80aa6c4410dfab", +- "559bf101b9cff724b929cd", +- "280f08134d28252bd0b713" +-}; ++static const char* Roots[] = { "1", ++ "5569560418e73ff9db709", ++ "5bf795c6d548a19b6ac340", ++ "760df490123f6613b0a970", ++ "7cec29d14a0eefb222bde7", ++ "3c70a3f0e9c5b206031a33", ++ "1cec8c96472b84936bbc22", ++ "3315173915ca23d8c1b814", ++ "39a0c4e1da321f1bc126f4", ++ "760f3656c1130b21d369d9", ++ "452231c3bcde7b7b5b0af8", ++ "6fe27c77d57e2feb8cbcbf", ++ "3a7a488015e75feec809f8", ++ "c16d15fea9d61c8df5121", ++ "5a8a9b5c659b71e837ea18", ++ "506d84c9f4d4bc400fdd25", ++ "4d7566cd294f75be6620f3", ++ "5f80095f2580ec4cf13b51", ++ "34eea7a66e8ff3dcc8988e", ++ "899b1ac6f72ffff8aedfc", ++ "3cb5a124ce563c3967dbc3", ++ "16d5205447831696c5d6a0", ++ "414e761d40341e7f97c304", ++ "498104aa12355244a9b0d6", ++ "3a8c5a9525f5d62cea294d", ++ "1c90fea5f39d8ac4dfc2a3", ++ "6a716dae106b9aeff2133e", ++ "735cfad9acf49090fb7037", ++ "5f4e7c70ff55ff2f888f05", ++ "2f39a2788d5c2a24e16acc", ++ "38d9d05f9463a537f470b2", ++ "72b5d8f8e65cb7509a93d8", ++ "75066462fdbbc7301e209b", ++ "55afbc51e7c2cc748942ac", ++ "47a1f466100bf70dd5689", ++ "57d88b5e0b434eb1a0dc08", ++ "27ec8c6636679988dd1267", ++ "4818e9ef0ea7625cfc3d0", ++ "68fa3ecc3845db5d523ad9", ++ "4c95bed884bd87ec1d5e70", ++ "7136b3dd116ed121aab68", ++ "60617400353c1eb8e8832b", ++ "19772e34181f57b670bf9", ++ "2f58f2df794a35875efc99", ++ "690aa96130f8c533d77ce4", ++ "df261ad3b5157a525bb81", ++ "6a437e22c95fc6c6a4449d", ++ "1cc2526113f2bae9b540c1", ++ "7fc2bcc524b4326eb8303d", ++ "751e9eb348bc8239d6e118", ++ "2fb170a11f1aecdf586d25", ++ "32aafc640e8c99bda8faa7", ++ "552aca5af025ea1e84aadb", ++ "30a3461d63ca9807464dd6", ++ "3f68fa1a9ab7772758d0ba", ++ "6ba1300374acd487b23577", ++ "35865b2ca16d3453781f41", ++ "3d1155c4a53835d991a0f", ++ "74bb588b5553c2b2d4ac78", ++ "3778fd3a46ffde4755b6ce", ++ "1d2b9ca2f44294070d4e86", ++ "38596ed050f14596adc07f", ++ "2015aa6fc7e48fa3bc5ab5", ++ "2ad2546b270547fc24541b", ++ "1dd1b432dc809fe4c879b3", ++ "149e6a0b6c6543ae895e07", ++ "7851b3168b92e5daed021f", ++ "2bee268df09cc40864a917", ++ "76c2f0ba37187112ee4d4d", ++ "53016aa1427381b9f28ea5", ++ "397f144a181805e1a097c9", ++ "634478b621f7f0a455c48c", ++ "7cc0116bd0bc164835ee72", ++ "310e395e429c4494a5f850", ++ "63e0dbdfb13b4fbb46f00c", ++ "4a9e2e5d8ad0e2e82aa7de", ++ "7d0578a8908ba294259bd", ++ "17276a59aa9630c1141c17", ++ "393fe0be8f011593a7e1ef", ++ "475e84f70334cc0bc8292", ++ "1ccd174e9aa4e58e7414bc", ++ "19b666810d736e639b51f2", ++ "2a48d89ce122dfa7deba2f", ++ "6520599b30ba3568ad0f09", ++ "4b35e35e82bffb49d0d830", ++ "3943e926fbe3d426004ea9", ++ "4e501beb4617be0f02deb4", ++ "343dad4f059acb87d3b0e2", ++ "7bb4f9d707b4ee3a20e779", ++ "7de4927696bdd6d3b718", ++ "6da3828f2d4926651f7a27", ++ "3601174a7dc823bf4dc3a6", ++ "223160cdd1bfa322ca3e6c", ++ "31a504d1dcc251075e4436", ++ "1b1ca5d6c688c4cf99448d", ++ "4309c1c59a581af63d922d", ++ "6077a88144957827c07205", ++ "22e321253c3e0fb875c4df", ++ "6b4728ee168cd23e2fe47c", ++ "1c35e13f8ffb7c470fa61c", ++ "4bacbc68650c41520d312c", ++ "455c9131bfa1c33274be37", ++ "23c82ae839bf5380a55acf", ++ "171e59c89024b148534f1b", ++ "165ff53589519199fc1846", ++ "69bb33c18017fddf18d091", ++ "2797689917c95a9d4073ae", ++ "527c4b155e3708972293d1", ++ "6e007172a16a9c673e635d", ++ "1921f3262afb2f3766f357", ++ "70a2d453b688803716fdbf", ++ "4fbc987e428ed0ce9cb76c", ++ "58320debe89492ceee77e", ++ "1b0c27c7452322264822f3", ++ "66ffe80af410522139e92f", ++ "5e56a7d976f1a3334f57c3", ++ "536a736ad3a37793dd9f54", ++ "407333b3b6a3bed3ef8920", ++ "76fed7d89907843db9af52", ++ "18019c176b4c9453028db8", ++ "4a54d9b3589d5340a01e23", ++ "1a4e5bc143bf00e8928403", ++ "61f4a55b140e767495cd59", ++ "25cab751e23d8e69bb5048", ++ "591bac661062f64b8e3f2c", ++ "7006ef130d31e12bc44c5a", ++ "6a23876a8c802d81d83d29", ++ "7cf9338ca9bcab73862b81", ++ "e941ecc714605cea72177", ++ "4839c6454f97ececa9969f", ++ "672d7083ec424e5d883cec", ++ "3722a55f27f2c02b34eddc", ++ "4f72850630f6f8c1a68862", ++ "1a63315aa52cb254b65ce0", ++ "5a0c2602dcbbbf468b67e0", ++ "23f219093e9b0bb3b5217d", ++ "4f6d8c8b0b9b376d42c4b1", ++ "7abf68b2e4cc9e3a3b2c5f", ++ "75f4eb6de0d35eeaa16cf8", ++ "6a81a8d913b71671629ad5", ++ "3afeb7cc8f8e5bb8770da", ++ "2b0fed7a534d25697e5c7b", ++ "2964973c288dced7dae8fc", ++ "a6c54d0ec55adb4911efd", ++ "7e958697030784ae5ddf86", ++ "7fd4ee663460087b793a80", ++ "5cafa83a10f929b5076c60", ++ "452d3dfff11e24bf680356", ++ "39242760b51f2f93fd4721", ++ "18ec20d19a478746123b", ++ "30f4f5617cc73435ce74c2", ++ "1851e925707895d37a37f2", ++ "6400e87749e3bcbd750d89", ++ "6c8879d694e1a0b99f8e42", ++ "3ecf9d05cd62341c4f7784", ++ "7895b432001edf846b7b3e", ++ "7c6b359299af5c59043711", ++ "13f13f9f2c877cb73ba5c", ++ "2193bc73ac4b40415c95b5", ++ "6351b2a5f477112f552683", ++ "48eaf0293f956717b8f048", ++ "21a363ab0e08a4336f2e44", ++ "d8c34dffd92c1a20d6a9a", ++ "7dc98aa964908b313939a9", ++ "327b2b8d0b75e0d83a5b04", ++ "2d1b2f087facf1fbfc7e69", ++ "6e97dd298eaee757a3cec1", ++ "504d29ae2e5a021d2bb278", ++ "5344962f90f45cfaeb1bce", ++ "767dc9d34c09b03db4a0e9", ++ "731a7b89f357bfb855a5b2", ++ "42cd59499a0ef57d6b0009", ++ "5d711409f3faa9ea87abfc", ++ "352389083277fbbbe66ac3", ++ "30a77107da1d91a699e9f5", ++ "39bf9c3f1f0a1a15264530", ++ "5ce5e0595ad07c8855357b", ++ "4499c1c16fec3546d5903c", ++ "5b8e9d8b290e89e5d9afc3", ++ "214f18ae0c9aa7a1b8c02e", ++ "639c2fcec8b9dfcc987387", ++ "1536906705870049755028", ++ "e0800809dbab6d41345b4", ++ "39489c7fdb445490d498cd", ++ "52c4d1c2ad153a3f70bc0a", ++ "540f5a33d5aeafadcad19d", ++ "6081e77fedf3898fd66607", ++ "584b7d6f0b43ddd0b397e4", ++ "7d8b341c82b019a8d56c92", ++ "2478db790ed59756cef964", ++ "93cbb2483673e4e0dda30", ++ "18ba9d869c489f11ce52e7", ++ "52cfcbd15dfc6c476cfc76", ++ "7ae1d007cf030664c6b815", ++ "9bea90a26f9e93743a998", ++ "7e62c15038abb8244531b4", ++ "3cb748f77d638122329dca", ++ "1fa330f6dd5f3ca09176ce", ++ "779559a53e6b62275896e9", ++ "51a9b0945a0908b1d40d24", ++ "2b13e041339df4d5a521ce", ++ "7256923d608836710a659c", ++ "48a999a2dc1a23a934a6fc", ++ "ef75fc5d77fc146e975f7", ++ "a058b3353ac6290d9f864", ++ "290ac68bec8aa8955b7e97", ++ "754ffe6bc2e7525e892fe", ++ "5d7c2a1d1267b7a252da1", ++ "35714b90920ce6fe1f850", ++ "456138a50c3717947be48e", ++ "1e2093f76475f58a2dfd79", ++ "4d8859f357a36792b7211f", ++ "3505fcb3eb2690f88b3be3", ++ "2735b2e6f5f08a9e9418bb", ++ "4c1f6b587fd26654ea69e1", ++ "351c5a0b997e45ec21b614", ++ "1c960c994194a1366a2222", ++ "352a4a136ebd7ef294f370", ++ "2df28a1b78b46f16aaf53b", ++ "29bbe5fdf14e69065cb80c", ++ "30eff32d49c10f325b8e9c", ++ "628d18e095a8dbcb9f43bf", ++ "1efd2b46d4a8724e929fd9", ++ "13221a23af3045ec5cea35", ++ "15d4218f4bbf0c95cd9649", ++ "3f5027ce278d444a4dd243", ++ "2d5e8f78718c2d4660cc69", ++ "49cb6ac7a2bfdc54300006", ++ "a134915353ce113eb72dd", ++ "479e7025ae3fdc2bbcbe22", ++ "64ed03e382c11a32e34cf4", ++ "3d73fd3c3744e9ec5d2d04", ++ "116da33e19c8b80384fe28", ++ "68ee183b2208228da8bab7", ++ "1abc0d15793c655cee4a9c", ++ "307727bd97c5db086074b3", ++ "1d6812727d8421d0e03a6f", ++ "5b39ddb704fa58142076d", ++ "2f78c0f7e7a90558573941", ++ "35a3ab4773c5054a30c44d", ++ "76c132264ad2a774a55164", ++ "620084c5da2910137e2b10", ++ "31541f24753a28cc5b51d8", ++ "52f5adde99e4501e4d1c61", ++ "779eb73caa637aa28db87c", ++ "3a89578d6ca992f91249be", ++ "536be2b3e3829710aec51b", ++ "53c95b2787b88db0682132", ++ "4a0fb16cc4d1bdfbb239c", ++ "8b462e0f7448b549fd688", ++ "783e0229f219bc18b705e4", ++ "17dd6e40297f1d32786291", ++ "4f2cc1f6f7aba8c20a670c", ++ "479fc9912c9c81152eb474", ++ "117480f169f81bb3e8609c", ++ "df7ae04689867c9ad97d8", ++ "70a1107bc42bfb598164ea", ++ "557361125249092a7bf932", ++ "5cd319aa7906a96d2f6c7e", ++ "72a7ca4a8dc56f9c652281", ++ "dce90e419e8d3f96eb5b4", ++ "15bb5d9b44eebb27a1e60e", ++ "2baeaedf76503008b9e428", ++ "7aa81a94a5a230cf59a0b9", ++ "55d7bf2f5724b5dd0a04ae", ++ "e1ef803b3674bf39884ae", ++ "1738ee1c8e104064e07249", ++ "7ce4bd3337a7333159cb2c", ++ "38110b962a169200cc9f0a", ++ "1ddeaa1e583e9146210f69", ++ "cfc86f804a481df48868e", ++ "55a41153a33cb4649703a5", ++ "5eb4d93a33b2d2e2c2adad", ++ "4cd904fd9401eac5ad7f1c", ++ "502c6a2df8916b18106088", ++ "6259df76b87ab2eff6659f", ++ "2f85e68dfb9aea66d7f07c", ++ "1f1eea8231315133cde938", ++ "6863984d7793407587e8e2", ++ "7b5272bdeb1b01fe56bc29", ++ "26b7df388a02a8279b0652", ++ "7fe76cd2c5affa913c2b41", ++ "733b81816da25936e81af1", ++ "235baa54adcc67af92d06d", ++ "4e6cb8ec1b00e2f28b3a7e", ++ "88b8371baafc87a9713f4", ++ "3b0283be973d59ebf4242f", ++ "587cce1cbd0dee8b98f262", ++ "6cfdd09fe2bd66b85c2e00", ++ "12a3196afc09a79694eb31", ++ "4feae15528510f186aa1fa", ++ "449ccc3923e92a0bd2e3ba", ++ "4f74e7ee01738298062093", ++ "6ce98c831091728c0e73bb", ++ "4bfd93fb985a44ed0569f4", ++ "3c8b04f81e14e10396b582", ++ "6cf76079225189eb2608ce", ++ "76e87d4d2740e137511b26", ++ "c62790b24bc842a717e31", ++ "516640d56302eb15061b25", ++ "60c8d2e958387c0d0627a8", ++ "402c7149b20bce787c7e83", ++ "64c275af1abda385c2af0b", ++ "5088a2317aa34dd5bb1b4d", ++ "67a9131aabd5255bdce732", ++ "d452f805a2c35e686e107", ++ "5ef5512b3384aa1243daa6", ++ "6c1076c01e9e44fb047889", ++ "46bdbd32d31b2a36e04e0a", ++ "527456447c2748239033cf", ++ "356211f56936e183312837", ++ "449d4feccb40da2e122aa1", ++ "43ee4b35cb3cdc84d1d5db", ++ "7651ee2e0f4d348cbe95bd", ++ "2ef2be0f7e33ace73bab4", ++ "4b8968b5c5a93dbb4b2b55", ++ "7d2db742721c9ba686ff30", ++ "48e4926c40cd6ab5e92ffc", ++ "506e6a05e8de5c9198ae69", ++ "74a156e77589342bbef3d5", ++ "798019b397419c8d54fda1", ++ "5a7d2dd2aa2028d4da8f42", ++ "5ebb44d93cb77417b61c4f", ++ "1630a212afc84f038374d9", ++ "3ae30b1b5931eb630bbf6c", ++ "37ba1e609c7b12a8e32733", ++ "238de3e1606bc0e1c33adb", ++ "149d706db4fce00c71da76", ++ "524b77666e02692a642407", ++ "ac6c9987de6c73f2259d9", ++ "51c819b9ec191b60920096", ++ "a961f7b95836d3a578170", ++ "2bb1db818cfd733dcce0b0", ++ "51eb043d3564fa91215f1b", ++ "23693b4063cf0fa20dad42", ++ "4fbaae68fdb253d715d528", ++ "69a784edece7c38bcf7297", ++ "1d595362f3a1b4c77729e7", ++ "22f18c95264f1fb742c348", ++ "5637e5d4438a119a23f043", ++ "75a7fc26a6faacf109b345", ++ "3a051daeeae9770973713e", ++ "4b21ef5da2b744139c3cf1", ++ "471eec9edf3f5af18be6bf", ++ "341851bd5e48e20f0a412f", ++ "f125d56d3c0c2aaf7ad05", ++ "c91beeecaf54c95dc1b37", ++ "38e1e6200860f4072a8a1d", ++ "3b3a5f854ba249c04d075", ++ "4170c011864f5582d6a738", ++ "17fc45b2690c315a5249e8", ++ "1bab6e088abbb7a786ff3d", ++ "1b388caec4f8538425d93c", ++ "6df80f50564e811e245eb5", ++ "65a5c9fe061a38a8c6c2e0", ++ "18e5cae7f3bd61293a8c2b", ++ "408e6268fcd75479c3bece", ++ "514d622fcdfc26212b5d14", ++ "435abcd28c0cfc9f321db0", ++ "710608c33a517ea5d5359e", ++ "96cf28ae783cd1e477aa5", ++ "5685392e26e4e637394c54", ++ "32f953543bd07093a29e5f", ++ "6806f2889f5316f4c57e07", ++ "668c0767178119bd41ac3", ++ "6e885e79f7b5fe77214da5", ++ "3915c8d33da94da27c1249", ++ "762f2aec62b91b262cc99f", ++ "7ce0b194ba3e31249ab36d", ++ "5dd52a5a11350a9b7572fc", ++ "404ae85658f9b08174632", ++ "7772e0b990ccdc614c11c3", ++ "573747456cbe53c844796c", ++ "3cf5810d8c38a097a7561f", ++ "269c017af27ad44e6b201e", ++ "2835e7f4b39073c5a451bb", ++ "ba07dcfdd701f16f45aca", ++ "1b6a00fcabec41d4b43ba2", ++ "67da5d093fc207176dbdb2", ++ "311601fec45703953f2b91", ++ "483ca240f22946b37af3c", ++ "758f193f192584a42ebc31", ++ "16fb077509115b4c0ee442", ++ "2334ccde40867fa1d0bc15", ++ "3f0177714af6ab07d870c0", ++ "697c3f9accda8d3543f182", ++ "59a5901c521b74864c8fb2", ++ "17961b8be9d0332a213177", ++ "69defadcac1e44c7a1c0bd", ++ "2df92a33b308b4efdcaee3", ++ "3a603b28f5e57fbfd764b9", ++ "65c75439faa2303912b32e", ++ "121daf29269045f5bdd20b", ++ "7adedaa3d8ff64ef5910ed", ++ "7b59158d38abcc0653e41", ++ "63bd657552fcd47a1fea3b", ++ "3951fc47c9cf417968c09a", ++ "7b97dd845f9509d060f296", ++ "67cd089f73cfc8807dd840", ++ "b17adb15bd895ea825438", ++ "3860f5646a470f19d720f1", ++ "1365575dcf06e2b1987b3f", ++ "5fdf7c6cf80f5f4d619b9c", ++ "1e86f8d9f30e1c9ee2f741", ++ "2f4da63191088795366c81", ++ "1f527bd93add787e619f2f", ++ "1bf7de225f0abb4eae1da2", ++ "7eede9c7d2fd05759ff0d5", ++ "7c4ebd51c09994a5c2702b", ++ "2f27f9f5b37e53f26a3367", ++ "1a91f5500bd170effa0820", ++ "14e76412c1e117fa60f762", ++ "27869ae6bfa80052e928d4", ++ "36e5208ae458480078d5d", ++ "193c88995f60dbabf1ee79", ++ "55509fd3a52bd88fe29e11", ++ "60188d16e528a5d2e06d3d", ++ "3cd40ccabd157073f9e356", ++ "6f7417b6bfc27461fd2524", ++ "60f671cf9f662680d04313", ++ "6a1b97013fc782623a1d18", ++ "4a5a912df871eba16ca2bf", ++ "4bafb874450e24655961f3", ++ "7fa7e63240bd502dd4b06b", ++ "3ac9b63dfc3067c1c4627d", ++ "11978ed9a01677cec42ee0", ++ "6b488f646fce9835d43f44", ++ "2449f6a2ba5fdac5a9c1d4", ++ "1fb4d17ac6ee317ce5a547", ++ "230119c3b2a6b1bafca00", ++ "5ba00e958e1473bae28031", ++ "2e0a934adfe422dd136191", ++ "64af53c3c0ad963e3055c1", ++ "173ee21e60a88ae566e166", ++ "c25f982adccb58e81ce02", ++ "1c0d48f6283945e321fdac", ++ "15b86ea9fb5f9d46bb9d95", ++ "12ea1cc2026e4f5211a159", ++ "4948e72d6c06974bcf7212", ++ "474d5e705efa51e5e97d39", ++ "3a928b86dc180342e1f053", ++ "68570d0c5fc94ab3c18486", ++ "33294a38a5c8a431b3624c", ++ "7f5271355a686a4df7e516", ++ "2176005ea62a7fae1a0ec5", ++ "7b7ba8150a404335a3e978", ++ "7ee167869f16d0f3096184", ++ "37b012fbed4994b5319766", ++ "5a9897a2da0299756dfdb3", ++ "22c922d5b0fc736e5f1adc", ++ "7c793c0d415e26d57ec92", ++ "11326e189db8b15b0744ff", ++ "39f2517276288f74c45e3a", ++ "47b94fbc156b869e9d16b9", ++ "4a27b941aa4c6ad1e07548", ++ "796842dd6bfad2f98912a6", ++ "561331256e1d21664a1287", ++ "4d3db82b9d6efaedc42576", ++ "26293d249066a3014c3338", ++ "29d711357943b0afaa5b59", ++ "3baf4fa4e9f273acdf732c", ++ "22f4901fc0a8b24cf62fe4", ++ "fa65751eb4d84785986bf", ++ "1c89d8520ef104ebd20ee", ++ "3251a62ebf3abdb7c9ed58", ++ "59db917020bf7253782d5c", ++ "52c455dad0b267d43552f0", ++ "599102d1f2500d61d762c9", ++ "77024358b3e776b2c5e1af", ++ "3248d851d401112b750bc", ++ "36f20d7e24da8778ce35f5", ++ "4dbcbf0e0833361017aadd", ++ "7a6a150f8921047e15edcb", ++ "5d53571a7cc3688e6944b0", ++ "3de0a5abf20a4845d76439", ++ "330bf157841f4554c8f5de", ++ "7faf5fb28aa48ff83cc07", ++ "ff765fa35889a47189d5c", ++ "1bb928a5ce5b6a93e4a6be", ++ "443f4b4ed3b1f2c8fe8ce8", ++ "159314ac561f7431a71dd2", ++ "2ad8da8cd83b1521d7659a", ++ "2e6c1f41a9866f4d867e01", ++ "2bf095a2fbcdb3391aec69", ++ "7286bedeaa0c2687819d8a", ++ "1a1cfff05adf1a427c023e", ++ "7677202d8f05f9287a6047", ++ "144036e909f39a00a79653", ++ "5d5d0b6bedf48b96c5eb79", ++ "2aeb5606838c910769daa9", ++ "36b57535eb2f884ec435f1", ++ "26639427b4cd468207f354", ++ "567c07ffdf5609acdc57cd", ++ "46c6a4606b83331dd733e4", ++ "214ab6242649bf5f0673b5", ++ "456b75b7118ddbd9c05113", ++ "23f47a79fc10179e2f1aad", ++ "6750d083991451ddf24ddc", ++ "9a91d432ec896438ac971", ++ "62cba5cd6ece1fcc005653", ++ "146e2b3f7404eaa2825f64", ++ "73a1489a18b0815a03faf8", ++ "4b81add44caab6287f5254", ++ "43da9e4b9fc98c3225df02", ++ "73c9485e5e5379f878695", ++ "4b0e392a6b94b0716bcb0f", ++ "627d01094a2553e7bdde46", ++ "6e1c49a1adf3346b270d76", ++ "2c11fd859f539479044b3d", ++ "5ad56a9a03d1277384501c", ++ "538b76dc0991647c99d6ab", ++ "2fe38c447768175651bb27", ++ "2d8207ca3331c2f27a3943", ++ "ac1c0028dc3aa005da816", ++ "5830e5e1c9294904118c10", ++ "4fc1aa30a26bf05e1cf79e", ++ "37ca6d3b30cb2687e44f7a", ++ "3fbae766d352bf62d71ec9", ++ "5b8558cbc60eeb5d4d1e0c", ++ "3c0ef922648f93834d2bac", ++ "1f216750a4d1686b3b2227", ++ "54449f7dccf77fd8f14fff", ++ "25b4f424465c145a893505", ++ "1533a8f5ee81c2d4352c6", ++ "747f5812283a8ba1a43af4", ++ "42d3b2e606813eb48865e1", ++ "771e23d6155cbd6574be92", ++ "6937a623eafb54374944c3", ++ "7ebd8ffb86035ffa249a5c", ++ "65a59676f2a0f7f5358513", ++ "4cc1b8f60c7b3b604dd7f3", ++ "8c1b60a22d754654b3b0e", ++ "3542a00727cde7902f64", ++ "46dbb8e8c99f2d8cf603ab", ++ "449f89bc8e75ebc93c06c2", ++ "42fe3f1413aec51428fb64", ++ "6ea50d7820cf1c46cfdea8", ++ "5e81e2ee54fa1c8e9216bf", ++ "3cdbf096f176a11d399e68", ++ "1b8c58018b9ec962054ab0", ++ "292e4d75da1a76fa4eb730", ++ "23f737b6f1527cfce0303e", ++ "1f2e34fd7020d08b01b7f2", ++ "1103bc87eb4e4e572c882c", ++ "4796fc52e00fbc5d65fc02", ++ "6ecdfc4db1fa1b0104403a", ++ "5d780dd5bc1f62ed520130", ++ "403ccf27d3ff3c3686d654", ++ "7a42533b0f16560c421482", ++ "3c52f4c6c583d5b2a18105", ++ "32e84128c0dfcdebdcfc5e", ++ "db6d45038525122246c3a", ++ "7e9e8be590540d41cb48b7", ++ "4dac5ec68e30db33d790b3", ++ "4a9951c3005ac4b7d775a5", ++ "8d7ac16a6c7fb5dcaf362", ++ "7a7267a5eeee00421b1bd7", ++ "14b9cf8ea7c2a2aef663e9", ++ "7a75465db2452d11dbf6bf", ++ "49da4e6814895f7566132", ++ "6ac2b95852f2b3848657c4", ++ "29f43cc681e11325bf172b", ++ "41d82e9988854950bdb48c", ++ "6f5834f39b940405114e26", ++ "754181ae9689816d4fae85", ++ "394398fcb25e82a48b8d32", ++ "693e564c43456862d84db1", ++ "5fa8c4e879ae9ef5c6f178", ++ "3937d6181e67f43d9bec08", ++ "4bd73bb75df0b9c8f31e93", ++ "417a5a771b0fe4694065d", ++ "47ddc74fced651c57b4d1f", ++ "7746c161815ab2091d9e21", ++ "72216a00ebfc9de1e963c8", ++ "74c5b771dcd8c4719355d3", ++ "450dcdc45566039112cb21", ++ "1ffc37c5751a51bd676a97", ++ "553adfba4c4a6d20491557", ++ "d65fa4e9fad0f9180af7", ++ "6151a60a864edd0e7c7b30", ++ "57a6c26c5e5dea61f133ee", ++ "39f0a0674e65b2cad4a706", ++ "29105da153f2a098ad094b", ++ "c16242d78c3d8fbfddea4", ++ "235bf7672a2cda1ab01fb3", ++ "3faddb5ddd2bdc683de72f", ++ "75964f1abb3f7cc93e9f96", ++ "62019722b2962f2ad1787f", ++ "67427f6921fbdb98c3e375", ++ "2a0c42a5cba7fe55a006e5", ++ "2bcf3f6e0be988750bc0c3", ++ "31cc33f2d92bb3dc73372f", ++ "553e86c66c2fba13b95f56", ++ "75f53c77a2d34dd51c6882", ++ "6f8c0ef46d2275dfe7e84f", ++ "5c1c9591ed7cecac5be504", ++ "e0fd267f226bcb77b4105", ++ "1aa73126a375b6cf5e8b5", ++ "5e4eaaa44cce4760757194", ++ "a15cce75efaba6c1b571b", ++ "7f779a7314dbb8bea5c652", ++ "2359b0102f9a1f774278d", ++ "20bd84ec27cae248ea38a3", ++ "38a3fd25a6d9f4f7c85efc", ++ "2117da386a0ba848e04619", ++ "6db55a7581d577d97e45ef", ++ "68437c168764f9b52e36f", ++ "5574ce6446f5f9b2cb3ade", ++ "2a8fc7a338bd0e95e61238", ++ "6dd1e30b456df046e42f20", ++ "360136af955e5fa1edc1", ++ "403c97fd7a8e612b101803", ++ "e8a31983f38b3bc04d83f", ++ "2fc4119b8d9484cd86a0bd", ++ "23b23c226ec7148e9ecfd4", ++ "40f14f4642441c80c723a2", ++ "255da48e767df6db73178f", ++ "5f4ee2c7a7d447e781b997", ++ "4945531dd0d285dff322e3", ++ "58de9434dcaeb21007cf50", ++ "4eb92d6051c08bfec28d32", ++ "46777bd089a8dc8c44ba66", ++ "155305c9e80b8231f3fea7", ++ "27e0d5b6d5b01b974468e6", ++ "3337445fe49877ddd94c8c", ++ "23ff36317f41cdc69b5f8c", ++ "5798f45a6d32a5d9e220c4", ++ "6b1b87bf69d8ba16154459", ++ "d959366c9d2eed9c988e", ++ "7914f6f164e20860badddb", ++ "fca586b3bb595a8d4101", ++ "68bf1a165a85b17f192a39", ++ "7b94e69ecfb1ba4bdf42b9", ++ "363177aa4ad204478f4d2e", ++ "4ec109ed0d029a0c6bd1c3", ++ "ccd4be560162041ae08e2", ++ "3e7a71b985de5c6c7a9f57", ++ "1dcb001f06c75da3270a59", ++ "7feefa2c38e3a6212b4cc2", ++ "58a47971604afebfc2dfe", ++ "175182c7cd2ce431b0150e", ++ "1ff2197a0e5b3d0b65c928", ++ "497b40c11c5d479cab5f20", ++ "5448bba652328fd63e3ca2", ++ "748cb85b7df9ca5a82d4a0", ++ "5b60aca7fe85259aa048ba", ++ "68bba5659f4f20356a0cad", ++ "16a2f9f4e53133020d693f", ++ "75df623177a9cc914a680f", ++ "dfa61531c98e389318ffc", ++ "12502410f917e813c566e4", ++ "385c720d2080ae9544a074", ++ "15c5021e3387b5104eda39", ++ "6ed402123cbfe00df8030b", ++ "4e9e415c8033fbf3989b6d", ++ "1ead4bf29c5aa1e11118b1", ++ "3eed8387e5a22f84995caa", ++ "6207f87b59fc321d1fa8c5", ++ "5527388c03206dff6a464b", ++ "232706fb395f1e37b2683d", ++ "5eacde9e13242553f24977", ++ "257f0dc17de9e402db5577", ++ "26c8838f41263334d39302", ++ "5ed2c798bc4d3df9693b4a", ++ "59048c7bc400c1b2f055f1", ++ "60ea199093a4e9f80613b6", ++ "3fdb397b831af56c0902f1", ++ "47be6483decbcd32c50b44", ++ "715687651f6925a41a3bf1", ++ "5c585a64ca68d89750e9da", ++ "1f5e885344b51456b2195b", ++ "5d2602e9c7bafe79929bee", ++ "25b65fbcf4deba1535165c", ++ "4bba04cb6f7dfe33e4bd", ++ "4e1dab19fafdbf4d11123", ++ "3b79806e60c6443e5b75ae", ++ "28390f3626b1fdadbcbfd8", ++ "2ac5b705311ca0e8e6bcda", ++ "21cbfd5db5cf856bb6980a", ++ "31340daa6bee66dc702e47", ++ "4520d49550bf0a2328020f", ++ "6a91ca9f24a59bd3f77cce", ++ "590c069f4d458da38448fb", ++ "4eca5fbd35a4778cd18f80", ++ "288723d0eb9a25150c0772", ++ "6bd55e81cea4df6934b8f5", ++ "684e96f56360b04576ab1f", ++ "10c2f27dd2e5d8f77a071d", ++ "78b61404bffa36b135773d", ++ "9b13c11e290284a86caf", ++ "415d623b63f929b3ef879f", ++ "4dd2e16c6f9989907671be", ++ "72e3a111047449df428c07", ++ "27c4576460764aabe86ca", ++ "509ca3fe7eae200044712a", ++ "1488492f946cb788d721d6", ++ "5fd2fb0300581c5f59fa7c", ++ "cae1cd222ac38b9a89a19", ++ "62a4fc7a9af2d27e92b08f", ++ "2dd86ec9cb242b4e68016c", ++ "615326e14c6c74c717def2", ++ "454b67d8b7470679eeda79", ++ "359b739ee10f4c4f24e721", ++ "6714be0beb22d71708c5e6", ++ "571cc10547604b09ba9b69", ++ "64981a92737099a91d3794", ++ "58b898760417610a09ff41", ++ "5e1c654c63269bdc77fee1", ++ "37e704706a7967491e3628", ++ "76a279212b584d95ed2cd0", ++ "64d1d7c43b00bfc99b8bb2", ++ "524919eb6636c6c6c14a82", ++ "4176799b704bfacae7d897", ++ "2113e1a93f5d2f1cba0377", ++ "47626057be8af9d92cef74", ++ "31fcd9e9b87aae6bf32f83", ++ "2cf0b3c6e55d4f6c794d8f", ++ "2f36ea2bf51461b1407878", ++ "2840ecdbeaf847ed4e56fd", ++ "4dba440f7f398ce0198b25", ++ "6ef7e0b470470f565c088f", ++ "58a41d74e16c1b1fb6cbf", ++ "68b020f430372f0b20817e", ++ "396792f2585d3e823623df", ++ "171772c43b172c6f59b4ee", ++ "35da7f1fc27e6edf7e2774", ++ "5fe19870cf156902f09ea2", ++ "4a99080981fd90fd8f202c", ++ "4fb7ac8e103e64af4c501b", ++ "32124e45d595b542218cca", ++ "4cbbf282cb8d5b492509da", ++ "26e8b6fae1b81184be307f", ++ "4019e2ed5f4f686e75a334", ++ "aebf119c49f1f5d4fa77", ++ "214de8b9e305b92a9ebc6a", ++ "155503fef8a8a42650f8de", ++ "4cfa062853643ca21aa8e4", ++ "210804240b673797c1da0b", ++ "4499b6e3311b7fe5b9c98e", ++ "904098cdbfd4389279e30", ++ "575c81fbd5408f583cec84", ++ "2cb3e5c4dae6b173319195", ++ "411254ef95bca10cdc61b9", ++ "14266a10ce4302dd32d262", ++ "14a25dabe8f8f9bd2745b5", ++ "7c2bf4a989b0889ab6c2ee", ++ "7bb42f21df6b474c926cab", ++ "4edae7063e31e196fbffc4", ++ "706df4fd50e1c42994aed3", ++ "312ecee1519b0617d31186", ++ "32f8a36cc1b46c25cdcc28", ++ "6cc9f90d012be002904668", ++ "69498de156a0aa10a4e2dc", ++ "6bf558bed09b770ac7b7db", ++ "45166035762ea541feeea1", ++ "2bcddd9fb0f98505c98aa9", ++ "56b71258283af76e7bcfab", ++ "3349dac2077bfdf6a12d86", ++ "39450177cdd3980c4efafa", ++ "4ebe9580f66ecfa62bdae4", ++ "2d2c322dac49b5fc4277a6", ++ "63a2efcfe030b5eb3fd526", ++ "2327087d544749f348c909", ++ "3d49c943bed92220933501", ++ "2501ea3eadb12569e01e7e", ++ "7c2fed1746d715eb95529", ++ "3adbdefe2bc4d894d3eea5", ++ "574f9294e066c8fdb761b7", ++ "69527863032c1ba7d7e238", ++ "78778c448d7d69eeff19c7", ++ "63a482d47b34384d6c0abf", ++ "37120883f03d674fbee3d7", ++ "46789b05c1e88afd58b2c6", ++ "62e55ea318373ea102e458", ++ "7bfe5c12baaa86c60d8117", ++ "6c065cf636d6bc65762095", ++ "45109475272b0ee96581b7", ++ "1b4e22a54398ec5712c2f5", ++ "c0bc8c55f3b95e521ebf8", ++ "614224558d52e5d4eb23b8", ++ "532cc2e0afe1d979c42a70", ++ "6e48887c0bee3ba8386f63", ++ "726d30610282ed39d8f203", ++ "53a902325a9087232d64a1", ++ "6e72d626e97997cb842159", ++ "1fa48382ab305e0404adc", ++ "3d3a2d2ef7d22dc8adb10e", ++ "59aab11c164124e5cdf604", ++ "7529b300b4b89c580a5f62", ++ "206a9c38358f291b01e407", ++ "47267802b4baf11a616d7b", ++ "1d50b663f8750fc777a8a9", ++ "4113025c4b26d50d501a53", ++ "21e6a33067365b1e718020", ++ "1e3f1f00ee5c87d8bcc6a5", ++ "37902c15fea70cc2588984", ++ "330554538efb3452d928d9", ++ "eb12a34ffd8e97426aebf", ++ "7f53a40fb6d59c55fc0a6a", ++ "2ccc62a5fe0c2d164b78ac", ++ "3a82f64175d5b3caec9c53", ++ "676d8d92a92b0706da21e1", ++ "5c91f707bee21c71c33c34", ++ "2ab6145578df975521753c", ++ "6e20ab59697e8bf608ee9d", ++ "96afde4db924db62eec7", ++ "2d980e097ecb2ab91b9b92", ++ "352a1b67a355f38121c462", ++ "7c3ad9d6ed54817d082b65", ++ "65e071aa89e8e9caa17f", ++ "4e4d1094ae9ce9f42b1d71", ++ "6d82429df8c04f3e8cbdea", ++ "201a5f031183f9e3136174", ++ "4b31d20ed3a1f68f117d30", ++ "309eb70bbb47b20185134f", ++ "bf1c05f166718be1c6836", ++ "29dc0e371f2a3ea6cf4d60", ++ "610a799f5f9443dd8f333", ++ "7ca0b74cff2de67657aaa1", ++ "31018337a926110b0a5b91", ++ "3c066553be4fa2a741db4d", ++ "194fc13ec819c9e2289cea", ++ "3c7d066200b6ae5892048a", ++ "768b4e15703c2b99a95ee7", ++ "66673b06f4474ab9ac84e3", ++ "75b60c74c3f4835e0ba3f1", ++ "282bde17894173789173e7", ++ "6b386c8a9795cf0b45e160", ++ "1984882a708094eb26643e", ++ "7e84a589b79843d0f09d89", ++ "7f30d40bb0193bcc3bff38", ++ "1e9e640158c2d5ef405818", ++ "46f7147d837df6469c39be", ++ "717a62d953937ab8d63ef4", ++ "29d27ddd5f46b0a514ec85", ++ "7f5d5abee4ea627ca346c", ++ "1ba30d22d8ca0e3412c0e7", ++ "1b892a6bc6d106036dc210", ++ "78208a8be2c33504df2573", ++ "2d92e146c92e5c2141114e", ++ "65ccc844f43d7740c3bb83", ++ "6cbec7ee27571943d99309", ++ "7ab8d7968452d732fc3362", ++ "51e871e33b066886db1e57", ++ "70cc62d0a35cccb85972ee", ++ "7db23dcfd5b48847b2da44", ++ "38863908f348e0ff24d2ea", ++ "5f7998cdc984bda089a530", ++ "593ba411e3481cff090a6e", ++ "30c01b8abdb9d98a7941dd", ++ "46861d4c2ab5de181f3e32", ++ "2f44e6e7eed452c1b02ade", ++ "31e4383d0d65d0adfc3084", ++ "44b51755bfc5410d6cfad6", ++ "2b89a454954d4c6b2e2120", ++ "7a1817cf8f21c4f863437a", ++ "1ece2489d9c16fd0d7c093", ++ "7fd049d0f5d16bca84fbf0", ++ "284cbec8937114a1728cdb", ++ "2a6ced30aaeaaa3957eaf", ++ "41ec16a5c725c7d32d3a8d", ++ "2c1cf6d476ed98aad97b90", ++ "715fb02624875de3ce495c", ++ "3d325eede75d0a573042e2", ++ "4550a8c9126d63e137546e", ++ "116c396589d81e0684d5a0", ++ "48ad93093caf03d61b0aa8", ++ "29bfa87365d098b3fe8377", ++ "3e14120ed24ebae50e64ef", ++ "1924697a3681efc60e8e70", ++ "1e1de465daadd9547d63fe", ++ "32c9397c9adff65d943965", ++ "41ff1be99bebe99b10f273", ++ "cb351e8f1a28278af3af8", ++ "5939fc19fad9c14c8917a9", ++ "634af4f8ff5eecb70f9b3b", ++ "14b126e3c0b0f4dae2ddfb", ++ "39bc9fe63b4ca1891dbe7f", ++ "3b77afb6ec85d92608bbc9", ++ "6308b8f5574126f70ec3cf", ++ "2928531ef291fb90d243e3", ++ "7d43897c9a717ea4ffaf53", ++ "542f3c6130072ffd145c0a", ++ "57b79cb347145bcbe43bcf", ++ "68855602ae559673b8a2dc", ++ "77f657453333dfbed3c7e5", ++ "1fb7c568bdffd12b767330", ++ "abbcfb2e4c3da6b090978", ++ "36224c16a9190272a21e14", ++ "47df2e03e1548a16e223be", ++ "f6c4daf384fb3d39aa985", ++ "6978fb86dcb4ccc82a3738", ++ "670c6449f82194e5367c1d", ++ "75a29d53450973ae07e5b6", ++ "1a0cc5d78d1da3759fd0fb", ++ "319945f43efa75c6d6fbd6", ++ "4a8154e2948099e7b7c4c5", ++ "2353c3f920ce7af530f96d", ++ "781973046ae51aa956a060", ++ "21789b3595bc366315af2", ++ "4d63e68650d056d4e2cca2", ++ "6eceb600a9b81fd3aa7175", ++ "2021e0329a909a39851fe3", ++ "45d43d697cb8503c85839a", ++ "7489fd5407cd56abfcfc49", ++ "57bcb68e1f52791794bf4b", ++ "71db6b9125d5ab5b3e7493", ++ "4e72dcffc8f26eb136b7c7", ++ "890072ab6d3eb608d30ea", ++ "2f1b9eb8c8ceec3aba8c3f", ++ "269ad3cfbd18bd255786fd", ++ "7e18b1dc04cb3af247aa31", ++ "43cebcc2f248fc1fcbd6b4", ++ "1b9995439565d095eb8a8c", ++ "66e2564796168c2d0a015a", ++ "13c9d1e81de8cbb64a1797", ++ "657128352843035ba5fee1", ++ "58c411222783451febdf82", ++ "2970c6e86dd017c5341ddc", ++ "7bb1913bf745fa526f18a8", ++ "4d0a046c7ec4f54117f367", ++ "36f24af02e5318171bea53", ++ "9cf05f6855d4068390948", ++ "1107ffccdffb2932659325", ++ "2ae1383e51812f870ebf41", ++ "3aa6d80b7b4477df65330a", ++ "6cc6a998d40d1bad211cd", ++ "7d58cee39bf1830f1b3ec0", ++ "dbd1bb9693e65c5eeef4a", ++ "4385d494a7bdb154810c4d", ++ "4a64cce2fc4633dbb63e09", ++ "3e9654e3940c0f541b93cd", ++ "1207aa2a4ea7c882b5e76f", ++ "43bc8bffd5b4fa12491d7c", ++ "7df66ef2eea696dbe6ad95", ++ "4e203019ba4b94cd691d60", ++ "61978b574cf8f6d53118d6", ++ "14816e04a6b799d1ce9e1e", ++ "5c699bfc1a98ced38d7c88", ++ "509dfa92ab81408672391b", ++ "2025bd13134bf0ca69b0f6", ++ "675948e6670907b03227ed", ++ "90bd6d6fef2e358a664bf", ++ "2f1dd3930a2948f2187f86", ++ "6336954989b8a716380f64", ++ "2655fc5da8cafdc10e8c6c", ++ "be26e79f27c2fffd5718b", ++ "7568ac37df7da28c47bab9", ++ "3128342c1cd21185c739db", ++ "1318f3d7743d8ee4ecfdb2", ++ "26102582959271955d45bb", ++ "1118a89d656497538996f2", ++ "4d74065738715d35d47743", ++ "2644cda468b716b53c99d1", ++ "2aec8efef6c41604b67a83", ++ "76393b1564fa2cd841480e", ++ "87eada956963224c06418", ++ "44f34a642236b1e7e4c8fe", ++ "5edc4541d1854504d071a", ++ "4a292844d7aa26520c09b1", ++ "1526a67a2f54717285cebc", ++ "7decc101d84d7378c8efe2", ++ "1f8889a7c0321f5279b37a", ++ "71d26320321cdb1dc925e0", ++ "b8385ec48f904d72393ba", ++ "4a2cef4e3606d1b9422334", ++ "db7255fca12f37c452ffa", ++ "4374a87512bdcb27925ebe", ++ "99539a5120bf06fd3edb8", ++ "4f7806a65676c896ee7db9", ++ "365cb247c96e7933341e76", ++ "7964fb4049b23d750b6f0e", ++ "48cd6ee15c4874d342b21f", ++ "221728332d3142e3346be", ++ "198d839621f761dde4f853", ++ "259839d29faddb791e3548", ++ "15324434e27844cc4fba51", ++ "60e351e7834b181d30a00c", ++ "6337453f9c180b8ddb37c4", ++ "608a29bc043b54adde90b0", ++ "4cb0c7462e90f28fa251d", ++ "b5f14620587f1e8ed5a45", ++ "3c994e655edabd5cfbe8b8", ++ "35ebfb3fd5a71979daee0c", ++ "2a1abd32897155b55014be", ++ "67d12b5d61741b8623f378", ++ "21469f9c49fb4d2fb54baa", ++ "728aa131a37012e184c2b6", ++ "6f085a8f46a66e79fe4f92", ++ "1a95aa2ba56c053acf7e56", ++ "1f1c7eef9d0f99e1e209db", ++ "5b57bc12988f27dd0ed418", ++ "5e9464fbce6027257d92c6", ++ "41be4715ccf6dde8b12086", ++ "25ff556cf1afefe2cd2ba9", ++ "59f67a0c66d5e9744004c6", ++ "23c20aae79c2ffaa75a36c", ++ "574f95a475dce62a3071ca", ++ "4a98326f880a44e2d6ea5e", ++ "39f7a72e1daced6411b1a6", ++ "37a4477749686070e7e049", ++ "51524048af5a6750b1955", ++ "43012f86bfa02bf0033ee9", ++ "4253e27061630b9343ddfd", ++ "520db901eb8309582e12a2", ++ "656f70349417ef562616d7", ++ "13cc5c5fa7afb2b7468106", ++ "1916345f1ad90cf48c6472", ++ "a80defe299bf7c4d81738", ++ "673a9bc1330de8c0b0abe1", ++ "226f7d490aa9d47314570", ++ "4762e175d924ca1dff7d06", ++ "79ae8d3a65221805ed59d3", ++ "65838019d10030d2edd34c", ++ "46d2651ce40dd1fdd11e69", ++ "4277911fa0e430960db091", ++ "5370ef9f2399e3c803b5a6", ++ "69110081782c350722756f", ++ "be2266f15dfa6e02e4a02", ++ "7c64411c354fca180b974e", ++ "3669075c083d3a0547d7ee", ++ "49212e86ec70f1b328e11a", ++ "70628248b6cda7311de5ca", ++ "5593dc730a3a85d6ce77d2", ++ "4a2416a8cf412f996e9654", ++ "56f01f51a5be66f649b1d6", ++ "1c7c6456335bb722881302", ++ "4f571e68d11ba0c201ec2c", ++ "2f615de4e96f8f9837947f", ++ "9cc0a7524feb44aafa989", ++ "13705ad9594243161047cf", ++ "358734094106c4c77371f8", ++ "48384f03b178aecb456dbb", ++ "336699d6c6f15f6ab914e2", ++ "5dd2532249188dbe3d2539", ++ "520d412f22645bfa3f3a33", ++ "45838fc0d9bd4e814df398", ++ "5d172643cb569d9b2ab357", ++ "34470b1eee2f871c42ba71", ++ "16103ea0d454ef686ebf4d", ++ "31e4aec6d42e52c762e301", ++ "217d231f2ea4bf28c97e44", ++ "15bef1b795296c7e8862d0", ++ "225461e731f47cbf2cbf5f", ++ "520f0b6932233966b7bdb1", ++ "6db3eec1da4e57eacd7cf4", ++ "5728f13fbf1367c5292a3a", ++ "7856c391e8828b90a94afe", ++ "6b36296c1bd668243e920e", ++ "2f8aa359ac5538f4834ed7", ++ "208dfefbc938eb8f166f28", ++ "6506edb4005521bcb61671", ++ "202377a9328fcb8f661a5d", ++ "6f4a829757301eb1143585", ++ "5baffc06fe51f5caa49a4c", ++ "1c24006c67392d350aebe9", ++ "a3d31a1daca53878fe695", ++ "6a3f78db4e25085a772f7a", ++ "423813f9eb92bfadf14d9a", ++ "60548a10984139e59f5d8a", ++ "ee2c219af9300476a7d41", ++ "6a4862d59f8198b4ea0fd5", ++ "76d72d56a09f253d257f0e", ++ "52492b4a4856d777ca0682", ++ "2dd44a6d1765874cf1dbb4", ++ "73040349f8459e94069012", ++ "6c290f053f3f46327ee8ec", ++ "6d575f1601945a3ca29eb8", ++ "3aac1aff3b6e14d31a91e7", ++ "4972dfe88d7e4fb02ffe72", ++ "5a86321f172c81fbf185ef", ++ "50b37142bd10ca63ad3866", ++ "50148cebf8644fa7375aa", ++ "322164812a5696cb2322b0", ++ "4303859a49916073987344", ++ "bac1f8bfa0e63045ec3ea", ++ "67b770c97867478cc69b37", ++ "2cd2d00d4262f35754bb13", ++ "678fb8bf7f6342c5764339", ++ "656e5b10b9da085176e0e4", ++ "59dbf0c177e94a664cfe3b", ++ "1f8b63c5fea99ffd6a5348", ++ "4debfa77d5d5f3fa106f86", ++ "147a0d7fc26817e7251ada", ++ "3f26224827d27901ba392a", ++ "24364b397921eedc03333e", ++ "361de61b4e6057d1cb2274", ++ "14b5583a83133add54d368", ++ "6ead11e0936e4bb4e855e1", ++ "30e484fb4ce5927a937373", ++ "571513666bf5e4e0b1c7c0", ++ "4be11f1cd60954626093b7", ++ "775bde6bde2d0aa4187fe7", ++ "5a1b57c203d09cc8a22696", ++ "5d5e844e1fd78c36c3341e", ++ "33b05c78a18798e4462d45", ++ "624f69e6f91d2b9574cb8", ++ "172e3a20b269ac416b7186", ++ "1f08599df3ce28d2e2a99", ++ "3d50a612150493864e2df9", ++ "42e82d8613957e0acb2b09", ++ "50e45902fe1a308ec88670", ++ "23db937264552bf6dc2858", ++ "6395a035a6a5e009dcf586", ++ "23931a4d64503bc81a5a33", ++ "f6074b1e17e08713a2a46", ++ "1e604eea4a6fb7804d131c", ++ "246e8276fd64f7af18402a", ++ "7fdefc35775213402acc91", ++ "31f0df7953457ce90524a8", ++ "731437b69ca76a93992caf", ++ "3559d5470cc8be88bbee52", ++ "2a6da3e3f6425cc4caf185", ++ "384ac895940651e4b3df31", ++ "20cfa0c6bfbdce5e399a70", ++ "72f290cf9ea470dcec1318", ++ "77ae05c9ad4bb1a82ee6f6", ++ "33f6606f82062475e2caf5", ++ "373211f704832f37df113f", ++ "c663e7994203d116af45d", ++ "25b286320c27c0f91c388", ++ "2219a8eabaec2cc4da44cf", ++ "3fa82c77c11ef3ce373a08", ++ "6c65a41601a28b4854db0b", ++ "398768a52710b109c92dcd", ++ "45e67b0777cb6facf28d74", ++ "21ac3ebe991cfe1bade37d", ++ "6db9060a2078f4de4b4e1b", ++ "1f6a141f6eb54cb95d54af", ++ "68c1092ddd7cea180b7a8a", ++ "e5d22d0ba9e3194e2337d", ++ "68075aa010a2a7afcb2078", ++ "577a2773ebc9e2412cb050", ++ "1634b76faeb97237505ef4", ++ "1aadb770481974ec7ba970", ++ "42a1f9791054781a203d9b", ++ "7a520385f587099a8da6a1", ++ "1a88cb781abea4a70cdfa7", ++ "655b44d3a92231714b14c8", ++ "651be8b59b15d629ab774a", ++ "550e4c9178e5dead2f815e", ++ "ee736adb9b9c1860d483b", ++ "ceff6274c7b15ae86dcc", ++ "214d49f3e2681b232cf62e", ++ "2330589e6c22439bef95d1", ++ "7e1ce3bec1e98dd35947ed", ++ "72118d192add3aa4c1e0b6", ++ "67daf6ba4dc4d74236df77", ++ "d16f53a28b7042d305524", ++ "6f52ff1c7f6dba719401b2", ++ "6ebb0dee9291bd90cd2215", ++ "78dfe864170ab14a408743", ++ "601b382825c1515525a19c", ++ "2e5ffe59b5dd3843fa4c17", ++ "2bf32012cc6354c709ad2", ++ "669f3588d7a4ca7ee3dd1f", ++ "3de21ce46f7c8be3bab3b9", ++ "432c0a15a9dc31696b79c7", ++ "349470b19ee7a8cf922b33", ++ "3c53d6131f8c41d5d7317b", ++ "5e83dc6dedd0679793feca", ++ "54c245a123767ef7f22e33", ++ "563e208513fb23ff9ca7d", ++ "b512df0270e6ffe2d4a9f", ++ "b0715d55fe0c1edd9613b", ++ "c0ecef4f88f5957d4b1b", ++ "c8806bb60205886d4ff9d", ++ "32c2902887e1700cd5dddb", ++ "49d6a78a88159326775c2e", ++ "56359d56dcb06ea3ab68ec", ++ "2d794034e6ae324ba7041c", ++ "64f201a4086e40b2a3a19d", ++ "7eaf34148ada80711a86fe", ++ "2142584bb5cff6c1e5011e", ++ "15060a6e69612092d45768", ++ "4de3353d33028c5f557394", ++ "70594464b46de9acc11f02", ++ "1fc064c4398ccf6bf7b1de", ++ "51cf9e84f5414c7907e79a", ++ "71be60f1312db2fcc7f045", ++ "5fa826fd6352f83c34bb5e", ++ "62baea1b89700a3953e872", ++ "4a266217d4534cc588119", ++ "7bc0acaa724475da5a8a83", ++ "3d9a1023138b0e9cbe7d70", ++ "388d8c3c958b6abcbf6aba", ++ "98079c36403a029b3f0bd", ++ "72716051b13a2c1876c8ef", ++ "515a0593d1e619118d226b", ++ "2a035934ba5fafe2ebaf47", ++ "316bc661e89aeb9e7e20a6", ++ "25330fc3e5df50eee77cd4", ++ "6c8071fad8933706efff6c", ++ "3669984e1ddcb753afb878", ++ "4781781ebc739ed9d4e35", ++ "3915c71f3b447b64ce4513", ++ "726dd56f61c4c5016201f9", ++ "7b8ff43621b7fb13c3edd2", ++ "2bfe7376e8ab62fafbff59", ++ "207cf80fa76e8708f88dc9", ++ "3a4a4ac73bb38c0c48aea2", ++ "52e6bde0fed2ecd82f7bf", ++ "523ee7b96bbc2b0977b4f", ++ "551b691726c66f9ec1f9e8", ++ "361fe28e640ec02ae49613", ++ "71e1aa5a9aacb38b66f605", ++ "d427f0f9d14ecf4c54fbd", ++ "629e9c894bbbebf06d3299", ++ "37f7d323d5bf332eed1bcd", ++ "7fcd5bd9328b9f06223a1a", ++ "744db8f7e25f69bc47f2cb", ++ "4b0d1ff6297b378945b906", ++ "7c1d3420db42a6ffd37cef", ++ "2f8592e02ef759cdd34c72", ++ "4dac1ce4b87e60431b8a4d", ++ "451e904c04882b739d233e", ++ "5bb2eece8c95a515d2e2ea", ++ "797d4c38129f52836fa5c7", ++ "5d29345f097e1dc041bc7f", ++ "6b25878a1ec102b9e883f1", ++ "610d07557d991d9db3dea7", ++ "5d3293ca54de6a3aa06b08", ++ "62e4e44df51bf11734aafc", ++ "1945686d70d9df98093dd1", ++ "2c16632a312edfedcc7f72", ++ "19675db116558d90bb4f6", ++ "620c14b60053b660420c4b", ++ "39a26bf8336439ba9968b4", ++ "376c7a8d0fa0abf4c0bb7c", ++ "7f2209419e3163fbb4cd8a", ++ "6aece787aae5251b57b3ae", ++ "6b380bf5d71fe523ad1e4d", ++ "2306ed04565a9cf9fa84c2", ++ "7e37a126be9507ba4c717f", ++ "67ae2ace35fde529154a8f", ++ "352d204330140b3786230b", ++ "6927c4b12865ac8f053dcb", ++ "7e61e3317d07a1009894dd", ++ "2768a7a783d9baa4e5cce3", ++ "260213253056e29f0ac6e3", ++ "61539cf7b388689e7a260a", ++ "3d9131aa5802e27a83eb61", ++ "5f87453deb48ed6c9a1afa", ++ "418b73330a3b4d1a80474f", ++ "5cd3a1cc8bf78e4c7e3747", ++ "784bdef1566f244d4ff44d", ++ "2c4bac0a0cf06ff50ff71e", ++ "3608208e4497b40a62b3a0", ++ "6e8b2732511303a48ef731", ++ "1ef9edb1f958cdf81fb9d8", ++ "4bdbd2765933e2b1d70563", ++ "b2687172956319218655e", ++ "4f787847feba11bfcbc764", ++ "49ede33966bc3f0dc8757c", ++ "12a2fa8c4d06a694b748c6", ++ "2146fc84389596cf6fa8ca", ++ "536bfe32ac8da07b253be0", ++ "773a63e6b7c9e3bec91272", ++ "6bc6acd592c0200b749e07", ++ "3d28e1c12f9c60e500dce7", ++ "5687a42dcd55b43227f657", ++ "36b36922114363ceb85a26", ++ "51e267e9a5a7684ebfd343", ++ "5b4aec35da23a27808974", ++ "2e684b7951a2526d838fd7", ++ "62b2e70d411eb11bf0a695", ++ "6473dbfbe4a3f63d08e3f2", ++ "661787ba011711628186b7", ++ "7234cde8ecc6673caf864a", ++ "1e39f05dac576881e6c295", ++ "420c1c0074adbe0616df4b", ++ "177f43e8d62e87c66b9da", ++ "10fafca3d5f71faff8f1a", ++ "43dcb4450a256b9a0eb673", ++ "460372cf36a22fb6b9641e", ++ "a4d6bd96f61637d730c9c", ++ "1754f51aa79c3b0803bf00", ++ "65fe3a22c7d35ad3f875e7", ++ "150c29ddf5483fb74be06", ++ "716991a2a17f536244885f", ++ "475131d01f3e6dc3b169fe", ++ "569bfe59efe21364bf57e7", ++ "75ac7a48082d5afa148e7a", ++ "63f5fe049f46d509d141d8", ++ "2b90f954efc9f58a07a363", ++ "39c167fbee27f65e96cc7e", ++ "1db83df0a168bac450e4f8", ++ "127118c35aaf80dac2a57", ++ "20601a054af9d51633fab1", ++ "728cea43531fbac95263a5", ++ "ff53eda132c9a3cfecc65", ++ "786d54b4d5ce74ddde20a8", ++ "1175d70c2c07855db37245", ++ "2cfcb08879a9aecacf316e", ++ "ecef39a1ef4b4d1e8c6dd", ++ "70357dabf2c34c8309c723", ++ "4db4f1a602cec485019670", ++ "735a03f218370f8bd85ee7", ++ "3c9ecb18a83b901f901704", ++ "4c7d0db8193430b75f41f5", ++ "28eb082844c0ed277d2520", ++ "a3cfbf8b779e15bf28c99", ++ "624d49c04a48d42d76c466", ++ "221bb5afe07669d916e136", ++ "358d745e0bc4be1c3f4586", ++ "1ce2a05bccecd36df96b64", ++ "362261ed7c97591714ea9c", ++ "20f6e36fbf07174b587397", ++ "12413ef53ba7fc6fb5cd35", ++ "3dd366ce71f1fed428c326", ++ "b66201b62ddf6d13c5534", ++ "3164747c95104338a78b5e", ++ "5ca6e41b81529e38a59f6d", ++ "3834a1b7acb0f05d9e53ca", ++ "3a2f442f3b3a9a2af00b28", ++ "270dae1c5ccafaa07ae8ff", ++ "71e916ff79204bdad49695", ++ "4d43f85ff03e3cd18ef302", ++ "2a2b13112979d27489208e", ++ "442eb4a36ab0287728c1d2", ++ "4dd985f2fef5c539fa6a96", ++ "522619b83283553c71de74", ++ "794294f26a938e1caf3c0", ++ "25d1c185377c3cd8e704a2", ++ "3e7db1002a9116a5e20032", ++ "720aa7a7bdeaa025a23a54", ++ "70f2550983dbddb8957b2d", ++ "57aede4ca861e5051b15ea", ++ "52f87910ef7e6dde1f16dc", ++ "79c75783449d733d93b4a7", ++ "5186a4a6ce8351b40466bb", ++ "1208a98ea1dd68a01d3ec8", ++ "3d66483aa6674adb6569c3", ++ "728caa6061cb6ff29e6b21", ++ "3ca90695aca0fd32b28871", ++ "18eecc5a940548e7c51e57", ++ "cb8a50376e8204b8b5ea9", ++ "7731327e4c6ae66c8e47a1", ++ "16f732c5fac8192629ddb6", ++ "13b16e69e645c1703bf7c2", ++ "789addf402241ff646d77d", ++ "169566a480e42dcc8863ac", ++ "5ca4bcb81d4d03018b177", ++ "8ea7f70a71ad46c0c260d", ++ "4a67b54dcc404423e6b631", ++ "7b609aae44a59cf088c570", ++ "59fdfd7775c9750e48d811", ++ "5738f30e5cb40b4ed83e60", ++ "78b5c76a3ee8c2ef071fa1", ++ "2ff21a8761b9bce5f34f74", ++ "71af54a2496a076b559a6a", ++ "11f2c34fc87060adca2837", ++ "4476f33d15e77d3ea6c712", ++ "1dc0a99973375f6c4a4583", ++ "5cee3684d600afc7804db0", ++ "20fe6d6e332154329f831c", ++ "1b9850e5f0f8fec4d967b8", ++ "6b5617e9152db554d999bc", ++ "144303d93b170584849f6c", ++ "8a006b686db9c86eb0756", ++ "1d9a776cbeec9f5dec9407", ++ "503f8d64438b7a99b8de08", ++ "7b084b907f4fc0301dbd5", ++ "dea3527d089eceb4c22e3", ++ "38a39ada5dac01b5c2adf0", ++ "4cfeaacecd47507ead712a", ++ "3ff99310762f37d685ca95", ++ "492683ece46681328f9912", ++ "27c1b7b41af947101d694d", ++ "39a95d47cf87d7d7d6bc8e", ++ "48b438b41e1bc7e58e6ef2", ++ "7b0ba619013363524f168a", ++ "557bc3fd4a1a6866c5d19c", ++ "46ef25878ebd3ab0b864d2", ++ "70044b2b283269e2d14166", ++ "47226da695602ab6e77894", ++ "142fa830b7ba88d08608e3", ++ "3019d2c9a4a70055fade00", ++ "6bd645b33c041537bb5186", ++ "3fc3e580d2ad754a34bc48", ++ "5e8a5f959be2a17534c9bb", ++ "5a2cdb29cc6790b45d1f04", ++ "1c28b93f693054a06fb391", ++ "242cca5b643a5f97a01a20", ++ "48a0fd415822566b2ecfbd", ++ "308ab3a2c4d7f4df4b6a31", ++ "4566810f52dbdc6e52d908", ++ "53cf166384d9f967e4ee4a", ++ "32a9d4d4f421cf83f9237a", ++ "7f4b55a70795b9d26512fa", ++ "7222af7c6bff611029c53a", ++ "718c4a4aea9ee0da236930", ++ "71b31c9be0276caacd1146", ++ "4d89a145aa9c4acc9cbc8c", ++ "26b549a59dc35ee5ea7b82", ++ "59308e5db85655d5ae0c4", ++ "2f63eb0fae8122aa717440", ++ "4346fce81f02878bbc28d6", ++ "3a0c64739838b20476e0bd", ++ "389f7a523536bc08e2c52e", ++ "1a756f67d7e3e663369a04", ++ "732b807455afe5538cf678", ++ "421e7c19466e0847ffaea1", ++ "75aa7d0184dbe8ff376045", ++ "178e61138a7396d55d224e", ++ "2a07033e306623cf4e37d", ++ "25d293607604db30df2e4e", ++ "1e6b9387cb8fb6494ace9", ++ "524a00dd634d2f57ac7c6e", ++ "106fdb273227296116f40a", ++ "47efddee37fa0ef6a72a47", ++ "2a17c7297a08a3839ca0e1", ++ "4c60164f9602341914167c", ++ "656c647508629462e9a821", ++ "54e5b2458bb84fd7d4433c", ++ "15a3be22e80e0f6f498608", ++ "152b3e507f8b7898991275", ++ "10cc6c74c4f9fcc9428f7f", ++ "7e185faaca849a7f135848", ++ "62ae26dfe2273af99c4830", ++ "7255e6805e164cf9788cce", ++ "49b4801e9a2a64a27691d2", ++ "3fd90efbd4f0a4e173f589", ++ "4afedaa595cb8c309d3fbf", ++ "c57749387141da5f8fd27", ++ "1ba28761d3577e14d38b38", ++ "10a61010d82426d21109af", ++ "4d23f5ec809ab5057c2705", ++ "31e9d0607a42f7e54a8c81", ++ "37107b083cae132372e4d4", ++ "16eaf321bf41ee635d6d46", ++ "44bf623ac807d4c96747f7", ++ "b720b9f07a6b1f41654e1", ++ "68705a826f80224f09c337", ++ "798b816a4dea5ab964c64a", ++ "2adb843a58d472c17edcb6", ++ "17c5a39deb46d102235506", ++ "70c9c69419338ba44d6b8e", ++ "858c45884b129dd66817a", ++ "7ffd3daf76b1e818134f24", ++ "5b509a0106f1d06627c353", ++ "4d6d3f3602597781bd2ea0", ++ "4fb33de912dd8d2f8b8081", ++ "2b7758dc0945a30687fabe", ++ "38271b1467ee062bfe15c1", ++ "1d41ed28d87d24620da24", ++ "5b80c6e1a5c4dcb3166335", ++ "560e1e8aafcab315236068", ++ "31204f9f1e25342bbe28db", ++ "35d63c19d36b85b5e96648", ++ "38aafca45b266dbeef6fc5", ++ "426b930b670412d271a091", ++ "59f2c50a64b0c2a3e77442", ++ "7cb4b7b324b314195807c8", ++ "4a1381ccb93c34dc44cab", ++ "14da57f8c43c94d5133d50", ++ "499a1abb2a1381278175e6", ++ "6334fc3ff70d17dd837781", ++ "6717c0177a36454aef446a", ++ "7bd177160999a650655c6e", ++ "2acc282877d9cac38e38c3", ++ "18b021fe09fa8bdc44e567", ++ "45638582a87d07b0339df2", ++ "664ad54353749f2ad36105", ++ "5c53790457f0f66baaae2f", ++ "1edb6eab35de11d4922150", ++ "38c3b4008c9d0442e7b602", ++ "76dcede51c5087d374b20d", ++ "1901320882ec0093fcda5d", ++ "68f5ab17da1cc5dda22c36", ++ "4e4199871aec7ec1f99895", ++ "68d4b88b77dfae0da7a5d", ++ "a4f6b861d9a460f5b65a6", ++ "f7cdb22a187815c33c5e0", ++ "7b398d970ad745817bcb61", ++ "2e061928a5c3ad9bd6d9be", ++ "5be7c40d96f7c97153eaba", ++ "21887a11425a371d17db86", ++ "2cc7417260782c0d2394d3", ++ "6b421c0667b336723fc0a1", ++ "1d78f3d7e887debfa04bf3", ++ "1d165ccd9ac1e4efca4a32", ++ "163690a8fd51b113410cc0", ++ "419d9a35dec3e5f421baef", ++ "215c7e9a1d796b37a56336", ++ "541a69af40655a83e366ca", ++ "3f98705d2cf6346bf00972", ++ "4ba668ebddeaa069043875", ++ "2aad9e8261535baeb20b71", ++ "6766e290c73bba54bcc710", ++ "65118f1b7c366a8bbffcb8", ++ "7d88a8aadc667bc60fcb2e", ++ "16d8ad198832545831c93f", ++ "567508a3d2a7b4fe3b395b", ++ "3282cc1545c9e77ce08abd", ++ "57d0cd94e03404b9cc57cb", ++ "14f23f2aade2de50fb350d", ++ "280bf57e6ab95037683d33", ++ "15db077682cfbf170ce259", ++ "2e1709b850c77f2d508334", ++ "34ddcae84938327a3cbc30", ++ "ba357a389bca1484d7e54", ++ "bc149e667cbe5a17ed77d", ++ "25032025485a4979b90394", ++ "467db4fe225847525ef33f", ++ "54112eabbed42ad31637c5", ++ "14b68001dbf2f798322812", ++ "7146b897c3d924725bd0cb", ++ "6a76e3eb445dada83ceb12", ++ "30abf45ef025352e681192", ++ "2f687a83227d2d20f3b227", ++ "186605e063004c7e4a9375", ++ "21ba4c5acd17d59fca0ed6", ++ "2cad73640590abfa319b6a", ++ "5db729c46c687ddd7690e6", ++ "73673685484b4f3492976d", ++ "282a80b8de04941c547168", ++ "4b53718060040e8179d82", ++ "5d50e00035655b4d4ddcb7", ++ "546ec9785ee72a2a72d886", ++ "4328d17f00529ea0fead97", ++ "71faf2ef0654e97e0c23fb", ++ "49374e550d8b335cb151d2", ++ "42772160e3ea402851c9c6", ++ "c1fd8fe80d24243e7b5eb", ++ "111d6b945ff69be530cfca", ++ "2dd21df4dbce295378bd06", ++ "3d8509040aa8739f034dac", ++ "68d439e82561e55cbf1eed", ++ "65a1f7025bafea5088145c", ++ "5f70485b00138272e9a41b", ++ "48ede8d4a9a88f7613388e", ++ "1de402b5c6118ec8861aad", ++ "50f371336a648ade74999b", ++ "17da7c01f870089371d6df", ++ "2f64ac4f819f8343111866", ++ "648ea8b083a9828f8af17f", ++ "28d6cf3e20845dc7283634", ++ "7dfd6cbe22024260a179ef", ++ "65ab167d8e02a8df26439e", ++ "79d07c6a6298d34020dfe7", ++ "55407685456c2cb8311d26", ++ "413278937e6487a988805d", ++ "168ebadbade1cbc44496d4", ++ "7d6f33ec4a123fa281cabb", ++ "59bc93698864451646a053", ++ "4d1a8b95ded29dc79fd401", ++ "21b466e3230d809af7aa6b", ++ "35fa1fca985387fb7fcd19", ++ "1a789636807476ba5bd789", ++ "7b115c7c405c6e4356bac1", ++ "378ef780c4d32c3f15b3c3", ++ "23dfbd70bcc040f36d4c8d", ++ "6a545ca829ed278f6ee7f4", ++ "c06cc01bfe2a9b427102e", ++ "126dab6c2bfc9b83475847", ++ "15bf0eb485af1135b0e453", ++ "3b929cf6fdabeb45375120", ++ "11c773ac555182d789142c", ++ "444a50dba1a2bf390bea1e", ++ "1976a9fa25af6d21cad47a", ++ "2f88b1c87d7d02f6c2614d", ++ "7fa540fb3906a29b513bed", ++ "2b23443976252ed21088d1", ++ "5d9383670de64bf15eb49b", ++ "1540f88099c93111d6c8cd", ++ "2c33c53227ef5693d69f36", ++ "2648a635c5981b8daca07d", ++ "7b71ed8d456ee35292c960", ++ "62c36a3627b9d2b3c18de1", ++ "3e985c35adacaa90f5715b", ++ "7401d0da6ddc33225bec4e", ++ "740f62900b9523de37b6b0", ++ "3aaa2c73e60edc333c904d", ++ "35accc5a1e3fb474285daa", ++ "1d85b86a2f3f20e2832ec7", ++ "6dddda58fac4e8afe0c9e7", ++ "2fd82a7276af1cf8b372ed", ++ "9377e0e5c8d0de1856f6c", ++ "75266a81bf7f77865e6f", ++ "1de1227159008ec9b59ac1", ++ "1b5200adee3adf189b056e", ++ "4d8b0cd0d3401fd04e351", ++ "438e5a19094bce43b5b5ae", ++ "6f339aa4d977875b1f1f80", ++ "297ac1b2d19eb1e6e32d87", ++ "638d0229863032ef249643", ++ "65c9be7a29bf45e5992a7e", ++ "7dcf3e6b7d3d02033c946d", ++ "6565aab9eaab16f7430411", ++ "374a0e75bc76f0adac7af5", ++ "8649a3995ad114bb4d72f", ++ "45f5960a9db06a62821bf0", ++ "36735381ceff20a76e32eb", ++ "1416e580fa8bcb421dc6ae", ++ "64f00973a0eb117b548182", ++ "7507998b275e3c9bd4e10e", ++ "305213c4b30a9e8be153ce", ++ "233860a2ed2d566e131431", ++ "235809998758cf7e4acb1c", ++ "2102dede4011c5cfefb7eb", ++ "79486109c44990eca52723", ++ "43b23b71c3202b31d91018", ++ "63606d420b8e8397875647", ++ "697396e6df9539532709dc", ++ "581eb843dc9919f85a6644", ++ "3b98704f287b0ee4e659aa", ++ "3886dff828cc76dd830466", ++ "1c9f86b8742e14b6caf79b", ++ "bafe681e7e52073b86d32", ++ "1a5853834033d093c63d55", ++ "736d05572fd4ef85eca2b1", ++ "61170002cc409ddc34946c", ++ "5fc3c4b7f7ad5deab829bf", ++ "4597c1546c899a3656689", ++ "6667dbaf666f92bd61da79", ++ "a2e07f9d73c5e3effd370", ++ "63942ffcaaae948e9056c4", ++ "6a7db7fb47d3a18b620d6", ++ "58b95d74eb4e654735bebc", ++ "78a4c0445f77f31209ed17", ++ "7203cc213679d179eabc35", ++ "22884c181cdc222cad8e5c", ++ "7f8bc7233e2784039454db", ++ "aa2cbd696160321682a6c", ++ "4356ada1ada2921353892", ++ "72f7dab0b2d2a35e62478a", ++ "32e5682bfa3fd95762512b", ++ "77da1b5a2124b6c9e11847", ++ "593c091517fff61973996a", ++ "264e4b26d39119bcdc0985", ++ "fa33fcce55fe6a32e0915", ++ "127c199cd032273073f003", ++ "169665894aa2b356779b61", ++ "9dfe57d1a9a3265476d14", ++ "364f70dfdbb439b78e5236", ++ "54fb5f18b6d001ef7be401", ++ "321e3fdbb0b890caadc570", ++ "64532524c99ecb3c365a41", ++ "aa480c5cc76379e0cd2de", ++ "6ac2b70efaf88fd42c4044", ++ "6810dd5945e01cd2c90841", ++ "10aab6ed7d1b631aa4b45b", ++ "19537a8ee281cd28d6388e", ++ "5ba2a8023e5bb50b06e03", ++ "646ce329dbe03b0b8312de", ++ "4f0024b5b5580d91de0338", ++ "2b4b238bbabe3c70748eff", ++ "3bec30574a99903f587887", ++ "24e71c2d01e956269446cd", ++ "68c4a816c641b5b1090781", ++ "6fd170c2ab312a1f05d814", ++ "64d8389dc8d1b8910fc0a", ++ "4807e0d9a38d358d8e14c5", ++ "14ee39af97cd5a57b0e17c", ++ "24974593a8d59a89588659", ++ "59a7f220e101601c1d1b21", ++ "43fea0cf26a3e256438525", ++ "2b3c80a17ef583b6205fd4", ++ "44741cea6d95eb07e7f01d", ++ "2ccb45ece6ec9abb9396c7", ++ "5ba0eb3a703d0e42cf4094", ++ "400f76e25d392f347d4911", ++ "419e79b02e607a42e6e091", ++ "36c0bf9a937fe6ca772d0d", ++ "2244b09bebeaafafb0c481", ++ "1501743c447af65014399b", ++ "2791e42c7f90ab8d4e7fbc", ++ "150365cfcc4a012a673c13", ++ "7869636f37e63a4ffff7cd", ++ "211dcdb529a6bab73ad8a6", ++ "239309f551f303d0037140", ++ "3f1e6a84c6b836f245c178", ++ "27b94ffb61590cd0bcd89f", ++ "61ade8e7a0bcc40ee4c2a8", ++ "750f475708a1369e3fcc26", ++ "30bed73f7a94de9252a38c", ++ "3e26ac2b23b8b913845e11", ++ "42aa10dc273607be680d72", ++ "65a0cb312051f321a95f5d", ++ "1ae82d51e4845bef8c5d14", ++ "37c6007c4a0d223bec9e13", ++ "4f140e806dac75cc67fa3c", ++ "78acf4423afa2cfe1a6fc1", ++ "3915d17a2935e69936525d", ++ "7fdd8bd273e4a717226cc", ++ "15da282cec1859a9591ab9", ++ "75d3c5c33e5a2023adfd4a", ++ "51890cd139740ee3c35339", ++ "2b514798a553e5bdcd8ec1", ++ "722f9dc13384479d1c4455", ++ "1e2bd3f41ae5c299bb720f", ++ "5ab5c85d4bf835440ff962", ++ "178cb915d7350e37948956", ++ "184e317201ff0ac25eb6e6", ++ "37755ea728b820f0ab2bdf", ++ "5e147628ce9e9a9493f495", ++ "79790e81fd0d2b63f9d1b9", ++ "7252d249ce8cd4fb010950", ++ "d165a455f92b5083e0627", ++ "6354a865e088a0488f2701", ++ "43c2ec8afca87567ee9294", ++ "55744f373c8b8520d62370", ++ "63069f756c8115e5fc4c52", ++ "3f5c0a52d2b564cc250982", ++ "6b828169b3ba13bbcddb05", ++ "46a78cc83c010019e8b2b", ++ "27c6ad85e824da21b1cf9d", ++ "6e9f47f009d809f84a56da", ++ "255358696f5e9ddbfa467c", ++ "738abcc274fbdc4ab5efd7", ++ "70b9ea82f6a6c02939510c", ++ "5f24e71937dd097c0e8678", ++ "41e1bc8a63d042ba714c97", ++ "6da26efc24e2d57c26c090", ++ "575d4696bb0e4edef99446", ++ "4c028ddef259fa2c7d4868", ++ "33525d5afa91fda7d5fea5", ++ "49a3641c16382337f3c777", ++ "760b4f231686ca10ea6ea9", ++ "547264d2566596f18bbb5a", ++ "703a6cf857e651748dc09a", ++ "298200a0909b55e97005f2", ++ "5ccbc128a5721a5dd853eb", ++ "33d5a814c00e980600811f", ++ "5d66f0d9dde7339dbcd24", ++ "5ef30e941639d08bff19c4", ++ "363a65fc59f4a8184d3d78", ++ "366546b3844bf45b7527a5", ++ "18bc8168956ccd63ac68a1", ++ "83bfa3efcf5b970ad41cd", ++ "4bc9c371d07d4a025a739b", ++ "4636e2935765905adcc41b", ++ "4d08f00a99d95d0043cc4", ++ "3e94b32e50da81bb5afc03", ++ "48a13c03c03191471f1164", ++ "3018be3223f82c7f0c9ebe", ++ "185254fa056de9af1a6bd2", ++ "1fe069b8c57a9fbe5f6009", ++ "6c03f094dfe48c9743be89", ++ "1086eae159340e441fa0a4", ++ "222ea07afe042cf765ce5f", ++ "7754a6a5fe6be54c00f4c8", ++ "152dc9fc63d3c1eb6c335f", ++ "3f3aeb0a1df198d9c95768", ++ "7ef4c5361ca08ac1cb6216", ++ "527e969f4f6eefe6289ece", ++ "6b105359a1a68d94862411", ++ "2674d42d16e97493518d2", ++ "369c62fe5aafda2a550912", ++ "51eb860c87e1e5b70bb623", ++ "29f3402339c3128a1e2c1", ++ "413f256a64feb56e242e90", ++ "11ea8c21342ce42ebbf9ec", ++ "5517c01ca3bd4da9aef0ad", ++ "5d2972b12e50e727a2721d", ++ "4eac7fa0d6b168c3bec4e3", ++ "5cd8f5f9eb6806f67db613", ++ "412ae12837a29724832877", ++ "770b83b55e13465063e5a", ++ "76201f5e0110544f41d9be", ++ "c8918a059fa77676f0587", ++ "287593985c21589f72c821", ++ "6b923e02dfb1da62f37204", ++ "2600c04d980b2307982b22", ++ "25f7e1ac0d4153b6365c1c", ++ "484281d930b8ee32f366f0", ++ "3827eb26c007235c46c676", ++ "6cd2d14ecc5fc7c2c1b52f", ++ "4f0841f63a0c64aad5232e", ++ "77c4b593ec648025df03f6", ++ "81dc886feeee4945edceb", ++ "522afb743f67b3ca56b20", ++ "5505b22d0ddba48ae2020b", ++ "2f3b362f4b742eb82f8a34", ++ "1c7831e5dec267ccb26741", ++ "2ddac7db8be22e88618b58", ++ "4e6a2eb425fbd18fb02cb2", ++ "147b65e0e829ca30fd88c2", ++ "36304be3f0777300703af", ++ "215dcfa076749277897e0", ++ "3c2f54ef99be42fe30d32d", ++ "62a01fb38e5c88098fbcc9", ++ "5f84ae1685459ae7e24bf2", ++ "3ecd8205beb790946eaa8f", ++ "5ba344fee845769c2c86d8", ++ "36a92b305c21171dd5a616", ++ "3650c22d9c1072238cfcfe", ++ "9225712405a5bd9ade58d", ++ "594ae94ad86b9a719f54a7", ++ "59f0f5465ff1e16be9bfb2", ++ "4c6a0f6de7e50ac450c0c3", ++ "685afb7cdd699d5a8f020e", ++ "4f1c406e243fb2af67cd42", ++ "2dac9d433ff98cf24eae81", ++ "1167717f2d3d6238b3d21d", ++ "381012de4c9a82f9ef1d72", ++ "7047a4510b8c2107737ece", ++ "185033e62f44aa85a7799b", ++ "41e135572f9ce788481248", ++ "4759751a101953dd340d89", ++ "34d59de432c0dbb24ae55b", ++ "5bcd4418d37c976110b37c", ++ "6545cb112ea4be72bc80f7", ++ "52d104741cfa5fa49fa55e", ++ "7322c20a545b3845b54b34", ++ "783c78a9025283e7188a8b", ++ "3c81a9658bae42644c317a", ++ "1eb56fdccfc12b22db2048", ++ "3c3f770d148b4692e25b59", ++ "4f75e255d88657b2ba4755", ++ "260d6ba9444df4b85dfb92", ++ "34f0f61d6d8d062b6b9d9b", ++ "74fc1bfd19b3cbc9867bff", ++ "3f0d18b1efb7248950daeb", ++ "65b7b50446c767e6fa72fe", ++ "1124cfa0e070cf6fe3c638", ++ "2d127e6ce6bd0f1872b1", ++ "3fdb99cce8884ed923271f", ++ "2d2a15867cf9361defac4f", ++ "9a39acfeb3a1b4c2bc79c", ++ "7adeede80a05e40854e6e", ++ "4431184365a358de692057", ++ "1e4fdc54209c2229d7ffcb", ++ "50cfa48cfb994ab2b77aa3", ++ "1f4b918e0e0d47c89aa2d8", ++ "78ba33e419cbc7f177437f", ++ "5f7482c17a568566c785c9", ++ "6fff35974d5f0b86faa46a", ++ "5106bba99e6268d7bef3e4", ++ "67cb80a136db30b9d60d6f", ++ "594a3b6273b1ed2b542eaa", ++ "6a1d554c48496d8d543eac", ++ "9d8d18a72607c311d6f76", ++ "7047889925ed18a885358a", ++ "283508a2ed137e839b2207", ++ "65fb4589487aa5a16bd767", ++ "1a14d5b10cbcbb9ad3216", ++ "4a469bacdcaf5434109262", ++ "40ebb7bac65bd815945e49", ++ "7b2ef1bbf74c4989ed5ddc", ++ "5ca51c82df4def8b1588cf", ++ "3b22ed42f28069f29c280b", ++ "669e7a28f7a7c30460a80a", ++ "2071c913edfd4fd6daa6bc", ++ "3828df7e9ab6753fb83dc1", ++ "4cd15a66ba5a2f18c8823c", ++ "1ac96b01993da8677b2fd7", ++ "4f9634be1ae125361bd4c2", ++ "681fcdfe60f23e3be083f6", ++ "2d5bb2b553d4ed5bc0795d", ++ "4c4424602626193266d943", ++ "2df30214a49a31c21380ef", ++ "48b920d23514d06befaf52", ++ "4b4c7f0a822537ff62cdcd", ++ "ee9d6b69f13ec8f385e6f", ++ "793fd256b009d961487499", ++ "2d70f946f2915679b314e6", ++ "1bc4e87c1100a2d26aeff3", ++ "6b1cbac9279eaab9b503c4", ++ "5725842b7246179896a39d", ++ "4dcc6ee20983f0020ad69", ++ "57dbda5c8b230a87030357", ++ "78c437adc3b6ce946cdd", ++ "20ea7b335b7621642b29a6", ++ "179d4134709978c75bf6d2", ++ "36a3336f56c91232544e8c", ++ "e243f28e043030ee3a43f", ++ "2d678e77df571d7ac4859d", ++ "5566a844e8b1c572f69612", ++ "27244290f774a00786ca95", ++ "1812bd60b720f8920fe80d", ++ "7f45c48d28fd31ceeb3fd7", ++ "1bea5758655f1400515db4", ++ "249b7a4d080be0f548cabd", ++ "71215d6fd5e662d930a424", ++ "7684536a92d49a5af59f1a", ++ "74d39a89d87bdaa449438c", ++ "3e4e77e268fb6e7602e96c", ++ "46c6313b3914ecd376b959", ++ "31b9dd76b9ed5f88dd4609", ++ "46734211b970f8a6448a60", ++ "7a6d5b1013830761b58026", ++ "6157a651f2640a73f1f90", ++ "38793daa7aa086d5e70798", ++ "58d7de0f8254a81b5d0f5a", ++ "5a1fe9fffdaa20f4ab7eae", ++ "7e8fbf173741aea1b95c93", ++ "4bee7e482b290b1d3869be", ++ "c075fe6224a62c1010fb8", ++ "7340d7daed67bcc5cd4391", ++ "2e12097225e5783b545083", ++ "518711fe03b241cfb95160", ++ "4956721f6a2ced1fc736fe", ++ "636b15a893c301ff23f5f5", ++ "5696a96208101739ec4ba0", ++ "54fc920cc0125e53a92499", ++ "7c2e242ec2b95580a9b3bf", ++ "4d0e82bdf34ff4cb3a603e", ++ "786571b85b2768309c8ed2", ++ "1418facce22bf24a5e6a51", ++ "681a88fafe4e6f0620910", ++ "5e263af53ea065e044720d", ++ "1c614cf9a9d87d69154c21", ++ "346f2a2b086e1b35095d7e", ++ "4b6ed31d0715952774511", ++ "67a3f20bb5e980364816b9", ++ "339dd42a42d94342bf8399", ++ "3b55da90ad9a162be1756", ++ "1c07c875b3a9cdedf7611d", ++ "33567e972c90754c86a5ff", ++ "3ee5a2cc90e335867f0ce8", ++ "4b3a8d22fdb2c83abba9b9", ++ "5b6b96beb19fb0dbada937", ++ "5169af1cd74986160450d0", ++ "724f8bcd40bfc9f1ca0c68", ++ "51603bcc8667777e664f9d", ++ "78aded63d2f85ac948c449", ++ "73862de61086c1fd5e0678", ++ "5efbbe073364ace07f02c7", ++ "144a6c20d0a8d5dce2b12b", ++ "2aead0dac004faa8ab67e4", ++ "3f8cb5eb229acba822b48d", ++ "34c50fc58872b7325366", ++ "3c1fd5d9a6223b2ce7b02a", ++ "554f5cfd133bac2188241d", ++ "559752d946b02da4c2f657", ++ "3950591be73642bfa23264", ++ "2e8edc0b6dfcfb2392ce87", ++ "4c3c570182916f32a6f96c", ++ "65cf5014ab215afd17cef7", ++ "54ad7fa69dfd0b4c19f7ed", ++ "f4af5a6143d8f44e48afc", ++ "1a08e273719d3411178252", ++ "668b9e16f3948f582a5b94", ++ "3fac097802d8f5fb376d58", ++ "3c2dca32abbdc029f4a212", ++ "753f0795048443573283b2", ++ "622b540293b1275c5a9446", ++ "5a2c8ca58cb488822e9f49", ++ "295932427e10aface718fb", ++ "43e36b6d5a937387b49f6c", ++ "4e1162d634d0d5811a2441", ++ "19915afea85d27cf8df109", ++ "7eb8dfe838ec5ef9d3ee21", ++ "2c18c59d95a21961c42f21", ++ "7233f4136f3ace41bedb12", ++ "142c59f31fc82fb58a7dd5", ++ "452816c1b54aa2bfddcc17", ++ "6f24ffc802a08273be511b", ++ "32d68fc9b8a9c17b315382", ++ "5aaabbd40fa78dd417edf5", ++ "51d8b3e6fa0afa106abc40", ++ "394faf6069c716fcf8a76c", ++ "3f7d2ee6cb32c6bbeee194", ++ "4354f51efc9392bcd6e51d", ++ "5e73615c65ae9e74eb1ef3", ++ "761e42e1c908c2f09e096a", ++ "25df9f831698604e15991c", ++ "351db0dca5d74808f36d33", ++ "aef2488954588af921ab8", ++ "296a247b4b36d5c2a1884f", ++ "b1fe15d9ac88348f41a87", ++ "97342eefdbc78b9689120", ++ "1e47a4330f0bce93db13fd", ++ "7511506751237c1959933c", ++ "31e8a39712fb3a7a11f909", ++ "6116bef6a79fb2fc15f0e2", ++ "6d849a39e47370e473a913", ++ "42a81f5e10b5435180e643", ++ "17715e6c96cbe096c4f9c2", ++ "606e14eaa7d60eb7ea925a", ++ "30cb89652c8629b5e0dcc3", ++ "2625096534f2cf10d83a26", ++ "61036fcac29b84e5ca02ad", ++ "4669a41d4e444c1284d024", ++ "2b81c6e67e55aeb6e93a", ++ "23564d97f447b0091e74ce", ++ "494807a247f7ffab73a644", ++ "692eeb4ff69b42372517d7", ++ "3eda92314bf1d09cb5b08", ++ "24b22771f303ef742b8ce1", ++ "5c616b0d1a7bc591e70e46", ++ "4aad58987821ba8f33d96e", ++ "10d0aa100248920b9cab77", ++ "1ead89a48b89a75ebaa7d8", ++ "7fe887d8c5fb53af79cbd6", ++ "ab8e1dd4d27b02d09fe48", ++ "2294095a6b77aaa416cbd7", ++ "69fecb55ba6da700789d7c", ++ "681750fd18618072db2068", ++ "30a18088f5b2af396bbfd9", ++ "2e03d3c0794703b9605de0", ++ "f26a2dc235ace7b34f4b6", ++ "356497a9675898bccf4e79", ++ "3286bf159405584d85567c", ++ "464550e0adf269403f3e22", ++ "3f603c7b410b4c2db2c8e2", ++ "445381f98a1f5669880827", ++ "23eabb9cc5f4086c74bc31", ++ "4628eb872cffa1868b96ee", ++ "6ac77b7cb23565518aa2d4", ++ "1cfd8f0d12bcce21589c11", ++ "39cdc5e6675ab081ffe60b", ++ "1e378fb7157cdaa6fc3a50", ++ "669f4c5ec3934953500b78", ++ "46a91d898168488fd5ac51", ++ "64add9cabf8efdd5f7b57b", ++ "45813314ca1d165bcf242c", ++ "6f37e3a85128974cdfaa69", ++ "7f42b66317d26c3f938805", ++ "181ee17c34ab8aea52c900", ++ "68e8a818d524954278bbf6", ++ "7a6ffa939b86786a779a44", ++ "31d809b078cdefaaf45266", ++ "7f216769148f0e997c7805", ++ "3a82369bb1a4da519bbd70", ++ "25920b5c96127e9d8ab05e", ++ "29702fc1f57fddc3369967", ++ "616dbeafd6aa623c1a7d7e", ++ "634d2540fd670a82f219a5", ++ "3d9abe3ec82d9602d9dd6b", ++ "665bc65420c0b0a151c97e", ++ "37d50d7838efaf03049cd7", ++ "385f7f48a7be6b46d108ef", ++ "5f2bc99aad2f27cdee05f4", ++ "3b6b43619a3730d5995ae4", ++ "5eb76c6301d8a849a1903f", ++ "38910d873da8dfd237e8f0", ++ "41558cae58d4f9a9001b87", ++ "58fc1b58696f8c22cfe344", ++ "64520e4823f48c1f48749a", ++ "3827b84269040363e5e02d", ++ "6c9c81ea487986867245b8", ++ "217bd444ac8e9808b3ae5a", ++ "44dd70b9323f17568e4ba3", ++ "50226b4aa22a0465ceea0c", ++ "6335fb7682400180e10d15", ++ "1857324131e535b1b2458f", ++ "3845bd22f959dda9197376", ++ "4d7797e0b2f77a7ffee785", ++ "16bed27a9c005817ccf111", ++ "5bf1d1c71be0c49ad75d9a", ++ "6d16d10feb1728044f2dc3", ++ "3abbf8af06f889daf59c4d", ++ "45769a307f5593bbf72056", ++ "2a640efe463008db4ed634", ++ "57f0f7ecb2d7dad43748ee", ++ "8000000000000000080000", ++ "7aa96a9fbe718c006a48f8", ++ "24086a392ab75e649d3cc1", ++ "9f20b6fedc099ec575691", ++ "313d62eb5f1104de5421a", ++ "438f5c0f163a4dfa04e5ce", ++ "63137369b8d47b6c9c43df", ++ "4ceae8c6ea35dc274647ed", ++ "465f3b1e25cde0e446d90d", ++ "9f0c9a93eecf4de349628", ++ "3addce3c43218484acf509", ++ "101d83882a81d0147b4342", ++ "4585b77fea18a0113ff609", ++ "73e92ea015629e3728aee0", ++ "257564a39a648e17d015e9", ++ "2f927b360b2b43bff822dc", ++ "328a9932d6b08a41a1df0e", ++ "207ff6a0da7f13b316c4b0", ++ "4b11585991700c233f6773", ++ "77664e53908d00007d1205", ++ "434a5edb31a9c3c6a0243e", ++ "692adfabb87ce969422961", ++ "3eb189e2bfcbe180703cfd", ++ "367efb55edcaadbb5e4f2b", ++ "4573a56ada0a29d31dd6b4", ++ "636f015a0c62753b283d5e", ++ "158e9251ef94651015ecc3", ++ "ca30526530b6f6f0c8fca", ++ "20b1838f00aa00d07f70fc", ++ "50c65d8772a3d5db269535", ++ "47262fa06b9c5ac8138f4f", ++ "d4a270719a348af6d6c29", ++ "af99b9d024438cfe9df66", ++ "2a5043ae183d338b7ebd55", ++ "7b85e0b99eff408f2aa978", ++ "282774a1f4bcb14e6723f9", ++ "58137399c99866772aed9a", ++ "7b7e71610f1589da383c31", ++ "1705c133c7ba24a2b5c528", ++ "336a41277b427813eaa191", ++ "78ec94c22ee912eded5499", ++ "1f9e8bffcac3e1471f7cd6", ++ "7e688d1cbe7e0a84a0f408", ++ "50a70d2086b5ca78a90368", ++ "16f5569ecf073acc30831d", ++ "720d9e52c4aea85ae24480", ++ "15bc81dd36a0393963bb64", ++ "633dad9eec0d451652bf40", ++ "3d433adb4bcd914fcfc4", ++ "ae1614cb7437dc6311ee9", ++ "504e8f5ee0e51320af92dc", ++ "4d55039bf17366425f055a", ++ "2ad535a50fda15e1835526", ++ "4f5cb9e29c3567f8c1b22b", ++ "409705e5654888d8af2f47", ++ "145ecffc8b532b7855ca8a", ++ "4a79a4d35e92cbac8fe0c0", ++ "7c2eeaa3b5ac7ca26ee5f2", ++ "b44a774aaac3d4d335389", ++ "488702c5b90021b8b24933", ++ "62d4635d0bbd6bf8fab17b", ++ "47a6912faf0eba695a3f82", ++ "5fea5590381b705c4ba54c", ++ "552dab94d8fab803e3abe6", ++ "622e4bcd237f601b3f864e", ++ "6b6195f4939abc517ea1fa", ++ "7ae4ce9746d1a251afde2", ++ "5411d9720f633bf7a356ea", ++ "93d0f45c8e78eed19b2b4", ++ "2cfe955ebd8c7e4615715c", ++ "4680ebb5e7e7fa1e676838", ++ "1cbb8749de080f5bb23b75", ++ "33fee942f43e9b7d2118f", ++ "4ef1c6a1bd63bb6b6207b1", ++ "1c1f24204ec4b044c10ff5", ++ "3561d1a2752f1d17dd5823", ++ "782fa87576f745d6c5a644", ++ "68d895a65569cf3ef3e3ea", ++ "46c01f4170feea6c601e12", ++ "7b8a17b08fccb33f4b7d6f", ++ "6332e8b1655b1a7193eb45", ++ "6649997ef28c919c6cae0f", ++ "55b727631edd20582945d2", ++ "1adfa664cf45ca975af0f8", ++ "34ca1ca17d4004b63727d1", ++ "46bc16d9041c2bda07b158", ++ "31afe414b9e841f105214d", ++ "4bc252b0fa653478344f1f", ++ "44b0628f84b11c5e71888", ++ "7f821b6d896942293448e9", ++ "125c7d70d2b6d99ae885da", ++ "49fee8b58237dc40ba3c5b", ++ "5dce9f322e405cdd3dc195", ++ "4e5afb2e233daef8a9bbcb", ++ "64e35a2939773b306ebb74", ++ "3cf63e3a65a7e509ca6dd4", ++ "1f88577ebb6a87d8478dfc", ++ "5d1cdedac3c1f047923b22", ++ "14b8d711e9732dc1d81b85", ++ "63ca1ec0700483b8f859e5", ++ "345343979af3beadfaced5", ++ "3aa36ece405e3ccd9341ca", ++ "5c37d517c640ac7f62a532", ++ "68e1a6376fdb4eb7b4b0e6", ++ "69a00aca76ae6e660be7bb", ++ "1644cc3e7fe80220ef2f70", ++ "58689766e836a562c78c53", ++ "2d83b4eaa1c8f768e56c30", ++ "11ff8e8d5e956398c99ca4", ++ "66de0cd9d504d0c8a10caa", ++ "f5d2bac49777fc8f10242", ++ "30436781bd712f316b4895", ++ "7a7cdf214176b6d3191883", ++ "64f3d838badcddd9bfdd0e", ++ "190017f50befaddece16d2", ++ "21a95826890e5cccb8a83e", ++ "2c958c952c5c886c2a60ad", ++ "3f8ccc4c495c412c1876e1", ++ "901282766f87bc24e50af", ++ "67fe63e894b36bad057249", ++ "35ab264ca762acbf67e1de", ++ "65b1a43ebc40ff17757bfe", ++ "1e0b5aa4ebf1898b7232a8", ++ "5a3548ae1dc271964cafb9", ++ "26e45399ef9d09b479c0d5", ++ "ff910ecf2ce1ed443b3a7", ++ "15dc7895737fd27e2fc2d8", ++ "306cc735643548c81d480", ++ "716be1338eb9fa3160de8a", ++ "37c639bab06813135e6962", ++ "18d28f7c13bdb1a27fc315", ++ "48dd5aa0d80d3fd4d31225", ++ "308d7af9cf09073e61779f", ++ "659ccea55ad34dab51a321", ++ "25f3d9fd234440b97c9821", ++ "5c0de6f6c164f44c52de84", ++ "30927374f464c892c53b50", ++ "540974d1b3361c5ccd3a2", ++ "a0b14921f2ca115669309", ++ "157e5726ec48e98ea5652c", ++ "7c50148337071a44808f27", ++ "54f01285acb2da9689a386", ++ "569b68c3d77231282d1705", ++ "7593ab2f13aa524b76e104", ++ "16a7968fcf87b51aa207b", ++ "2b1199cb9ff7848ec581", ++ "235057c5ef06d64b0093a1", ++ "3ad2c2000ee1db409ffcab", ++ "46dbd89f4ae0d06c0ab8e0", ++ "7fe713df2e65b878c1edc6", ++ "4f0b0a9e8338cbca398b3f", ++ "67ae16da8f876a2c8dc80f", ++ "1bff1788b61c434292f278", ++ "137786296b1e5f466871bf", ++ "413062fa329dcbe3b8887d", ++ "76a4bcdffe1207b9c84c3", ++ "394ca6d6650a3a703c8f0", ++ "7ec0ec060d3788349445a5", ++ "5e6c438c53b4bfbeab6a4c", ++ "1cae4d5a0b88eed0b2d97e", ++ "37150fd6c06a98e84f0fb9", ++ "5e5c9c54f1f75bcc98d1bd", ++ "7273cb20026d3e5dfa9567", ++ "23675569b6f74cecec658", ++ "4d84d472f48a1f27cda4fd", ++ "52e4d0f780530e040b8198", ++ "116822d6715118a8643140", ++ "2fb2d651d1a5fde2dc4d89", ++ "2cbb69d06f0ba3051ce433", ++ "982362cb3f64fc2535f18", ++ "ce584760ca84047b25a4f", ++ "3d32a6b665f10a829cfff8", ++ "228eebf60c055615805405", ++ "4adc76f7cd88044421953e", ++ "4f588ef825e26e596e160c", ++ "464063c0e0f5e5eae1bad1", ++ "231a1fa6a52f8377b2ca86", ++ "3b663e3e9013cab9326fc5", ++ "24716274d6f1761a2e503e", ++ "5eb0e751f365585e4f3fd3", ++ "1c63d031374620336f8c7a", ++ "6ac96f98fa78ffb692afd9", ++ "71f7ff7f6245492bf4ba4d", ++ "46b7638024bbab6f336734", ++ "2d3b2e3d52eac5c09743f7", ++ "2bf0a5cc2a5150523d2e64", ++ "1f7e1880120c76703199fa", ++ "27b48290f4bc222f54681d", ++ "274cbe37d4fe65732936f", ++ "5b872486f12a68a939069d", ++ "76c344db7c98c1b1fa25d1", ++ "6745627963b760ee39ad1a", ++ "2d30342ea20393b89b038b", ++ "51e2ff830fcf99b4147ec", ++ "764156f5d90616c8c45669", ++ "19d3eafc75447dbc2ce4d", ++ "4348b708829c7eddd56237", ++ "605ccf0922a0c35f768933", ++ "86aa65ac1949dd8af6918", ++ "2e564f6ba5f6f74e33f2dd", ++ "54ec1fbecc620b2a62de33", ++ "da96dc29f77c98efd9a65", ++ "3756665d23e5dc56d35905", ++ "7108a03a28803eb91e8a0a", ++ "75fa74ccac539d6f2e079d", ++ "56f539741375576aac816a", ++ "78ab001943d18ada1f6d03", ++ "7a283d5e2ed98485e2d260", ++ "7ca8eb46f6df31902607b1", ++ "3a9ec75af3c8e86b8c1b73", ++ "61df6c089b8a0a75da0288", ++ "3277a60ca85c986d50dee2", ++ "4afa034c14d96f077cc41e", ++ "58ca4d190a0f756173e746", ++ "33e094a7802d99ab1d9620", ++ "4ae3a5f46681ba13e649ed", ++ "6369f366be6b5ec99ddddf", ++ "4ad5b5ec9142810d730c91", ++ "520d75e4874b90e95d0ac6", ++ "56441a020eb196f9ab47f5", ++ "4f100cd2b63ef0cdac7165", ++ "1d72e71f6a57243468bc42", ++ "6102d4b92b578db1756028", ++ "6cdde5dc50cfba13ab15cc", ++ "6a2bde70b440f36a3a69b8", ++ "40afd831d872bbb5ba2dbe", ++ "52a170878e73d2b9a73398", ++ "363495385d4023abd7fffb", ++ "75ecb6eacac31eec1c8d24", ++ "38618fda51c023d44b41df", ++ "1b12fc1c7d3ee5cd24b30d", ++ "428c02c3c8bb1613aad2fd", ++ "6e925cc1e63747fc8301d9", ++ "1711e7c4ddf7dd725f454a", ++ "6543f2ea86c39aa319b565", ++ "4f88d842683a24f7a78b4e", ++ "6297ed8d827bde2f27c592", ++ "7a4c62248fb05a7ec5f894", ++ "50873f081856faa7b0c6c0", ++ "4a5c54b88c3afab5d73bb4", ++ "93ecdd9b52d588b62ae9d", ++ "1dff7b3a25d6efec89d4f1", ++ "4eabe0db8ac5d733acae29", ++ "2d0a5221661bafe1bae3a0", ++ "86148c3559c855d7a4785", ++ "4576a87293566d06f5b643", ++ "2c941d4c1c7d68ef593ae6", ++ "2c36a4d87847724f9fdecf", ++ "7b5f04e933b2e4204cdc65", ++ "774b9d1f08bb74ab682979", ++ "7c1fdd60de643e750fa1d", ++ "682291bfd680e2cd8f9d70", ++ "30d33e090854573dfd98f5", ++ "3860366ed3637eead94b8d", ++ "6e8b7f0e9607e44c1f9f65", ++ "720851fb976798365a6829", ++ "f5eef843bd404a6869b17", ++ "2a8c9eedadb6f6d58c06cf", ++ "232ce65586f95692d89383", ++ "d5835b5723a9063a2dd80", ++ "72316f1be6172c06994a4d", ++ "6a44a264bb1144d86619f3", ++ "5451512089afcff74e1bd9", ++ "557e56b5a5dcf30ae5f48", ++ "2a2840d0a8db4a22fdfb53", ++ "71e107fc4c98b40c6f7b53", ++ "68c711e371efbf9b278db8", ++ "31b42ccc858ccceae34d5", ++ "47eef469d5e96dff3b60f7", ++ "622155e1a7c16eb9e6f098", ++ "73037907fb5b7e20bf7973", ++ "2a5beeac5cc34b9b70fc5c", ++ "214b26c5cc4d2d1d455254", ++ "3326fb026bfe153a5a80e5", ++ "2fd395d2076e94e7f79f79", ++ "1da6208947854d10119a62", ++ "507a197204651599300f85", ++ "60e1157dceceaecc3a16c9", ++ "179c67b2886cbf8a80171f", ++ "4ad8d4214e4fe01b143d8", ++ "594820c775fd57d86cf9af", ++ "18932d3a50056ecbd4c0", ++ "cc47e7e925da6c91fe510", ++ "5ca455ab52339850752f94", ++ "31934713e4ff1d0d7cc583", ++ "77747c8e4550378570ec0d", ++ "44fd7c4168c2a61413dbd2", ++ "278331e342f211746f0d9f", ++ "13022f601d429947abd201", ++ "6d5ce69503f658697314d0", ++ "30151eaad7aef0e79d5e07", ++ "3b6333c6dc16d5f4351c47", ++ "308b1811fe8c7d6801df6e", ++ "1316737cef6e8d73f98c46", ++ "34026c0467a5bb1302960d", ++ "4374fb07e1eb1efc714a7f", ++ "13089f86ddae7614e1f733", ++ "91782b2d8bf1ec8b6e4db", ++ "739d86f4db437bd59681d0", ++ "2e99bf2a9cfd14eb01e4dc", ++ "1f372d16a7c783f301d859", ++ "3fd38eb64df431878b817e", ++ "1b3d8a50e5425c7a4550f6", ++ "2f775dce855cb22a4ce4b4", ++ "1856ece5542adaa42b18cf", ++ "72bad07fa5d3ca19811efa", ++ "210aaed4cc7b55edc4255b", ++ "13ef893fe161bb05038778", ++ "394242cd2ce4d5c927b1f7", ++ "2d8ba9bb83d8b7dc77cc32", ++ "4a9dee0a96c91e7cd6d7ca", ++ "3b62b01334bf25d1f5d560", ++ "3c11b4ca34c3237b362a26", ++ "9ae11d1f0b2cb73496a44", ++ "7d10d41f081cc53194454d", ++ "3476974a3a56c244bcd4ac", ++ "2d248bd8de364598100d1", ++ "371b6d93bf32954a1ed005", ++ "2f9195fa1721a36e6f5198", ++ "b5ea9188a76cbd4490c2c", ++ "67fe64c68be6372b30260", ++ "2582d22d55dfd72b2d70bf", ++ "2144bb26c3488be851e3b2", ++ "69cf5ded5037b0fc848b28", ++ "451cf4e4a6ce149cfc4095", ++ "4845e19f6384ed5724d8ce", ++ "5c721c1e9f943f1e44c526", ++ "6b628f924b031ff396258b", ++ "2db4889991fd96d5a3dbfa", ++ "75393667821938c0e5a628", ++ "2e37e64613e6e49f75ff6b", ++ "7569e0846a7c92c5b07e91", ++ "544e247e73028cc23b1f51", ++ "2e14fbc2ca9b056ee6a0e6", ++ "5c96c4bf9c30f05dfa52bf", ++ "30455197024dac28f22ad9", ++ "16587b1213183c74388d6a", ++ "62a6ac9d0c5e4b3890d61a", ++ "5d0e736ad9b0e048c53cb9", ++ "29c81a2bbc75ee65e40fbe", ++ "a5803d95905530efe4cbc", ++ "45fae251151688f6948ec3", ++ "34de10a25d48bbec6bc310", ++ "38e1136120c0a50e7c1942", ++ "4be7ae42a1b71df0fdbed2", ++ "70eda2a92c3f3d551052fc", ++ "736e4111350ab36a2be4ca", ++ "471e19dff79f0bf8dd75e4", ++ "7c4c5a07ab45db64032f8c", ++ "3e8f3fee79b0aa7d3158c9", ++ "6803ba4d96f3cea5b5b619", ++ "645491f7754448588100c4", ++ "64c773513b07ac7be226c5", ++ "1207f0afa9b17ee1e3a14c", ++ "1a5a3601f9e5c757413d21", ++ "671a35180c429ed6cd73d6", ++ "3f719d970328ab86444133", ++ "2eb29dd03203d9dedca2ed", ++ "3ca5432d73f30360d5e251", ++ "ef9f73cc5ae815a32ca63", ++ "76930d75187c32e1c0855c", ++ "297ac6d1d91b19c8ceb3ad", ++ "4d06acabc42f8f6c6561a2", ++ "17f90d7760ace90b4281fa", ++ "79973f898e87ee6433e53e", ++ "1177a186084a0188e6b25c", ++ "46ea372cc256b25d8bedb8", ++ "9d0d5139d46e4d9db3662", ++ "31f4e6b45c1cedb6d4c94", ++ "222ad5a5eecaf564928d05", ++ "7bfb517a9a7064f7f0b9cf", ++ "88d1f466f33239ebbee3e", ++ "28c8b8ba9341ac37c38695", ++ "430a7ef273c75f6860a9e2", ++ "5963fe850d852bb19cdfe3", ++ "57ca180b4c6f8c3a63ae46", ++ "745f8230228fe0e913a537", ++ "6495ff035413be2b53c45f", ++ "1825a2f6c03df8e89a424f", ++ "4ee9fe013ba8fc6ac8d470", ++ "7b7c35dbf0dd6b94d050c5", ++ "a70e6c0e6da7b5bd943d0", ++ "6904f88af6eea4b3f91bbf", ++ "5ccb3321bf79805e3743ec", ++ "40fe888eb50954f82f8f41", ++ "1683c065332572cac40e7f", ++ "265a6fe3ade48b79bb704f", ++ "6869e474162fccd5e6ce8a", ++ "1621052353e1bb38663f44", ++ "5206d5cc4cf74b102b511e", ++ "459fc4d70a1a8040309b48", ++ "1a38abc6055dcfc6f54cd3", ++ "6de250d6d96fba0a4a2df6", ++ "521255c27009b10aeef14", ++ "784a6ea72c75433fa2c1c0", ++ "1c429a8aad032b85e815c6", ++ "46ae03b83630be869f3f67", ++ "468227ba06af62fa70d6b", ++ "1832f7608c30377f8a27c1", ++ "74e8524ea4276a1585abc9", ++ "479f0a9b95b8f0e630df10", ++ "6c9aa8a230f91d4e6f84c2", ++ "2020839307f0a0b2a66465", ++ "617907260cf1e3612508c0", ++ "50b259ce6ef7786ad19380", ++ "60ad8426c5228781a660d2", ++ "640821dda0f544b159e25f", ++ "11216382d02fa8a680f2c", ++ "3b142ae3f666b5a458fd6", ++ "50d8060a4c81ac0d9dcc9a", ++ "656e0aaff42e8f100df7e1", ++ "6b189bed3e1ee805a7089f", ++ "587965194057ffad1ed72d", ++ "7c91adf751ba7b800072a4", ++ "66c37766a09f2454161188", ++ "2aaf602c5ad427702561f0", ++ "1fe772e91ad75a2d2792c4", ++ "432bf33542ea8f8c0e1cab", ++ "108be849403d8b9e0adadd", ++ "1f098e306099d97f37bcee", ++ "15e468fec0387d9dcde2e9", ++ "35a56ed2078e145e9b5d42", ++ "3450478bbaf1db9aae9e0e", ++ "5819cdbf42afd2334f96", ++ "453649c203cf983e439d84", ++ "6e6871265fe9883143d121", ++ "14b7709b903167ca33c0bd", ++ "5bb6095d45a0253a5e3e2d", ++ "604b2e853911ce83225aba", ++ "7dcfee63c4d594e4583601", ++ "245ff16a71eb8c45257fd0", ++ "51f56cb5201bdd22f49e70", ++ "1b50ac3c3f5269c1d7aa40", ++ "68c11de19f57751aa11e9b", ++ "73da067d52334a718631ff", ++ "63f2b709d7c6ba1ce60255", ++ "6a47915604a062b94c626c", ++ "6d15e33dfd91b0adf65ea8", ++ "36b718d293f968b4388def", ++ "38b2a18fa105ae1a1e82c8", ++ "456d747923e7fcbd260fae", ++ "17a8f2f3a036b54c467b7b", ++ "4cd6b5c75a375bce549db5", ++ "ad8ecaa59795b2101aeb", ++ "5e89ffa159d58051edf13c", ++ "48457eaf5bfbcca641689", ++ "11e987960e92f0cfe9e7d", ++ "484fed0412b66b4ad6689b", ++ "2567685d25fd668a9a024e", ++ "5d36dd2a4f038c91a8e525", ++ "78386c3f2bea1d92b0136f", ++ "6ecd91e762474ea500bb02", ++ "460dae8d89d7708b43a1c7", ++ "3846b043ea9479616ae948", ++ "35d846be55b3952e278ab9", ++ "697bd2294052d067eed5b", ++ "29ecceda91e2de99bded7a", ++ "32c247d46291051243da8b", ++ "59d6c2db6f995cfebbccc9", ++ "5628eeca86bc4f505da4a8", ++ "4450b05b160d8c53288cd5", ++ "5d0b6fe03f574db311d01d", ++ "7059a8ae14b27b87ae7942", ++ "7e37627adf10efb14adf13", ++ "4dae59d140c542483e12a9", ++ "26246e8fdf408dac8fd2a5", ++ "2d3baa252f4d982bd2ad11", ++ "266efd2e0daff29e309d38", ++ "8fdbca74c18894d421e52", ++ "7cdb727ae2bfeeed50af45", ++ "490df281db25788739ca0c", ++ "324340f1f7ccc9eff05524", ++ "595eaf076defb81f21236", ++ "22aca8e5833c97719ebb51", ++ "421f5a540df5b7ba309bc8", ++ "4cf40ea87be0baab3f0a23", ++ "78050a04d755b7008433fa", ++ "70089a05ca7765b8ef62a5", ++ "6446d75a31a4956c235943", ++ "3bc0b4b12c4e0d37097319", ++ "6a6ceb53a9e08bce60e22f", ++ "5527257327c4eade309a67", ++ "5193e0be567990b2818200", ++ "540f6a5d04324cc6ed1398", ++ "d79412155f3d978866277", ++ "65e3000fa520e5bd8bfdc3", ++ "988dfd270fa06d78d9fba", ++ "6bbfc916f60c65ff6069ae", ++ "22a2f494120b7469421488", ++ "5514a9f97c736ef89e2558", ++ "494a8aca14d077b143ca10", ++ "599c6bd84b32b97e000cad", ++ "2983f80020a9f6532ba834", ++ "39395b9f947ccce230cc1d", ++ "5eb549dbd9b640a1018c4c", ++ "3a948a48ee72242647aeee", ++ "5c0b858603efe861d8e554", ++ "18af2f7c66ebae2215b225", ++ "7656e2bcd13769bc7d3690", ++ "1d345a329131e03407a9ae", ++ "6b91d4c08bfb155d85a09d", ++ "c5eb765e74f7ea6040509", ++ "347e522bb35549d788adad", ++ "3c2561b4603673cde220ff", ++ "78c36b7a1a1ac86080796c", ++ "34f1c6d5946b4f8e9c34f2", ++ "1d82fef6b5daac184a21bb", ++ "11e3b65e520ccb94e0f28b", ++ "53ee027a60ac6b8703b4c4", ++ "252a9565fc2ed88c83afe5", ++ "2c748923f66e9b836e2956", ++ "501c73bb8897e8a9b644da", ++ "527df835ccce3d0d8dc6be", ++ "753e3ffd723c55ffaa57eb", ++ "27cf1a1e36d6b6fbf673f1", ++ "303e55cf5d940fa1eb0863", ++ "483592c4cf34d97823b087", ++ "404518992cad409d30e138", ++ "247aa73439f114a2bae1f5", ++ "43f106dd9b706c7cbad455", ++ "60de98af5b2e9794ccddda", ++ "2bbb60823308802716b002", ++ "5a4b0bdbb9a3eba57ecafc", ++ "7eacc570a117e3d2c4ad3b", ++ "b80a7edd7c5745e63c50d", ++ "3d2c4d19f97ec14b7f9a20", ++ "8e1dc29eaa3429a93416f", ++ "16c859dc1504abc8bebb3e", ++ "142700479fca005e365a5", ++ "1a5a69890d5f080ad27aee", ++ "333e4709f384c49fba280e", ++ "773e49f5dd28ab9abcc4f3", ++ "7fcabd5ff8d8321877d09d", ++ "392447173660d27311fc56", ++ "3b607643718a1436cbf93f", ++ "3d01c0ebec513aebdf049d", ++ "115af287df30e3b9382159", ++ "217e1d11ab05e37175e942", ++ "43240f690e895ee2ce6199", ++ "6473a7fe7461369e02b551", ++ "56d1b28a25e58905b948d1", ++ "5c08c8490ead830327cfc3", ++ "60d1cb028fdf2f7506480f", ++ "6efc437814b1b1a8db77d5", ++ "386903ad1ff043a2a203ff", ++ "113203b24e05e4ff03bfc7", ++ "2287f22a43e09d12b5fed1", ++ "3fc330d82c00c3c98129ad", ++ "5bdacc4f0e9a9f3c5eb7f", ++ "43ad0b393a7c2a4d667efc", ++ "4d17bed73f2032142b03a3", ++ "72492bafc7adaedde393c7", ++ "161741a6fabf2be3cb74a", ++ "3253a13971cf24cc306f4e", ++ "3566ae3cffa53b48308a5c", ++ "772853e9593804a23d0c9f", ++ "58d985a1111ffbdece42a", ++ "6b463071583d5d51119c18", ++ "58ab9a24dbad2ee2c0942", ++ "7b625b197eb76a08b19ecf", ++ "153d46a7ad0d4c7b81a83d", ++ "560bc3397e1eecda48e8d6", ++ "3e27d166777ab6af4a4b75", ++ "10a7cb0c646bfbfaf6b1db", ++ "abe7e5169767e92b8517c", ++ "46bc67034da17d5b7c72cf", ++ "16c1a9b3bcba979d2fb250", ++ "20573b178651610a410e89", ++ "46c829e7e1980bc26c13f9", ++ "3428c448a20f463714e16e", ++ "7be85a588e4f01b973f9a4", ++ "382238b03129ae3a8cb2e2", ++ "8b93e9e7ea54df6ea61e0", ++ "dde95ff1403621e1e9c39", ++ "b3a488e23273b8e74aa2e", ++ "3af2323baa99fc6ef534e0", ++ "6003c83a8ae5ae42a0956a", ++ "2ac52045b3b592dfbeeaaa", ++ "7f29a05b16052f06eff50a", ++ "1eae59f579b122f18b84d1", ++ "28593d93a1a2159e16cc13", ++ "460f5f98b19a4d353358fb", ++ "56efa25eac0d5f675af6b6", ++ "73e9dbd2873c27040a215d", ++ "5ca40898d5d325e557e04e", ++ "405224a222d42397ca18d2", ++ "a69b0e544c08336c9606b", ++ "1dfe68dd4d69d0d5368782", ++ "18bd8096de042467441c8c", ++ "55f3bd5a345801aa67f91c", ++ "5430c091f416778afc3f3e", ++ "4e33cc0d26d44c2394c8d2", ++ "2ac1793993d045ec4ea0ab", ++ "a0ac3885d2cb22aeb977f", ++ "1073f10b92dd8a202017b2", ++ "23e36a6e12831353ac1afd", ++ "71f02d980dd943488cbefc", ++ "7e558ced95c8a49312174c", ++ "21b1555bb331b89f928e6d", ++ "75ea3318a1054593eca8e6", ++ "88658ceb2447416239af", ++ "7dca64fefd065e0893d874", ++ "5f427b13d8351db71dc75e", ++ "475c02da59260b083fa105", ++ "5ee825c795f457b727b9e8", ++ "124aa58a7e2a882689ba12", ++ "797bc83e9789b064b51c92", ++ "2a8b319bb90a064d3cc523", ++ "5570385cc742f16a21edc9", ++ "122e1cf4ba920fb923d0e1", ++ "7fc9fec9506aa1a0661240", ++ "3fc3680285719ed4f7e7fe", ++ "7175ce67c0c74c440327c2", ++ "503bee64726b7b32815f44", ++ "5c4dc3dd9138eb7169302d", ++ "3f0eb0b9bdbbe37f40dc5f", ++ "5aa25b718982092494e872", ++ "20b11d38582bb81886466a", ++ "36baace22f2d7a2014dd1e", ++ "27216bcb23514df00030b1", ++ "3146d29fae3f74014572cf", ++ "3988842f76572373c3459b", ++ "6aacfa3617f47dce14015a", ++ "581f2a492a4fe468c3971b", ++ "4cc8bba01b6788222eb375", ++ "5c00c9ce80be32396ca075", ++ "28670ba592cd5a2625df3d", ++ "14e47840962745e9f2bba8", ++ "7f26a6c99362d1126b6773", ++ "6eb090e9b1df79f4d2226", ++ "7f035a794c44a6a57abf00", ++ "1740e5e9a57a4e80eed5c8", ++ "46b1961304e45b428bd48", ++ "49ce8855b52dfbb878b2d3", ++ "313ef612f2fd65f39c2e3e", ++ "7332b41a9fe9dfbe59f71f", ++ "41858e467a21a3938d60aa", ++ "6234ffe0f938a25ce0f5a8", ++ "1105d3c71c59dedcb33f", ++ "7a75b868e9fb50140bd203", ++ "68ae7d3832d31bce57eaf3", ++ "600de685f1a4c2f4a236d9", ++ "3684bf3ee3a2b8635ca0e1", ++ "2bb74459adcd7029c9c35f", ++ "b7347a4820635a5852b61", ++ "249f5358017ada6567b747", ++ "17445a9a60b0dfca9df354", ++ "695d060b1aceccfdfa96c2", ++ "a209dce8856336ebd97f2", ++ "72059eace3671c76d67005", ++ "6dafdbef06e817ec42991d", ++ "47a38df2df7f516ac35f8d", ++ "6a3afde1cc784aefb925c8", ++ "112bfdedc3401ff20ffcf6", ++ "3161bea37fcc040c6f6494", ++ "6152b40d63a55e1ef6e750", ++ "41127c781a5dd07b6ea357", ++ "1df80784a603cde2e8573c", ++ "2ad8c773fcdf92009db9b6", ++ "5cd8f904c6a0e1c85597c4", ++ "21532161ecdbdaac15b68a", ++ "5a80f23e82161bfd2caa8a", ++ "59377c70bed9cccb346cff", ++ "212d386743b2c2069ec4b7", ++ "26fb73843bff3e4d17aa10", ++ "1f15e66f6c5b160801ec4b", ++ "4024c6847ce50a93fefd10", ++ "38419b7c213432cd42f4bd", ++ "ea9789ae096da5bedc410", ++ "23a7a59b35972768b71627", ++ "60a177acbb4aeba955e6a6", ++ "22d9fd1638450186756413", ++ "5a49a0430b2145ead2e9a5", ++ "7fb445fb34908201d41b44", ++ "7b1e254e6050240b36eede", ++ "44867f919f39bbc1ac8a53", ++ "57c6f0c9d94e02524b4029", ++ "553a48facee35f17214327", ++ "5e3402a24a307a945167f7", ++ "4ecbf2559411992397d1ba", ++ "3adf2b6aaf40f5dcdffdf2", ++ "156e3560db5a642c108333", ++ "26f3f960b2ba725c83b706", ++ "3135a042ca5b8873367081", ++ "5778dc2f1465daeafbf88f", ++ "142aa17e315b2096d3470c", ++ "17b1690a9c9f4fba9154e2", ++ "6f3d0d822d1a27088df8e4", ++ "749ebfb4005c94ed288c4", ++ "7f64ec3ee1d6fd7b5f9352", ++ "3ea29dc49c06d64c187862", ++ "322d1e939066766f918e43", ++ "d1c5eeefb8bb620c573fa", ++ "7d83ba89b9f89b55497937", ++ "2f635c018151dfffc38ed7", ++ "6b77b6d06b93487730de2b", ++ "202d04fcffa7e3a0ae0585", ++ "7351e32ddd53c7465f65e8", ++ "1d5b0385650d2d81754f72", ++ "5227913634dbd4b19ffe95", ++ "1eacd91eb3938b38f0210f", ++ "3ab4982748b8f986192588", ++ "4a648c611ef0b3b0e318e0", ++ "18eb41f414dd28e8ff3a1b", ++ "28e33efab89fb4f64d6498", ++ "1b67e56d8c8f6656eac86d", ++ "27476789fbe89ef5fe00c0", ++ "21e39ab39cd96423900120", ++ "4818fb8f958698b6e9c9d9", ++ "95d86ded4a7b26a1ad331", ++ "1b2e283bc4ff40366c744f", ++ "2db6e61499c9393946b57f", ++ "3e8986648fb4053520276a", ++ "5eec1e56c0a2d0e34dfc8a", ++ "389d9fa841750626db108d", ++ "4e0326164785519414d07e", ++ "530f4c391aa2b0938eb272", ++ "50c915d40aeb9e4ec78789", ++ "57bf13241507b812b9a904", ++ "3245bbf080c6731fee74dc", ++ "11081f4b8fb8f0a9abf772", ++ "7a75be28b1e93e4e0c9342", ++ "174fdf0bcfc8d0f4e77e83", ++ "46986d0da7a2c17dd1dc22", ++ "68e88d3bc4e8d390ae4b13", ++ "4a2580e03d81912089d88d", ++ "201e678f30ea96fd17615f", ++ "3566f7f67e026f0278dfd5", ++ "30485371efc19b50bbafe6", ++ "4dedb1ba2a6a4abde67337", ++ "33440d7d3472a4b6e2f627", ++ "591749051e47ee7b49cf82", ++ "3fe61d12a0b09791925ccd", ++ "7f5140ee63b60e0a33058a", ++ "5eb217461cfa46d5694397", ++ "6aaafc0107575bd9b70723", ++ "3305f9d7ac9bc35ded571d", ++ "5ef7fbdbf498c8684625f6", ++ "3b66491ccee4801a4e3673", ++ "76fbf6732402bc76e061d1", ++ "28a37e042abf70a7cb137d", ++ "534c1a3b25194e8cd66e6c", ++ "3eedab106a435ef32b9e48", ++ "6bd995ef31bcfd22d52d9f", ++ "6b5da25417070642e0ba4c", ++ "3d40b56764f7765513d13", ++ "44bd0de2094b8b3759356", ++ "312518f9c1ce1e690c003d", ++ "f920b02af1e3bd673512e", ++ "4ed1311eae64f9e834ee7b", ++ "4d075c933e4b93da3a33d9", ++ "133606f2fed41ffd77b999", ++ "16b6721ea95f55ef631d25", ++ "140aa7412f6488f5404826", ++ "3ae99fca89d15abe091160", ++ "543222604f067afa3e7558", ++ "2948eda7d7c508918c3056", ++ "4cb6253df884020966d27b", ++ "46bafe88322c67f3b90507", ++ "31416a7f09913059dc251d", ++ "52d3cdd253b64a03c5885b", ++ "1c5d10301fcf4a14c82adb", ++ "5cd8f782abb8b60cbf36f8", ++ "42b636bc4126dddf74cb00", ++ "5afe15c1524eda9627e183", ++ "783d012e8b928ea14eaad8", ++ "45242101d43b276b34115c", ++ "28b06d6b1f993702509e4a", ++ "16ad879cfcd3e458301dc9", ++ "78873bb7282961108e63a", ++ "1c5b7d2b84cbc7b29bf542", ++ "48edf77c0fc298b0491c2a", ++ "398764fa3e177502af4d3b", ++ "1d1aa15ce7c8c15f051ba9", ++ "401a3ed45557939fa7eea", ++ "13f9a309c929439a91df6c", ++ "3aef6b8ad8d4f116a27e4a", ++ "64b1dd5abc6713a8f53d0c", ++ "73f4373aa0c46a1ae61409", ++ "1ebddbaa72ad1a2b1cdc49", ++ "2cd33d1f501e268643d591", ++ "11b77783f411c457cf909e", ++ "d92cf9efd7d12c62f0dfe", ++ "2c56fdcda56f78dcda9b60", ++ "118d29d91686683483dea8", ++ "7e05b7c7d54cfa1fc7b525", ++ "42c5d2d1082dd2375a4ef3", ++ "26554ee3e9bedb1a3a09fd", ++ "ad64cff4b4763a7fda09f", ++ "5f9563c7ca70d6e5061bfa", ++ "38d987fd4b450ee5a69286", ++ "62af499c078af038905758", ++ "3eecfda3b4d92af2b7e5ae", ++ "5e195ccf98c9a4e1967fe1", ++ "61c0e0ff11a378274b395c", ++ "486fd3ea0158f33daf767d", ++ "4cfaabac7104cbad2ed728", ++ "714ed5cb0027168be15142", ++ "ac5bf0492a63aa0bf597", ++ "53339d5a01f3d2e9bc8755", ++ "457d09be8a2a4c351b63ae", ++ "1892726d56d4f8f92dde20", ++ "236e08f8411de38e44c3cd", ++ "5549ebaa872068aae68ac5", ++ "11df54a696817409ff1164", ++ "7f695021b246db24a5113a", ++ "5267f1f68134d546ec646f", ++ "4ad5e4985caa0c7ee63b9f", ++ "3c5262912ab7e82ffd49c", ++ "7f9a1f8e557617163d5e82", ++ "31b2ef6b5163160bdce290", ++ "127dbd62073fb0c17b4217", ++ "5fe5a0fcee7c061cf49e8d", ++ "34ce2df12c5e0970f682d1", ++ "4f6148f444b84dfe82ecb2", ++ "740e3fa0e998e741eb97cb", ++ "5623f1c8e0d5c15938b2a1", ++ "79ef58660a06bbc22f0cce", ++ "35f48b300d21989b05560", ++ "4efe7cc856d9eef4fda470", ++ "43f99aac41b05d58c624b4", ++ "66b03ec137e6361ddf6317", ++ "4382f99dff4951a775fb77", ++ "974b1ea8fc3d4665ea11a", ++ "1998c4f90bb8b5465b7b1e", ++ "a49f38b3c0b7ca1fc5c10", ++ "57d421e876be8c87768c1a", ++ "14c79375686a30f4c21ea1", ++ "667b77d58f7f6b14e19bc3", ++ "17b5a764867bc2f176278", ++ "cf2bf44fe6c433cc00c9", ++ "61619bfea73d2a10c7a7e9", ++ "3908eb827c8209b96bc643", ++ "e859d26ac6c854731c10d", ++ "562d8222a0b94f5af3137c", ++ "780a2a5411b159d83dcb95", ++ "645cf2dd2735f1cbf53f1a", ++ "6476d594392ef9fc9a3df1", ++ "7df75741d3ccafb28da8e", ++ "526d1eb936d1a3dec6eeb3", ++ "1a3337bb0bc288bf44447e", ++ "13413811d8a8e6bc2e6cf8", ++ "54728697bad28cd0bcc9f", ++ "2e178e1cc4f997792ce1aa", ++ "f339d2f5ca33347ae8d13", ++ "24dc2302a4b77b85525bd", ++ "4779c6f70cb71f00e32d17", ++ "20866732367b425f7e5ad1", ++ "26c45bee1cb7e300fef593", ++ "4f3fe475424626758ebe24", ++ "3979e2b3d54a21e7e8c1cf", ++ "50bb1918112bad3e57d523", ++ "4e1bc7c2f29a2f520bcf7d", ++ "3b4ae8aa403abef29b052b", ++ "54765bab6ab2b394d9dee1", ++ "5e7e83070de3b07a4bc87", ++ "6131db76263e902f303f6e", ++ "2fb62f0a2e9435830411", ++ "57b341376c8eeb5e957326", ++ "7d59312cf551555c728152", ++ "3e13e95a38da382cdac574", ++ "53e3092b891267552e8471", ++ "ea04fd9db78a21c39b6a5", ++ "42cda11218a2f5a8d7bd1f", ++ "3aaf5736ed929c1ed0ab93", ++ "6e93c69a7627e1f9832a61", ++ "37526cf6c350fc29ecf559", ++ "5640578c9a2f674c097c8a", ++ "41ebedf12db1451af99b12", ++ "66db9685c97e1039f97191", ++ "61e21b9a255226ab8a9c03", ++ "4d36c683652009a273c69c", ++ "3e00e41664141664f70d8e", ++ "734cae170e5d7d8758c509", ++ "26c603e605263eb37ee858", ++ "1cb50b0700a11348f864c6", ++ "6b4ed91c3f4f0b25252206", ++ "46436019c4b35e76ea4182", ++ "44885049137a26d9ff4438", ++ "1cf7470aa8bed908f93c32", ++ "56d7ace10d6e046f35bc1e", ++ "2bc7683658e815b0850ae", ++ "2bd0c39ecff8d002f3a3f7", ++ "2848634cb8eba43423c432", ++ "177aa9fd51aa698c4f5d25", ++ "809a8bacccc204134381c", ++ "60483a9742002ed4918cd1", ++ "7544304d1b3c2594fef689", ++ "49ddb3e956e6fd8d65e1ed", ++ "3820d1fc1eab75e925dc43", ++ "7093b250c7b04c2c6d567c", ++ "16870479234b3337ddc8c9", ++ "18f39bb607de6b1ad183e4", ++ "a5d62acbaf68c52001a4b", ++ "65f33a2872e25c8a682f06", ++ "4e66ba0bc1058a3931042b", ++ "357eab1d6b7f6618503b3c", ++ "5cac3c06df31850ad70694", ++ "7e68cfb951ae556b15fa1", ++ "7de8764ca6a43c99d6a50f", ++ "329c1979af2fa92b25335f", ++ "113149ff5647e02c5d8e8c", ++ "5fde1fcd656f65c682e01e", ++ "3a2bc2968347afc3827c67", ++ "b7602abf832a9540b03b8", ++ "28434971e0ad86e87340b6", ++ "e24946eda2a54a4c98b6e", ++ "318d2300370d914ed1483a", ++ "776ff8d5492c149f7acf17", ++ "50e46147373113c54d73c2", ++ "59652c3042e742dab07904", ++ "1e74e23fb34c50dc055d0", ++ "3c31433d0db703e03c294d", ++ "64666abc6a9a2f6a1c7575", ++ "191da9b869e973d2fdfea7", ++ "6c362e17e2173449bde86a", ++ "1a8ed7cad7bcfca4620120", ++ "273beeddd87cbae01c207f", ++ "568f3917922fe83ad3e225", ++ "44e6ec408ba05ad98e759", ++ "32f5fb93813b0abef00c9a", ++ "490db50fd1ace7e8ec15ae", ++ "7630fa097aa2bf97cef6b9", ++ "6ef800332004d6cda26cdc", ++ "551ec7c1ae7ed078f940c0", ++ "455927f484bb8820a2ccf7", ++ "7933956672bf2e4535ee34", ++ "2a7311c640e7cf0ecc141", ++ "7242e44696c19a3a1910b7", ++ "3c7a2b6b58424eab86f3b4", ++ "359b331d03b9cc2451c1f8", ++ "4169ab1c6bf3f0abec6c34", ++ "6df855d5b158377d521892", ++ "3c4374002a4b05edbee285", ++ "209910d1159692421526c", ++ "31dfcfe645b46b329ee2a1", ++ "1e6874a8b307092ad6e72b", ++ "6b7e91fb5948662e3961e3", ++ "23966403e567312c7a8379", ++ "2f62056d547ebf7995c6e6", ++ "5fda42ececb40f359e4f0b", ++ "18a6b71998f6f84fd5d814", ++ "76f42929010d1ca7619b42", ++ "50e22c6cf5d6b70def807b", ++ "1cc96ab6764758e9cff09d", ++ "59aa03a25735023ef97395", ++ "741d91860d83d000328e76", ++ "a9753c820825d73c04548", ++ "4ed7cbd3e32dee7a40c626", ++ "6ce70c288bc2711b1b024f", ++ "59efda7d6a6d8e6aaaba46", ++ "6ee757629a9b68ac7e690f", ++ "328bf9a8c78ea2ca3388be", ++ "59bb325b9748e94acb6630", ++ "55137101093be9fb51857e", ++ "9c6c4ea9b05d327c6b7f3", ++ "77815256a969cddb479be9", ++ "3b0cb59bddc94e18233703", ++ "7a123babe2e7abafbaf8e7", ++ "35d6d7bb2855d9adfbf650", ++ "6ad95985d0ab8e8d823145", ++ "2133efe27b28c873f101f", ++ "607776583fcde0ad8e4c87", ++ "e2d9cdfcde324e23eda21", ++ "747c7a13b706fb28e46c47", ++ "35d310b1c9f92e46c5dccd", ++ "7248daa035ed0c83c2d007", ++ "3c8b578aed4234d875a143", ++ "766ac65aedf40f90341249", ++ "3087f959a9893769198248", ++ "49a34db8369186ccd3e18b", ++ "69b04bfb64dc28afc90f3", ++ "3732911ea3b78b2cc54de2", ++ "7dde8d7ccd2cebd1d4b943", ++ "66727c69de089e222307ae", ++ "5a67c62d60522486e9cab9", ++ "6acdbbcb1d87bb33b845b0", ++ "1f1cae187cb4e7e2d75ff5", ++ "1cc8bac063e7f4722cc83d", ++ "1f75d643fbc4ab52296f51", ++ "7b34f38b9d16f0d70ddae4", ++ "74a0eb9dfa780e171aa5bc", ++ "4366b19aa12542a30c1749", ++ "4a1404c02a58e6862d11f5", ++ "55e542cd768eaa4ab7eb43", ++ "182ed4a29e8be479e40c89", ++ "5eb96063b604b2d052b457", ++ "d755ece5c8fed1e833d4b", ++ "10f7a570b959918609b06f", ++ "656a55d45a93fac53881ab", ++ "60e3811062f0661e25f626", ++ "24a843ed6770d822f92be9", ++ "216b9b04319fd8da8a6d3b", ++ "3e41b8ea3309221756df7b", ++ "5a00aa930e50101d3ad458", ++ "260985f3992a168bc7fb3b", ++ "5c3df551863d0055925c95", ++ "28b06a5b8a2319d5d78e37", ++ "3567cd9077f5bb1d3115a3", ++ "460858d1e253129bf64e5b", ++ "485bb888b6979f8f201fb8", ++ "7aeadbfb750a598afce6ac", ++ "3cfed079405fd41004c118", ++ "3dac1d8f9e9cf46cc42204", ++ "2df246fe147cf6a7d9ed5f", ++ "1a908fcb6be810a9e1e92a", ++ "6c33a3a058504d48c17efb", ++ "66e9cba0e526f30b7b9b8f", ++ "757f2101d664083b2fe8c9", ++ "18c5643eccf2173f575420", ++ "7dd9082b6f5562b8d6ba91", ++ "389d1e8a26db35e20882fb", ++ "65172c59adde7fa1aa62e", ++ "1a7c7fe62effcf2d1a2cb5", ++ "392d9ae31bf22e0236e198", ++ "3d886ee05f1bcf69fa4f70", ++ "2c8f1060dc661c38044a5b", ++ "16eeff7e87d3caf8e58a92", ++ "741dd990ea20591fd9b5ff", ++ "39bbee3cab035e7fc68b3", ++ "4996f8a3f7c2c5fac02813", ++ "36ded179138f0e4cdf1ee7", ++ "f9d7db7493258ceea1a37", ++ "2a6c238cf5c57a2939882f", ++ "35dbe95730bed0669969ad", ++ "290fe0ae5a419909be4e2b", ++ "63839ba9cca448dd7fecff", ++ "30a8e1972ee45f3e0613d5", ++ "509ea21b16907067d06b82", ++ "7633f58adb014bb5585678", ++ "6c8fa526a6bdbce9f7b832", ++ "4a78cbf6bef93b38948e09", ++ "37c7b0fc4e875134c29246", ++ "4c996629390ea0954eeb1f", ++ "222dacddb6e77241cadac8", ++ "2df2bed0dd9ba405c8c5ce", ++ "3a7c703f2642b17eba0c69", ++ "22e8d9bc34a96264dd4caa", ++ "4bb8f4e111d078e3c54590", ++ "69efc15f2bab10979940b4", ++ "4e1b51392bd1ad38a51d00", ++ "5e82dce0d15b40d73e81bd", ++ "6a410e486ad693817f9d31", ++ "5dab9e18ce0b8340db40a2", ++ "2df0f496cddcc699504250", ++ "124c113e25b1a8153a830d", ++ "28d70ec040ec983aded5c7", ++ "7a93c6e177d746f5eb503", ++ "14c9d693e42997dbc96df3", ++ "50755ca653aac70b84b12a", ++ "5f72010436c71470f190d9", ++ "1af9124bffaade4351e990", ++ "5fdc8856cd703470a1e5a4", ++ "10b57d68a8cfe14ef3ca7c", ++ "245003f901ae0a356365b5", ++ "63dbff9398c6d2cafd1418", ++ "75c2ce5e2535ac7878196c", ++ "15c08724b1daf7a590d087", ++ "3dc7ec06146d405216b267", ++ "1fab75ef67bec61a68a277", ++ "711d3de6506cffb89d82c0", ++ "15b79d2a607e674b1df02c", ++ "928d2a95f60dac2e280f3", ++ "2db6d4b5b7a928883df97f", ++ "522bb592e89a78b316244d", ++ "cfbfcb607ba616c016fef", ++ "13d6f0fac0c0b9cd891715", ++ "12a8a0e9fe6ba5c3656149", ++ "4553e500c491eb2ced6e1a", ++ "368d20177281b04fd8018f", ++ "2579cde0e8d37e04167a12", ++ "2f4c8ebd42ef359c5ac79b", ++ "7afeb7314079bb05948a57", ++ "4dde9b7ed5a96934e4dd51", ++ "3cfc7a65b66e9f8c6f8cbd", ++ "7453e07405f19cfba93c17", ++ "18488f368798b8734164ca", ++ "532d2ff2bd9d0ca8b344ee", ++ "18704740809cbd3a91bcc8", ++ "1a91a4ef4625f7ae911f1d", ++ "26240f3e8816b599bb01c6", ++ "60749c3a015660029dacb9", ++ "321405882a2a0c05f7907b", ++ "6b85f2803d97e818e2e527", ++ "40d9ddb7d82d86fe4dc6d7", ++ "5bc9b4c686de112404ccc3", ++ "49e219e4b19fa82e3cdd8d", ++ "6b4aa7c57cecc522b32c99", ++ "1152ee1f6c91b44b1faa20", ++ "4f1b7b04b31a6d85748c8e", ++ "28eaec99940a1b1f563841", ++ "341ee0e329f6ab9da76c4a", ++ "8a4219421d2f55bef801a", ++ "25e4a83dfc2f633765d96b", ++ "22a17bb1e02873c944cbe3", ++ "4c4fa3875e78671bc1d2bc", ++ "79db0961906e2d46b0b349", ++ "68d1c5df4d9653be9c8e7b", ++ "7e0f7a6620c31d72d9d568", ++ "42af59edeafb6c79b9d208", ++ "3d17d279ec6a81f53cd4f8", ++ "2f1ba6fd01e5cf713f7991", ++ "5c246c8d9baad4092bd7a9", ++ "1c6a5fca595a1ff62b0a7b", ++ "5c6ce5b29bafc437eda5ce", ++ "709f8b4e1e81f78ecdd5bb", ++ "619fb115b590487fbaece5", ++ "5b917d89029b0850efbfd7", ++ "2103ca88adecbfdd3370", ++ "4e0f2086acba831702db59", ++ "cebc8496358956c6ed352", ++ "4aa62ab8f33741774c11af", ++ "55925c1c09bda33b3d0e7c", ++ "47b5376a6bf9ae1b5420d0", ++ "5f305f39404231a1ce6591", ++ "d0d6f30615b8f231bece9", ++ "851fa3652b44e57d9190b", ++ "4c099f907df9db8a25350c", ++ "48cdee08fb7cd0c828eec2", ++ "7399c1866bdfc2ee9d0ba4", ++ "7da4d79cdf3d83f0763c79", ++ "5de657154513d33b2dbb32", ++ "4057d3883ee10c31d0c5f9", ++ "139a5be9fe5d74b7b324f6", ++ "4678975ad8ef4ef63ed234", ++ "3a1984f88834905315728d", ++ "5e53c14166e301e45a1c84", ++ "1246f9f5df870b21bcb1e6", ++ "6095ebe0914ab346aaab52", ++ "173ef6d2228315e7fc8577", ++ "71a2dd2f4561ce6b25cc84", ++ "17f8a55fef5d58503cdf89", ++ "2885d88c14361dbedb4fb1", ++ "69cb489051468dc8b7a10d", ++ "6552488fb7e68b138c5691", ++ "3d5e0686efab87e5e7c266", ++ "5adfc7a0a78f6657a5960", ++ "65773487e5415b58fb205a", ++ "1aa4bb2c56ddce8ebceb39", ++ "1ae4174a64ea29d65c88b7", ++ "2af1b36e871a2152d87ea3", ++ "7118c95246463e79fab7c6", ++ "7f31009d8b384ea51f9235", ++ "5eb2b60c1d97e4dcdb09d3", ++ "5ccfa76193ddbc64186a30", ++ "1e31c413e16722caeb814", ++ "dee72e6d522c55b461f4b", ++ "18250945b23b28bdd1208a", ++ "72e90ac5d748fbd2d7aadd", ++ "10ad00e38092458e73fe4f", ++ "1144f2116d6e426f3addec", ++ "720179be8f54eb5c778be", ++ "1fe4c7d7da3eaeaae25e65", ++ "51a001a64a22c7bc0db3ea", ++ "7d40cdfed339cab397652f", ++ "1960ca77285b35812422e2", ++ "421de31b9083741c4d4c48", ++ "3cd3f5ea5623ce969c863a", ++ "4b6b8f4e6118573075d4ce", ++ "43ac29ece073be2a30ce86", ++ "217c2392122f9868740137", ++ "2b3dba5edc89810815d1ce", ++ "7a9c1df7aec04dc00e3584", ++ "74aed20fd8f19001dab562", ++ "74f8ea2aa01f3e122e9ec6", ++ "7f3f1310b0770a6a8ab4e6", ++ "7377f9449fdfa779330064", ++ "4d3d6fd7781e8ff3322226", ++ "3629587577ea6cd990a3d3", ++ "29ca62a9234f915c5c9715", ++ "5286bfcb1951cdb460fbe5", ++ "1b0dfe5bf791bf4d645e64", ++ "150cbeb75257f8eed7903", ++ "5ebda7b44a30093e22fee3", ++ "6af9f591969edf6d33a899", ++ "321ccac2ccfd73a0b28c6d", ++ "fa6bb9b4b92165346e0ff", ++ "603f9b3bc6733094104e23", ++ "2e30617b0abeb387001867", ++ "e419f0eced24d03400fbc", ++ "2057d9029cad07c3d344a3", ++ "1d4515e4768ff5c6b4178f", ++ "7b5d99de82bacb33af7ee8", ++ "43f53558dbb8a25ad757e", ++ "4265efdcec74f163498291", ++ "477273c36a749543489547", ++ "767f863c9bfc5fd6540f44", ++ "d8e9fae4ec5d3e7913712", ++ "2ea5fa6c2e19e6ee7add96", ++ "55fca6cb45a0501d1c50ba", ++ "4e94399e1765146189df5b", ++ "5accf03c1a20af1120832d", ++ "137f8e05276cc8f9180095", ++ "499667b1e22348ac584789", ++ "7b87e87e1438c6126ab1cc", ++ "46ea38e0c4bb849b39baee", ++ "d922a909e3b3afea5fe08", ++ "4700bc9de4804ec44122f", ++ "54018c8917549d050c00a8", ++ "5f8307f0589178f70f7238", ++ "45b5b538c44c73f3bf515f", ++ "7ad19421f012d132850842", ++ "7adc118469443d4f7084b2", ++ "2ae496e8d9399061460619", ++ "49e01d719bf13fd52369ee", ++ "e1e55a565534c74a109fc", ++ "72bd80f062eb130b42b044", ++ "1d616376b444140f9acd68", ++ "48082cdc2a40ccd11ae434", ++ "32a426cd7460f9e5c5e7", ++ "bb247081da09643c00d36", ++ "34f2e009d684c876c246fb", ++ "3e2cbdf24bd5900348312", ++ "507a6d1fd108a63234b38f", ++ "3253e31b47819fbcec75b4", ++ "3ae16fb3fb77d48c6adcc3", ++ "244d1131736a5aea351d17", ++ "682b3c7ed60ad7c985a3a", ++ "22d6cba0f681e23fc64382", ++ "14da7875e13efd461f7c10", ++ "1ef2f8aa8266e26254215a", ++ "22cd6c35ab2195c56794f9", ++ "1d1b1bb20ae40ee8d35505", ++ "66ba97928f262067fec230", ++ "53e99cd5ced120123b808f", ++ "7e698a24ee9aa726fc4b0b", ++ "1df3eb49ffac499fc5f3b6", ++ "465d9407cc9bc6456e974d", ++ "48938572f05f540b474485", ++ "ddf6be61ce9c04533277", ++ "15131878551adae4b04c53", ++ "14c7f40a28e01adc5ae1b4", ++ "5cf912fba9a563060d7b3f", ++ "1c85ed9416af845bb8e82", ++ "1851d531ca021ad6f2b572", ++ "4ad2dfbccfebf4c881dcf6", ++ "16d83b4ed79a537102c236", ++ "19e1cce82f85eff6f6b24", ++ "589758587c26455b22331e", ++ "59fdecdacfa91d60fd391e", ++ "1eac63084c7797618dd9f7", ++ "426ece55a7fd1d858414a0", ++ "2078bac214b712936de507", ++ "3e748cccf5c4b2e587b8b2", ++ "232c5e33740871b389c8ba", ++ "7b4210ea990dbb2b80bb4", ++ "53b453f5f30f900af808e3", ++ "49f7df71bb684bf5a54c61", ++ "1174d8cdaeecfc5b7908d0", ++ "6106124e06a73207e84629", ++ "34242d89a6cc1d4e30fa9e", ++ "74d978e8d6a9ce6def9aa3", ++ "308787b80145ee403c389d", ++ "36121cc69943c0f23f8a85", ++ "6d5d0573b2f9596b50b73b", ++ "5eb9037bc76a6930985737", ++ "2c9401cd53725f84e2c421", ++ "8c59c1948361c413eed8f", ++ "1439532a6d3fdff49361fa", ++ "42d71e3ed0639f1b07231a", ++ "29785bd232aa4bcde009aa", ++ "494c96ddeebc9c314fa5db", ++ "2e1d98165a5897b1482cbe", ++ "7a4b513ca25dc5d887768d", ++ "5197b486ae5dad9284702a", ++ "1d4d18f2bee14ee417596c", ++ "1b8c24041b5c09c2ff1c0f", ++ "19e87845fee8ee9d86794a", ++ "dcb3217133998c35879b7", ++ "61c60fa253a8977e213d6c", ++ "3df3e3ff8b5241f9f120b6", ++ "7e880bc1729d1783a14627", ++ "7ef05035c2a08e050870e7", ++ "3c234bbaf5da9465f9498e", ++ "39fc8d30c95dd0494e9be3", ++ "75b29426909e9c8294f365", ++ "68ab0ae55863c4f8044101", ++ "1a01c5dd382ca52c0f8a1a", ++ "7eaf3d6220ab7c049341fb", ++ "e966e5d5e80ac9dc377a2", ++ "38aece2fe0c1923c569603", ++ "296401a6101dec9b48a81a", ++ "a5385b7f7d2a505f37187", ++ "1c0a01fb60b92af636be29", ++ "546f06ab10360a76005c9e", ++ "463e980411d809a1713383", ++ "6247c20f5e97453bb71b09", ++ "7ed8ee73ca5507f25bd5aa", ++ "5f9fe5fab5062ae9d40550", ++ "d7315bcace04536b59c5c", ++ "700ac125ecd365c309339c", ++ "792ab4b2a318b2229df59", ++ "6e8a28f3d3f87aa2548dbc", ++ "53034f778656513538ce93", ++ "71310c65e10b4b2e1f3924", ++ "fca82540d3cb37cfe38de", ++ "324b0e59fd313b7b066991", ++ "ca5fc0de7c8f0742fa11a", ++ "436134e757c46fe077e8fd", ++ "3382f247e6cbcf48a8be0c", ++ "5714f7d7bb3f12d88adae1", ++ "75c3040748861ea4157368", ++ "1db2b63fb5b72bd2913b9b", ++ "5de44a501f899626f11ecb", ++ "4a728ba1f43b41e3c8ba7b", ++ "631d5fa433132c920e949d", ++ "49dd9e128368a6e8f31565", ++ "5f091c9040f8e8b4af8c6a", ++ "6dbec10ac45803905232cc", ++ "422c99318e0e012bdf3cdb", ++ "7499dfe49d22092ecbaacd", ++ "4e9b8b836aefbcc76074a3", ++ "23591be47ead61c7626094", ++ "47cb5e48534f0fa269ac37", ++ "45d0bbd0c4c565d517f4d9", ++ "58f251e3a335055f8d1702", ++ "e16e90086dfb42533696c", ++ "32bc07a00fc1c32e790cff", ++ "55d4eceed6862d8b7edf73", ++ "3bd14b5c954fd788df3e2f", ++ "32267a0d010a3ac60d956b", ++ "2dd9e647cd7caac396218d", ++ "786bd6b0d956c71e3d0c41", ++ "5a2e3e7ac883c32720fb5f", ++ "41824effd56ee95a25ffcf", ++ "df5585842155fda65c5ad", ++ "f0daaf67c2422477284d4", ++ "285121b3579e1afaecea17", ++ "2d0786ef10819221e8e925", ++ "638a87cbb628cc2744b5a", ++ "2e795b59317cae4c039946", ++ "6df756715e22975feac139", ++ "4299b7c55998b524a2963e", ++ "d73559f9e34900d6994e0", ++ "4356f96a535f02cd557790", ++ "671133a56bfab71842e1aa", ++ "73475afc8917dfb47ca158", ++ "8cecd81b395199379b860", ++ "6908cd3a0537e6d9de224b", ++ "6c4e919619ba3e8fcc083f", ++ "765220bfddbe009c12884", ++ "696a995b7f1bd2337f9c55", ++ "7a35b4347e2b2fcfef4e8a", ++ "7715808f58e52b93fbd9f4", ++ "35984ab233bfbbdc2149d0", ++ "49f6551bb5a630f7f3a91", ++ "260202888a368af1bf27f0", ++ "28c70cf1a34bf4b12fc1a1", ++ "74a3895c1173d1100e060", ++ "500de5789e46431a14b08d", ++ "e50ab5db695f894b26597", ++ "6e0d3cb0378f9f523dd7ca", ++ "3b890cc2ea1882c16138ef", ++ "623f56668cc8a093bdba7e", ++ "2311c97b29ff503887b251", ++ "5f019291ccdeabcd687ce5", ++ "6467af1a0f07013b2e9849", ++ "14a9e816ead24aab2e6645", ++ "6bbcfc26c4e8fa7b836095", ++ "775ff949792463791cf8ab", ++ "62658893411360a21b6bfa", ++ "2fc0729bbc7485664f21f9", ++ "784f7b46f80b03fd06242c", ++ "7215cad82f761314bbdd1e", ++ "475c6525a253fe4a455211", ++ "3301553132b8af815a8ed7", ++ "40066cef89d0c82982356c", ++ "36d97c131b997ecd7866ef", ++ "583e484be506b8efea96b4", ++ "4656a2b830782828314373", ++ "374bc74be1e4381a79910f", ++ "4f459e6fecc9cadb8e977", ++ "2a843c02b5e59799422e65", ++ "3910da787142c54f4f9b2f", ++ "ffbb4d4d7cd961d36be9b", ++ "38dd92596a9fd54920876d", ++ "6bd057cf4845772f81f71e", ++ "4fe62d365b58ffaa0d2201", ++ "1429ba4cc3fbeac84cae7b", ++ "403c1a7f2d528ab5d343b9", ++ "2175a06a641d5e8ad33646", ++ "25d324d633986f4baae0fd", ++ "63d746c096cfab5f984c70", ++ "5bd335a49bc5a06867e5e1", ++ "375f02bea7dda994d93044", ++ "4f754c5d3b280b20bc95d0", ++ "3a997ef0ad242391b526f9", ++ "2c30e99c7b2606982311b7", ++ "4d562b2b0bde307c0edc87", ++ "b4aa58f86a462da2ed07", ++ "ddd508394009eefde3ac7", ++ "e73b5b515611f25e496d1", ++ "e4ce3641fd893553aeebb", ++ "32765eba5563b5336b4375", ++ "594ab65a623ca11a1d847f", ++ "7a6cf71a247a9aa2ad1f3d", ++ "509c14f0517edd55968bc1", ++ "3cb90317e0fd78744bd72b", ++ "45f39b8c67c74dfb911f44", ++ "476085adcac943f7253ad3", ++ "658a9098281c199cd165fd", ++ "cd47f8baa501aac7b0989", ++ "3de183e6b991f7b8085160", ++ "a5582fe7b241700d09fbc", ++ "68719eec758c692aaaddb3", ++ "7d5f8fcc1cf99dc3131c84", ++ "5a2d6c9f89fb24cf28d1b3", ++ "7e1946c78347049b735318", ++ "2db5ff229cb2d0a85b8393", ++ "6f9024d8cdd8d69ef10bf7", ++ "38102211c805f10960d5ba", ++ "55e838d685f75c7c6b5f20", ++ "339fe9b069fdcbe6f3e985", ++ "1a939b8af79d6b9d1e57e0", ++ "2b1a4dba7447b02833bcc5", ++ "6a5c41dd17f1f090be79f9", ++ "6ad4c1af807487676eed8c", ++ "6f33938b3b060336c57082", ++ "1e7a055357b6580f4a7b9", ++ "1d51d9201dd8c5066bb7d1", ++ "daa197fa1e9b3068f7333", ++ "364b7fe165d59b5d916e2f", ++ "4026f1042b0f5b1e940a78", ++ "3501255a6a3473cf6ac042", ++ "73a88b6c78ebe25a0f02da", ++ "645d789e2ca881eb3474c9", ++ "6f59efef27dbd92df6f652", ++ "32dc0a137f654afa8bd8fc", ++ "4e162f9f85bd081abd7380", ++ "48ef84f7c351ecdc951b2d", ++ "69150cde40be119caa92bb", ++ "3b409dc537f82b36a0b80a", ++ "748df460f8594e0bf1ab20", ++ "178fa57d907fddb0fe3cca", ++ "6747e95b215a546a339b7", ++ "55247bc5a72b8d3e89234b", ++ "683a5c6214b92efde4aafb", ++ "f36396be6cc745bba9473", ++ "77a73ba77b4ed622a17e87", ++ "2c250894e17e7f4b0dd", ++ "24af65fef90e2f99e03cae", ++ "3292c0c9fda6887e4ad161", ++ "304cc216ed2272d07c7f80", ++ "5488a723f6ba5cf9800543", ++ "47d8e4eb9811f9d409ea40", ++ "7e2be12d72782db9e725dd", ++ "247f391e5a3b234cf19ccc", ++ "29f1e17550354ceae49f99", ++ "4edfb060e1dacbd449d726", ++ "4a29c3e62c947a4a1e99b9", ++ "4755035ba4d9924118903c", ++ "3d946cf498fbed2d965f70", ++ "260d3af59b4f3d5c208bbf", ++ "34b484cdb4cebe6aff839", ++ "7b5ec7e3346c3cb243b356", ++ "6b25a8073bc36b2af4c2b1", ++ "3665e544d5ec7ed8868a1b", ++ "1ccb03c008f2e822848880", ++ "18e83fe885c9bab518bb97", ++ "42e88e9f66659afa2a393", ++ "5533d7d78826353c79c73e", ++ "674fde01f6057423c31a9a", ++ "3a9c7a7d5782f84fd4620f", ++ "19b52abcac8b60d5349efc", ++ "23ac86fba80f09945d51d2", ++ "61249154ca21ee2b75deb1", ++ "473c4bff7362fbbd2049ff", ++ "923121ae3af782c934df4", ++ "66fecdf77d13ff6c0b25a4", ++ "170a54e825e33a2265d3cb", ++ "31be6678e513813e0e676c", ++ "7972b4774882051f2d85a4", ++ "75b09479e265b9f0ac9a5b", ++ "708324dd5e787ea3d43a21", ++ "4c67268f528ba7e8c34a0", ++ "51f9e6d75a3c5264312643", ++ "24183bf26908368eb41547", ++ "5e7785eebda5c8e2f0247b", ++ "5338be8d9f87d3f2e46b2e", ++ "14bde3f9984cc98dc83f60", ++ "62870c281778214067b40e", ++ "62e9a332653e1b103db5cf", ++ "69c96f5702ae4eecc6f341", ++ "3e6265ca213c1a0be64512", ++ "5ea38165e28694c8629ccb", ++ "2be59650bf9aa57c249937", ++ "40678fa2d309cb9417f68f", ++ "3459971422155f9703c78c", ++ "5552617d9eaca45155f490", ++ "18991d6f38c445ab4b38f1", ++ "1aee70e483c99574480349", ++ "277575523998439f834d3", ++ "692752e677cdaba7d636c2", ++ "298af75c2d584b01ccc6a6", ++ "4d7d33eaba361883277544", ++ "282f326b1fcbfb463ba836", ++ "6b0dc0d5521d21af0ccaf4", ++ "57f40a819546afc89fc2ce", ++ "6a24f8897d3040e8fb1da8", ++ "51e8f647af3880d2b77ccd", ++ "4b223517b6c7cd85cb43d1", ++ "745ca85c76435eb7ba81ad", ++ "743eb61998341a5e892884", ++ "5afcdfdab7a5b6864efc6d", ++ "39824b01dda7b8ada90cc2", ++ "2beed154412bd52cf1c83c", ++ "6b497ffe240d0867d5d7ef", ++ "eb947683c26db8dac2f36", ++ "15891c14bba25257cb14ef", ++ "4f540ba10fdacad19fee6f", ++ "5097857cdd82d2df144dda", ++ "6799fa1f9cffb381bd6c8c", ++ "5e45b3a532e82a603df12b", ++ "53528c9bfa6f5405d66497", ++ "2248d63b93978222916f1b", ++ "c98c97ab7b4b0cb756894", ++ "57d57f4721fb6be3b38e99", ++ "7b4ac8e7f9ffbf17f0627f", ++ "22af1fffca9aa4b2ba234a", ++ "2b913687a118d5d595277b", ++ "3cd72e80ffad615f09526a", ++ "e050d10f9ab1681fbdc06", ++ "36c8b1aaf274cca356ae2f", ++ "3d88de9f1c15bfd7b6363b", ++ "73e027017f2dbdbc204a16", ++ "6ee2946ba009641ad73037", ++ "522de20b2431d6ac8f42fb", ++ "427af6fbf5578c6104b255", ++ "172bc617da9e1aa348e114", ++ "1a5e08fda45015af7feba5", ++ "208fb7a4ffec7d8d1e5be6", ++ "3712172b56577089f4c773", ++ "621bfd4a39ee713781e554", ++ "2f0c8ecc959b7521936666", ++ "682583fe078ff76c962922", ++ "509b53b07e607cbcf6e79b", ++ "1b71574f7c567d707d0e82", ++ "572930c1df7ba238dfc9cd", ++ "2029341ddfdbd9f668612", ++ "1a54e98271fd5720e1bc63", ++ "62f83959d672cbfe7201a", ++ "2abf897aba93d347d6e2db", ++ "3ecd876c819b78567f7fa4", ++ "69714524521e343bc3692d", ++ "290cc13b5edc05d863546", ++ "26436c96779bbae9c15fae", ++ "32e5746a212d6238682c00", ++ "5e4b991cdcf27f65105596", ++ "4a05e03567ac78048832e8", ++ "658769c97f8b8945ac2878", ++ "4eea383bfa391bcb14540", ++ "4871087f3b2cd3c0f24c3e", ++ "5c20428f433fbf0c9ab374", ++ "15aba357d612d87099180d", ++ "73f933fe401d564be0efd3", ++ "6d925493d403647cc0a7ba", ++ "6a40f14b7a50eeca571bae", ++ "446d6309025414bad0aee1", ++ "6e388c53aaae7d287eebd5", ++ "3bb5af245e5d40c6fc15e3", ++ "66895605da5092de3d2b87", ++ "50774e378282fd09459eb4", ++ "5abf04c6f95d64b6c414", ++ "54dcbbc689dad12df77730", ++ "226c7c98f219b40ea94b66", ++ "6abf077f6636ceee313734", ++ "53cc3acdd810a96c3160cb", ++ "59b759ca3a67e4725b5f84", ++ "48e1272ba911cad7536a1", ++ "1d3c95c9d8462d4c467220", ++ "4167a3ca5253556f128ea6", ++ "bfe2f259223ccddac13b3", ++ "bf09d6ff46adc21d04951", ++ "4555d38c19f123cccb6fb4", ++ "4a5333a5e1c04b8bdfa257", ++ "627a4795d0c0df1d84d13a", ++ "122225a7053b175027361a", ++ "5027d58d8950e307548d14", ++ "76c881f1a372f21e829095", ++ "7f8ad9957e40808881a192", ++ "621edd8ea6ff7136526540", ++ "64adff5211c520e76cfa93", ++ "7b274f32f2cbfe03031cb0", ++ "3c71a5e6f6b431bc524a53", ++ "10cc655b268878a4e8e081", ++ "56853e4d2e614e1924d27a", ++ "1c72fdd679cfcd10e369be", ++ "1a364185d640ba1a6ed583", ++ "230c19482c2fdfccb6b94", ++ "1a9a55461554e908c4fbf0", ++ "48b5f18a43890f525b850c", ++ "779b65c66a52eeb45328d2", ++ "3a0a69f5624f959d85e411", ++ "498cac7e3100df5899cd16", ++ "6be91a7f057434bdea3953", ++ "1b0ff68c5f14ee84b37e7f", ++ "af86674d8a1c364331ef3", ++ "4fadec3b4cf5617426ac33", ++ "5cc79f5d12d2a991f4ebd0", ++ "5ca7f66678a73081bd34e5", ++ "5efd2121bfee3a30184816", ++ "6b79ef63bb66f1362d8de", ++ "3c4dc48e3cdfd4ce2eefe9", ++ "1c9f92bdf4717c6880a9ba", ++ "168c6919206ac6ace0f625", ++ "27e147bc2366e607ad99bd", ++ "44678fb0d784f11b21a657", ++ "47792007d733892284fb9b", ++ "636079478bd1eb493d0866", ++ "7450197e181adf8c4f92cf", ++ "65a7ac7cbfcc2f6c41c2ac", ++ "c92faa8d02b107a1b5d50", ++ "1ee8fffd33bf6223d36b95", ++ "203c3b480852a2154fd642", ++ "7ba683eab937665ca29978", ++ "1998245099906d42a62588", ++ "75d1f80628c3a1c1082c91", ++ "1c6bd00355516b7177a93d", ++ "795824804b82c5e751df2b", ++ "2746a28b14b19ab8d24145", ++ "75b3fbba0880cedfe12ea", ++ "dfc33dec9862e861d43cc", ++ "5d77b3e7e323ddd35a71a5", ++ "7438dcc1d87bfc73ab26", ++ "755d342969e9fcde9fd595", ++ "7bca9525e525d6ded2c76f", ++ "d08254f4d2d5ca1a5b877", ++ "4d1a97d405c026a8a5aed6", ++ "825e4a5dedb493626e7ba", ++ "26c3f6eae80009e6946697", ++ "59b1b4d92c6ee6432bf67c", ++ "705cc0331aa0195cd9f6ec", ++ "6d83e6632fcdd8cf940ffe", ++ "69699a76b55d4ca99064a0", ++ "76201a82e565cd9ac092ed", ++ "49b08f20244bc64879adcb", ++ "2b04a0e7492ffe108c1c00", ++ "4de1c0244f476f355a3a91", ++ "1bacdadb366134c3d1a5c0", ++ "755b7f3a3389c861fb2d23", ++ "153d48f10507702bdbbfbd", ++ "17ef22a6ba1fe32d3ef7c0", ++ "6f55491282e49ce5634ba6", ++ "66ac85711d7e32d731c773", ++ "7a45d57fdc1a44af5791fe", ++ "1b931cd6241fc4f484ed23", ++ "30ffdb4a4aa7f26e29fcc9", ++ "54b4dc744541c38f937102", ++ "4413cfa8b5666fc0af877a", ++ "5b18e3d2fe16a9d973b934", ++ "173b57e939be4a4efef880", ++ "102e8f3d54ced5e10227ed", ++ "79b27c762372e476f703f7", ++ "37f81f265c72ca7279eb3c", ++ "6b11c6506832a5a8571e85", ++ "5b68ba6c572a6576af79a8", ++ "26580ddf1efe9fe3eae4e0", ++ "3c015f30d95c1da9c47adc", ++ "54c37f5e810a7c49e7a02d", ++ "3b8be315926a14f8200fe4", ++ "5334ba131913654474693a", ++ "245f14c58fc2f1bd38bf6d", ++ "3ff0891da2c6d0cb8ab6f0", ++ "3e61864fd19f85bd211f70", ++ "493f40656c80193590d2f4", ++ "5dbb4f6414155050573b80", ++ "6afe8bc3bb8509aff3c666", ++ "586e1bd3806f5472b98045", ++ "6afc9a3033b5fed5a0c3ee", ++ "7969c90c819c5b0080834", ++ "5ee2324ad6594548cd275b", ++ "5c6cf60aae0cfc30048ec1", ++ "40e1957b3947c90dc23e89", ++ "5846b0049ea6f32f4b2762", ++ "1e5217185f433bf1233d59", ++ "af0b8a8f75ec961c833db", ++ "4f4128c0856b216db55c75", ++ "41d953d4dc4746ec83a1f0", ++ "3d55ef23d8c9f8419ff28f", ++ "1a5f34cedfae0cde5ea0a4", ++ "6517d2ae1b7ba4107ba2ed", ++ "4839ff83b5f2ddc41b61ee", ++ "30ebf17f92538a33a005c5", ++ "7530bbdc505d301ed9040", ++ "46ea2e85d6ca1966d1ada4", ++ "78022742d8c1b58e95d935", ++ "6a25d7d313e7a656aee548", ++ "a2c3a3cc1a5dfdc5a02b7", ++ "2e76f32ec68bf11c44acc8", ++ "54aeb8675aac1a423a7140", ++ "dd0623ecc7bb862ebbbac", ++ "61d42c0be51a3d664c8df2", ++ "254a37a2b407cabbf8069f", ++ "687346ea28caf1c87376ab", ++ "67b1ce8dfe00f53da9491b", ++ "488aa158d747df0f5cd422", ++ "21eb89d73161656b740b6c", ++ "686f17e02f2d49c0e2e48", ++ "dad2db631732b0506f6b1", ++ "72e9a5baa06d4af7c9f9da", ++ "1cab579a1f775fb778d900", ++ "3c3d137503578a98196d6d", ++ "2a8bb0c8c3747adf31dc91", ++ "1cf9608a937eea1a0bb3af", ++ "40a3f5ad2d4a9b33e2f67f", ++ "147d7e964c45ec443a24fc", ++ "7b9587337c3feffe6974d6", ++ "5839527a17db25de563064", ++ "1160b80ff627f607bda927", ++ "5aaca79690a162240db985", ++ "c75433d8b0423b552102a", ++ "f46157d09593fd6ceaef5", ++ "20db18e6c822f683f97989", ++ "3e1e43759c2fbd4596b36a", ++ "125d9103db1d2a83e13f71", ++ "28a2b96944f1b1210e6bbb", ++ "33fd72210da605d38ab799", ++ "4cada2a5056e025832015c", ++ "365c9be3e9c7dcc814388a", ++ "9f4b0dce97935ef1d9158", ++ "2b8d9b2da99a690e7c44a7", ++ "fc59307a819ae8b7a3f67", ++ "567dff5f6f64aa1697fa0f", ++ "23343ed75a8de5a22fac16", ++ "4c2a57eb3ff167fa077ee2", ++ "7a2990f262218cc62c32dd", ++ "210cf16be9c62f7408e63d", ++ "49c59a03a60b57e7bac289", ++ "499ab94c7bb40ba492d85c", ++ "67437e976a93329c5b9760", ++ "77c405c1030a468f5abe34", ++ "34363c8e2f82b5fdad8c66", ++ "39c91d6ca89a6fa52b3be6", ++ "7b2f70ff56626a3003c33d", ++ "416b4cd1af257e44ad03fe", ++ "375ec3fc3fce6eb8e8ee9d", ++ "4fe741cddc07d380fb6143", ++ "67adab05fa921650ed942f", ++ "601f96473a856041a89ff8", ++ "13fc0f6b201b7368c44178", ++ "6f79151ea6cbf1bbe85f5d", ++ "5dd15f8501fbd308a231a2", ++ "8ab595a01941ab4070b39", ++ "6ad236039c2c3e149bcca2", ++ "40c514f5e20e67263ea899", ++ "10b3ac9e35f753e3c9deb", ++ "2d816960b0911019df6133", ++ "14efaca65e59726b81dbf0", ++ "7d98b2bd2e9168b6d2e72f", ++ "49639d01a55025d5b2f6ef", ++ "2e1479f3781e1a48fc49de", ++ "7d60cbfdcc63ced7661d40", ++ "3ec0da959b014a91e3d171", ++ "6e1573decbd31bd14c0615", ++ "2ae83fe35c42b256590f54", ++ "22d68d4ed1af18d8658de4", ++ "3153805f294e973c493b1e", ++ "23270a061497f9098a49ee", ++ "3ed51ed7c85d68db84d78a", ++ "788f47c4aa1ecb9b01c1a7", ++ "9dfe0a1feefabb0c62643", ++ "7376e75fa605889898fa7a", ++ "578a6c67a3dea7609537e0", ++ "146dc1fd204e259d148dfd", ++ "59ff3fb267f4dcf86fd4df", ++ "5a081e53f2beac49d1a3e5", ++ "37bd7e26cf4711cd149911", ++ "47d814d93ff8dca3c1398b", ++ "132d2eb133a0383d464ad2", ++ "30f7be09c5f39b5532dcd3", ++ "83b4a6c139b7fda28fc0b", ++ "77e2377901111b6ba92316", ++ "7add5048bc0984c36294e1", ++ "2afa4dd2f2245b7525fdf6", ++ "50c4c9d0b48bd147d875cd", ++ "6387ce1a213d98335598c0", ++ "52253824741dd177a674a9", ++ "3195d14bda042e7057d34f", ++ "6b849a1f17d635cf0a773f", ++ "7c9cfb41c0f888d000fc52", ++ "7dea2305f898b6d88f6821", ++ "43d0ab106641bd01d72cd4", ++ "1d5fe04c71a377f6784338", ++ "207b51e97aba651825b40f", ++ "41327dfa41486f6b995572", ++ "245cbb0117ba8963db7929", ++ "4956d4cfa3dee8e23259eb", ++ "49af3dd263ef8ddc7b0303", ++ "76dda8edbfa5a4265a1a74", ++ "26b516b52794658e68ab5a", ++ "260f0ab9a00e1e941e404f", ++ "3395f092181af53bb73f3e", ++ "17a50483229662a578fdf3", ++ "30e3bf91dbc04d50a032bf", ++ "525362bcc006730db95180", ++ "6e988e80d2c29dc7542de4", ++ "47efed21b3657d0618e28f", ++ "fb85baef473def8948133", ++ "67afcc19d0bb557a608666", ++ "3e1ecaa8d0631877bfedb9", ++ "38a68ae5efe6ac22d3f278", ++ "4b2a621bcd3f244dbd1aa6", ++ "2432bbe72c83689ef74c85", ++ "1aba34eed15b418d4b7f0a", ++ "2d2efb8be305a05b685aa3", ++ "cdd3df5aba4c7ba52b4cd", ++ "7c38756fdad7c18ef7576", ++ "437e569a7451bd9bbbce87", ++ "614a9023303ed4dd2cdfb9", ++ "43c088f2eb74b96d25a4a8", ++ "308a1daa2779a84d4db8ac", ++ "59f29456bbb20b47aa046f", ++ "4b0f09e29272f9d49c6266", ++ "b03e402e64c3436818402", ++ "40f2e74e1048db76b72516", ++ "1a484afbb93898190d8d03", ++ "6edb305f1f8f30902439c9", ++ "7fd2ed81931942f0ef8d50", ++ "402466331777b126e4d8e2", ++ "52d5ea798306c9e21853b2", ++ "765c653014c5e4b3dc3865", ++ "785211217f5fa1bf82b193", ++ "3bcee7bc9a5ca7219edfaa", ++ "61b023abdf63ddd6300036", ++ "2f305b730466b54d50855e", ++ "60b46e71f1f2b8376d5d29", ++ "745cc1be634380e90bc82", ++ "208b7d3e85a97a99407a38", ++ "1000ca68b2a0f4790d5b97", ++ "2ef94456619d9728490c1d", ++ "18347f5ec924cf4631f292", ++ "26b5c49d8c4e12d4b3d157", ++ "15e2aab3b7b69272b3c155", ++ "76272e758d9f83ceea908b", ++ "fb87766da12e75782ca77", ++ "57caf75d12ec817c6cddfa", ++ "1a04ba76b7855a5e9c289a", ++ "7e5eb2a4ef3434465acdeb", ++ "35b964532350abcbf76d9f", ++ "3f14484539a427ea73a1b8", ++ "4d10e4408b3b6761aa225", ++ "235ae37d20b21074f27732", ++ "44dd12bd0d7f960d6bd7f6", ++ "196185d708583cfba757f7", ++ "5f8e36ec1202b0292d5945", ++ "47d7208165498ac04fc240", ++ "332ea59945a5d0e73f7dc5", ++ "653694fe66c257988cd02a", ++ "3069cb41e51edac9ec2b3f", ++ "17e032019f0dc1c4277c0b", ++ "52a44d4aac2b12a44786a4", ++ "33bbdb9fd9d9e6cda126be", ++ "520cfdeb5b65ce3df47f12", ++ "3746df2dcaeb2f941850af", ++ "34b380f57ddac800a53234", ++ "7116294960ec1370cfa192", ++ "6c02da94ff6269ebf8b68", ++ "528f06b90d6ea98654eb1b", ++ "643b1783eeff5d2d9d100e", ++ "14e34536d861554652fc3d", ++ "28da7bd48db9e867715c64", ++ "7b233911df67c0ffe75298", ++ "282425a374dcf57904fcaa", ++ "7f873bc8523c4931739324", ++ "5f1584cca489de9bdcd65b", ++ "6862becb8f668738ac092f", ++ "495ccc90a936edcdb3b175", ++ "71dbc0d71fbcfcf1245bc2", ++ "5298718820a8e285437a64", ++ "2a9957bb174e3a8d1169ef", ++ "58dbbd6f088b5ff881356c", ++ "67ed429f48df076df817f4", ++ "ba3b72d702ce311cc02a", ++ "6415a8a79aa0ebffb6a24d", ++ "5b6485b2f7f41f0abf3544", ++ "edea2902a199d26d75bdd", ++ "97bac956d2b65a51260e7", ++ "b2c65762784255bbebc75", ++ "41b1881d9704918a051695", ++ "3939cec4c6eb132c9146a8", ++ "4e4622894612a0772ab9f8", ++ "398cbdee468f0759c375a1", ++ "592a4efec7cf89e527fdb", ++ "79ea859ae0d9bf58c8e071", ++ "4786c255855f792a20f869", ++ "272821f07dab57e4aaf0a7", ++ "25e016000255df0b5c8153", ++ "17040e8c8be515e4ea36e", ++ "341181b7d4d6f4e2cf9643", ++ "73f8a019ddb59d3f06f049", ++ "cbf28251298433a3abc70", ++ "51edf68dda1a87c4b3af7e", ++ "2e78ee01fc4dbe304eaea1", ++ "36a98de095d312e040c903", ++ "1c94ea576c3cfe00e40a0c", ++ "2969569df7efe8c61bb461", ++ "2b036df33feda1ac5edb68", ++ "3d1dbd13d46aa7f5e4c42", ++ "32f17d420cb00b34cd9fc3", ++ "79a8e47a4d897cf6b712f", ++ "6be705331dd40db5a995b0", ++ "797e5770501b190fa5f6f1", ++ "21d9c50ac15f9a1fc38df4", ++ "639eb30656278296f2b3e0", ++ "4b90d5d4f791e4cafea283", ++ "7b4912ce2f8ea6ad90baf0", ++ "185c0df44a167fc9bfe948", ++ "4c622bd5bd26bcbd487c68", ++ "7c4aa256f5265e9d49e8ab", ++ "63f8378a4c563212109ee4", ++ "4ca98168d36f8ab3815a02", ++ "411a5d336f1cca7988f319", ++ "34c572dd024d37c54c5648", ++ "249469414e604f245a56ca", ++ "2e9650e328b679ea03af31", ++ "db07432bf40360e3df399", ++ "2e9fc43379988881a1b064", ++ "752129c2d07a536bf3bb8", ++ "c79d219ef793e02a9f989", ++ "210441f8cc9b531f88fd3a", ++ "6bb593df2f572a23254ed6", ++ "55152f253ffb05575c981d", ++ "40734a14dd653457e54b74", ++ "7fcb3af03a778d48d5ac9b", ++ "43e02a2659ddc4d3204fd7", ++ "2ab0a302ecc453de7fdbe4", ++ "2a68ad26b94fd25b4509aa", ++ "46afa6e418c9bd4065cd9d", ++ "517123f4920304dc75317a", ++ "33c3a8fe7d6e90cd610695", ++ "1a30afeb54dea502f0310a", ++ "2b5280596202f4b3ee0814", ++ "70b50a59ebc270bb237505", ++ "65f71d8c8e62cbeef07daf", ++ "197461e90c6b70a7dda46d", ++ "4053f687fd270a04d092a9", ++ "43d235cd54423fd6135def", ++ "ac0f86afb7bbca8d57c4f", ++ "1dd4abfd6c4ed8a3ad6bbb", ++ "25d3735a734b777dd960b8", ++ "56a6cdbd81ef505320e706", ++ "3c1c9492a56c8c78536095", ++ "31ee9d29cb2f2a7eeddbc0", ++ "666ea50157a2d8307a0ef8", ++ "1472017c713a1063411e0", ++ "53e73a626a5de69e43d0e0", ++ "dcc0bec90c531be4924ef", ++ "6bd3a60ce037d04a7d822c", ++ "3ad7e93e4ab55d402a33ea", ++ "10db0037fd5f7d8c49aee6", ++ "4d29703647563e84d6ac7f", ++ "2555442bf058722bf0120c", ++ "2e274c1905f505ef9d43c1", ++ "46b0509f9638e9030f5895", ++ "4082d11934cd3944191e6d", ++ "3cab0ae1036c6d43311ae4", ++ "218c9ea39a51618b1ce10e", ++ "9e1bd1e36f73d0f69f697", ++ "5a20607ce9679fb1f266e5", ++ "4ae24f235a28b7f71492ce", ++ "7510db776aba775075e549", ++ "5695db84b4c92a3d6677b2", ++ "74e01ea265377cb713e57a", ++ "768cbd11024387469f6ee1", ++ "61b85bccf0f4316c2cec04", ++ "aeeaf98aedc83e6ae6cc5", ++ "4e175c68ed04c585f606f8", ++ "1ee9410958604d03f20f1f", ++ "127b65c61b8c8f1b9456ee", ++ "3d57e0a1ef4abcae8719be", ++ "688ea19369341f6943063f", ++ "1f91eb155829f1481d6da7", ++ "4f34769ad379d64a27233e", ++ "59daf69acb0d30ef2fc5db", ++ "1efc90353d647b1a3dfd54", ++ "39965be2b1bbb3ed832fdd", ++ "7fd47e391981aa515116c7", ++ "5ca9b2680bb84ff6e98b33", ++ "36b7f85db80800549459bd", ++ "16d114b00964bdc8e2e82a", ++ "7c1256dceb40e2f63ca4f9", ++ "5b4dd88e0cfc108bdc7320", ++ "239e94f2e5843a6e20f1bb", ++ "3552a76787de4570d42693", ++ "6f2f55effdb76df46b548a", ++ "6152765b747658a14d5829", ++ "1778273a04ac508e342b", ++ "75471e22b2d84fd2fe01b9", ++ "5d6bf6a59488555bf1342a", ++ "160134aa459258ff8f6285", ++ "17e8af02e79e7f8d2cdf99", ++ "4f5e7f770a4d50c69c4028", ++ "51fc2c3f86b8fc46a7a221", ++ "70d95d23dca53184d30b4b", ++ "4a9b685698a7674338b188", ++ "4d7940ea6bfaa7b282a985", ++ "39baaf1f520d96bfc8c1df", ++ "409fc384bef4b3d255371f", ++ "3bac7e0675e0a9967ff7da", ++ "5c1544633a0bf7939343d0", ++ "39d71478d3005e797c6913", ++ "153884834dca9aae7d5d2d", ++ "630270f2ed4331deaf63f0", ++ "46323a1998a54f7e0819f6", ++ "61c87048ea8325590bc5b1", ++ "1960b3a13c6cb6acb7f489", ++ "3956e2767e97b7703253b0", ++ "1b5226354071022a104a86", ++ "3a7ecceb35e2e9a438dbd5", ++ "10c81c57aed768b3285598", ++ "bd499ce82d93c07477fc", ++ "67e11e83cb547515b53701", ++ "171757e72adb6abd8f440b", ++ "590056c647987959065bd", ++ "4e27f64f8732105513ad9b", ++ "de9896eb70f1668b87fc", ++ "457dc9644e5b25ae6c4291", ++ "5a6df4a369ed81627d4fa3", ++ "568fd03e0a80223cd1669a", ++ "1e92415029559dc3ed8283", ++ "1cb2dabf0298f57d15e65c", ++ "426541c137d269fd2e2296", ++ "19a439abdf3f4f5eb63683", ++ "482af287c71050fd03632a", ++ "47a080b7584194b936f712", ++ "20d4366552d0d83219fa0d", ++ "4494bc9e65c8cf2a6ea51d", ++ "2148939cfe2757b6666fc2", ++ "476ef278c257202dd01711", ++ "3eaa7351a72b065707e47a", ++ "2703e4a7969073dd381cbd", ++ "1badf1b7dc0b73e0bf8b67", ++ "47d847bd96fbfc9c221fd4", ++ "13637e15b786797995ba49", ++ "5e842bbb537167f75451a7", ++ "3b228f46cdc0e8a979b45e", ++ "2fdd94b55dd5fb9a3915f5", ++ "1cca04897dbffe7f26f2ec", ++ "67a8cdbece1aca4e55ba72", ++ "47ba42dd06a62256ee8c8b", ++ "3288681f4d08858009187c", ++ "69412d8563ffa7e83b0ef0", ++ "240e2e38e41f3b6530a267", ++ "12e92ef014e8d7fbb8d23e", ++ "45440750f90776251263b4", ++ "3a8965cf80aa6c4410dfab", ++ "559bf101b9cff724b929cd", ++ "280f08134d28252bd0b713" }; + +-static const char *RootsInv[] = { +- "1", +- "280f08134d28252bd0b713", +- "559bf101b9cff724b929cd", +- "3a8965cf80aa6c4410dfab", +- "45440750f90776251263b4", +- "12e92ef014e8d7fbb8d23e", +- "240e2e38e41f3b6530a267", +- "69412d8563ffa7e83b0ef0", +- "3288681f4d08858009187c", +- "47ba42dd06a62256ee8c8b", +- "67a8cdbece1aca4e55ba72", +- "1cca04897dbffe7f26f2ec", +- "2fdd94b55dd5fb9a3915f5", +- "3b228f46cdc0e8a979b45e", +- "5e842bbb537167f75451a7", +- "13637e15b786797995ba49", +- "47d847bd96fbfc9c221fd4", +- "1badf1b7dc0b73e0bf8b67", +- "2703e4a7969073dd381cbd", +- "3eaa7351a72b065707e47a", +- "476ef278c257202dd01711", +- "2148939cfe2757b6666fc2", +- "4494bc9e65c8cf2a6ea51d", +- "20d4366552d0d83219fa0d", +- "47a080b7584194b936f712", +- "482af287c71050fd03632a", +- "19a439abdf3f4f5eb63683", +- "426541c137d269fd2e2296", +- "1cb2dabf0298f57d15e65c", +- "1e92415029559dc3ed8283", +- "568fd03e0a80223cd1669a", +- "5a6df4a369ed81627d4fa3", +- "457dc9644e5b25ae6c4291", +- "de9896eb70f1668b87fc", +- "4e27f64f8732105513ad9b", +- "590056c647987959065bd", +- "171757e72adb6abd8f440b", +- "67e11e83cb547515b53701", +- "bd499ce82d93c07477fc", +- "10c81c57aed768b3285598", +- "3a7ecceb35e2e9a438dbd5", +- "1b5226354071022a104a86", +- "3956e2767e97b7703253b0", +- "1960b3a13c6cb6acb7f489", +- "61c87048ea8325590bc5b1", +- "46323a1998a54f7e0819f6", +- "630270f2ed4331deaf63f0", +- "153884834dca9aae7d5d2d", +- "39d71478d3005e797c6913", +- "5c1544633a0bf7939343d0", +- "3bac7e0675e0a9967ff7da", +- "409fc384bef4b3d255371f", +- "39baaf1f520d96bfc8c1df", +- "4d7940ea6bfaa7b282a985", +- "4a9b685698a7674338b188", +- "70d95d23dca53184d30b4b", +- "51fc2c3f86b8fc46a7a221", +- "4f5e7f770a4d50c69c4028", +- "17e8af02e79e7f8d2cdf99", +- "160134aa459258ff8f6285", +- "5d6bf6a59488555bf1342a", +- "75471e22b2d84fd2fe01b9", +- "1778273a04ac508e342b", +- "6152765b747658a14d5829", +- "6f2f55effdb76df46b548a", +- "3552a76787de4570d42693", +- "239e94f2e5843a6e20f1bb", +- "5b4dd88e0cfc108bdc7320", +- "7c1256dceb40e2f63ca4f9", +- "16d114b00964bdc8e2e82a", +- "36b7f85db80800549459bd", +- "5ca9b2680bb84ff6e98b33", +- "7fd47e391981aa515116c7", +- "39965be2b1bbb3ed832fdd", +- "1efc90353d647b1a3dfd54", +- "59daf69acb0d30ef2fc5db", +- "4f34769ad379d64a27233e", +- "1f91eb155829f1481d6da7", +- "688ea19369341f6943063f", +- "3d57e0a1ef4abcae8719be", +- "127b65c61b8c8f1b9456ee", +- "1ee9410958604d03f20f1f", +- "4e175c68ed04c585f606f8", +- "aeeaf98aedc83e6ae6cc5", +- "61b85bccf0f4316c2cec04", +- "768cbd11024387469f6ee1", +- "74e01ea265377cb713e57a", +- "5695db84b4c92a3d6677b2", +- "7510db776aba775075e549", +- "4ae24f235a28b7f71492ce", +- "5a20607ce9679fb1f266e5", +- "9e1bd1e36f73d0f69f697", +- "218c9ea39a51618b1ce10e", +- "3cab0ae1036c6d43311ae4", +- "4082d11934cd3944191e6d", +- "46b0509f9638e9030f5895", +- "2e274c1905f505ef9d43c1", +- "2555442bf058722bf0120c", +- "4d29703647563e84d6ac7f", +- "10db0037fd5f7d8c49aee6", +- "3ad7e93e4ab55d402a33ea", +- "6bd3a60ce037d04a7d822c", +- "dcc0bec90c531be4924ef", +- "53e73a626a5de69e43d0e0", +- "1472017c713a1063411e0", +- "666ea50157a2d8307a0ef8", +- "31ee9d29cb2f2a7eeddbc0", +- "3c1c9492a56c8c78536095", +- "56a6cdbd81ef505320e706", +- "25d3735a734b777dd960b8", +- "1dd4abfd6c4ed8a3ad6bbb", +- "ac0f86afb7bbca8d57c4f", +- "43d235cd54423fd6135def", +- "4053f687fd270a04d092a9", +- "197461e90c6b70a7dda46d", +- "65f71d8c8e62cbeef07daf", +- "70b50a59ebc270bb237505", +- "2b5280596202f4b3ee0814", +- "1a30afeb54dea502f0310a", +- "33c3a8fe7d6e90cd610695", +- "517123f4920304dc75317a", +- "46afa6e418c9bd4065cd9d", +- "2a68ad26b94fd25b4509aa", +- "2ab0a302ecc453de7fdbe4", +- "43e02a2659ddc4d3204fd7", +- "7fcb3af03a778d48d5ac9b", +- "40734a14dd653457e54b74", +- "55152f253ffb05575c981d", +- "6bb593df2f572a23254ed6", +- "210441f8cc9b531f88fd3a", +- "c79d219ef793e02a9f989", +- "752129c2d07a536bf3bb8", +- "2e9fc43379988881a1b064", +- "db07432bf40360e3df399", +- "2e9650e328b679ea03af31", +- "249469414e604f245a56ca", +- "34c572dd024d37c54c5648", +- "411a5d336f1cca7988f319", +- "4ca98168d36f8ab3815a02", +- "63f8378a4c563212109ee4", +- "7c4aa256f5265e9d49e8ab", +- "4c622bd5bd26bcbd487c68", +- "185c0df44a167fc9bfe948", +- "7b4912ce2f8ea6ad90baf0", +- "4b90d5d4f791e4cafea283", +- "639eb30656278296f2b3e0", +- "21d9c50ac15f9a1fc38df4", +- "797e5770501b190fa5f6f1", +- "6be705331dd40db5a995b0", +- "79a8e47a4d897cf6b712f", +- "32f17d420cb00b34cd9fc3", +- "3d1dbd13d46aa7f5e4c42", +- "2b036df33feda1ac5edb68", +- "2969569df7efe8c61bb461", +- "1c94ea576c3cfe00e40a0c", +- "36a98de095d312e040c903", +- "2e78ee01fc4dbe304eaea1", +- "51edf68dda1a87c4b3af7e", +- "cbf28251298433a3abc70", +- "73f8a019ddb59d3f06f049", +- "341181b7d4d6f4e2cf9643", +- "17040e8c8be515e4ea36e", +- "25e016000255df0b5c8153", +- "272821f07dab57e4aaf0a7", +- "4786c255855f792a20f869", +- "79ea859ae0d9bf58c8e071", +- "592a4efec7cf89e527fdb", +- "398cbdee468f0759c375a1", +- "4e4622894612a0772ab9f8", +- "3939cec4c6eb132c9146a8", +- "41b1881d9704918a051695", +- "b2c65762784255bbebc75", +- "97bac956d2b65a51260e7", +- "edea2902a199d26d75bdd", +- "5b6485b2f7f41f0abf3544", +- "6415a8a79aa0ebffb6a24d", +- "ba3b72d702ce311cc02a", +- "67ed429f48df076df817f4", +- "58dbbd6f088b5ff881356c", +- "2a9957bb174e3a8d1169ef", +- "5298718820a8e285437a64", +- "71dbc0d71fbcfcf1245bc2", +- "495ccc90a936edcdb3b175", +- "6862becb8f668738ac092f", +- "5f1584cca489de9bdcd65b", +- "7f873bc8523c4931739324", +- "282425a374dcf57904fcaa", +- "7b233911df67c0ffe75298", +- "28da7bd48db9e867715c64", +- "14e34536d861554652fc3d", +- "643b1783eeff5d2d9d100e", +- "528f06b90d6ea98654eb1b", +- "6c02da94ff6269ebf8b68", +- "7116294960ec1370cfa192", +- "34b380f57ddac800a53234", +- "3746df2dcaeb2f941850af", +- "520cfdeb5b65ce3df47f12", +- "33bbdb9fd9d9e6cda126be", +- "52a44d4aac2b12a44786a4", +- "17e032019f0dc1c4277c0b", +- "3069cb41e51edac9ec2b3f", +- "653694fe66c257988cd02a", +- "332ea59945a5d0e73f7dc5", +- "47d7208165498ac04fc240", +- "5f8e36ec1202b0292d5945", +- "196185d708583cfba757f7", +- "44dd12bd0d7f960d6bd7f6", +- "235ae37d20b21074f27732", +- "4d10e4408b3b6761aa225", +- "3f14484539a427ea73a1b8", +- "35b964532350abcbf76d9f", +- "7e5eb2a4ef3434465acdeb", +- "1a04ba76b7855a5e9c289a", +- "57caf75d12ec817c6cddfa", +- "fb87766da12e75782ca77", +- "76272e758d9f83ceea908b", +- "15e2aab3b7b69272b3c155", +- "26b5c49d8c4e12d4b3d157", +- "18347f5ec924cf4631f292", +- "2ef94456619d9728490c1d", +- "1000ca68b2a0f4790d5b97", +- "208b7d3e85a97a99407a38", +- "745cc1be634380e90bc82", +- "60b46e71f1f2b8376d5d29", +- "2f305b730466b54d50855e", +- "61b023abdf63ddd6300036", +- "3bcee7bc9a5ca7219edfaa", +- "785211217f5fa1bf82b193", +- "765c653014c5e4b3dc3865", +- "52d5ea798306c9e21853b2", +- "402466331777b126e4d8e2", +- "7fd2ed81931942f0ef8d50", +- "6edb305f1f8f30902439c9", +- "1a484afbb93898190d8d03", +- "40f2e74e1048db76b72516", +- "b03e402e64c3436818402", +- "4b0f09e29272f9d49c6266", +- "59f29456bbb20b47aa046f", +- "308a1daa2779a84d4db8ac", +- "43c088f2eb74b96d25a4a8", +- "614a9023303ed4dd2cdfb9", +- "437e569a7451bd9bbbce87", +- "7c38756fdad7c18ef7576", +- "cdd3df5aba4c7ba52b4cd", +- "2d2efb8be305a05b685aa3", +- "1aba34eed15b418d4b7f0a", +- "2432bbe72c83689ef74c85", +- "4b2a621bcd3f244dbd1aa6", +- "38a68ae5efe6ac22d3f278", +- "3e1ecaa8d0631877bfedb9", +- "67afcc19d0bb557a608666", +- "fb85baef473def8948133", +- "47efed21b3657d0618e28f", +- "6e988e80d2c29dc7542de4", +- "525362bcc006730db95180", +- "30e3bf91dbc04d50a032bf", +- "17a50483229662a578fdf3", +- "3395f092181af53bb73f3e", +- "260f0ab9a00e1e941e404f", +- "26b516b52794658e68ab5a", +- "76dda8edbfa5a4265a1a74", +- "49af3dd263ef8ddc7b0303", +- "4956d4cfa3dee8e23259eb", +- "245cbb0117ba8963db7929", +- "41327dfa41486f6b995572", +- "207b51e97aba651825b40f", +- "1d5fe04c71a377f6784338", +- "43d0ab106641bd01d72cd4", +- "7dea2305f898b6d88f6821", +- "7c9cfb41c0f888d000fc52", +- "6b849a1f17d635cf0a773f", +- "3195d14bda042e7057d34f", +- "52253824741dd177a674a9", +- "6387ce1a213d98335598c0", +- "50c4c9d0b48bd147d875cd", +- "2afa4dd2f2245b7525fdf6", +- "7add5048bc0984c36294e1", +- "77e2377901111b6ba92316", +- "83b4a6c139b7fda28fc0b", +- "30f7be09c5f39b5532dcd3", +- "132d2eb133a0383d464ad2", +- "47d814d93ff8dca3c1398b", +- "37bd7e26cf4711cd149911", +- "5a081e53f2beac49d1a3e5", +- "59ff3fb267f4dcf86fd4df", +- "146dc1fd204e259d148dfd", +- "578a6c67a3dea7609537e0", +- "7376e75fa605889898fa7a", +- "9dfe0a1feefabb0c62643", +- "788f47c4aa1ecb9b01c1a7", +- "3ed51ed7c85d68db84d78a", +- "23270a061497f9098a49ee", +- "3153805f294e973c493b1e", +- "22d68d4ed1af18d8658de4", +- "2ae83fe35c42b256590f54", +- "6e1573decbd31bd14c0615", +- "3ec0da959b014a91e3d171", +- "7d60cbfdcc63ced7661d40", +- "2e1479f3781e1a48fc49de", +- "49639d01a55025d5b2f6ef", +- "7d98b2bd2e9168b6d2e72f", +- "14efaca65e59726b81dbf0", +- "2d816960b0911019df6133", +- "10b3ac9e35f753e3c9deb", +- "40c514f5e20e67263ea899", +- "6ad236039c2c3e149bcca2", +- "8ab595a01941ab4070b39", +- "5dd15f8501fbd308a231a2", +- "6f79151ea6cbf1bbe85f5d", +- "13fc0f6b201b7368c44178", +- "601f96473a856041a89ff8", +- "67adab05fa921650ed942f", +- "4fe741cddc07d380fb6143", +- "375ec3fc3fce6eb8e8ee9d", +- "416b4cd1af257e44ad03fe", +- "7b2f70ff56626a3003c33d", +- "39c91d6ca89a6fa52b3be6", +- "34363c8e2f82b5fdad8c66", +- "77c405c1030a468f5abe34", +- "67437e976a93329c5b9760", +- "499ab94c7bb40ba492d85c", +- "49c59a03a60b57e7bac289", +- "210cf16be9c62f7408e63d", +- "7a2990f262218cc62c32dd", +- "4c2a57eb3ff167fa077ee2", +- "23343ed75a8de5a22fac16", +- "567dff5f6f64aa1697fa0f", +- "fc59307a819ae8b7a3f67", +- "2b8d9b2da99a690e7c44a7", +- "9f4b0dce97935ef1d9158", +- "365c9be3e9c7dcc814388a", +- "4cada2a5056e025832015c", +- "33fd72210da605d38ab799", +- "28a2b96944f1b1210e6bbb", +- "125d9103db1d2a83e13f71", +- "3e1e43759c2fbd4596b36a", +- "20db18e6c822f683f97989", +- "f46157d09593fd6ceaef5", +- "c75433d8b0423b552102a", +- "5aaca79690a162240db985", +- "1160b80ff627f607bda927", +- "5839527a17db25de563064", +- "7b9587337c3feffe6974d6", +- "147d7e964c45ec443a24fc", +- "40a3f5ad2d4a9b33e2f67f", +- "1cf9608a937eea1a0bb3af", +- "2a8bb0c8c3747adf31dc91", +- "3c3d137503578a98196d6d", +- "1cab579a1f775fb778d900", +- "72e9a5baa06d4af7c9f9da", +- "dad2db631732b0506f6b1", +- "686f17e02f2d49c0e2e48", +- "21eb89d73161656b740b6c", +- "488aa158d747df0f5cd422", +- "67b1ce8dfe00f53da9491b", +- "687346ea28caf1c87376ab", +- "254a37a2b407cabbf8069f", +- "61d42c0be51a3d664c8df2", +- "dd0623ecc7bb862ebbbac", +- "54aeb8675aac1a423a7140", +- "2e76f32ec68bf11c44acc8", +- "a2c3a3cc1a5dfdc5a02b7", +- "6a25d7d313e7a656aee548", +- "78022742d8c1b58e95d935", +- "46ea2e85d6ca1966d1ada4", +- "7530bbdc505d301ed9040", +- "30ebf17f92538a33a005c5", +- "4839ff83b5f2ddc41b61ee", +- "6517d2ae1b7ba4107ba2ed", +- "1a5f34cedfae0cde5ea0a4", +- "3d55ef23d8c9f8419ff28f", +- "41d953d4dc4746ec83a1f0", +- "4f4128c0856b216db55c75", +- "af0b8a8f75ec961c833db", +- "1e5217185f433bf1233d59", +- "5846b0049ea6f32f4b2762", +- "40e1957b3947c90dc23e89", +- "5c6cf60aae0cfc30048ec1", +- "5ee2324ad6594548cd275b", +- "7969c90c819c5b0080834", +- "6afc9a3033b5fed5a0c3ee", +- "586e1bd3806f5472b98045", +- "6afe8bc3bb8509aff3c666", +- "5dbb4f6414155050573b80", +- "493f40656c80193590d2f4", +- "3e61864fd19f85bd211f70", +- "3ff0891da2c6d0cb8ab6f0", +- "245f14c58fc2f1bd38bf6d", +- "5334ba131913654474693a", +- "3b8be315926a14f8200fe4", +- "54c37f5e810a7c49e7a02d", +- "3c015f30d95c1da9c47adc", +- "26580ddf1efe9fe3eae4e0", +- "5b68ba6c572a6576af79a8", +- "6b11c6506832a5a8571e85", +- "37f81f265c72ca7279eb3c", +- "79b27c762372e476f703f7", +- "102e8f3d54ced5e10227ed", +- "173b57e939be4a4efef880", +- "5b18e3d2fe16a9d973b934", +- "4413cfa8b5666fc0af877a", +- "54b4dc744541c38f937102", +- "30ffdb4a4aa7f26e29fcc9", +- "1b931cd6241fc4f484ed23", +- "7a45d57fdc1a44af5791fe", +- "66ac85711d7e32d731c773", +- "6f55491282e49ce5634ba6", +- "17ef22a6ba1fe32d3ef7c0", +- "153d48f10507702bdbbfbd", +- "755b7f3a3389c861fb2d23", +- "1bacdadb366134c3d1a5c0", +- "4de1c0244f476f355a3a91", +- "2b04a0e7492ffe108c1c00", +- "49b08f20244bc64879adcb", +- "76201a82e565cd9ac092ed", +- "69699a76b55d4ca99064a0", +- "6d83e6632fcdd8cf940ffe", +- "705cc0331aa0195cd9f6ec", +- "59b1b4d92c6ee6432bf67c", +- "26c3f6eae80009e6946697", +- "825e4a5dedb493626e7ba", +- "4d1a97d405c026a8a5aed6", +- "d08254f4d2d5ca1a5b877", +- "7bca9525e525d6ded2c76f", +- "755d342969e9fcde9fd595", +- "7438dcc1d87bfc73ab26", +- "5d77b3e7e323ddd35a71a5", +- "dfc33dec9862e861d43cc", +- "75b3fbba0880cedfe12ea", +- "2746a28b14b19ab8d24145", +- "795824804b82c5e751df2b", +- "1c6bd00355516b7177a93d", +- "75d1f80628c3a1c1082c91", +- "1998245099906d42a62588", +- "7ba683eab937665ca29978", +- "203c3b480852a2154fd642", +- "1ee8fffd33bf6223d36b95", +- "c92faa8d02b107a1b5d50", +- "65a7ac7cbfcc2f6c41c2ac", +- "7450197e181adf8c4f92cf", +- "636079478bd1eb493d0866", +- "47792007d733892284fb9b", +- "44678fb0d784f11b21a657", +- "27e147bc2366e607ad99bd", +- "168c6919206ac6ace0f625", +- "1c9f92bdf4717c6880a9ba", +- "3c4dc48e3cdfd4ce2eefe9", +- "6b79ef63bb66f1362d8de", +- "5efd2121bfee3a30184816", +- "5ca7f66678a73081bd34e5", +- "5cc79f5d12d2a991f4ebd0", +- "4fadec3b4cf5617426ac33", +- "af86674d8a1c364331ef3", +- "1b0ff68c5f14ee84b37e7f", +- "6be91a7f057434bdea3953", +- "498cac7e3100df5899cd16", +- "3a0a69f5624f959d85e411", +- "779b65c66a52eeb45328d2", +- "48b5f18a43890f525b850c", +- "1a9a55461554e908c4fbf0", +- "230c19482c2fdfccb6b94", +- "1a364185d640ba1a6ed583", +- "1c72fdd679cfcd10e369be", +- "56853e4d2e614e1924d27a", +- "10cc655b268878a4e8e081", +- "3c71a5e6f6b431bc524a53", +- "7b274f32f2cbfe03031cb0", +- "64adff5211c520e76cfa93", +- "621edd8ea6ff7136526540", +- "7f8ad9957e40808881a192", +- "76c881f1a372f21e829095", +- "5027d58d8950e307548d14", +- "122225a7053b175027361a", +- "627a4795d0c0df1d84d13a", +- "4a5333a5e1c04b8bdfa257", +- "4555d38c19f123cccb6fb4", +- "bf09d6ff46adc21d04951", +- "bfe2f259223ccddac13b3", +- "4167a3ca5253556f128ea6", +- "1d3c95c9d8462d4c467220", +- "48e1272ba911cad7536a1", +- "59b759ca3a67e4725b5f84", +- "53cc3acdd810a96c3160cb", +- "6abf077f6636ceee313734", +- "226c7c98f219b40ea94b66", +- "54dcbbc689dad12df77730", +- "5abf04c6f95d64b6c414", +- "50774e378282fd09459eb4", +- "66895605da5092de3d2b87", +- "3bb5af245e5d40c6fc15e3", +- "6e388c53aaae7d287eebd5", +- "446d6309025414bad0aee1", +- "6a40f14b7a50eeca571bae", +- "6d925493d403647cc0a7ba", +- "73f933fe401d564be0efd3", +- "15aba357d612d87099180d", +- "5c20428f433fbf0c9ab374", +- "4871087f3b2cd3c0f24c3e", +- "4eea383bfa391bcb14540", +- "658769c97f8b8945ac2878", +- "4a05e03567ac78048832e8", +- "5e4b991cdcf27f65105596", +- "32e5746a212d6238682c00", +- "26436c96779bbae9c15fae", +- "290cc13b5edc05d863546", +- "69714524521e343bc3692d", +- "3ecd876c819b78567f7fa4", +- "2abf897aba93d347d6e2db", +- "62f83959d672cbfe7201a", +- "1a54e98271fd5720e1bc63", +- "2029341ddfdbd9f668612", +- "572930c1df7ba238dfc9cd", +- "1b71574f7c567d707d0e82", +- "509b53b07e607cbcf6e79b", +- "682583fe078ff76c962922", +- "2f0c8ecc959b7521936666", +- "621bfd4a39ee713781e554", +- "3712172b56577089f4c773", +- "208fb7a4ffec7d8d1e5be6", +- "1a5e08fda45015af7feba5", +- "172bc617da9e1aa348e114", +- "427af6fbf5578c6104b255", +- "522de20b2431d6ac8f42fb", +- "6ee2946ba009641ad73037", +- "73e027017f2dbdbc204a16", +- "3d88de9f1c15bfd7b6363b", +- "36c8b1aaf274cca356ae2f", +- "e050d10f9ab1681fbdc06", +- "3cd72e80ffad615f09526a", +- "2b913687a118d5d595277b", +- "22af1fffca9aa4b2ba234a", +- "7b4ac8e7f9ffbf17f0627f", +- "57d57f4721fb6be3b38e99", +- "c98c97ab7b4b0cb756894", +- "2248d63b93978222916f1b", +- "53528c9bfa6f5405d66497", +- "5e45b3a532e82a603df12b", +- "6799fa1f9cffb381bd6c8c", +- "5097857cdd82d2df144dda", +- "4f540ba10fdacad19fee6f", +- "15891c14bba25257cb14ef", +- "eb947683c26db8dac2f36", +- "6b497ffe240d0867d5d7ef", +- "2beed154412bd52cf1c83c", +- "39824b01dda7b8ada90cc2", +- "5afcdfdab7a5b6864efc6d", +- "743eb61998341a5e892884", +- "745ca85c76435eb7ba81ad", +- "4b223517b6c7cd85cb43d1", +- "51e8f647af3880d2b77ccd", +- "6a24f8897d3040e8fb1da8", +- "57f40a819546afc89fc2ce", +- "6b0dc0d5521d21af0ccaf4", +- "282f326b1fcbfb463ba836", +- "4d7d33eaba361883277544", +- "298af75c2d584b01ccc6a6", +- "692752e677cdaba7d636c2", +- "277575523998439f834d3", +- "1aee70e483c99574480349", +- "18991d6f38c445ab4b38f1", +- "5552617d9eaca45155f490", +- "3459971422155f9703c78c", +- "40678fa2d309cb9417f68f", +- "2be59650bf9aa57c249937", +- "5ea38165e28694c8629ccb", +- "3e6265ca213c1a0be64512", +- "69c96f5702ae4eecc6f341", +- "62e9a332653e1b103db5cf", +- "62870c281778214067b40e", +- "14bde3f9984cc98dc83f60", +- "5338be8d9f87d3f2e46b2e", +- "5e7785eebda5c8e2f0247b", +- "24183bf26908368eb41547", +- "51f9e6d75a3c5264312643", +- "4c67268f528ba7e8c34a0", +- "708324dd5e787ea3d43a21", +- "75b09479e265b9f0ac9a5b", +- "7972b4774882051f2d85a4", +- "31be6678e513813e0e676c", +- "170a54e825e33a2265d3cb", +- "66fecdf77d13ff6c0b25a4", +- "923121ae3af782c934df4", +- "473c4bff7362fbbd2049ff", +- "61249154ca21ee2b75deb1", +- "23ac86fba80f09945d51d2", +- "19b52abcac8b60d5349efc", +- "3a9c7a7d5782f84fd4620f", +- "674fde01f6057423c31a9a", +- "5533d7d78826353c79c73e", +- "42e88e9f66659afa2a393", +- "18e83fe885c9bab518bb97", +- "1ccb03c008f2e822848880", +- "3665e544d5ec7ed8868a1b", +- "6b25a8073bc36b2af4c2b1", +- "7b5ec7e3346c3cb243b356", +- "34b484cdb4cebe6aff839", +- "260d3af59b4f3d5c208bbf", +- "3d946cf498fbed2d965f70", +- "4755035ba4d9924118903c", +- "4a29c3e62c947a4a1e99b9", +- "4edfb060e1dacbd449d726", +- "29f1e17550354ceae49f99", +- "247f391e5a3b234cf19ccc", +- "7e2be12d72782db9e725dd", +- "47d8e4eb9811f9d409ea40", +- "5488a723f6ba5cf9800543", +- "304cc216ed2272d07c7f80", +- "3292c0c9fda6887e4ad161", +- "24af65fef90e2f99e03cae", +- "2c250894e17e7f4b0dd", +- "77a73ba77b4ed622a17e87", +- "f36396be6cc745bba9473", +- "683a5c6214b92efde4aafb", +- "55247bc5a72b8d3e89234b", +- "6747e95b215a546a339b7", +- "178fa57d907fddb0fe3cca", +- "748df460f8594e0bf1ab20", +- "3b409dc537f82b36a0b80a", +- "69150cde40be119caa92bb", +- "48ef84f7c351ecdc951b2d", +- "4e162f9f85bd081abd7380", +- "32dc0a137f654afa8bd8fc", +- "6f59efef27dbd92df6f652", +- "645d789e2ca881eb3474c9", +- "73a88b6c78ebe25a0f02da", +- "3501255a6a3473cf6ac042", +- "4026f1042b0f5b1e940a78", +- "364b7fe165d59b5d916e2f", +- "daa197fa1e9b3068f7333", +- "1d51d9201dd8c5066bb7d1", +- "1e7a055357b6580f4a7b9", +- "6f33938b3b060336c57082", +- "6ad4c1af807487676eed8c", +- "6a5c41dd17f1f090be79f9", +- "2b1a4dba7447b02833bcc5", +- "1a939b8af79d6b9d1e57e0", +- "339fe9b069fdcbe6f3e985", +- "55e838d685f75c7c6b5f20", +- "38102211c805f10960d5ba", +- "6f9024d8cdd8d69ef10bf7", +- "2db5ff229cb2d0a85b8393", +- "7e1946c78347049b735318", +- "5a2d6c9f89fb24cf28d1b3", +- "7d5f8fcc1cf99dc3131c84", +- "68719eec758c692aaaddb3", +- "a5582fe7b241700d09fbc", +- "3de183e6b991f7b8085160", +- "cd47f8baa501aac7b0989", +- "658a9098281c199cd165fd", +- "476085adcac943f7253ad3", +- "45f39b8c67c74dfb911f44", +- "3cb90317e0fd78744bd72b", +- "509c14f0517edd55968bc1", +- "7a6cf71a247a9aa2ad1f3d", +- "594ab65a623ca11a1d847f", +- "32765eba5563b5336b4375", +- "e4ce3641fd893553aeebb", +- "e73b5b515611f25e496d1", +- "ddd508394009eefde3ac7", +- "b4aa58f86a462da2ed07", +- "4d562b2b0bde307c0edc87", +- "2c30e99c7b2606982311b7", +- "3a997ef0ad242391b526f9", +- "4f754c5d3b280b20bc95d0", +- "375f02bea7dda994d93044", +- "5bd335a49bc5a06867e5e1", +- "63d746c096cfab5f984c70", +- "25d324d633986f4baae0fd", +- "2175a06a641d5e8ad33646", +- "403c1a7f2d528ab5d343b9", +- "1429ba4cc3fbeac84cae7b", +- "4fe62d365b58ffaa0d2201", +- "6bd057cf4845772f81f71e", +- "38dd92596a9fd54920876d", +- "ffbb4d4d7cd961d36be9b", +- "3910da787142c54f4f9b2f", +- "2a843c02b5e59799422e65", +- "4f459e6fecc9cadb8e977", +- "374bc74be1e4381a79910f", +- "4656a2b830782828314373", +- "583e484be506b8efea96b4", +- "36d97c131b997ecd7866ef", +- "40066cef89d0c82982356c", +- "3301553132b8af815a8ed7", +- "475c6525a253fe4a455211", +- "7215cad82f761314bbdd1e", +- "784f7b46f80b03fd06242c", +- "2fc0729bbc7485664f21f9", +- "62658893411360a21b6bfa", +- "775ff949792463791cf8ab", +- "6bbcfc26c4e8fa7b836095", +- "14a9e816ead24aab2e6645", +- "6467af1a0f07013b2e9849", +- "5f019291ccdeabcd687ce5", +- "2311c97b29ff503887b251", +- "623f56668cc8a093bdba7e", +- "3b890cc2ea1882c16138ef", +- "6e0d3cb0378f9f523dd7ca", +- "e50ab5db695f894b26597", +- "500de5789e46431a14b08d", +- "74a3895c1173d1100e060", +- "28c70cf1a34bf4b12fc1a1", +- "260202888a368af1bf27f0", +- "49f6551bb5a630f7f3a91", +- "35984ab233bfbbdc2149d0", +- "7715808f58e52b93fbd9f4", +- "7a35b4347e2b2fcfef4e8a", +- "696a995b7f1bd2337f9c55", +- "765220bfddbe009c12884", +- "6c4e919619ba3e8fcc083f", +- "6908cd3a0537e6d9de224b", +- "8cecd81b395199379b860", +- "73475afc8917dfb47ca158", +- "671133a56bfab71842e1aa", +- "4356f96a535f02cd557790", +- "d73559f9e34900d6994e0", +- "4299b7c55998b524a2963e", +- "6df756715e22975feac139", +- "2e795b59317cae4c039946", +- "638a87cbb628cc2744b5a", +- "2d0786ef10819221e8e925", +- "285121b3579e1afaecea17", +- "f0daaf67c2422477284d4", +- "df5585842155fda65c5ad", +- "41824effd56ee95a25ffcf", +- "5a2e3e7ac883c32720fb5f", +- "786bd6b0d956c71e3d0c41", +- "2dd9e647cd7caac396218d", +- "32267a0d010a3ac60d956b", +- "3bd14b5c954fd788df3e2f", +- "55d4eceed6862d8b7edf73", +- "32bc07a00fc1c32e790cff", +- "e16e90086dfb42533696c", +- "58f251e3a335055f8d1702", +- "45d0bbd0c4c565d517f4d9", +- "47cb5e48534f0fa269ac37", +- "23591be47ead61c7626094", +- "4e9b8b836aefbcc76074a3", +- "7499dfe49d22092ecbaacd", +- "422c99318e0e012bdf3cdb", +- "6dbec10ac45803905232cc", +- "5f091c9040f8e8b4af8c6a", +- "49dd9e128368a6e8f31565", +- "631d5fa433132c920e949d", +- "4a728ba1f43b41e3c8ba7b", +- "5de44a501f899626f11ecb", +- "1db2b63fb5b72bd2913b9b", +- "75c3040748861ea4157368", +- "5714f7d7bb3f12d88adae1", +- "3382f247e6cbcf48a8be0c", +- "436134e757c46fe077e8fd", +- "ca5fc0de7c8f0742fa11a", +- "324b0e59fd313b7b066991", +- "fca82540d3cb37cfe38de", +- "71310c65e10b4b2e1f3924", +- "53034f778656513538ce93", +- "6e8a28f3d3f87aa2548dbc", +- "792ab4b2a318b2229df59", +- "700ac125ecd365c309339c", +- "d7315bcace04536b59c5c", +- "5f9fe5fab5062ae9d40550", +- "7ed8ee73ca5507f25bd5aa", +- "6247c20f5e97453bb71b09", +- "463e980411d809a1713383", +- "546f06ab10360a76005c9e", +- "1c0a01fb60b92af636be29", +- "a5385b7f7d2a505f37187", +- "296401a6101dec9b48a81a", +- "38aece2fe0c1923c569603", +- "e966e5d5e80ac9dc377a2", +- "7eaf3d6220ab7c049341fb", +- "1a01c5dd382ca52c0f8a1a", +- "68ab0ae55863c4f8044101", +- "75b29426909e9c8294f365", +- "39fc8d30c95dd0494e9be3", +- "3c234bbaf5da9465f9498e", +- "7ef05035c2a08e050870e7", +- "7e880bc1729d1783a14627", +- "3df3e3ff8b5241f9f120b6", +- "61c60fa253a8977e213d6c", +- "dcb3217133998c35879b7", +- "19e87845fee8ee9d86794a", +- "1b8c24041b5c09c2ff1c0f", +- "1d4d18f2bee14ee417596c", +- "5197b486ae5dad9284702a", +- "7a4b513ca25dc5d887768d", +- "2e1d98165a5897b1482cbe", +- "494c96ddeebc9c314fa5db", +- "29785bd232aa4bcde009aa", +- "42d71e3ed0639f1b07231a", +- "1439532a6d3fdff49361fa", +- "8c59c1948361c413eed8f", +- "2c9401cd53725f84e2c421", +- "5eb9037bc76a6930985737", +- "6d5d0573b2f9596b50b73b", +- "36121cc69943c0f23f8a85", +- "308787b80145ee403c389d", +- "74d978e8d6a9ce6def9aa3", +- "34242d89a6cc1d4e30fa9e", +- "6106124e06a73207e84629", +- "1174d8cdaeecfc5b7908d0", +- "49f7df71bb684bf5a54c61", +- "53b453f5f30f900af808e3", +- "7b4210ea990dbb2b80bb4", +- "232c5e33740871b389c8ba", +- "3e748cccf5c4b2e587b8b2", +- "2078bac214b712936de507", +- "426ece55a7fd1d858414a0", +- "1eac63084c7797618dd9f7", +- "59fdecdacfa91d60fd391e", +- "589758587c26455b22331e", +- "19e1cce82f85eff6f6b24", +- "16d83b4ed79a537102c236", +- "4ad2dfbccfebf4c881dcf6", +- "1851d531ca021ad6f2b572", +- "1c85ed9416af845bb8e82", +- "5cf912fba9a563060d7b3f", +- "14c7f40a28e01adc5ae1b4", +- "15131878551adae4b04c53", +- "ddf6be61ce9c04533277", +- "48938572f05f540b474485", +- "465d9407cc9bc6456e974d", +- "1df3eb49ffac499fc5f3b6", +- "7e698a24ee9aa726fc4b0b", +- "53e99cd5ced120123b808f", +- "66ba97928f262067fec230", +- "1d1b1bb20ae40ee8d35505", +- "22cd6c35ab2195c56794f9", +- "1ef2f8aa8266e26254215a", +- "14da7875e13efd461f7c10", +- "22d6cba0f681e23fc64382", +- "682b3c7ed60ad7c985a3a", +- "244d1131736a5aea351d17", +- "3ae16fb3fb77d48c6adcc3", +- "3253e31b47819fbcec75b4", +- "507a6d1fd108a63234b38f", +- "3e2cbdf24bd5900348312", +- "34f2e009d684c876c246fb", +- "bb247081da09643c00d36", +- "32a426cd7460f9e5c5e7", +- "48082cdc2a40ccd11ae434", +- "1d616376b444140f9acd68", +- "72bd80f062eb130b42b044", +- "e1e55a565534c74a109fc", +- "49e01d719bf13fd52369ee", +- "2ae496e8d9399061460619", +- "7adc118469443d4f7084b2", +- "7ad19421f012d132850842", +- "45b5b538c44c73f3bf515f", +- "5f8307f0589178f70f7238", +- "54018c8917549d050c00a8", +- "4700bc9de4804ec44122f", +- "d922a909e3b3afea5fe08", +- "46ea38e0c4bb849b39baee", +- "7b87e87e1438c6126ab1cc", +- "499667b1e22348ac584789", +- "137f8e05276cc8f9180095", +- "5accf03c1a20af1120832d", +- "4e94399e1765146189df5b", +- "55fca6cb45a0501d1c50ba", +- "2ea5fa6c2e19e6ee7add96", +- "d8e9fae4ec5d3e7913712", +- "767f863c9bfc5fd6540f44", +- "477273c36a749543489547", +- "4265efdcec74f163498291", +- "43f53558dbb8a25ad757e", +- "7b5d99de82bacb33af7ee8", +- "1d4515e4768ff5c6b4178f", +- "2057d9029cad07c3d344a3", +- "e419f0eced24d03400fbc", +- "2e30617b0abeb387001867", +- "603f9b3bc6733094104e23", +- "fa6bb9b4b92165346e0ff", +- "321ccac2ccfd73a0b28c6d", +- "6af9f591969edf6d33a899", +- "5ebda7b44a30093e22fee3", +- "150cbeb75257f8eed7903", +- "1b0dfe5bf791bf4d645e64", +- "5286bfcb1951cdb460fbe5", +- "29ca62a9234f915c5c9715", +- "3629587577ea6cd990a3d3", +- "4d3d6fd7781e8ff3322226", +- "7377f9449fdfa779330064", +- "7f3f1310b0770a6a8ab4e6", +- "74f8ea2aa01f3e122e9ec6", +- "74aed20fd8f19001dab562", +- "7a9c1df7aec04dc00e3584", +- "2b3dba5edc89810815d1ce", +- "217c2392122f9868740137", +- "43ac29ece073be2a30ce86", +- "4b6b8f4e6118573075d4ce", +- "3cd3f5ea5623ce969c863a", +- "421de31b9083741c4d4c48", +- "1960ca77285b35812422e2", +- "7d40cdfed339cab397652f", +- "51a001a64a22c7bc0db3ea", +- "1fe4c7d7da3eaeaae25e65", +- "720179be8f54eb5c778be", +- "1144f2116d6e426f3addec", +- "10ad00e38092458e73fe4f", +- "72e90ac5d748fbd2d7aadd", +- "18250945b23b28bdd1208a", +- "dee72e6d522c55b461f4b", +- "1e31c413e16722caeb814", +- "5ccfa76193ddbc64186a30", +- "5eb2b60c1d97e4dcdb09d3", +- "7f31009d8b384ea51f9235", +- "7118c95246463e79fab7c6", +- "2af1b36e871a2152d87ea3", +- "1ae4174a64ea29d65c88b7", +- "1aa4bb2c56ddce8ebceb39", +- "65773487e5415b58fb205a", +- "5adfc7a0a78f6657a5960", +- "3d5e0686efab87e5e7c266", +- "6552488fb7e68b138c5691", +- "69cb489051468dc8b7a10d", +- "2885d88c14361dbedb4fb1", +- "17f8a55fef5d58503cdf89", +- "71a2dd2f4561ce6b25cc84", +- "173ef6d2228315e7fc8577", +- "6095ebe0914ab346aaab52", +- "1246f9f5df870b21bcb1e6", +- "5e53c14166e301e45a1c84", +- "3a1984f88834905315728d", +- "4678975ad8ef4ef63ed234", +- "139a5be9fe5d74b7b324f6", +- "4057d3883ee10c31d0c5f9", +- "5de657154513d33b2dbb32", +- "7da4d79cdf3d83f0763c79", +- "7399c1866bdfc2ee9d0ba4", +- "48cdee08fb7cd0c828eec2", +- "4c099f907df9db8a25350c", +- "851fa3652b44e57d9190b", +- "d0d6f30615b8f231bece9", +- "5f305f39404231a1ce6591", +- "47b5376a6bf9ae1b5420d0", +- "55925c1c09bda33b3d0e7c", +- "4aa62ab8f33741774c11af", +- "cebc8496358956c6ed352", +- "4e0f2086acba831702db59", +- "2103ca88adecbfdd3370", +- "5b917d89029b0850efbfd7", +- "619fb115b590487fbaece5", +- "709f8b4e1e81f78ecdd5bb", +- "5c6ce5b29bafc437eda5ce", +- "1c6a5fca595a1ff62b0a7b", +- "5c246c8d9baad4092bd7a9", +- "2f1ba6fd01e5cf713f7991", +- "3d17d279ec6a81f53cd4f8", +- "42af59edeafb6c79b9d208", +- "7e0f7a6620c31d72d9d568", +- "68d1c5df4d9653be9c8e7b", +- "79db0961906e2d46b0b349", +- "4c4fa3875e78671bc1d2bc", +- "22a17bb1e02873c944cbe3", +- "25e4a83dfc2f633765d96b", +- "8a4219421d2f55bef801a", +- "341ee0e329f6ab9da76c4a", +- "28eaec99940a1b1f563841", +- "4f1b7b04b31a6d85748c8e", +- "1152ee1f6c91b44b1faa20", +- "6b4aa7c57cecc522b32c99", +- "49e219e4b19fa82e3cdd8d", +- "5bc9b4c686de112404ccc3", +- "40d9ddb7d82d86fe4dc6d7", +- "6b85f2803d97e818e2e527", +- "321405882a2a0c05f7907b", +- "60749c3a015660029dacb9", +- "26240f3e8816b599bb01c6", +- "1a91a4ef4625f7ae911f1d", +- "18704740809cbd3a91bcc8", +- "532d2ff2bd9d0ca8b344ee", +- "18488f368798b8734164ca", +- "7453e07405f19cfba93c17", +- "3cfc7a65b66e9f8c6f8cbd", +- "4dde9b7ed5a96934e4dd51", +- "7afeb7314079bb05948a57", +- "2f4c8ebd42ef359c5ac79b", +- "2579cde0e8d37e04167a12", +- "368d20177281b04fd8018f", +- "4553e500c491eb2ced6e1a", +- "12a8a0e9fe6ba5c3656149", +- "13d6f0fac0c0b9cd891715", +- "cfbfcb607ba616c016fef", +- "522bb592e89a78b316244d", +- "2db6d4b5b7a928883df97f", +- "928d2a95f60dac2e280f3", +- "15b79d2a607e674b1df02c", +- "711d3de6506cffb89d82c0", +- "1fab75ef67bec61a68a277", +- "3dc7ec06146d405216b267", +- "15c08724b1daf7a590d087", +- "75c2ce5e2535ac7878196c", +- "63dbff9398c6d2cafd1418", +- "245003f901ae0a356365b5", +- "10b57d68a8cfe14ef3ca7c", +- "5fdc8856cd703470a1e5a4", +- "1af9124bffaade4351e990", +- "5f72010436c71470f190d9", +- "50755ca653aac70b84b12a", +- "14c9d693e42997dbc96df3", +- "7a93c6e177d746f5eb503", +- "28d70ec040ec983aded5c7", +- "124c113e25b1a8153a830d", +- "2df0f496cddcc699504250", +- "5dab9e18ce0b8340db40a2", +- "6a410e486ad693817f9d31", +- "5e82dce0d15b40d73e81bd", +- "4e1b51392bd1ad38a51d00", +- "69efc15f2bab10979940b4", +- "4bb8f4e111d078e3c54590", +- "22e8d9bc34a96264dd4caa", +- "3a7c703f2642b17eba0c69", +- "2df2bed0dd9ba405c8c5ce", +- "222dacddb6e77241cadac8", +- "4c996629390ea0954eeb1f", +- "37c7b0fc4e875134c29246", +- "4a78cbf6bef93b38948e09", +- "6c8fa526a6bdbce9f7b832", +- "7633f58adb014bb5585678", +- "509ea21b16907067d06b82", +- "30a8e1972ee45f3e0613d5", +- "63839ba9cca448dd7fecff", +- "290fe0ae5a419909be4e2b", +- "35dbe95730bed0669969ad", +- "2a6c238cf5c57a2939882f", +- "f9d7db7493258ceea1a37", +- "36ded179138f0e4cdf1ee7", +- "4996f8a3f7c2c5fac02813", +- "39bbee3cab035e7fc68b3", +- "741dd990ea20591fd9b5ff", +- "16eeff7e87d3caf8e58a92", +- "2c8f1060dc661c38044a5b", +- "3d886ee05f1bcf69fa4f70", +- "392d9ae31bf22e0236e198", +- "1a7c7fe62effcf2d1a2cb5", +- "65172c59adde7fa1aa62e", +- "389d1e8a26db35e20882fb", +- "7dd9082b6f5562b8d6ba91", +- "18c5643eccf2173f575420", +- "757f2101d664083b2fe8c9", +- "66e9cba0e526f30b7b9b8f", +- "6c33a3a058504d48c17efb", +- "1a908fcb6be810a9e1e92a", +- "2df246fe147cf6a7d9ed5f", +- "3dac1d8f9e9cf46cc42204", +- "3cfed079405fd41004c118", +- "7aeadbfb750a598afce6ac", +- "485bb888b6979f8f201fb8", +- "460858d1e253129bf64e5b", +- "3567cd9077f5bb1d3115a3", +- "28b06a5b8a2319d5d78e37", +- "5c3df551863d0055925c95", +- "260985f3992a168bc7fb3b", +- "5a00aa930e50101d3ad458", +- "3e41b8ea3309221756df7b", +- "216b9b04319fd8da8a6d3b", +- "24a843ed6770d822f92be9", +- "60e3811062f0661e25f626", +- "656a55d45a93fac53881ab", +- "10f7a570b959918609b06f", +- "d755ece5c8fed1e833d4b", +- "5eb96063b604b2d052b457", +- "182ed4a29e8be479e40c89", +- "55e542cd768eaa4ab7eb43", +- "4a1404c02a58e6862d11f5", +- "4366b19aa12542a30c1749", +- "74a0eb9dfa780e171aa5bc", +- "7b34f38b9d16f0d70ddae4", +- "1f75d643fbc4ab52296f51", +- "1cc8bac063e7f4722cc83d", +- "1f1cae187cb4e7e2d75ff5", +- "6acdbbcb1d87bb33b845b0", +- "5a67c62d60522486e9cab9", +- "66727c69de089e222307ae", +- "7dde8d7ccd2cebd1d4b943", +- "3732911ea3b78b2cc54de2", +- "69b04bfb64dc28afc90f3", +- "49a34db8369186ccd3e18b", +- "3087f959a9893769198248", +- "766ac65aedf40f90341249", +- "3c8b578aed4234d875a143", +- "7248daa035ed0c83c2d007", +- "35d310b1c9f92e46c5dccd", +- "747c7a13b706fb28e46c47", +- "e2d9cdfcde324e23eda21", +- "607776583fcde0ad8e4c87", +- "2133efe27b28c873f101f", +- "6ad95985d0ab8e8d823145", +- "35d6d7bb2855d9adfbf650", +- "7a123babe2e7abafbaf8e7", +- "3b0cb59bddc94e18233703", +- "77815256a969cddb479be9", +- "9c6c4ea9b05d327c6b7f3", +- "55137101093be9fb51857e", +- "59bb325b9748e94acb6630", +- "328bf9a8c78ea2ca3388be", +- "6ee757629a9b68ac7e690f", +- "59efda7d6a6d8e6aaaba46", +- "6ce70c288bc2711b1b024f", +- "4ed7cbd3e32dee7a40c626", +- "a9753c820825d73c04548", +- "741d91860d83d000328e76", +- "59aa03a25735023ef97395", +- "1cc96ab6764758e9cff09d", +- "50e22c6cf5d6b70def807b", +- "76f42929010d1ca7619b42", +- "18a6b71998f6f84fd5d814", +- "5fda42ececb40f359e4f0b", +- "2f62056d547ebf7995c6e6", +- "23966403e567312c7a8379", +- "6b7e91fb5948662e3961e3", +- "1e6874a8b307092ad6e72b", +- "31dfcfe645b46b329ee2a1", +- "209910d1159692421526c", +- "3c4374002a4b05edbee285", +- "6df855d5b158377d521892", +- "4169ab1c6bf3f0abec6c34", +- "359b331d03b9cc2451c1f8", +- "3c7a2b6b58424eab86f3b4", +- "7242e44696c19a3a1910b7", +- "2a7311c640e7cf0ecc141", +- "7933956672bf2e4535ee34", +- "455927f484bb8820a2ccf7", +- "551ec7c1ae7ed078f940c0", +- "6ef800332004d6cda26cdc", +- "7630fa097aa2bf97cef6b9", +- "490db50fd1ace7e8ec15ae", +- "32f5fb93813b0abef00c9a", +- "44e6ec408ba05ad98e759", +- "568f3917922fe83ad3e225", +- "273beeddd87cbae01c207f", +- "1a8ed7cad7bcfca4620120", +- "6c362e17e2173449bde86a", +- "191da9b869e973d2fdfea7", +- "64666abc6a9a2f6a1c7575", +- "3c31433d0db703e03c294d", +- "1e74e23fb34c50dc055d0", +- "59652c3042e742dab07904", +- "50e46147373113c54d73c2", +- "776ff8d5492c149f7acf17", +- "318d2300370d914ed1483a", +- "e24946eda2a54a4c98b6e", +- "28434971e0ad86e87340b6", +- "b7602abf832a9540b03b8", +- "3a2bc2968347afc3827c67", +- "5fde1fcd656f65c682e01e", +- "113149ff5647e02c5d8e8c", +- "329c1979af2fa92b25335f", +- "7de8764ca6a43c99d6a50f", +- "7e68cfb951ae556b15fa1", +- "5cac3c06df31850ad70694", +- "357eab1d6b7f6618503b3c", +- "4e66ba0bc1058a3931042b", +- "65f33a2872e25c8a682f06", +- "a5d62acbaf68c52001a4b", +- "18f39bb607de6b1ad183e4", +- "16870479234b3337ddc8c9", +- "7093b250c7b04c2c6d567c", +- "3820d1fc1eab75e925dc43", +- "49ddb3e956e6fd8d65e1ed", +- "7544304d1b3c2594fef689", +- "60483a9742002ed4918cd1", +- "809a8bacccc204134381c", +- "177aa9fd51aa698c4f5d25", +- "2848634cb8eba43423c432", +- "2bd0c39ecff8d002f3a3f7", +- "2bc7683658e815b0850ae", +- "56d7ace10d6e046f35bc1e", +- "1cf7470aa8bed908f93c32", +- "44885049137a26d9ff4438", +- "46436019c4b35e76ea4182", +- "6b4ed91c3f4f0b25252206", +- "1cb50b0700a11348f864c6", +- "26c603e605263eb37ee858", +- "734cae170e5d7d8758c509", +- "3e00e41664141664f70d8e", +- "4d36c683652009a273c69c", +- "61e21b9a255226ab8a9c03", +- "66db9685c97e1039f97191", +- "41ebedf12db1451af99b12", +- "5640578c9a2f674c097c8a", +- "37526cf6c350fc29ecf559", +- "6e93c69a7627e1f9832a61", +- "3aaf5736ed929c1ed0ab93", +- "42cda11218a2f5a8d7bd1f", +- "ea04fd9db78a21c39b6a5", +- "53e3092b891267552e8471", +- "3e13e95a38da382cdac574", +- "7d59312cf551555c728152", +- "57b341376c8eeb5e957326", +- "2fb62f0a2e9435830411", +- "6131db76263e902f303f6e", +- "5e7e83070de3b07a4bc87", +- "54765bab6ab2b394d9dee1", +- "3b4ae8aa403abef29b052b", +- "4e1bc7c2f29a2f520bcf7d", +- "50bb1918112bad3e57d523", +- "3979e2b3d54a21e7e8c1cf", +- "4f3fe475424626758ebe24", +- "26c45bee1cb7e300fef593", +- "20866732367b425f7e5ad1", +- "4779c6f70cb71f00e32d17", +- "24dc2302a4b77b85525bd", +- "f339d2f5ca33347ae8d13", +- "2e178e1cc4f997792ce1aa", +- "54728697bad28cd0bcc9f", +- "13413811d8a8e6bc2e6cf8", +- "1a3337bb0bc288bf44447e", +- "526d1eb936d1a3dec6eeb3", +- "7df75741d3ccafb28da8e", +- "6476d594392ef9fc9a3df1", +- "645cf2dd2735f1cbf53f1a", +- "780a2a5411b159d83dcb95", +- "562d8222a0b94f5af3137c", +- "e859d26ac6c854731c10d", +- "3908eb827c8209b96bc643", +- "61619bfea73d2a10c7a7e9", +- "cf2bf44fe6c433cc00c9", +- "17b5a764867bc2f176278", +- "667b77d58f7f6b14e19bc3", +- "14c79375686a30f4c21ea1", +- "57d421e876be8c87768c1a", +- "a49f38b3c0b7ca1fc5c10", +- "1998c4f90bb8b5465b7b1e", +- "974b1ea8fc3d4665ea11a", +- "4382f99dff4951a775fb77", +- "66b03ec137e6361ddf6317", +- "43f99aac41b05d58c624b4", +- "4efe7cc856d9eef4fda470", +- "35f48b300d21989b05560", +- "79ef58660a06bbc22f0cce", +- "5623f1c8e0d5c15938b2a1", +- "740e3fa0e998e741eb97cb", +- "4f6148f444b84dfe82ecb2", +- "34ce2df12c5e0970f682d1", +- "5fe5a0fcee7c061cf49e8d", +- "127dbd62073fb0c17b4217", +- "31b2ef6b5163160bdce290", +- "7f9a1f8e557617163d5e82", +- "3c5262912ab7e82ffd49c", +- "4ad5e4985caa0c7ee63b9f", +- "5267f1f68134d546ec646f", +- "7f695021b246db24a5113a", +- "11df54a696817409ff1164", +- "5549ebaa872068aae68ac5", +- "236e08f8411de38e44c3cd", +- "1892726d56d4f8f92dde20", +- "457d09be8a2a4c351b63ae", +- "53339d5a01f3d2e9bc8755", +- "ac5bf0492a63aa0bf597", +- "714ed5cb0027168be15142", +- "4cfaabac7104cbad2ed728", +- "486fd3ea0158f33daf767d", +- "61c0e0ff11a378274b395c", +- "5e195ccf98c9a4e1967fe1", +- "3eecfda3b4d92af2b7e5ae", +- "62af499c078af038905758", +- "38d987fd4b450ee5a69286", +- "5f9563c7ca70d6e5061bfa", +- "ad64cff4b4763a7fda09f", +- "26554ee3e9bedb1a3a09fd", +- "42c5d2d1082dd2375a4ef3", +- "7e05b7c7d54cfa1fc7b525", +- "118d29d91686683483dea8", +- "2c56fdcda56f78dcda9b60", +- "d92cf9efd7d12c62f0dfe", +- "11b77783f411c457cf909e", +- "2cd33d1f501e268643d591", +- "1ebddbaa72ad1a2b1cdc49", +- "73f4373aa0c46a1ae61409", +- "64b1dd5abc6713a8f53d0c", +- "3aef6b8ad8d4f116a27e4a", +- "13f9a309c929439a91df6c", +- "401a3ed45557939fa7eea", +- "1d1aa15ce7c8c15f051ba9", +- "398764fa3e177502af4d3b", +- "48edf77c0fc298b0491c2a", +- "1c5b7d2b84cbc7b29bf542", +- "78873bb7282961108e63a", +- "16ad879cfcd3e458301dc9", +- "28b06d6b1f993702509e4a", +- "45242101d43b276b34115c", +- "783d012e8b928ea14eaad8", +- "5afe15c1524eda9627e183", +- "42b636bc4126dddf74cb00", +- "5cd8f782abb8b60cbf36f8", +- "1c5d10301fcf4a14c82adb", +- "52d3cdd253b64a03c5885b", +- "31416a7f09913059dc251d", +- "46bafe88322c67f3b90507", +- "4cb6253df884020966d27b", +- "2948eda7d7c508918c3056", +- "543222604f067afa3e7558", +- "3ae99fca89d15abe091160", +- "140aa7412f6488f5404826", +- "16b6721ea95f55ef631d25", +- "133606f2fed41ffd77b999", +- "4d075c933e4b93da3a33d9", +- "4ed1311eae64f9e834ee7b", +- "f920b02af1e3bd673512e", +- "312518f9c1ce1e690c003d", +- "44bd0de2094b8b3759356", +- "3d40b56764f7765513d13", +- "6b5da25417070642e0ba4c", +- "6bd995ef31bcfd22d52d9f", +- "3eedab106a435ef32b9e48", +- "534c1a3b25194e8cd66e6c", +- "28a37e042abf70a7cb137d", +- "76fbf6732402bc76e061d1", +- "3b66491ccee4801a4e3673", +- "5ef7fbdbf498c8684625f6", +- "3305f9d7ac9bc35ded571d", +- "6aaafc0107575bd9b70723", +- "5eb217461cfa46d5694397", +- "7f5140ee63b60e0a33058a", +- "3fe61d12a0b09791925ccd", +- "591749051e47ee7b49cf82", +- "33440d7d3472a4b6e2f627", +- "4dedb1ba2a6a4abde67337", +- "30485371efc19b50bbafe6", +- "3566f7f67e026f0278dfd5", +- "201e678f30ea96fd17615f", +- "4a2580e03d81912089d88d", +- "68e88d3bc4e8d390ae4b13", +- "46986d0da7a2c17dd1dc22", +- "174fdf0bcfc8d0f4e77e83", +- "7a75be28b1e93e4e0c9342", +- "11081f4b8fb8f0a9abf772", +- "3245bbf080c6731fee74dc", +- "57bf13241507b812b9a904", +- "50c915d40aeb9e4ec78789", +- "530f4c391aa2b0938eb272", +- "4e0326164785519414d07e", +- "389d9fa841750626db108d", +- "5eec1e56c0a2d0e34dfc8a", +- "3e8986648fb4053520276a", +- "2db6e61499c9393946b57f", +- "1b2e283bc4ff40366c744f", +- "95d86ded4a7b26a1ad331", +- "4818fb8f958698b6e9c9d9", +- "21e39ab39cd96423900120", +- "27476789fbe89ef5fe00c0", +- "1b67e56d8c8f6656eac86d", +- "28e33efab89fb4f64d6498", +- "18eb41f414dd28e8ff3a1b", +- "4a648c611ef0b3b0e318e0", +- "3ab4982748b8f986192588", +- "1eacd91eb3938b38f0210f", +- "5227913634dbd4b19ffe95", +- "1d5b0385650d2d81754f72", +- "7351e32ddd53c7465f65e8", +- "202d04fcffa7e3a0ae0585", +- "6b77b6d06b93487730de2b", +- "2f635c018151dfffc38ed7", +- "7d83ba89b9f89b55497937", +- "d1c5eeefb8bb620c573fa", +- "322d1e939066766f918e43", +- "3ea29dc49c06d64c187862", +- "7f64ec3ee1d6fd7b5f9352", +- "749ebfb4005c94ed288c4", +- "6f3d0d822d1a27088df8e4", +- "17b1690a9c9f4fba9154e2", +- "142aa17e315b2096d3470c", +- "5778dc2f1465daeafbf88f", +- "3135a042ca5b8873367081", +- "26f3f960b2ba725c83b706", +- "156e3560db5a642c108333", +- "3adf2b6aaf40f5dcdffdf2", +- "4ecbf2559411992397d1ba", +- "5e3402a24a307a945167f7", +- "553a48facee35f17214327", +- "57c6f0c9d94e02524b4029", +- "44867f919f39bbc1ac8a53", +- "7b1e254e6050240b36eede", +- "7fb445fb34908201d41b44", +- "5a49a0430b2145ead2e9a5", +- "22d9fd1638450186756413", +- "60a177acbb4aeba955e6a6", +- "23a7a59b35972768b71627", +- "ea9789ae096da5bedc410", +- "38419b7c213432cd42f4bd", +- "4024c6847ce50a93fefd10", +- "1f15e66f6c5b160801ec4b", +- "26fb73843bff3e4d17aa10", +- "212d386743b2c2069ec4b7", +- "59377c70bed9cccb346cff", +- "5a80f23e82161bfd2caa8a", +- "21532161ecdbdaac15b68a", +- "5cd8f904c6a0e1c85597c4", +- "2ad8c773fcdf92009db9b6", +- "1df80784a603cde2e8573c", +- "41127c781a5dd07b6ea357", +- "6152b40d63a55e1ef6e750", +- "3161bea37fcc040c6f6494", +- "112bfdedc3401ff20ffcf6", +- "6a3afde1cc784aefb925c8", +- "47a38df2df7f516ac35f8d", +- "6dafdbef06e817ec42991d", +- "72059eace3671c76d67005", +- "a209dce8856336ebd97f2", +- "695d060b1aceccfdfa96c2", +- "17445a9a60b0dfca9df354", +- "249f5358017ada6567b747", +- "b7347a4820635a5852b61", +- "2bb74459adcd7029c9c35f", +- "3684bf3ee3a2b8635ca0e1", +- "600de685f1a4c2f4a236d9", +- "68ae7d3832d31bce57eaf3", +- "7a75b868e9fb50140bd203", +- "1105d3c71c59dedcb33f", +- "6234ffe0f938a25ce0f5a8", +- "41858e467a21a3938d60aa", +- "7332b41a9fe9dfbe59f71f", +- "313ef612f2fd65f39c2e3e", +- "49ce8855b52dfbb878b2d3", +- "46b1961304e45b428bd48", +- "1740e5e9a57a4e80eed5c8", +- "7f035a794c44a6a57abf00", +- "6eb090e9b1df79f4d2226", +- "7f26a6c99362d1126b6773", +- "14e47840962745e9f2bba8", +- "28670ba592cd5a2625df3d", +- "5c00c9ce80be32396ca075", +- "4cc8bba01b6788222eb375", +- "581f2a492a4fe468c3971b", +- "6aacfa3617f47dce14015a", +- "3988842f76572373c3459b", +- "3146d29fae3f74014572cf", +- "27216bcb23514df00030b1", +- "36baace22f2d7a2014dd1e", +- "20b11d38582bb81886466a", +- "5aa25b718982092494e872", +- "3f0eb0b9bdbbe37f40dc5f", +- "5c4dc3dd9138eb7169302d", +- "503bee64726b7b32815f44", +- "7175ce67c0c74c440327c2", +- "3fc3680285719ed4f7e7fe", +- "7fc9fec9506aa1a0661240", +- "122e1cf4ba920fb923d0e1", +- "5570385cc742f16a21edc9", +- "2a8b319bb90a064d3cc523", +- "797bc83e9789b064b51c92", +- "124aa58a7e2a882689ba12", +- "5ee825c795f457b727b9e8", +- "475c02da59260b083fa105", +- "5f427b13d8351db71dc75e", +- "7dca64fefd065e0893d874", +- "88658ceb2447416239af", +- "75ea3318a1054593eca8e6", +- "21b1555bb331b89f928e6d", +- "7e558ced95c8a49312174c", +- "71f02d980dd943488cbefc", +- "23e36a6e12831353ac1afd", +- "1073f10b92dd8a202017b2", +- "a0ac3885d2cb22aeb977f", +- "2ac1793993d045ec4ea0ab", +- "4e33cc0d26d44c2394c8d2", +- "5430c091f416778afc3f3e", +- "55f3bd5a345801aa67f91c", +- "18bd8096de042467441c8c", +- "1dfe68dd4d69d0d5368782", +- "a69b0e544c08336c9606b", +- "405224a222d42397ca18d2", +- "5ca40898d5d325e557e04e", +- "73e9dbd2873c27040a215d", +- "56efa25eac0d5f675af6b6", +- "460f5f98b19a4d353358fb", +- "28593d93a1a2159e16cc13", +- "1eae59f579b122f18b84d1", +- "7f29a05b16052f06eff50a", +- "2ac52045b3b592dfbeeaaa", +- "6003c83a8ae5ae42a0956a", +- "3af2323baa99fc6ef534e0", +- "b3a488e23273b8e74aa2e", +- "dde95ff1403621e1e9c39", +- "8b93e9e7ea54df6ea61e0", +- "382238b03129ae3a8cb2e2", +- "7be85a588e4f01b973f9a4", +- "3428c448a20f463714e16e", +- "46c829e7e1980bc26c13f9", +- "20573b178651610a410e89", +- "16c1a9b3bcba979d2fb250", +- "46bc67034da17d5b7c72cf", +- "abe7e5169767e92b8517c", +- "10a7cb0c646bfbfaf6b1db", +- "3e27d166777ab6af4a4b75", +- "560bc3397e1eecda48e8d6", +- "153d46a7ad0d4c7b81a83d", +- "7b625b197eb76a08b19ecf", +- "58ab9a24dbad2ee2c0942", +- "6b463071583d5d51119c18", +- "58d985a1111ffbdece42a", +- "772853e9593804a23d0c9f", +- "3566ae3cffa53b48308a5c", +- "3253a13971cf24cc306f4e", +- "161741a6fabf2be3cb74a", +- "72492bafc7adaedde393c7", +- "4d17bed73f2032142b03a3", +- "43ad0b393a7c2a4d667efc", +- "5bdacc4f0e9a9f3c5eb7f", +- "3fc330d82c00c3c98129ad", +- "2287f22a43e09d12b5fed1", +- "113203b24e05e4ff03bfc7", +- "386903ad1ff043a2a203ff", +- "6efc437814b1b1a8db77d5", +- "60d1cb028fdf2f7506480f", +- "5c08c8490ead830327cfc3", +- "56d1b28a25e58905b948d1", +- "6473a7fe7461369e02b551", +- "43240f690e895ee2ce6199", +- "217e1d11ab05e37175e942", +- "115af287df30e3b9382159", +- "3d01c0ebec513aebdf049d", +- "3b607643718a1436cbf93f", +- "392447173660d27311fc56", +- "7fcabd5ff8d8321877d09d", +- "773e49f5dd28ab9abcc4f3", +- "333e4709f384c49fba280e", +- "1a5a69890d5f080ad27aee", +- "142700479fca005e365a5", +- "16c859dc1504abc8bebb3e", +- "8e1dc29eaa3429a93416f", +- "3d2c4d19f97ec14b7f9a20", +- "b80a7edd7c5745e63c50d", +- "7eacc570a117e3d2c4ad3b", +- "5a4b0bdbb9a3eba57ecafc", +- "2bbb60823308802716b002", +- "60de98af5b2e9794ccddda", +- "43f106dd9b706c7cbad455", +- "247aa73439f114a2bae1f5", +- "404518992cad409d30e138", +- "483592c4cf34d97823b087", +- "303e55cf5d940fa1eb0863", +- "27cf1a1e36d6b6fbf673f1", +- "753e3ffd723c55ffaa57eb", +- "527df835ccce3d0d8dc6be", +- "501c73bb8897e8a9b644da", +- "2c748923f66e9b836e2956", +- "252a9565fc2ed88c83afe5", +- "53ee027a60ac6b8703b4c4", +- "11e3b65e520ccb94e0f28b", +- "1d82fef6b5daac184a21bb", +- "34f1c6d5946b4f8e9c34f2", +- "78c36b7a1a1ac86080796c", +- "3c2561b4603673cde220ff", +- "347e522bb35549d788adad", +- "c5eb765e74f7ea6040509", +- "6b91d4c08bfb155d85a09d", +- "1d345a329131e03407a9ae", +- "7656e2bcd13769bc7d3690", +- "18af2f7c66ebae2215b225", +- "5c0b858603efe861d8e554", +- "3a948a48ee72242647aeee", +- "5eb549dbd9b640a1018c4c", +- "39395b9f947ccce230cc1d", +- "2983f80020a9f6532ba834", +- "599c6bd84b32b97e000cad", +- "494a8aca14d077b143ca10", +- "5514a9f97c736ef89e2558", +- "22a2f494120b7469421488", +- "6bbfc916f60c65ff6069ae", +- "988dfd270fa06d78d9fba", +- "65e3000fa520e5bd8bfdc3", +- "d79412155f3d978866277", +- "540f6a5d04324cc6ed1398", +- "5193e0be567990b2818200", +- "5527257327c4eade309a67", +- "6a6ceb53a9e08bce60e22f", +- "3bc0b4b12c4e0d37097319", +- "6446d75a31a4956c235943", +- "70089a05ca7765b8ef62a5", +- "78050a04d755b7008433fa", +- "4cf40ea87be0baab3f0a23", +- "421f5a540df5b7ba309bc8", +- "22aca8e5833c97719ebb51", +- "595eaf076defb81f21236", +- "324340f1f7ccc9eff05524", +- "490df281db25788739ca0c", +- "7cdb727ae2bfeeed50af45", +- "8fdbca74c18894d421e52", +- "266efd2e0daff29e309d38", +- "2d3baa252f4d982bd2ad11", +- "26246e8fdf408dac8fd2a5", +- "4dae59d140c542483e12a9", +- "7e37627adf10efb14adf13", +- "7059a8ae14b27b87ae7942", +- "5d0b6fe03f574db311d01d", +- "4450b05b160d8c53288cd5", +- "5628eeca86bc4f505da4a8", +- "59d6c2db6f995cfebbccc9", +- "32c247d46291051243da8b", +- "29ecceda91e2de99bded7a", +- "697bd2294052d067eed5b", +- "35d846be55b3952e278ab9", +- "3846b043ea9479616ae948", +- "460dae8d89d7708b43a1c7", +- "6ecd91e762474ea500bb02", +- "78386c3f2bea1d92b0136f", +- "5d36dd2a4f038c91a8e525", +- "2567685d25fd668a9a024e", +- "484fed0412b66b4ad6689b", +- "11e987960e92f0cfe9e7d", +- "48457eaf5bfbcca641689", +- "5e89ffa159d58051edf13c", +- "ad8ecaa59795b2101aeb", +- "4cd6b5c75a375bce549db5", +- "17a8f2f3a036b54c467b7b", +- "456d747923e7fcbd260fae", +- "38b2a18fa105ae1a1e82c8", +- "36b718d293f968b4388def", +- "6d15e33dfd91b0adf65ea8", +- "6a47915604a062b94c626c", +- "63f2b709d7c6ba1ce60255", +- "73da067d52334a718631ff", +- "68c11de19f57751aa11e9b", +- "1b50ac3c3f5269c1d7aa40", +- "51f56cb5201bdd22f49e70", +- "245ff16a71eb8c45257fd0", +- "7dcfee63c4d594e4583601", +- "604b2e853911ce83225aba", +- "5bb6095d45a0253a5e3e2d", +- "14b7709b903167ca33c0bd", +- "6e6871265fe9883143d121", +- "453649c203cf983e439d84", +- "5819cdbf42afd2334f96", +- "3450478bbaf1db9aae9e0e", +- "35a56ed2078e145e9b5d42", +- "15e468fec0387d9dcde2e9", +- "1f098e306099d97f37bcee", +- "108be849403d8b9e0adadd", +- "432bf33542ea8f8c0e1cab", +- "1fe772e91ad75a2d2792c4", +- "2aaf602c5ad427702561f0", +- "66c37766a09f2454161188", +- "7c91adf751ba7b800072a4", +- "587965194057ffad1ed72d", +- "6b189bed3e1ee805a7089f", +- "656e0aaff42e8f100df7e1", +- "50d8060a4c81ac0d9dcc9a", +- "3b142ae3f666b5a458fd6", +- "11216382d02fa8a680f2c", +- "640821dda0f544b159e25f", +- "60ad8426c5228781a660d2", +- "50b259ce6ef7786ad19380", +- "617907260cf1e3612508c0", +- "2020839307f0a0b2a66465", +- "6c9aa8a230f91d4e6f84c2", +- "479f0a9b95b8f0e630df10", +- "74e8524ea4276a1585abc9", +- "1832f7608c30377f8a27c1", +- "468227ba06af62fa70d6b", +- "46ae03b83630be869f3f67", +- "1c429a8aad032b85e815c6", +- "784a6ea72c75433fa2c1c0", +- "521255c27009b10aeef14", +- "6de250d6d96fba0a4a2df6", +- "1a38abc6055dcfc6f54cd3", +- "459fc4d70a1a8040309b48", +- "5206d5cc4cf74b102b511e", +- "1621052353e1bb38663f44", +- "6869e474162fccd5e6ce8a", +- "265a6fe3ade48b79bb704f", +- "1683c065332572cac40e7f", +- "40fe888eb50954f82f8f41", +- "5ccb3321bf79805e3743ec", +- "6904f88af6eea4b3f91bbf", +- "a70e6c0e6da7b5bd943d0", +- "7b7c35dbf0dd6b94d050c5", +- "4ee9fe013ba8fc6ac8d470", +- "1825a2f6c03df8e89a424f", +- "6495ff035413be2b53c45f", +- "745f8230228fe0e913a537", +- "57ca180b4c6f8c3a63ae46", +- "5963fe850d852bb19cdfe3", +- "430a7ef273c75f6860a9e2", +- "28c8b8ba9341ac37c38695", +- "88d1f466f33239ebbee3e", +- "7bfb517a9a7064f7f0b9cf", +- "222ad5a5eecaf564928d05", +- "31f4e6b45c1cedb6d4c94", +- "9d0d5139d46e4d9db3662", +- "46ea372cc256b25d8bedb8", +- "1177a186084a0188e6b25c", +- "79973f898e87ee6433e53e", +- "17f90d7760ace90b4281fa", +- "4d06acabc42f8f6c6561a2", +- "297ac6d1d91b19c8ceb3ad", +- "76930d75187c32e1c0855c", +- "ef9f73cc5ae815a32ca63", +- "3ca5432d73f30360d5e251", +- "2eb29dd03203d9dedca2ed", +- "3f719d970328ab86444133", +- "671a35180c429ed6cd73d6", +- "1a5a3601f9e5c757413d21", +- "1207f0afa9b17ee1e3a14c", +- "64c773513b07ac7be226c5", +- "645491f7754448588100c4", +- "6803ba4d96f3cea5b5b619", +- "3e8f3fee79b0aa7d3158c9", +- "7c4c5a07ab45db64032f8c", +- "471e19dff79f0bf8dd75e4", +- "736e4111350ab36a2be4ca", +- "70eda2a92c3f3d551052fc", +- "4be7ae42a1b71df0fdbed2", +- "38e1136120c0a50e7c1942", +- "34de10a25d48bbec6bc310", +- "45fae251151688f6948ec3", +- "a5803d95905530efe4cbc", +- "29c81a2bbc75ee65e40fbe", +- "5d0e736ad9b0e048c53cb9", +- "62a6ac9d0c5e4b3890d61a", +- "16587b1213183c74388d6a", +- "30455197024dac28f22ad9", +- "5c96c4bf9c30f05dfa52bf", +- "2e14fbc2ca9b056ee6a0e6", +- "544e247e73028cc23b1f51", +- "7569e0846a7c92c5b07e91", +- "2e37e64613e6e49f75ff6b", +- "75393667821938c0e5a628", +- "2db4889991fd96d5a3dbfa", +- "6b628f924b031ff396258b", +- "5c721c1e9f943f1e44c526", +- "4845e19f6384ed5724d8ce", +- "451cf4e4a6ce149cfc4095", +- "69cf5ded5037b0fc848b28", +- "2144bb26c3488be851e3b2", +- "2582d22d55dfd72b2d70bf", +- "67fe64c68be6372b30260", +- "b5ea9188a76cbd4490c2c", +- "2f9195fa1721a36e6f5198", +- "371b6d93bf32954a1ed005", +- "2d248bd8de364598100d1", +- "3476974a3a56c244bcd4ac", +- "7d10d41f081cc53194454d", +- "9ae11d1f0b2cb73496a44", +- "3c11b4ca34c3237b362a26", +- "3b62b01334bf25d1f5d560", +- "4a9dee0a96c91e7cd6d7ca", +- "2d8ba9bb83d8b7dc77cc32", +- "394242cd2ce4d5c927b1f7", +- "13ef893fe161bb05038778", +- "210aaed4cc7b55edc4255b", +- "72bad07fa5d3ca19811efa", +- "1856ece5542adaa42b18cf", +- "2f775dce855cb22a4ce4b4", +- "1b3d8a50e5425c7a4550f6", +- "3fd38eb64df431878b817e", +- "1f372d16a7c783f301d859", +- "2e99bf2a9cfd14eb01e4dc", +- "739d86f4db437bd59681d0", +- "91782b2d8bf1ec8b6e4db", +- "13089f86ddae7614e1f733", +- "4374fb07e1eb1efc714a7f", +- "34026c0467a5bb1302960d", +- "1316737cef6e8d73f98c46", +- "308b1811fe8c7d6801df6e", +- "3b6333c6dc16d5f4351c47", +- "30151eaad7aef0e79d5e07", +- "6d5ce69503f658697314d0", +- "13022f601d429947abd201", +- "278331e342f211746f0d9f", +- "44fd7c4168c2a61413dbd2", +- "77747c8e4550378570ec0d", +- "31934713e4ff1d0d7cc583", +- "5ca455ab52339850752f94", +- "cc47e7e925da6c91fe510", +- "18932d3a50056ecbd4c0", +- "594820c775fd57d86cf9af", +- "4ad8d4214e4fe01b143d8", +- "179c67b2886cbf8a80171f", +- "60e1157dceceaecc3a16c9", +- "507a197204651599300f85", +- "1da6208947854d10119a62", +- "2fd395d2076e94e7f79f79", +- "3326fb026bfe153a5a80e5", +- "214b26c5cc4d2d1d455254", +- "2a5beeac5cc34b9b70fc5c", +- "73037907fb5b7e20bf7973", +- "622155e1a7c16eb9e6f098", +- "47eef469d5e96dff3b60f7", +- "31b42ccc858ccceae34d5", +- "68c711e371efbf9b278db8", +- "71e107fc4c98b40c6f7b53", +- "2a2840d0a8db4a22fdfb53", +- "557e56b5a5dcf30ae5f48", +- "5451512089afcff74e1bd9", +- "6a44a264bb1144d86619f3", +- "72316f1be6172c06994a4d", +- "d5835b5723a9063a2dd80", +- "232ce65586f95692d89383", +- "2a8c9eedadb6f6d58c06cf", +- "f5eef843bd404a6869b17", +- "720851fb976798365a6829", +- "6e8b7f0e9607e44c1f9f65", +- "3860366ed3637eead94b8d", +- "30d33e090854573dfd98f5", +- "682291bfd680e2cd8f9d70", +- "7c1fdd60de643e750fa1d", +- "774b9d1f08bb74ab682979", +- "7b5f04e933b2e4204cdc65", +- "2c36a4d87847724f9fdecf", +- "2c941d4c1c7d68ef593ae6", +- "4576a87293566d06f5b643", +- "86148c3559c855d7a4785", +- "2d0a5221661bafe1bae3a0", +- "4eabe0db8ac5d733acae29", +- "1dff7b3a25d6efec89d4f1", +- "93ecdd9b52d588b62ae9d", +- "4a5c54b88c3afab5d73bb4", +- "50873f081856faa7b0c6c0", +- "7a4c62248fb05a7ec5f894", +- "6297ed8d827bde2f27c592", +- "4f88d842683a24f7a78b4e", +- "6543f2ea86c39aa319b565", +- "1711e7c4ddf7dd725f454a", +- "6e925cc1e63747fc8301d9", +- "428c02c3c8bb1613aad2fd", +- "1b12fc1c7d3ee5cd24b30d", +- "38618fda51c023d44b41df", +- "75ecb6eacac31eec1c8d24", +- "363495385d4023abd7fffb", +- "52a170878e73d2b9a73398", +- "40afd831d872bbb5ba2dbe", +- "6a2bde70b440f36a3a69b8", +- "6cdde5dc50cfba13ab15cc", +- "6102d4b92b578db1756028", +- "1d72e71f6a57243468bc42", +- "4f100cd2b63ef0cdac7165", +- "56441a020eb196f9ab47f5", +- "520d75e4874b90e95d0ac6", +- "4ad5b5ec9142810d730c91", +- "6369f366be6b5ec99ddddf", +- "4ae3a5f46681ba13e649ed", +- "33e094a7802d99ab1d9620", +- "58ca4d190a0f756173e746", +- "4afa034c14d96f077cc41e", +- "3277a60ca85c986d50dee2", +- "61df6c089b8a0a75da0288", +- "3a9ec75af3c8e86b8c1b73", +- "7ca8eb46f6df31902607b1", +- "7a283d5e2ed98485e2d260", +- "78ab001943d18ada1f6d03", +- "56f539741375576aac816a", +- "75fa74ccac539d6f2e079d", +- "7108a03a28803eb91e8a0a", +- "3756665d23e5dc56d35905", +- "da96dc29f77c98efd9a65", +- "54ec1fbecc620b2a62de33", +- "2e564f6ba5f6f74e33f2dd", +- "86aa65ac1949dd8af6918", +- "605ccf0922a0c35f768933", +- "4348b708829c7eddd56237", +- "19d3eafc75447dbc2ce4d", +- "764156f5d90616c8c45669", +- "51e2ff830fcf99b4147ec", +- "2d30342ea20393b89b038b", +- "6745627963b760ee39ad1a", +- "76c344db7c98c1b1fa25d1", +- "5b872486f12a68a939069d", +- "274cbe37d4fe65732936f", +- "27b48290f4bc222f54681d", +- "1f7e1880120c76703199fa", +- "2bf0a5cc2a5150523d2e64", +- "2d3b2e3d52eac5c09743f7", +- "46b7638024bbab6f336734", +- "71f7ff7f6245492bf4ba4d", +- "6ac96f98fa78ffb692afd9", +- "1c63d031374620336f8c7a", +- "5eb0e751f365585e4f3fd3", +- "24716274d6f1761a2e503e", +- "3b663e3e9013cab9326fc5", +- "231a1fa6a52f8377b2ca86", +- "464063c0e0f5e5eae1bad1", +- "4f588ef825e26e596e160c", +- "4adc76f7cd88044421953e", +- "228eebf60c055615805405", +- "3d32a6b665f10a829cfff8", +- "ce584760ca84047b25a4f", +- "982362cb3f64fc2535f18", +- "2cbb69d06f0ba3051ce433", +- "2fb2d651d1a5fde2dc4d89", +- "116822d6715118a8643140", +- "52e4d0f780530e040b8198", +- "4d84d472f48a1f27cda4fd", +- "23675569b6f74cecec658", +- "7273cb20026d3e5dfa9567", +- "5e5c9c54f1f75bcc98d1bd", +- "37150fd6c06a98e84f0fb9", +- "1cae4d5a0b88eed0b2d97e", +- "5e6c438c53b4bfbeab6a4c", +- "7ec0ec060d3788349445a5", +- "394ca6d6650a3a703c8f0", +- "76a4bcdffe1207b9c84c3", +- "413062fa329dcbe3b8887d", +- "137786296b1e5f466871bf", +- "1bff1788b61c434292f278", +- "67ae16da8f876a2c8dc80f", +- "4f0b0a9e8338cbca398b3f", +- "7fe713df2e65b878c1edc6", +- "46dbd89f4ae0d06c0ab8e0", +- "3ad2c2000ee1db409ffcab", +- "235057c5ef06d64b0093a1", +- "2b1199cb9ff7848ec581", +- "16a7968fcf87b51aa207b", +- "7593ab2f13aa524b76e104", +- "569b68c3d77231282d1705", +- "54f01285acb2da9689a386", +- "7c50148337071a44808f27", +- "157e5726ec48e98ea5652c", +- "a0b14921f2ca115669309", +- "540974d1b3361c5ccd3a2", +- "30927374f464c892c53b50", +- "5c0de6f6c164f44c52de84", +- "25f3d9fd234440b97c9821", +- "659ccea55ad34dab51a321", +- "308d7af9cf09073e61779f", +- "48dd5aa0d80d3fd4d31225", +- "18d28f7c13bdb1a27fc315", +- "37c639bab06813135e6962", +- "716be1338eb9fa3160de8a", +- "306cc735643548c81d480", +- "15dc7895737fd27e2fc2d8", +- "ff910ecf2ce1ed443b3a7", +- "26e45399ef9d09b479c0d5", +- "5a3548ae1dc271964cafb9", +- "1e0b5aa4ebf1898b7232a8", +- "65b1a43ebc40ff17757bfe", +- "35ab264ca762acbf67e1de", +- "67fe63e894b36bad057249", +- "901282766f87bc24e50af", +- "3f8ccc4c495c412c1876e1", +- "2c958c952c5c886c2a60ad", +- "21a95826890e5cccb8a83e", +- "190017f50befaddece16d2", +- "64f3d838badcddd9bfdd0e", +- "7a7cdf214176b6d3191883", +- "30436781bd712f316b4895", +- "f5d2bac49777fc8f10242", +- "66de0cd9d504d0c8a10caa", +- "11ff8e8d5e956398c99ca4", +- "2d83b4eaa1c8f768e56c30", +- "58689766e836a562c78c53", +- "1644cc3e7fe80220ef2f70", +- "69a00aca76ae6e660be7bb", +- "68e1a6376fdb4eb7b4b0e6", +- "5c37d517c640ac7f62a532", +- "3aa36ece405e3ccd9341ca", +- "345343979af3beadfaced5", +- "63ca1ec0700483b8f859e5", +- "14b8d711e9732dc1d81b85", +- "5d1cdedac3c1f047923b22", +- "1f88577ebb6a87d8478dfc", +- "3cf63e3a65a7e509ca6dd4", +- "64e35a2939773b306ebb74", +- "4e5afb2e233daef8a9bbcb", +- "5dce9f322e405cdd3dc195", +- "49fee8b58237dc40ba3c5b", +- "125c7d70d2b6d99ae885da", +- "7f821b6d896942293448e9", +- "44b0628f84b11c5e71888", +- "4bc252b0fa653478344f1f", +- "31afe414b9e841f105214d", +- "46bc16d9041c2bda07b158", +- "34ca1ca17d4004b63727d1", +- "1adfa664cf45ca975af0f8", +- "55b727631edd20582945d2", +- "6649997ef28c919c6cae0f", +- "6332e8b1655b1a7193eb45", +- "7b8a17b08fccb33f4b7d6f", +- "46c01f4170feea6c601e12", +- "68d895a65569cf3ef3e3ea", +- "782fa87576f745d6c5a644", +- "3561d1a2752f1d17dd5823", +- "1c1f24204ec4b044c10ff5", +- "4ef1c6a1bd63bb6b6207b1", +- "33fee942f43e9b7d2118f", +- "1cbb8749de080f5bb23b75", +- "4680ebb5e7e7fa1e676838", +- "2cfe955ebd8c7e4615715c", +- "93d0f45c8e78eed19b2b4", +- "5411d9720f633bf7a356ea", +- "7ae4ce9746d1a251afde2", +- "6b6195f4939abc517ea1fa", +- "622e4bcd237f601b3f864e", +- "552dab94d8fab803e3abe6", +- "5fea5590381b705c4ba54c", +- "47a6912faf0eba695a3f82", +- "62d4635d0bbd6bf8fab17b", +- "488702c5b90021b8b24933", +- "b44a774aaac3d4d335389", +- "7c2eeaa3b5ac7ca26ee5f2", +- "4a79a4d35e92cbac8fe0c0", +- "145ecffc8b532b7855ca8a", +- "409705e5654888d8af2f47", +- "4f5cb9e29c3567f8c1b22b", +- "2ad535a50fda15e1835526", +- "4d55039bf17366425f055a", +- "504e8f5ee0e51320af92dc", +- "ae1614cb7437dc6311ee9", +- "3d433adb4bcd914fcfc4", +- "633dad9eec0d451652bf40", +- "15bc81dd36a0393963bb64", +- "720d9e52c4aea85ae24480", +- "16f5569ecf073acc30831d", +- "50a70d2086b5ca78a90368", +- "7e688d1cbe7e0a84a0f408", +- "1f9e8bffcac3e1471f7cd6", +- "78ec94c22ee912eded5499", +- "336a41277b427813eaa191", +- "1705c133c7ba24a2b5c528", +- "7b7e71610f1589da383c31", +- "58137399c99866772aed9a", +- "282774a1f4bcb14e6723f9", +- "7b85e0b99eff408f2aa978", +- "2a5043ae183d338b7ebd55", +- "af99b9d024438cfe9df66", +- "d4a270719a348af6d6c29", +- "47262fa06b9c5ac8138f4f", +- "50c65d8772a3d5db269535", +- "20b1838f00aa00d07f70fc", +- "ca30526530b6f6f0c8fca", +- "158e9251ef94651015ecc3", +- "636f015a0c62753b283d5e", +- "4573a56ada0a29d31dd6b4", +- "367efb55edcaadbb5e4f2b", +- "3eb189e2bfcbe180703cfd", +- "692adfabb87ce969422961", +- "434a5edb31a9c3c6a0243e", +- "77664e53908d00007d1205", +- "4b11585991700c233f6773", +- "207ff6a0da7f13b316c4b0", +- "328a9932d6b08a41a1df0e", +- "2f927b360b2b43bff822dc", +- "257564a39a648e17d015e9", +- "73e92ea015629e3728aee0", +- "4585b77fea18a0113ff609", +- "101d83882a81d0147b4342", +- "3addce3c43218484acf509", +- "9f0c9a93eecf4de349628", +- "465f3b1e25cde0e446d90d", +- "4ceae8c6ea35dc274647ed", +- "63137369b8d47b6c9c43df", +- "438f5c0f163a4dfa04e5ce", +- "313d62eb5f1104de5421a", +- "9f20b6fedc099ec575691", +- "24086a392ab75e649d3cc1", +- "7aa96a9fbe718c006a48f8", +- "8000000000000000080000", +- "57f0f7ecb2d7dad43748ee", +- "2a640efe463008db4ed634", +- "45769a307f5593bbf72056", +- "3abbf8af06f889daf59c4d", +- "6d16d10feb1728044f2dc3", +- "5bf1d1c71be0c49ad75d9a", +- "16bed27a9c005817ccf111", +- "4d7797e0b2f77a7ffee785", +- "3845bd22f959dda9197376", +- "1857324131e535b1b2458f", +- "6335fb7682400180e10d15", +- "50226b4aa22a0465ceea0c", +- "44dd70b9323f17568e4ba3", +- "217bd444ac8e9808b3ae5a", +- "6c9c81ea487986867245b8", +- "3827b84269040363e5e02d", +- "64520e4823f48c1f48749a", +- "58fc1b58696f8c22cfe344", +- "41558cae58d4f9a9001b87", +- "38910d873da8dfd237e8f0", +- "5eb76c6301d8a849a1903f", +- "3b6b43619a3730d5995ae4", +- "5f2bc99aad2f27cdee05f4", +- "385f7f48a7be6b46d108ef", +- "37d50d7838efaf03049cd7", +- "665bc65420c0b0a151c97e", +- "3d9abe3ec82d9602d9dd6b", +- "634d2540fd670a82f219a5", +- "616dbeafd6aa623c1a7d7e", +- "29702fc1f57fddc3369967", +- "25920b5c96127e9d8ab05e", +- "3a82369bb1a4da519bbd70", +- "7f216769148f0e997c7805", +- "31d809b078cdefaaf45266", +- "7a6ffa939b86786a779a44", +- "68e8a818d524954278bbf6", +- "181ee17c34ab8aea52c900", +- "7f42b66317d26c3f938805", +- "6f37e3a85128974cdfaa69", +- "45813314ca1d165bcf242c", +- "64add9cabf8efdd5f7b57b", +- "46a91d898168488fd5ac51", +- "669f4c5ec3934953500b78", +- "1e378fb7157cdaa6fc3a50", +- "39cdc5e6675ab081ffe60b", +- "1cfd8f0d12bcce21589c11", +- "6ac77b7cb23565518aa2d4", +- "4628eb872cffa1868b96ee", +- "23eabb9cc5f4086c74bc31", +- "445381f98a1f5669880827", +- "3f603c7b410b4c2db2c8e2", +- "464550e0adf269403f3e22", +- "3286bf159405584d85567c", +- "356497a9675898bccf4e79", +- "f26a2dc235ace7b34f4b6", +- "2e03d3c0794703b9605de0", +- "30a18088f5b2af396bbfd9", +- "681750fd18618072db2068", +- "69fecb55ba6da700789d7c", +- "2294095a6b77aaa416cbd7", +- "ab8e1dd4d27b02d09fe48", +- "7fe887d8c5fb53af79cbd6", +- "1ead89a48b89a75ebaa7d8", +- "10d0aa100248920b9cab77", +- "4aad58987821ba8f33d96e", +- "5c616b0d1a7bc591e70e46", +- "24b22771f303ef742b8ce1", +- "3eda92314bf1d09cb5b08", +- "692eeb4ff69b42372517d7", +- "494807a247f7ffab73a644", +- "23564d97f447b0091e74ce", +- "2b81c6e67e55aeb6e93a", +- "4669a41d4e444c1284d024", +- "61036fcac29b84e5ca02ad", +- "2625096534f2cf10d83a26", +- "30cb89652c8629b5e0dcc3", +- "606e14eaa7d60eb7ea925a", +- "17715e6c96cbe096c4f9c2", +- "42a81f5e10b5435180e643", +- "6d849a39e47370e473a913", +- "6116bef6a79fb2fc15f0e2", +- "31e8a39712fb3a7a11f909", +- "7511506751237c1959933c", +- "1e47a4330f0bce93db13fd", +- "97342eefdbc78b9689120", +- "b1fe15d9ac88348f41a87", +- "296a247b4b36d5c2a1884f", +- "aef2488954588af921ab8", +- "351db0dca5d74808f36d33", +- "25df9f831698604e15991c", +- "761e42e1c908c2f09e096a", +- "5e73615c65ae9e74eb1ef3", +- "4354f51efc9392bcd6e51d", +- "3f7d2ee6cb32c6bbeee194", +- "394faf6069c716fcf8a76c", +- "51d8b3e6fa0afa106abc40", +- "5aaabbd40fa78dd417edf5", +- "32d68fc9b8a9c17b315382", +- "6f24ffc802a08273be511b", +- "452816c1b54aa2bfddcc17", +- "142c59f31fc82fb58a7dd5", +- "7233f4136f3ace41bedb12", +- "2c18c59d95a21961c42f21", +- "7eb8dfe838ec5ef9d3ee21", +- "19915afea85d27cf8df109", +- "4e1162d634d0d5811a2441", +- "43e36b6d5a937387b49f6c", +- "295932427e10aface718fb", +- "5a2c8ca58cb488822e9f49", +- "622b540293b1275c5a9446", +- "753f0795048443573283b2", +- "3c2dca32abbdc029f4a212", +- "3fac097802d8f5fb376d58", +- "668b9e16f3948f582a5b94", +- "1a08e273719d3411178252", +- "f4af5a6143d8f44e48afc", +- "54ad7fa69dfd0b4c19f7ed", +- "65cf5014ab215afd17cef7", +- "4c3c570182916f32a6f96c", +- "2e8edc0b6dfcfb2392ce87", +- "3950591be73642bfa23264", +- "559752d946b02da4c2f657", +- "554f5cfd133bac2188241d", +- "3c1fd5d9a6223b2ce7b02a", +- "34c50fc58872b7325366", +- "3f8cb5eb229acba822b48d", +- "2aead0dac004faa8ab67e4", +- "144a6c20d0a8d5dce2b12b", +- "5efbbe073364ace07f02c7", +- "73862de61086c1fd5e0678", +- "78aded63d2f85ac948c449", +- "51603bcc8667777e664f9d", +- "724f8bcd40bfc9f1ca0c68", +- "5169af1cd74986160450d0", +- "5b6b96beb19fb0dbada937", +- "4b3a8d22fdb2c83abba9b9", +- "3ee5a2cc90e335867f0ce8", +- "33567e972c90754c86a5ff", +- "1c07c875b3a9cdedf7611d", +- "3b55da90ad9a162be1756", +- "339dd42a42d94342bf8399", +- "67a3f20bb5e980364816b9", +- "4b6ed31d0715952774511", +- "346f2a2b086e1b35095d7e", +- "1c614cf9a9d87d69154c21", +- "5e263af53ea065e044720d", +- "681a88fafe4e6f0620910", +- "1418facce22bf24a5e6a51", +- "786571b85b2768309c8ed2", +- "4d0e82bdf34ff4cb3a603e", +- "7c2e242ec2b95580a9b3bf", +- "54fc920cc0125e53a92499", +- "5696a96208101739ec4ba0", +- "636b15a893c301ff23f5f5", +- "4956721f6a2ced1fc736fe", +- "518711fe03b241cfb95160", +- "2e12097225e5783b545083", +- "7340d7daed67bcc5cd4391", +- "c075fe6224a62c1010fb8", +- "4bee7e482b290b1d3869be", +- "7e8fbf173741aea1b95c93", +- "5a1fe9fffdaa20f4ab7eae", +- "58d7de0f8254a81b5d0f5a", +- "38793daa7aa086d5e70798", +- "6157a651f2640a73f1f90", +- "7a6d5b1013830761b58026", +- "46734211b970f8a6448a60", +- "31b9dd76b9ed5f88dd4609", +- "46c6313b3914ecd376b959", +- "3e4e77e268fb6e7602e96c", +- "74d39a89d87bdaa449438c", +- "7684536a92d49a5af59f1a", +- "71215d6fd5e662d930a424", +- "249b7a4d080be0f548cabd", +- "1bea5758655f1400515db4", +- "7f45c48d28fd31ceeb3fd7", +- "1812bd60b720f8920fe80d", +- "27244290f774a00786ca95", +- "5566a844e8b1c572f69612", +- "2d678e77df571d7ac4859d", +- "e243f28e043030ee3a43f", +- "36a3336f56c91232544e8c", +- "179d4134709978c75bf6d2", +- "20ea7b335b7621642b29a6", +- "78c437adc3b6ce946cdd", +- "57dbda5c8b230a87030357", +- "4dcc6ee20983f0020ad69", +- "5725842b7246179896a39d", +- "6b1cbac9279eaab9b503c4", +- "1bc4e87c1100a2d26aeff3", +- "2d70f946f2915679b314e6", +- "793fd256b009d961487499", +- "ee9d6b69f13ec8f385e6f", +- "4b4c7f0a822537ff62cdcd", +- "48b920d23514d06befaf52", +- "2df30214a49a31c21380ef", +- "4c4424602626193266d943", +- "2d5bb2b553d4ed5bc0795d", +- "681fcdfe60f23e3be083f6", +- "4f9634be1ae125361bd4c2", +- "1ac96b01993da8677b2fd7", +- "4cd15a66ba5a2f18c8823c", +- "3828df7e9ab6753fb83dc1", +- "2071c913edfd4fd6daa6bc", +- "669e7a28f7a7c30460a80a", +- "3b22ed42f28069f29c280b", +- "5ca51c82df4def8b1588cf", +- "7b2ef1bbf74c4989ed5ddc", +- "40ebb7bac65bd815945e49", +- "4a469bacdcaf5434109262", +- "1a14d5b10cbcbb9ad3216", +- "65fb4589487aa5a16bd767", +- "283508a2ed137e839b2207", +- "7047889925ed18a885358a", +- "9d8d18a72607c311d6f76", +- "6a1d554c48496d8d543eac", +- "594a3b6273b1ed2b542eaa", +- "67cb80a136db30b9d60d6f", +- "5106bba99e6268d7bef3e4", +- "6fff35974d5f0b86faa46a", +- "5f7482c17a568566c785c9", +- "78ba33e419cbc7f177437f", +- "1f4b918e0e0d47c89aa2d8", +- "50cfa48cfb994ab2b77aa3", +- "1e4fdc54209c2229d7ffcb", +- "4431184365a358de692057", +- "7adeede80a05e40854e6e", +- "9a39acfeb3a1b4c2bc79c", +- "2d2a15867cf9361defac4f", +- "3fdb99cce8884ed923271f", +- "2d127e6ce6bd0f1872b1", +- "1124cfa0e070cf6fe3c638", +- "65b7b50446c767e6fa72fe", +- "3f0d18b1efb7248950daeb", +- "74fc1bfd19b3cbc9867bff", +- "34f0f61d6d8d062b6b9d9b", +- "260d6ba9444df4b85dfb92", +- "4f75e255d88657b2ba4755", +- "3c3f770d148b4692e25b59", +- "1eb56fdccfc12b22db2048", +- "3c81a9658bae42644c317a", +- "783c78a9025283e7188a8b", +- "7322c20a545b3845b54b34", +- "52d104741cfa5fa49fa55e", +- "6545cb112ea4be72bc80f7", +- "5bcd4418d37c976110b37c", +- "34d59de432c0dbb24ae55b", +- "4759751a101953dd340d89", +- "41e135572f9ce788481248", +- "185033e62f44aa85a7799b", +- "7047a4510b8c2107737ece", +- "381012de4c9a82f9ef1d72", +- "1167717f2d3d6238b3d21d", +- "2dac9d433ff98cf24eae81", +- "4f1c406e243fb2af67cd42", +- "685afb7cdd699d5a8f020e", +- "4c6a0f6de7e50ac450c0c3", +- "59f0f5465ff1e16be9bfb2", +- "594ae94ad86b9a719f54a7", +- "9225712405a5bd9ade58d", +- "3650c22d9c1072238cfcfe", +- "36a92b305c21171dd5a616", +- "5ba344fee845769c2c86d8", +- "3ecd8205beb790946eaa8f", +- "5f84ae1685459ae7e24bf2", +- "62a01fb38e5c88098fbcc9", +- "3c2f54ef99be42fe30d32d", +- "215dcfa076749277897e0", +- "36304be3f0777300703af", +- "147b65e0e829ca30fd88c2", +- "4e6a2eb425fbd18fb02cb2", +- "2ddac7db8be22e88618b58", +- "1c7831e5dec267ccb26741", +- "2f3b362f4b742eb82f8a34", +- "5505b22d0ddba48ae2020b", +- "522afb743f67b3ca56b20", +- "81dc886feeee4945edceb", +- "77c4b593ec648025df03f6", +- "4f0841f63a0c64aad5232e", +- "6cd2d14ecc5fc7c2c1b52f", +- "3827eb26c007235c46c676", +- "484281d930b8ee32f366f0", +- "25f7e1ac0d4153b6365c1c", +- "2600c04d980b2307982b22", +- "6b923e02dfb1da62f37204", +- "287593985c21589f72c821", +- "c8918a059fa77676f0587", +- "76201f5e0110544f41d9be", +- "770b83b55e13465063e5a", +- "412ae12837a29724832877", +- "5cd8f5f9eb6806f67db613", +- "4eac7fa0d6b168c3bec4e3", +- "5d2972b12e50e727a2721d", +- "5517c01ca3bd4da9aef0ad", +- "11ea8c21342ce42ebbf9ec", +- "413f256a64feb56e242e90", +- "29f3402339c3128a1e2c1", +- "51eb860c87e1e5b70bb623", +- "369c62fe5aafda2a550912", +- "2674d42d16e97493518d2", +- "6b105359a1a68d94862411", +- "527e969f4f6eefe6289ece", +- "7ef4c5361ca08ac1cb6216", +- "3f3aeb0a1df198d9c95768", +- "152dc9fc63d3c1eb6c335f", +- "7754a6a5fe6be54c00f4c8", +- "222ea07afe042cf765ce5f", +- "1086eae159340e441fa0a4", +- "6c03f094dfe48c9743be89", +- "1fe069b8c57a9fbe5f6009", +- "185254fa056de9af1a6bd2", +- "3018be3223f82c7f0c9ebe", +- "48a13c03c03191471f1164", +- "3e94b32e50da81bb5afc03", +- "4d08f00a99d95d0043cc4", +- "4636e2935765905adcc41b", +- "4bc9c371d07d4a025a739b", +- "83bfa3efcf5b970ad41cd", +- "18bc8168956ccd63ac68a1", +- "366546b3844bf45b7527a5", +- "363a65fc59f4a8184d3d78", +- "5ef30e941639d08bff19c4", +- "5d66f0d9dde7339dbcd24", +- "33d5a814c00e980600811f", +- "5ccbc128a5721a5dd853eb", +- "298200a0909b55e97005f2", +- "703a6cf857e651748dc09a", +- "547264d2566596f18bbb5a", +- "760b4f231686ca10ea6ea9", +- "49a3641c16382337f3c777", +- "33525d5afa91fda7d5fea5", +- "4c028ddef259fa2c7d4868", +- "575d4696bb0e4edef99446", +- "6da26efc24e2d57c26c090", +- "41e1bc8a63d042ba714c97", +- "5f24e71937dd097c0e8678", +- "70b9ea82f6a6c02939510c", +- "738abcc274fbdc4ab5efd7", +- "255358696f5e9ddbfa467c", +- "6e9f47f009d809f84a56da", +- "27c6ad85e824da21b1cf9d", +- "46a78cc83c010019e8b2b", +- "6b828169b3ba13bbcddb05", +- "3f5c0a52d2b564cc250982", +- "63069f756c8115e5fc4c52", +- "55744f373c8b8520d62370", +- "43c2ec8afca87567ee9294", +- "6354a865e088a0488f2701", +- "d165a455f92b5083e0627", +- "7252d249ce8cd4fb010950", +- "79790e81fd0d2b63f9d1b9", +- "5e147628ce9e9a9493f495", +- "37755ea728b820f0ab2bdf", +- "184e317201ff0ac25eb6e6", +- "178cb915d7350e37948956", +- "5ab5c85d4bf835440ff962", +- "1e2bd3f41ae5c299bb720f", +- "722f9dc13384479d1c4455", +- "2b514798a553e5bdcd8ec1", +- "51890cd139740ee3c35339", +- "75d3c5c33e5a2023adfd4a", +- "15da282cec1859a9591ab9", +- "7fdd8bd273e4a717226cc", +- "3915d17a2935e69936525d", +- "78acf4423afa2cfe1a6fc1", +- "4f140e806dac75cc67fa3c", +- "37c6007c4a0d223bec9e13", +- "1ae82d51e4845bef8c5d14", +- "65a0cb312051f321a95f5d", +- "42aa10dc273607be680d72", +- "3e26ac2b23b8b913845e11", +- "30bed73f7a94de9252a38c", +- "750f475708a1369e3fcc26", +- "61ade8e7a0bcc40ee4c2a8", +- "27b94ffb61590cd0bcd89f", +- "3f1e6a84c6b836f245c178", +- "239309f551f303d0037140", +- "211dcdb529a6bab73ad8a6", +- "7869636f37e63a4ffff7cd", +- "150365cfcc4a012a673c13", +- "2791e42c7f90ab8d4e7fbc", +- "1501743c447af65014399b", +- "2244b09bebeaafafb0c481", +- "36c0bf9a937fe6ca772d0d", +- "419e79b02e607a42e6e091", +- "400f76e25d392f347d4911", +- "5ba0eb3a703d0e42cf4094", +- "2ccb45ece6ec9abb9396c7", +- "44741cea6d95eb07e7f01d", +- "2b3c80a17ef583b6205fd4", +- "43fea0cf26a3e256438525", +- "59a7f220e101601c1d1b21", +- "24974593a8d59a89588659", +- "14ee39af97cd5a57b0e17c", +- "4807e0d9a38d358d8e14c5", +- "64d8389dc8d1b8910fc0a", +- "6fd170c2ab312a1f05d814", +- "68c4a816c641b5b1090781", +- "24e71c2d01e956269446cd", +- "3bec30574a99903f587887", +- "2b4b238bbabe3c70748eff", +- "4f0024b5b5580d91de0338", +- "646ce329dbe03b0b8312de", +- "5ba2a8023e5bb50b06e03", +- "19537a8ee281cd28d6388e", +- "10aab6ed7d1b631aa4b45b", +- "6810dd5945e01cd2c90841", +- "6ac2b70efaf88fd42c4044", +- "aa480c5cc76379e0cd2de", +- "64532524c99ecb3c365a41", +- "321e3fdbb0b890caadc570", +- "54fb5f18b6d001ef7be401", +- "364f70dfdbb439b78e5236", +- "9dfe57d1a9a3265476d14", +- "169665894aa2b356779b61", +- "127c199cd032273073f003", +- "fa33fcce55fe6a32e0915", +- "264e4b26d39119bcdc0985", +- "593c091517fff61973996a", +- "77da1b5a2124b6c9e11847", +- "32e5682bfa3fd95762512b", +- "72f7dab0b2d2a35e62478a", +- "4356ada1ada2921353892", +- "aa2cbd696160321682a6c", +- "7f8bc7233e2784039454db", +- "22884c181cdc222cad8e5c", +- "7203cc213679d179eabc35", +- "78a4c0445f77f31209ed17", +- "58b95d74eb4e654735bebc", +- "6a7db7fb47d3a18b620d6", +- "63942ffcaaae948e9056c4", +- "a2e07f9d73c5e3effd370", +- "6667dbaf666f92bd61da79", +- "4597c1546c899a3656689", +- "5fc3c4b7f7ad5deab829bf", +- "61170002cc409ddc34946c", +- "736d05572fd4ef85eca2b1", +- "1a5853834033d093c63d55", +- "bafe681e7e52073b86d32", +- "1c9f86b8742e14b6caf79b", +- "3886dff828cc76dd830466", +- "3b98704f287b0ee4e659aa", +- "581eb843dc9919f85a6644", +- "697396e6df9539532709dc", +- "63606d420b8e8397875647", +- "43b23b71c3202b31d91018", +- "79486109c44990eca52723", +- "2102dede4011c5cfefb7eb", +- "235809998758cf7e4acb1c", +- "233860a2ed2d566e131431", +- "305213c4b30a9e8be153ce", +- "7507998b275e3c9bd4e10e", +- "64f00973a0eb117b548182", +- "1416e580fa8bcb421dc6ae", +- "36735381ceff20a76e32eb", +- "45f5960a9db06a62821bf0", +- "8649a3995ad114bb4d72f", +- "374a0e75bc76f0adac7af5", +- "6565aab9eaab16f7430411", +- "7dcf3e6b7d3d02033c946d", +- "65c9be7a29bf45e5992a7e", +- "638d0229863032ef249643", +- "297ac1b2d19eb1e6e32d87", +- "6f339aa4d977875b1f1f80", +- "438e5a19094bce43b5b5ae", +- "4d8b0cd0d3401fd04e351", +- "1b5200adee3adf189b056e", +- "1de1227159008ec9b59ac1", +- "75266a81bf7f77865e6f", +- "9377e0e5c8d0de1856f6c", +- "2fd82a7276af1cf8b372ed", +- "6dddda58fac4e8afe0c9e7", +- "1d85b86a2f3f20e2832ec7", +- "35accc5a1e3fb474285daa", +- "3aaa2c73e60edc333c904d", +- "740f62900b9523de37b6b0", +- "7401d0da6ddc33225bec4e", +- "3e985c35adacaa90f5715b", +- "62c36a3627b9d2b3c18de1", +- "7b71ed8d456ee35292c960", +- "2648a635c5981b8daca07d", +- "2c33c53227ef5693d69f36", +- "1540f88099c93111d6c8cd", +- "5d9383670de64bf15eb49b", +- "2b23443976252ed21088d1", +- "7fa540fb3906a29b513bed", +- "2f88b1c87d7d02f6c2614d", +- "1976a9fa25af6d21cad47a", +- "444a50dba1a2bf390bea1e", +- "11c773ac555182d789142c", +- "3b929cf6fdabeb45375120", +- "15bf0eb485af1135b0e453", +- "126dab6c2bfc9b83475847", +- "c06cc01bfe2a9b427102e", +- "6a545ca829ed278f6ee7f4", +- "23dfbd70bcc040f36d4c8d", +- "378ef780c4d32c3f15b3c3", +- "7b115c7c405c6e4356bac1", +- "1a789636807476ba5bd789", +- "35fa1fca985387fb7fcd19", +- "21b466e3230d809af7aa6b", +- "4d1a8b95ded29dc79fd401", +- "59bc93698864451646a053", +- "7d6f33ec4a123fa281cabb", +- "168ebadbade1cbc44496d4", +- "413278937e6487a988805d", +- "55407685456c2cb8311d26", +- "79d07c6a6298d34020dfe7", +- "65ab167d8e02a8df26439e", +- "7dfd6cbe22024260a179ef", +- "28d6cf3e20845dc7283634", +- "648ea8b083a9828f8af17f", +- "2f64ac4f819f8343111866", +- "17da7c01f870089371d6df", +- "50f371336a648ade74999b", +- "1de402b5c6118ec8861aad", +- "48ede8d4a9a88f7613388e", +- "5f70485b00138272e9a41b", +- "65a1f7025bafea5088145c", +- "68d439e82561e55cbf1eed", +- "3d8509040aa8739f034dac", +- "2dd21df4dbce295378bd06", +- "111d6b945ff69be530cfca", +- "c1fd8fe80d24243e7b5eb", +- "42772160e3ea402851c9c6", +- "49374e550d8b335cb151d2", +- "71faf2ef0654e97e0c23fb", +- "4328d17f00529ea0fead97", +- "546ec9785ee72a2a72d886", +- "5d50e00035655b4d4ddcb7", +- "4b53718060040e8179d82", +- "282a80b8de04941c547168", +- "73673685484b4f3492976d", +- "5db729c46c687ddd7690e6", +- "2cad73640590abfa319b6a", +- "21ba4c5acd17d59fca0ed6", +- "186605e063004c7e4a9375", +- "2f687a83227d2d20f3b227", +- "30abf45ef025352e681192", +- "6a76e3eb445dada83ceb12", +- "7146b897c3d924725bd0cb", +- "14b68001dbf2f798322812", +- "54112eabbed42ad31637c5", +- "467db4fe225847525ef33f", +- "25032025485a4979b90394", +- "bc149e667cbe5a17ed77d", +- "ba357a389bca1484d7e54", +- "34ddcae84938327a3cbc30", +- "2e1709b850c77f2d508334", +- "15db077682cfbf170ce259", +- "280bf57e6ab95037683d33", +- "14f23f2aade2de50fb350d", +- "57d0cd94e03404b9cc57cb", +- "3282cc1545c9e77ce08abd", +- "567508a3d2a7b4fe3b395b", +- "16d8ad198832545831c93f", +- "7d88a8aadc667bc60fcb2e", +- "65118f1b7c366a8bbffcb8", +- "6766e290c73bba54bcc710", +- "2aad9e8261535baeb20b71", +- "4ba668ebddeaa069043875", +- "3f98705d2cf6346bf00972", +- "541a69af40655a83e366ca", +- "215c7e9a1d796b37a56336", +- "419d9a35dec3e5f421baef", +- "163690a8fd51b113410cc0", +- "1d165ccd9ac1e4efca4a32", +- "1d78f3d7e887debfa04bf3", +- "6b421c0667b336723fc0a1", +- "2cc7417260782c0d2394d3", +- "21887a11425a371d17db86", +- "5be7c40d96f7c97153eaba", +- "2e061928a5c3ad9bd6d9be", +- "7b398d970ad745817bcb61", +- "f7cdb22a187815c33c5e0", +- "a4f6b861d9a460f5b65a6", +- "68d4b88b77dfae0da7a5d", +- "4e4199871aec7ec1f99895", +- "68f5ab17da1cc5dda22c36", +- "1901320882ec0093fcda5d", +- "76dcede51c5087d374b20d", +- "38c3b4008c9d0442e7b602", +- "1edb6eab35de11d4922150", +- "5c53790457f0f66baaae2f", +- "664ad54353749f2ad36105", +- "45638582a87d07b0339df2", +- "18b021fe09fa8bdc44e567", +- "2acc282877d9cac38e38c3", +- "7bd177160999a650655c6e", +- "6717c0177a36454aef446a", +- "6334fc3ff70d17dd837781", +- "499a1abb2a1381278175e6", +- "14da57f8c43c94d5133d50", +- "4a1381ccb93c34dc44cab", +- "7cb4b7b324b314195807c8", +- "59f2c50a64b0c2a3e77442", +- "426b930b670412d271a091", +- "38aafca45b266dbeef6fc5", +- "35d63c19d36b85b5e96648", +- "31204f9f1e25342bbe28db", +- "560e1e8aafcab315236068", +- "5b80c6e1a5c4dcb3166335", +- "1d41ed28d87d24620da24", +- "38271b1467ee062bfe15c1", +- "2b7758dc0945a30687fabe", +- "4fb33de912dd8d2f8b8081", +- "4d6d3f3602597781bd2ea0", +- "5b509a0106f1d06627c353", +- "7ffd3daf76b1e818134f24", +- "858c45884b129dd66817a", +- "70c9c69419338ba44d6b8e", +- "17c5a39deb46d102235506", +- "2adb843a58d472c17edcb6", +- "798b816a4dea5ab964c64a", +- "68705a826f80224f09c337", +- "b720b9f07a6b1f41654e1", +- "44bf623ac807d4c96747f7", +- "16eaf321bf41ee635d6d46", +- "37107b083cae132372e4d4", +- "31e9d0607a42f7e54a8c81", +- "4d23f5ec809ab5057c2705", +- "10a61010d82426d21109af", +- "1ba28761d3577e14d38b38", +- "c57749387141da5f8fd27", +- "4afedaa595cb8c309d3fbf", +- "3fd90efbd4f0a4e173f589", +- "49b4801e9a2a64a27691d2", +- "7255e6805e164cf9788cce", +- "62ae26dfe2273af99c4830", +- "7e185faaca849a7f135848", +- "10cc6c74c4f9fcc9428f7f", +- "152b3e507f8b7898991275", +- "15a3be22e80e0f6f498608", +- "54e5b2458bb84fd7d4433c", +- "656c647508629462e9a821", +- "4c60164f9602341914167c", +- "2a17c7297a08a3839ca0e1", +- "47efddee37fa0ef6a72a47", +- "106fdb273227296116f40a", +- "524a00dd634d2f57ac7c6e", +- "1e6b9387cb8fb6494ace9", +- "25d293607604db30df2e4e", +- "2a07033e306623cf4e37d", +- "178e61138a7396d55d224e", +- "75aa7d0184dbe8ff376045", +- "421e7c19466e0847ffaea1", +- "732b807455afe5538cf678", +- "1a756f67d7e3e663369a04", +- "389f7a523536bc08e2c52e", +- "3a0c64739838b20476e0bd", +- "4346fce81f02878bbc28d6", +- "2f63eb0fae8122aa717440", +- "59308e5db85655d5ae0c4", +- "26b549a59dc35ee5ea7b82", +- "4d89a145aa9c4acc9cbc8c", +- "71b31c9be0276caacd1146", +- "718c4a4aea9ee0da236930", +- "7222af7c6bff611029c53a", +- "7f4b55a70795b9d26512fa", +- "32a9d4d4f421cf83f9237a", +- "53cf166384d9f967e4ee4a", +- "4566810f52dbdc6e52d908", +- "308ab3a2c4d7f4df4b6a31", +- "48a0fd415822566b2ecfbd", +- "242cca5b643a5f97a01a20", +- "1c28b93f693054a06fb391", +- "5a2cdb29cc6790b45d1f04", +- "5e8a5f959be2a17534c9bb", +- "3fc3e580d2ad754a34bc48", +- "6bd645b33c041537bb5186", +- "3019d2c9a4a70055fade00", +- "142fa830b7ba88d08608e3", +- "47226da695602ab6e77894", +- "70044b2b283269e2d14166", +- "46ef25878ebd3ab0b864d2", +- "557bc3fd4a1a6866c5d19c", +- "7b0ba619013363524f168a", +- "48b438b41e1bc7e58e6ef2", +- "39a95d47cf87d7d7d6bc8e", +- "27c1b7b41af947101d694d", +- "492683ece46681328f9912", +- "3ff99310762f37d685ca95", +- "4cfeaacecd47507ead712a", +- "38a39ada5dac01b5c2adf0", +- "dea3527d089eceb4c22e3", +- "7b084b907f4fc0301dbd5", +- "503f8d64438b7a99b8de08", +- "1d9a776cbeec9f5dec9407", +- "8a006b686db9c86eb0756", +- "144303d93b170584849f6c", +- "6b5617e9152db554d999bc", +- "1b9850e5f0f8fec4d967b8", +- "20fe6d6e332154329f831c", +- "5cee3684d600afc7804db0", +- "1dc0a99973375f6c4a4583", +- "4476f33d15e77d3ea6c712", +- "11f2c34fc87060adca2837", +- "71af54a2496a076b559a6a", +- "2ff21a8761b9bce5f34f74", +- "78b5c76a3ee8c2ef071fa1", +- "5738f30e5cb40b4ed83e60", +- "59fdfd7775c9750e48d811", +- "7b609aae44a59cf088c570", +- "4a67b54dcc404423e6b631", +- "8ea7f70a71ad46c0c260d", +- "5ca4bcb81d4d03018b177", +- "169566a480e42dcc8863ac", +- "789addf402241ff646d77d", +- "13b16e69e645c1703bf7c2", +- "16f732c5fac8192629ddb6", +- "7731327e4c6ae66c8e47a1", +- "cb8a50376e8204b8b5ea9", +- "18eecc5a940548e7c51e57", +- "3ca90695aca0fd32b28871", +- "728caa6061cb6ff29e6b21", +- "3d66483aa6674adb6569c3", +- "1208a98ea1dd68a01d3ec8", +- "5186a4a6ce8351b40466bb", +- "79c75783449d733d93b4a7", +- "52f87910ef7e6dde1f16dc", +- "57aede4ca861e5051b15ea", +- "70f2550983dbddb8957b2d", +- "720aa7a7bdeaa025a23a54", +- "3e7db1002a9116a5e20032", +- "25d1c185377c3cd8e704a2", +- "794294f26a938e1caf3c0", +- "522619b83283553c71de74", +- "4dd985f2fef5c539fa6a96", +- "442eb4a36ab0287728c1d2", +- "2a2b13112979d27489208e", +- "4d43f85ff03e3cd18ef302", +- "71e916ff79204bdad49695", +- "270dae1c5ccafaa07ae8ff", +- "3a2f442f3b3a9a2af00b28", +- "3834a1b7acb0f05d9e53ca", +- "5ca6e41b81529e38a59f6d", +- "3164747c95104338a78b5e", +- "b66201b62ddf6d13c5534", +- "3dd366ce71f1fed428c326", +- "12413ef53ba7fc6fb5cd35", +- "20f6e36fbf07174b587397", +- "362261ed7c97591714ea9c", +- "1ce2a05bccecd36df96b64", +- "358d745e0bc4be1c3f4586", +- "221bb5afe07669d916e136", +- "624d49c04a48d42d76c466", +- "a3cfbf8b779e15bf28c99", +- "28eb082844c0ed277d2520", +- "4c7d0db8193430b75f41f5", +- "3c9ecb18a83b901f901704", +- "735a03f218370f8bd85ee7", +- "4db4f1a602cec485019670", +- "70357dabf2c34c8309c723", +- "ecef39a1ef4b4d1e8c6dd", +- "2cfcb08879a9aecacf316e", +- "1175d70c2c07855db37245", +- "786d54b4d5ce74ddde20a8", +- "ff53eda132c9a3cfecc65", +- "728cea43531fbac95263a5", +- "20601a054af9d51633fab1", +- "127118c35aaf80dac2a57", +- "1db83df0a168bac450e4f8", +- "39c167fbee27f65e96cc7e", +- "2b90f954efc9f58a07a363", +- "63f5fe049f46d509d141d8", +- "75ac7a48082d5afa148e7a", +- "569bfe59efe21364bf57e7", +- "475131d01f3e6dc3b169fe", +- "716991a2a17f536244885f", +- "150c29ddf5483fb74be06", +- "65fe3a22c7d35ad3f875e7", +- "1754f51aa79c3b0803bf00", +- "a4d6bd96f61637d730c9c", +- "460372cf36a22fb6b9641e", +- "43dcb4450a256b9a0eb673", +- "10fafca3d5f71faff8f1a", +- "177f43e8d62e87c66b9da", +- "420c1c0074adbe0616df4b", +- "1e39f05dac576881e6c295", +- "7234cde8ecc6673caf864a", +- "661787ba011711628186b7", +- "6473dbfbe4a3f63d08e3f2", +- "62b2e70d411eb11bf0a695", +- "2e684b7951a2526d838fd7", +- "5b4aec35da23a27808974", +- "51e267e9a5a7684ebfd343", +- "36b36922114363ceb85a26", +- "5687a42dcd55b43227f657", +- "3d28e1c12f9c60e500dce7", +- "6bc6acd592c0200b749e07", +- "773a63e6b7c9e3bec91272", +- "536bfe32ac8da07b253be0", +- "2146fc84389596cf6fa8ca", +- "12a2fa8c4d06a694b748c6", +- "49ede33966bc3f0dc8757c", +- "4f787847feba11bfcbc764", +- "b2687172956319218655e", +- "4bdbd2765933e2b1d70563", +- "1ef9edb1f958cdf81fb9d8", +- "6e8b2732511303a48ef731", +- "3608208e4497b40a62b3a0", +- "2c4bac0a0cf06ff50ff71e", +- "784bdef1566f244d4ff44d", +- "5cd3a1cc8bf78e4c7e3747", +- "418b73330a3b4d1a80474f", +- "5f87453deb48ed6c9a1afa", +- "3d9131aa5802e27a83eb61", +- "61539cf7b388689e7a260a", +- "260213253056e29f0ac6e3", +- "2768a7a783d9baa4e5cce3", +- "7e61e3317d07a1009894dd", +- "6927c4b12865ac8f053dcb", +- "352d204330140b3786230b", +- "67ae2ace35fde529154a8f", +- "7e37a126be9507ba4c717f", +- "2306ed04565a9cf9fa84c2", +- "6b380bf5d71fe523ad1e4d", +- "6aece787aae5251b57b3ae", +- "7f2209419e3163fbb4cd8a", +- "376c7a8d0fa0abf4c0bb7c", +- "39a26bf8336439ba9968b4", +- "620c14b60053b660420c4b", +- "19675db116558d90bb4f6", +- "2c16632a312edfedcc7f72", +- "1945686d70d9df98093dd1", +- "62e4e44df51bf11734aafc", +- "5d3293ca54de6a3aa06b08", +- "610d07557d991d9db3dea7", +- "6b25878a1ec102b9e883f1", +- "5d29345f097e1dc041bc7f", +- "797d4c38129f52836fa5c7", +- "5bb2eece8c95a515d2e2ea", +- "451e904c04882b739d233e", +- "4dac1ce4b87e60431b8a4d", +- "2f8592e02ef759cdd34c72", +- "7c1d3420db42a6ffd37cef", +- "4b0d1ff6297b378945b906", +- "744db8f7e25f69bc47f2cb", +- "7fcd5bd9328b9f06223a1a", +- "37f7d323d5bf332eed1bcd", +- "629e9c894bbbebf06d3299", +- "d427f0f9d14ecf4c54fbd", +- "71e1aa5a9aacb38b66f605", +- "361fe28e640ec02ae49613", +- "551b691726c66f9ec1f9e8", +- "523ee7b96bbc2b0977b4f", +- "52e6bde0fed2ecd82f7bf", +- "3a4a4ac73bb38c0c48aea2", +- "207cf80fa76e8708f88dc9", +- "2bfe7376e8ab62fafbff59", +- "7b8ff43621b7fb13c3edd2", +- "726dd56f61c4c5016201f9", +- "3915c71f3b447b64ce4513", +- "4781781ebc739ed9d4e35", +- "3669984e1ddcb753afb878", +- "6c8071fad8933706efff6c", +- "25330fc3e5df50eee77cd4", +- "316bc661e89aeb9e7e20a6", +- "2a035934ba5fafe2ebaf47", +- "515a0593d1e619118d226b", +- "72716051b13a2c1876c8ef", +- "98079c36403a029b3f0bd", +- "388d8c3c958b6abcbf6aba", +- "3d9a1023138b0e9cbe7d70", +- "7bc0acaa724475da5a8a83", +- "4a266217d4534cc588119", +- "62baea1b89700a3953e872", +- "5fa826fd6352f83c34bb5e", +- "71be60f1312db2fcc7f045", +- "51cf9e84f5414c7907e79a", +- "1fc064c4398ccf6bf7b1de", +- "70594464b46de9acc11f02", +- "4de3353d33028c5f557394", +- "15060a6e69612092d45768", +- "2142584bb5cff6c1e5011e", +- "7eaf34148ada80711a86fe", +- "64f201a4086e40b2a3a19d", +- "2d794034e6ae324ba7041c", +- "56359d56dcb06ea3ab68ec", +- "49d6a78a88159326775c2e", +- "32c2902887e1700cd5dddb", +- "c8806bb60205886d4ff9d", +- "c0ecef4f88f5957d4b1b", +- "b0715d55fe0c1edd9613b", +- "b512df0270e6ffe2d4a9f", +- "563e208513fb23ff9ca7d", +- "54c245a123767ef7f22e33", +- "5e83dc6dedd0679793feca", +- "3c53d6131f8c41d5d7317b", +- "349470b19ee7a8cf922b33", +- "432c0a15a9dc31696b79c7", +- "3de21ce46f7c8be3bab3b9", +- "669f3588d7a4ca7ee3dd1f", +- "2bf32012cc6354c709ad2", +- "2e5ffe59b5dd3843fa4c17", +- "601b382825c1515525a19c", +- "78dfe864170ab14a408743", +- "6ebb0dee9291bd90cd2215", +- "6f52ff1c7f6dba719401b2", +- "d16f53a28b7042d305524", +- "67daf6ba4dc4d74236df77", +- "72118d192add3aa4c1e0b6", +- "7e1ce3bec1e98dd35947ed", +- "2330589e6c22439bef95d1", +- "214d49f3e2681b232cf62e", +- "ceff6274c7b15ae86dcc", +- "ee736adb9b9c1860d483b", +- "550e4c9178e5dead2f815e", +- "651be8b59b15d629ab774a", +- "655b44d3a92231714b14c8", +- "1a88cb781abea4a70cdfa7", +- "7a520385f587099a8da6a1", +- "42a1f9791054781a203d9b", +- "1aadb770481974ec7ba970", +- "1634b76faeb97237505ef4", +- "577a2773ebc9e2412cb050", +- "68075aa010a2a7afcb2078", +- "e5d22d0ba9e3194e2337d", +- "68c1092ddd7cea180b7a8a", +- "1f6a141f6eb54cb95d54af", +- "6db9060a2078f4de4b4e1b", +- "21ac3ebe991cfe1bade37d", +- "45e67b0777cb6facf28d74", +- "398768a52710b109c92dcd", +- "6c65a41601a28b4854db0b", +- "3fa82c77c11ef3ce373a08", +- "2219a8eabaec2cc4da44cf", +- "25b286320c27c0f91c388", +- "c663e7994203d116af45d", +- "373211f704832f37df113f", +- "33f6606f82062475e2caf5", +- "77ae05c9ad4bb1a82ee6f6", +- "72f290cf9ea470dcec1318", +- "20cfa0c6bfbdce5e399a70", +- "384ac895940651e4b3df31", +- "2a6da3e3f6425cc4caf185", +- "3559d5470cc8be88bbee52", +- "731437b69ca76a93992caf", +- "31f0df7953457ce90524a8", +- "7fdefc35775213402acc91", +- "246e8276fd64f7af18402a", +- "1e604eea4a6fb7804d131c", +- "f6074b1e17e08713a2a46", +- "23931a4d64503bc81a5a33", +- "6395a035a6a5e009dcf586", +- "23db937264552bf6dc2858", +- "50e45902fe1a308ec88670", +- "42e82d8613957e0acb2b09", +- "3d50a612150493864e2df9", +- "1f08599df3ce28d2e2a99", +- "172e3a20b269ac416b7186", +- "624f69e6f91d2b9574cb8", +- "33b05c78a18798e4462d45", +- "5d5e844e1fd78c36c3341e", +- "5a1b57c203d09cc8a22696", +- "775bde6bde2d0aa4187fe7", +- "4be11f1cd60954626093b7", +- "571513666bf5e4e0b1c7c0", +- "30e484fb4ce5927a937373", +- "6ead11e0936e4bb4e855e1", +- "14b5583a83133add54d368", +- "361de61b4e6057d1cb2274", +- "24364b397921eedc03333e", +- "3f26224827d27901ba392a", +- "147a0d7fc26817e7251ada", +- "4debfa77d5d5f3fa106f86", +- "1f8b63c5fea99ffd6a5348", +- "59dbf0c177e94a664cfe3b", +- "656e5b10b9da085176e0e4", +- "678fb8bf7f6342c5764339", +- "2cd2d00d4262f35754bb13", +- "67b770c97867478cc69b37", +- "bac1f8bfa0e63045ec3ea", +- "4303859a49916073987344", +- "322164812a5696cb2322b0", +- "50148cebf8644fa7375aa", +- "50b37142bd10ca63ad3866", +- "5a86321f172c81fbf185ef", +- "4972dfe88d7e4fb02ffe72", +- "3aac1aff3b6e14d31a91e7", +- "6d575f1601945a3ca29eb8", +- "6c290f053f3f46327ee8ec", +- "73040349f8459e94069012", +- "2dd44a6d1765874cf1dbb4", +- "52492b4a4856d777ca0682", +- "76d72d56a09f253d257f0e", +- "6a4862d59f8198b4ea0fd5", +- "ee2c219af9300476a7d41", +- "60548a10984139e59f5d8a", +- "423813f9eb92bfadf14d9a", +- "6a3f78db4e25085a772f7a", +- "a3d31a1daca53878fe695", +- "1c24006c67392d350aebe9", +- "5baffc06fe51f5caa49a4c", +- "6f4a829757301eb1143585", +- "202377a9328fcb8f661a5d", +- "6506edb4005521bcb61671", +- "208dfefbc938eb8f166f28", +- "2f8aa359ac5538f4834ed7", +- "6b36296c1bd668243e920e", +- "7856c391e8828b90a94afe", +- "5728f13fbf1367c5292a3a", +- "6db3eec1da4e57eacd7cf4", +- "520f0b6932233966b7bdb1", +- "225461e731f47cbf2cbf5f", +- "15bef1b795296c7e8862d0", +- "217d231f2ea4bf28c97e44", +- "31e4aec6d42e52c762e301", +- "16103ea0d454ef686ebf4d", +- "34470b1eee2f871c42ba71", +- "5d172643cb569d9b2ab357", +- "45838fc0d9bd4e814df398", +- "520d412f22645bfa3f3a33", +- "5dd2532249188dbe3d2539", +- "336699d6c6f15f6ab914e2", +- "48384f03b178aecb456dbb", +- "358734094106c4c77371f8", +- "13705ad9594243161047cf", +- "9cc0a7524feb44aafa989", +- "2f615de4e96f8f9837947f", +- "4f571e68d11ba0c201ec2c", +- "1c7c6456335bb722881302", +- "56f01f51a5be66f649b1d6", +- "4a2416a8cf412f996e9654", +- "5593dc730a3a85d6ce77d2", +- "70628248b6cda7311de5ca", +- "49212e86ec70f1b328e11a", +- "3669075c083d3a0547d7ee", +- "7c64411c354fca180b974e", +- "be2266f15dfa6e02e4a02", +- "69110081782c350722756f", +- "5370ef9f2399e3c803b5a6", +- "4277911fa0e430960db091", +- "46d2651ce40dd1fdd11e69", +- "65838019d10030d2edd34c", +- "79ae8d3a65221805ed59d3", +- "4762e175d924ca1dff7d06", +- "226f7d490aa9d47314570", +- "673a9bc1330de8c0b0abe1", +- "a80defe299bf7c4d81738", +- "1916345f1ad90cf48c6472", +- "13cc5c5fa7afb2b7468106", +- "656f70349417ef562616d7", +- "520db901eb8309582e12a2", +- "4253e27061630b9343ddfd", +- "43012f86bfa02bf0033ee9", +- "51524048af5a6750b1955", +- "37a4477749686070e7e049", +- "39f7a72e1daced6411b1a6", +- "4a98326f880a44e2d6ea5e", +- "574f95a475dce62a3071ca", +- "23c20aae79c2ffaa75a36c", +- "59f67a0c66d5e9744004c6", +- "25ff556cf1afefe2cd2ba9", +- "41be4715ccf6dde8b12086", +- "5e9464fbce6027257d92c6", +- "5b57bc12988f27dd0ed418", +- "1f1c7eef9d0f99e1e209db", +- "1a95aa2ba56c053acf7e56", +- "6f085a8f46a66e79fe4f92", +- "728aa131a37012e184c2b6", +- "21469f9c49fb4d2fb54baa", +- "67d12b5d61741b8623f378", +- "2a1abd32897155b55014be", +- "35ebfb3fd5a71979daee0c", +- "3c994e655edabd5cfbe8b8", +- "b5f14620587f1e8ed5a45", +- "4cb0c7462e90f28fa251d", +- "608a29bc043b54adde90b0", +- "6337453f9c180b8ddb37c4", +- "60e351e7834b181d30a00c", +- "15324434e27844cc4fba51", +- "259839d29faddb791e3548", +- "198d839621f761dde4f853", +- "221728332d3142e3346be", +- "48cd6ee15c4874d342b21f", +- "7964fb4049b23d750b6f0e", +- "365cb247c96e7933341e76", +- "4f7806a65676c896ee7db9", +- "99539a5120bf06fd3edb8", +- "4374a87512bdcb27925ebe", +- "db7255fca12f37c452ffa", +- "4a2cef4e3606d1b9422334", +- "b8385ec48f904d72393ba", +- "71d26320321cdb1dc925e0", +- "1f8889a7c0321f5279b37a", +- "7decc101d84d7378c8efe2", +- "1526a67a2f54717285cebc", +- "4a292844d7aa26520c09b1", +- "5edc4541d1854504d071a", +- "44f34a642236b1e7e4c8fe", +- "87eada956963224c06418", +- "76393b1564fa2cd841480e", +- "2aec8efef6c41604b67a83", +- "2644cda468b716b53c99d1", +- "4d74065738715d35d47743", +- "1118a89d656497538996f2", +- "26102582959271955d45bb", +- "1318f3d7743d8ee4ecfdb2", +- "3128342c1cd21185c739db", +- "7568ac37df7da28c47bab9", +- "be26e79f27c2fffd5718b", +- "2655fc5da8cafdc10e8c6c", +- "6336954989b8a716380f64", +- "2f1dd3930a2948f2187f86", +- "90bd6d6fef2e358a664bf", +- "675948e6670907b03227ed", +- "2025bd13134bf0ca69b0f6", +- "509dfa92ab81408672391b", +- "5c699bfc1a98ced38d7c88", +- "14816e04a6b799d1ce9e1e", +- "61978b574cf8f6d53118d6", +- "4e203019ba4b94cd691d60", +- "7df66ef2eea696dbe6ad95", +- "43bc8bffd5b4fa12491d7c", +- "1207aa2a4ea7c882b5e76f", +- "3e9654e3940c0f541b93cd", +- "4a64cce2fc4633dbb63e09", +- "4385d494a7bdb154810c4d", +- "dbd1bb9693e65c5eeef4a", +- "7d58cee39bf1830f1b3ec0", +- "6cc6a998d40d1bad211cd", +- "3aa6d80b7b4477df65330a", +- "2ae1383e51812f870ebf41", +- "1107ffccdffb2932659325", +- "9cf05f6855d4068390948", +- "36f24af02e5318171bea53", +- "4d0a046c7ec4f54117f367", +- "7bb1913bf745fa526f18a8", +- "2970c6e86dd017c5341ddc", +- "58c411222783451febdf82", +- "657128352843035ba5fee1", +- "13c9d1e81de8cbb64a1797", +- "66e2564796168c2d0a015a", +- "1b9995439565d095eb8a8c", +- "43cebcc2f248fc1fcbd6b4", +- "7e18b1dc04cb3af247aa31", +- "269ad3cfbd18bd255786fd", +- "2f1b9eb8c8ceec3aba8c3f", +- "890072ab6d3eb608d30ea", +- "4e72dcffc8f26eb136b7c7", +- "71db6b9125d5ab5b3e7493", +- "57bcb68e1f52791794bf4b", +- "7489fd5407cd56abfcfc49", +- "45d43d697cb8503c85839a", +- "2021e0329a909a39851fe3", +- "6eceb600a9b81fd3aa7175", +- "4d63e68650d056d4e2cca2", +- "21789b3595bc366315af2", +- "781973046ae51aa956a060", +- "2353c3f920ce7af530f96d", +- "4a8154e2948099e7b7c4c5", +- "319945f43efa75c6d6fbd6", +- "1a0cc5d78d1da3759fd0fb", +- "75a29d53450973ae07e5b6", +- "670c6449f82194e5367c1d", +- "6978fb86dcb4ccc82a3738", +- "f6c4daf384fb3d39aa985", +- "47df2e03e1548a16e223be", +- "36224c16a9190272a21e14", +- "abbcfb2e4c3da6b090978", +- "1fb7c568bdffd12b767330", +- "77f657453333dfbed3c7e5", +- "68855602ae559673b8a2dc", +- "57b79cb347145bcbe43bcf", +- "542f3c6130072ffd145c0a", +- "7d43897c9a717ea4ffaf53", +- "2928531ef291fb90d243e3", +- "6308b8f5574126f70ec3cf", +- "3b77afb6ec85d92608bbc9", +- "39bc9fe63b4ca1891dbe7f", +- "14b126e3c0b0f4dae2ddfb", +- "634af4f8ff5eecb70f9b3b", +- "5939fc19fad9c14c8917a9", +- "cb351e8f1a28278af3af8", +- "41ff1be99bebe99b10f273", +- "32c9397c9adff65d943965", +- "1e1de465daadd9547d63fe", +- "1924697a3681efc60e8e70", +- "3e14120ed24ebae50e64ef", +- "29bfa87365d098b3fe8377", +- "48ad93093caf03d61b0aa8", +- "116c396589d81e0684d5a0", +- "4550a8c9126d63e137546e", +- "3d325eede75d0a573042e2", +- "715fb02624875de3ce495c", +- "2c1cf6d476ed98aad97b90", +- "41ec16a5c725c7d32d3a8d", +- "2a6ced30aaeaaa3957eaf", +- "284cbec8937114a1728cdb", +- "7fd049d0f5d16bca84fbf0", +- "1ece2489d9c16fd0d7c093", +- "7a1817cf8f21c4f863437a", +- "2b89a454954d4c6b2e2120", +- "44b51755bfc5410d6cfad6", +- "31e4383d0d65d0adfc3084", +- "2f44e6e7eed452c1b02ade", +- "46861d4c2ab5de181f3e32", +- "30c01b8abdb9d98a7941dd", +- "593ba411e3481cff090a6e", +- "5f7998cdc984bda089a530", +- "38863908f348e0ff24d2ea", +- "7db23dcfd5b48847b2da44", +- "70cc62d0a35cccb85972ee", +- "51e871e33b066886db1e57", +- "7ab8d7968452d732fc3362", +- "6cbec7ee27571943d99309", +- "65ccc844f43d7740c3bb83", +- "2d92e146c92e5c2141114e", +- "78208a8be2c33504df2573", +- "1b892a6bc6d106036dc210", +- "1ba30d22d8ca0e3412c0e7", +- "7f5d5abee4ea627ca346c", +- "29d27ddd5f46b0a514ec85", +- "717a62d953937ab8d63ef4", +- "46f7147d837df6469c39be", +- "1e9e640158c2d5ef405818", +- "7f30d40bb0193bcc3bff38", +- "7e84a589b79843d0f09d89", +- "1984882a708094eb26643e", +- "6b386c8a9795cf0b45e160", +- "282bde17894173789173e7", +- "75b60c74c3f4835e0ba3f1", +- "66673b06f4474ab9ac84e3", +- "768b4e15703c2b99a95ee7", +- "3c7d066200b6ae5892048a", +- "194fc13ec819c9e2289cea", +- "3c066553be4fa2a741db4d", +- "31018337a926110b0a5b91", +- "7ca0b74cff2de67657aaa1", +- "610a799f5f9443dd8f333", +- "29dc0e371f2a3ea6cf4d60", +- "bf1c05f166718be1c6836", +- "309eb70bbb47b20185134f", +- "4b31d20ed3a1f68f117d30", +- "201a5f031183f9e3136174", +- "6d82429df8c04f3e8cbdea", +- "4e4d1094ae9ce9f42b1d71", +- "65e071aa89e8e9caa17f", +- "7c3ad9d6ed54817d082b65", +- "352a1b67a355f38121c462", +- "2d980e097ecb2ab91b9b92", +- "96afde4db924db62eec7", +- "6e20ab59697e8bf608ee9d", +- "2ab6145578df975521753c", +- "5c91f707bee21c71c33c34", +- "676d8d92a92b0706da21e1", +- "3a82f64175d5b3caec9c53", +- "2ccc62a5fe0c2d164b78ac", +- "7f53a40fb6d59c55fc0a6a", +- "eb12a34ffd8e97426aebf", +- "330554538efb3452d928d9", +- "37902c15fea70cc2588984", +- "1e3f1f00ee5c87d8bcc6a5", +- "21e6a33067365b1e718020", +- "4113025c4b26d50d501a53", +- "1d50b663f8750fc777a8a9", +- "47267802b4baf11a616d7b", +- "206a9c38358f291b01e407", +- "7529b300b4b89c580a5f62", +- "59aab11c164124e5cdf604", +- "3d3a2d2ef7d22dc8adb10e", +- "1fa48382ab305e0404adc", +- "6e72d626e97997cb842159", +- "53a902325a9087232d64a1", +- "726d30610282ed39d8f203", +- "6e48887c0bee3ba8386f63", +- "532cc2e0afe1d979c42a70", +- "614224558d52e5d4eb23b8", +- "c0bc8c55f3b95e521ebf8", +- "1b4e22a54398ec5712c2f5", +- "45109475272b0ee96581b7", +- "6c065cf636d6bc65762095", +- "7bfe5c12baaa86c60d8117", +- "62e55ea318373ea102e458", +- "46789b05c1e88afd58b2c6", +- "37120883f03d674fbee3d7", +- "63a482d47b34384d6c0abf", +- "78778c448d7d69eeff19c7", +- "69527863032c1ba7d7e238", +- "574f9294e066c8fdb761b7", +- "3adbdefe2bc4d894d3eea5", +- "7c2fed1746d715eb95529", +- "2501ea3eadb12569e01e7e", +- "3d49c943bed92220933501", +- "2327087d544749f348c909", +- "63a2efcfe030b5eb3fd526", +- "2d2c322dac49b5fc4277a6", +- "4ebe9580f66ecfa62bdae4", +- "39450177cdd3980c4efafa", +- "3349dac2077bfdf6a12d86", +- "56b71258283af76e7bcfab", +- "2bcddd9fb0f98505c98aa9", +- "45166035762ea541feeea1", +- "6bf558bed09b770ac7b7db", +- "69498de156a0aa10a4e2dc", +- "6cc9f90d012be002904668", +- "32f8a36cc1b46c25cdcc28", +- "312ecee1519b0617d31186", +- "706df4fd50e1c42994aed3", +- "4edae7063e31e196fbffc4", +- "7bb42f21df6b474c926cab", +- "7c2bf4a989b0889ab6c2ee", +- "14a25dabe8f8f9bd2745b5", +- "14266a10ce4302dd32d262", +- "411254ef95bca10cdc61b9", +- "2cb3e5c4dae6b173319195", +- "575c81fbd5408f583cec84", +- "904098cdbfd4389279e30", +- "4499b6e3311b7fe5b9c98e", +- "210804240b673797c1da0b", +- "4cfa062853643ca21aa8e4", +- "155503fef8a8a42650f8de", +- "214de8b9e305b92a9ebc6a", +- "aebf119c49f1f5d4fa77", +- "4019e2ed5f4f686e75a334", +- "26e8b6fae1b81184be307f", +- "4cbbf282cb8d5b492509da", +- "32124e45d595b542218cca", +- "4fb7ac8e103e64af4c501b", +- "4a99080981fd90fd8f202c", +- "5fe19870cf156902f09ea2", +- "35da7f1fc27e6edf7e2774", +- "171772c43b172c6f59b4ee", +- "396792f2585d3e823623df", +- "68b020f430372f0b20817e", +- "58a41d74e16c1b1fb6cbf", +- "6ef7e0b470470f565c088f", +- "4dba440f7f398ce0198b25", +- "2840ecdbeaf847ed4e56fd", +- "2f36ea2bf51461b1407878", +- "2cf0b3c6e55d4f6c794d8f", +- "31fcd9e9b87aae6bf32f83", +- "47626057be8af9d92cef74", +- "2113e1a93f5d2f1cba0377", +- "4176799b704bfacae7d897", +- "524919eb6636c6c6c14a82", +- "64d1d7c43b00bfc99b8bb2", +- "76a279212b584d95ed2cd0", +- "37e704706a7967491e3628", +- "5e1c654c63269bdc77fee1", +- "58b898760417610a09ff41", +- "64981a92737099a91d3794", +- "571cc10547604b09ba9b69", +- "6714be0beb22d71708c5e6", +- "359b739ee10f4c4f24e721", +- "454b67d8b7470679eeda79", +- "615326e14c6c74c717def2", +- "2dd86ec9cb242b4e68016c", +- "62a4fc7a9af2d27e92b08f", +- "cae1cd222ac38b9a89a19", +- "5fd2fb0300581c5f59fa7c", +- "1488492f946cb788d721d6", +- "509ca3fe7eae200044712a", +- "27c4576460764aabe86ca", +- "72e3a111047449df428c07", +- "4dd2e16c6f9989907671be", +- "415d623b63f929b3ef879f", +- "9b13c11e290284a86caf", +- "78b61404bffa36b135773d", +- "10c2f27dd2e5d8f77a071d", +- "684e96f56360b04576ab1f", +- "6bd55e81cea4df6934b8f5", +- "288723d0eb9a25150c0772", +- "4eca5fbd35a4778cd18f80", +- "590c069f4d458da38448fb", +- "6a91ca9f24a59bd3f77cce", +- "4520d49550bf0a2328020f", +- "31340daa6bee66dc702e47", +- "21cbfd5db5cf856bb6980a", +- "2ac5b705311ca0e8e6bcda", +- "28390f3626b1fdadbcbfd8", +- "3b79806e60c6443e5b75ae", +- "4e1dab19fafdbf4d11123", +- "4bba04cb6f7dfe33e4bd", +- "25b65fbcf4deba1535165c", +- "5d2602e9c7bafe79929bee", +- "1f5e885344b51456b2195b", +- "5c585a64ca68d89750e9da", +- "715687651f6925a41a3bf1", +- "47be6483decbcd32c50b44", +- "3fdb397b831af56c0902f1", +- "60ea199093a4e9f80613b6", +- "59048c7bc400c1b2f055f1", +- "5ed2c798bc4d3df9693b4a", +- "26c8838f41263334d39302", +- "257f0dc17de9e402db5577", +- "5eacde9e13242553f24977", +- "232706fb395f1e37b2683d", +- "5527388c03206dff6a464b", +- "6207f87b59fc321d1fa8c5", +- "3eed8387e5a22f84995caa", +- "1ead4bf29c5aa1e11118b1", +- "4e9e415c8033fbf3989b6d", +- "6ed402123cbfe00df8030b", +- "15c5021e3387b5104eda39", +- "385c720d2080ae9544a074", +- "12502410f917e813c566e4", +- "dfa61531c98e389318ffc", +- "75df623177a9cc914a680f", +- "16a2f9f4e53133020d693f", +- "68bba5659f4f20356a0cad", +- "5b60aca7fe85259aa048ba", +- "748cb85b7df9ca5a82d4a0", +- "5448bba652328fd63e3ca2", +- "497b40c11c5d479cab5f20", +- "1ff2197a0e5b3d0b65c928", +- "175182c7cd2ce431b0150e", +- "58a47971604afebfc2dfe", +- "7feefa2c38e3a6212b4cc2", +- "1dcb001f06c75da3270a59", +- "3e7a71b985de5c6c7a9f57", +- "ccd4be560162041ae08e2", +- "4ec109ed0d029a0c6bd1c3", +- "363177aa4ad204478f4d2e", +- "7b94e69ecfb1ba4bdf42b9", +- "68bf1a165a85b17f192a39", +- "fca586b3bb595a8d4101", +- "7914f6f164e20860badddb", +- "d959366c9d2eed9c988e", +- "6b1b87bf69d8ba16154459", +- "5798f45a6d32a5d9e220c4", +- "23ff36317f41cdc69b5f8c", +- "3337445fe49877ddd94c8c", +- "27e0d5b6d5b01b974468e6", +- "155305c9e80b8231f3fea7", +- "46777bd089a8dc8c44ba66", +- "4eb92d6051c08bfec28d32", +- "58de9434dcaeb21007cf50", +- "4945531dd0d285dff322e3", +- "5f4ee2c7a7d447e781b997", +- "255da48e767df6db73178f", +- "40f14f4642441c80c723a2", +- "23b23c226ec7148e9ecfd4", +- "2fc4119b8d9484cd86a0bd", +- "e8a31983f38b3bc04d83f", +- "403c97fd7a8e612b101803", +- "360136af955e5fa1edc1", +- "6dd1e30b456df046e42f20", +- "2a8fc7a338bd0e95e61238", +- "5574ce6446f5f9b2cb3ade", +- "68437c168764f9b52e36f", +- "6db55a7581d577d97e45ef", +- "2117da386a0ba848e04619", +- "38a3fd25a6d9f4f7c85efc", +- "20bd84ec27cae248ea38a3", +- "2359b0102f9a1f774278d", +- "7f779a7314dbb8bea5c652", +- "a15cce75efaba6c1b571b", +- "5e4eaaa44cce4760757194", +- "1aa73126a375b6cf5e8b5", +- "e0fd267f226bcb77b4105", +- "5c1c9591ed7cecac5be504", +- "6f8c0ef46d2275dfe7e84f", +- "75f53c77a2d34dd51c6882", +- "553e86c66c2fba13b95f56", +- "31cc33f2d92bb3dc73372f", +- "2bcf3f6e0be988750bc0c3", +- "2a0c42a5cba7fe55a006e5", +- "67427f6921fbdb98c3e375", +- "62019722b2962f2ad1787f", +- "75964f1abb3f7cc93e9f96", +- "3faddb5ddd2bdc683de72f", +- "235bf7672a2cda1ab01fb3", +- "c16242d78c3d8fbfddea4", +- "29105da153f2a098ad094b", +- "39f0a0674e65b2cad4a706", +- "57a6c26c5e5dea61f133ee", +- "6151a60a864edd0e7c7b30", +- "d65fa4e9fad0f9180af7", +- "553adfba4c4a6d20491557", +- "1ffc37c5751a51bd676a97", +- "450dcdc45566039112cb21", +- "74c5b771dcd8c4719355d3", +- "72216a00ebfc9de1e963c8", +- "7746c161815ab2091d9e21", +- "47ddc74fced651c57b4d1f", +- "417a5a771b0fe4694065d", +- "4bd73bb75df0b9c8f31e93", +- "3937d6181e67f43d9bec08", +- "5fa8c4e879ae9ef5c6f178", +- "693e564c43456862d84db1", +- "394398fcb25e82a48b8d32", +- "754181ae9689816d4fae85", +- "6f5834f39b940405114e26", +- "41d82e9988854950bdb48c", +- "29f43cc681e11325bf172b", +- "6ac2b95852f2b3848657c4", +- "49da4e6814895f7566132", +- "7a75465db2452d11dbf6bf", +- "14b9cf8ea7c2a2aef663e9", +- "7a7267a5eeee00421b1bd7", +- "8d7ac16a6c7fb5dcaf362", +- "4a9951c3005ac4b7d775a5", +- "4dac5ec68e30db33d790b3", +- "7e9e8be590540d41cb48b7", +- "db6d45038525122246c3a", +- "32e84128c0dfcdebdcfc5e", +- "3c52f4c6c583d5b2a18105", +- "7a42533b0f16560c421482", +- "403ccf27d3ff3c3686d654", +- "5d780dd5bc1f62ed520130", +- "6ecdfc4db1fa1b0104403a", +- "4796fc52e00fbc5d65fc02", +- "1103bc87eb4e4e572c882c", +- "1f2e34fd7020d08b01b7f2", +- "23f737b6f1527cfce0303e", +- "292e4d75da1a76fa4eb730", +- "1b8c58018b9ec962054ab0", +- "3cdbf096f176a11d399e68", +- "5e81e2ee54fa1c8e9216bf", +- "6ea50d7820cf1c46cfdea8", +- "42fe3f1413aec51428fb64", +- "449f89bc8e75ebc93c06c2", +- "46dbb8e8c99f2d8cf603ab", +- "3542a00727cde7902f64", +- "8c1b60a22d754654b3b0e", +- "4cc1b8f60c7b3b604dd7f3", +- "65a59676f2a0f7f5358513", +- "7ebd8ffb86035ffa249a5c", +- "6937a623eafb54374944c3", +- "771e23d6155cbd6574be92", +- "42d3b2e606813eb48865e1", +- "747f5812283a8ba1a43af4", +- "1533a8f5ee81c2d4352c6", +- "25b4f424465c145a893505", +- "54449f7dccf77fd8f14fff", +- "1f216750a4d1686b3b2227", +- "3c0ef922648f93834d2bac", +- "5b8558cbc60eeb5d4d1e0c", +- "3fbae766d352bf62d71ec9", +- "37ca6d3b30cb2687e44f7a", +- "4fc1aa30a26bf05e1cf79e", +- "5830e5e1c9294904118c10", +- "ac1c0028dc3aa005da816", +- "2d8207ca3331c2f27a3943", +- "2fe38c447768175651bb27", +- "538b76dc0991647c99d6ab", +- "5ad56a9a03d1277384501c", +- "2c11fd859f539479044b3d", +- "6e1c49a1adf3346b270d76", +- "627d01094a2553e7bdde46", +- "4b0e392a6b94b0716bcb0f", +- "73c9485e5e5379f878695", +- "43da9e4b9fc98c3225df02", +- "4b81add44caab6287f5254", +- "73a1489a18b0815a03faf8", +- "146e2b3f7404eaa2825f64", +- "62cba5cd6ece1fcc005653", +- "9a91d432ec896438ac971", +- "6750d083991451ddf24ddc", +- "23f47a79fc10179e2f1aad", +- "456b75b7118ddbd9c05113", +- "214ab6242649bf5f0673b5", +- "46c6a4606b83331dd733e4", +- "567c07ffdf5609acdc57cd", +- "26639427b4cd468207f354", +- "36b57535eb2f884ec435f1", +- "2aeb5606838c910769daa9", +- "5d5d0b6bedf48b96c5eb79", +- "144036e909f39a00a79653", +- "7677202d8f05f9287a6047", +- "1a1cfff05adf1a427c023e", +- "7286bedeaa0c2687819d8a", +- "2bf095a2fbcdb3391aec69", +- "2e6c1f41a9866f4d867e01", +- "2ad8da8cd83b1521d7659a", +- "159314ac561f7431a71dd2", +- "443f4b4ed3b1f2c8fe8ce8", +- "1bb928a5ce5b6a93e4a6be", +- "ff765fa35889a47189d5c", +- "7faf5fb28aa48ff83cc07", +- "330bf157841f4554c8f5de", +- "3de0a5abf20a4845d76439", +- "5d53571a7cc3688e6944b0", +- "7a6a150f8921047e15edcb", +- "4dbcbf0e0833361017aadd", +- "36f20d7e24da8778ce35f5", +- "3248d851d401112b750bc", +- "77024358b3e776b2c5e1af", +- "599102d1f2500d61d762c9", +- "52c455dad0b267d43552f0", +- "59db917020bf7253782d5c", +- "3251a62ebf3abdb7c9ed58", +- "1c89d8520ef104ebd20ee", +- "fa65751eb4d84785986bf", +- "22f4901fc0a8b24cf62fe4", +- "3baf4fa4e9f273acdf732c", +- "29d711357943b0afaa5b59", +- "26293d249066a3014c3338", +- "4d3db82b9d6efaedc42576", +- "561331256e1d21664a1287", +- "796842dd6bfad2f98912a6", +- "4a27b941aa4c6ad1e07548", +- "47b94fbc156b869e9d16b9", +- "39f2517276288f74c45e3a", +- "11326e189db8b15b0744ff", +- "7c793c0d415e26d57ec92", +- "22c922d5b0fc736e5f1adc", +- "5a9897a2da0299756dfdb3", +- "37b012fbed4994b5319766", +- "7ee167869f16d0f3096184", +- "7b7ba8150a404335a3e978", +- "2176005ea62a7fae1a0ec5", +- "7f5271355a686a4df7e516", +- "33294a38a5c8a431b3624c", +- "68570d0c5fc94ab3c18486", +- "3a928b86dc180342e1f053", +- "474d5e705efa51e5e97d39", +- "4948e72d6c06974bcf7212", +- "12ea1cc2026e4f5211a159", +- "15b86ea9fb5f9d46bb9d95", +- "1c0d48f6283945e321fdac", +- "c25f982adccb58e81ce02", +- "173ee21e60a88ae566e166", +- "64af53c3c0ad963e3055c1", +- "2e0a934adfe422dd136191", +- "5ba00e958e1473bae28031", +- "230119c3b2a6b1bafca00", +- "1fb4d17ac6ee317ce5a547", +- "2449f6a2ba5fdac5a9c1d4", +- "6b488f646fce9835d43f44", +- "11978ed9a01677cec42ee0", +- "3ac9b63dfc3067c1c4627d", +- "7fa7e63240bd502dd4b06b", +- "4bafb874450e24655961f3", +- "4a5a912df871eba16ca2bf", +- "6a1b97013fc782623a1d18", +- "60f671cf9f662680d04313", +- "6f7417b6bfc27461fd2524", +- "3cd40ccabd157073f9e356", +- "60188d16e528a5d2e06d3d", +- "55509fd3a52bd88fe29e11", +- "193c88995f60dbabf1ee79", +- "36e5208ae458480078d5d", +- "27869ae6bfa80052e928d4", +- "14e76412c1e117fa60f762", +- "1a91f5500bd170effa0820", +- "2f27f9f5b37e53f26a3367", +- "7c4ebd51c09994a5c2702b", +- "7eede9c7d2fd05759ff0d5", +- "1bf7de225f0abb4eae1da2", +- "1f527bd93add787e619f2f", +- "2f4da63191088795366c81", +- "1e86f8d9f30e1c9ee2f741", +- "5fdf7c6cf80f5f4d619b9c", +- "1365575dcf06e2b1987b3f", +- "3860f5646a470f19d720f1", +- "b17adb15bd895ea825438", +- "67cd089f73cfc8807dd840", +- "7b97dd845f9509d060f296", +- "3951fc47c9cf417968c09a", +- "63bd657552fcd47a1fea3b", +- "7b59158d38abcc0653e41", +- "7adedaa3d8ff64ef5910ed", +- "121daf29269045f5bdd20b", +- "65c75439faa2303912b32e", +- "3a603b28f5e57fbfd764b9", +- "2df92a33b308b4efdcaee3", +- "69defadcac1e44c7a1c0bd", +- "17961b8be9d0332a213177", +- "59a5901c521b74864c8fb2", +- "697c3f9accda8d3543f182", +- "3f0177714af6ab07d870c0", +- "2334ccde40867fa1d0bc15", +- "16fb077509115b4c0ee442", +- "758f193f192584a42ebc31", +- "483ca240f22946b37af3c", +- "311601fec45703953f2b91", +- "67da5d093fc207176dbdb2", +- "1b6a00fcabec41d4b43ba2", +- "ba07dcfdd701f16f45aca", +- "2835e7f4b39073c5a451bb", +- "269c017af27ad44e6b201e", +- "3cf5810d8c38a097a7561f", +- "573747456cbe53c844796c", +- "7772e0b990ccdc614c11c3", +- "404ae85658f9b08174632", +- "5dd52a5a11350a9b7572fc", +- "7ce0b194ba3e31249ab36d", +- "762f2aec62b91b262cc99f", +- "3915c8d33da94da27c1249", +- "6e885e79f7b5fe77214da5", +- "668c0767178119bd41ac3", +- "6806f2889f5316f4c57e07", +- "32f953543bd07093a29e5f", +- "5685392e26e4e637394c54", +- "96cf28ae783cd1e477aa5", +- "710608c33a517ea5d5359e", +- "435abcd28c0cfc9f321db0", +- "514d622fcdfc26212b5d14", +- "408e6268fcd75479c3bece", +- "18e5cae7f3bd61293a8c2b", +- "65a5c9fe061a38a8c6c2e0", +- "6df80f50564e811e245eb5", +- "1b388caec4f8538425d93c", +- "1bab6e088abbb7a786ff3d", +- "17fc45b2690c315a5249e8", +- "4170c011864f5582d6a738", +- "3b3a5f854ba249c04d075", +- "38e1e6200860f4072a8a1d", +- "c91beeecaf54c95dc1b37", +- "f125d56d3c0c2aaf7ad05", +- "341851bd5e48e20f0a412f", +- "471eec9edf3f5af18be6bf", +- "4b21ef5da2b744139c3cf1", +- "3a051daeeae9770973713e", +- "75a7fc26a6faacf109b345", +- "5637e5d4438a119a23f043", +- "22f18c95264f1fb742c348", +- "1d595362f3a1b4c77729e7", +- "69a784edece7c38bcf7297", +- "4fbaae68fdb253d715d528", +- "23693b4063cf0fa20dad42", +- "51eb043d3564fa91215f1b", +- "2bb1db818cfd733dcce0b0", +- "a961f7b95836d3a578170", +- "51c819b9ec191b60920096", +- "ac6c9987de6c73f2259d9", +- "524b77666e02692a642407", +- "149d706db4fce00c71da76", +- "238de3e1606bc0e1c33adb", +- "37ba1e609c7b12a8e32733", +- "3ae30b1b5931eb630bbf6c", +- "1630a212afc84f038374d9", +- "5ebb44d93cb77417b61c4f", +- "5a7d2dd2aa2028d4da8f42", +- "798019b397419c8d54fda1", +- "74a156e77589342bbef3d5", +- "506e6a05e8de5c9198ae69", +- "48e4926c40cd6ab5e92ffc", +- "7d2db742721c9ba686ff30", +- "4b8968b5c5a93dbb4b2b55", +- "2ef2be0f7e33ace73bab4", +- "7651ee2e0f4d348cbe95bd", +- "43ee4b35cb3cdc84d1d5db", +- "449d4feccb40da2e122aa1", +- "356211f56936e183312837", +- "527456447c2748239033cf", +- "46bdbd32d31b2a36e04e0a", +- "6c1076c01e9e44fb047889", +- "5ef5512b3384aa1243daa6", +- "d452f805a2c35e686e107", +- "67a9131aabd5255bdce732", +- "5088a2317aa34dd5bb1b4d", +- "64c275af1abda385c2af0b", +- "402c7149b20bce787c7e83", +- "60c8d2e958387c0d0627a8", +- "516640d56302eb15061b25", +- "c62790b24bc842a717e31", +- "76e87d4d2740e137511b26", +- "6cf76079225189eb2608ce", +- "3c8b04f81e14e10396b582", +- "4bfd93fb985a44ed0569f4", +- "6ce98c831091728c0e73bb", +- "4f74e7ee01738298062093", +- "449ccc3923e92a0bd2e3ba", +- "4feae15528510f186aa1fa", +- "12a3196afc09a79694eb31", +- "6cfdd09fe2bd66b85c2e00", +- "587cce1cbd0dee8b98f262", +- "3b0283be973d59ebf4242f", +- "88b8371baafc87a9713f4", +- "4e6cb8ec1b00e2f28b3a7e", +- "235baa54adcc67af92d06d", +- "733b81816da25936e81af1", +- "7fe76cd2c5affa913c2b41", +- "26b7df388a02a8279b0652", +- "7b5272bdeb1b01fe56bc29", +- "6863984d7793407587e8e2", +- "1f1eea8231315133cde938", +- "2f85e68dfb9aea66d7f07c", +- "6259df76b87ab2eff6659f", +- "502c6a2df8916b18106088", +- "4cd904fd9401eac5ad7f1c", +- "5eb4d93a33b2d2e2c2adad", +- "55a41153a33cb4649703a5", +- "cfc86f804a481df48868e", +- "1ddeaa1e583e9146210f69", +- "38110b962a169200cc9f0a", +- "7ce4bd3337a7333159cb2c", +- "1738ee1c8e104064e07249", +- "e1ef803b3674bf39884ae", +- "55d7bf2f5724b5dd0a04ae", +- "7aa81a94a5a230cf59a0b9", +- "2baeaedf76503008b9e428", +- "15bb5d9b44eebb27a1e60e", +- "dce90e419e8d3f96eb5b4", +- "72a7ca4a8dc56f9c652281", +- "5cd319aa7906a96d2f6c7e", +- "557361125249092a7bf932", +- "70a1107bc42bfb598164ea", +- "df7ae04689867c9ad97d8", +- "117480f169f81bb3e8609c", +- "479fc9912c9c81152eb474", +- "4f2cc1f6f7aba8c20a670c", +- "17dd6e40297f1d32786291", +- "783e0229f219bc18b705e4", +- "8b462e0f7448b549fd688", +- "4a0fb16cc4d1bdfbb239c", +- "53c95b2787b88db0682132", +- "536be2b3e3829710aec51b", +- "3a89578d6ca992f91249be", +- "779eb73caa637aa28db87c", +- "52f5adde99e4501e4d1c61", +- "31541f24753a28cc5b51d8", +- "620084c5da2910137e2b10", +- "76c132264ad2a774a55164", +- "35a3ab4773c5054a30c44d", +- "2f78c0f7e7a90558573941", +- "5b39ddb704fa58142076d", +- "1d6812727d8421d0e03a6f", +- "307727bd97c5db086074b3", +- "1abc0d15793c655cee4a9c", +- "68ee183b2208228da8bab7", +- "116da33e19c8b80384fe28", +- "3d73fd3c3744e9ec5d2d04", +- "64ed03e382c11a32e34cf4", +- "479e7025ae3fdc2bbcbe22", +- "a134915353ce113eb72dd", +- "49cb6ac7a2bfdc54300006", +- "2d5e8f78718c2d4660cc69", +- "3f5027ce278d444a4dd243", +- "15d4218f4bbf0c95cd9649", +- "13221a23af3045ec5cea35", +- "1efd2b46d4a8724e929fd9", +- "628d18e095a8dbcb9f43bf", +- "30eff32d49c10f325b8e9c", +- "29bbe5fdf14e69065cb80c", +- "2df28a1b78b46f16aaf53b", +- "352a4a136ebd7ef294f370", +- "1c960c994194a1366a2222", +- "351c5a0b997e45ec21b614", +- "4c1f6b587fd26654ea69e1", +- "2735b2e6f5f08a9e9418bb", +- "3505fcb3eb2690f88b3be3", +- "4d8859f357a36792b7211f", +- "1e2093f76475f58a2dfd79", +- "456138a50c3717947be48e", +- "35714b90920ce6fe1f850", +- "5d7c2a1d1267b7a252da1", +- "754ffe6bc2e7525e892fe", +- "290ac68bec8aa8955b7e97", +- "a058b3353ac6290d9f864", +- "ef75fc5d77fc146e975f7", +- "48a999a2dc1a23a934a6fc", +- "7256923d608836710a659c", +- "2b13e041339df4d5a521ce", +- "51a9b0945a0908b1d40d24", +- "779559a53e6b62275896e9", +- "1fa330f6dd5f3ca09176ce", +- "3cb748f77d638122329dca", +- "7e62c15038abb8244531b4", +- "9bea90a26f9e93743a998", +- "7ae1d007cf030664c6b815", +- "52cfcbd15dfc6c476cfc76", +- "18ba9d869c489f11ce52e7", +- "93cbb2483673e4e0dda30", +- "2478db790ed59756cef964", +- "7d8b341c82b019a8d56c92", +- "584b7d6f0b43ddd0b397e4", +- "6081e77fedf3898fd66607", +- "540f5a33d5aeafadcad19d", +- "52c4d1c2ad153a3f70bc0a", +- "39489c7fdb445490d498cd", +- "e0800809dbab6d41345b4", +- "1536906705870049755028", +- "639c2fcec8b9dfcc987387", +- "214f18ae0c9aa7a1b8c02e", +- "5b8e9d8b290e89e5d9afc3", +- "4499c1c16fec3546d5903c", +- "5ce5e0595ad07c8855357b", +- "39bf9c3f1f0a1a15264530", +- "30a77107da1d91a699e9f5", +- "352389083277fbbbe66ac3", +- "5d711409f3faa9ea87abfc", +- "42cd59499a0ef57d6b0009", +- "731a7b89f357bfb855a5b2", +- "767dc9d34c09b03db4a0e9", +- "5344962f90f45cfaeb1bce", +- "504d29ae2e5a021d2bb278", +- "6e97dd298eaee757a3cec1", +- "2d1b2f087facf1fbfc7e69", +- "327b2b8d0b75e0d83a5b04", +- "7dc98aa964908b313939a9", +- "d8c34dffd92c1a20d6a9a", +- "21a363ab0e08a4336f2e44", +- "48eaf0293f956717b8f048", +- "6351b2a5f477112f552683", +- "2193bc73ac4b40415c95b5", +- "13f13f9f2c877cb73ba5c", +- "7c6b359299af5c59043711", +- "7895b432001edf846b7b3e", +- "3ecf9d05cd62341c4f7784", +- "6c8879d694e1a0b99f8e42", +- "6400e87749e3bcbd750d89", +- "1851e925707895d37a37f2", +- "30f4f5617cc73435ce74c2", +- "18ec20d19a478746123b", +- "39242760b51f2f93fd4721", +- "452d3dfff11e24bf680356", +- "5cafa83a10f929b5076c60", +- "7fd4ee663460087b793a80", +- "7e958697030784ae5ddf86", +- "a6c54d0ec55adb4911efd", +- "2964973c288dced7dae8fc", +- "2b0fed7a534d25697e5c7b", +- "3afeb7cc8f8e5bb8770da", +- "6a81a8d913b71671629ad5", +- "75f4eb6de0d35eeaa16cf8", +- "7abf68b2e4cc9e3a3b2c5f", +- "4f6d8c8b0b9b376d42c4b1", +- "23f219093e9b0bb3b5217d", +- "5a0c2602dcbbbf468b67e0", +- "1a63315aa52cb254b65ce0", +- "4f72850630f6f8c1a68862", +- "3722a55f27f2c02b34eddc", +- "672d7083ec424e5d883cec", +- "4839c6454f97ececa9969f", +- "e941ecc714605cea72177", +- "7cf9338ca9bcab73862b81", +- "6a23876a8c802d81d83d29", +- "7006ef130d31e12bc44c5a", +- "591bac661062f64b8e3f2c", +- "25cab751e23d8e69bb5048", +- "61f4a55b140e767495cd59", +- "1a4e5bc143bf00e8928403", +- "4a54d9b3589d5340a01e23", +- "18019c176b4c9453028db8", +- "76fed7d89907843db9af52", +- "407333b3b6a3bed3ef8920", +- "536a736ad3a37793dd9f54", +- "5e56a7d976f1a3334f57c3", +- "66ffe80af410522139e92f", +- "1b0c27c7452322264822f3", +- "58320debe89492ceee77e", +- "4fbc987e428ed0ce9cb76c", +- "70a2d453b688803716fdbf", +- "1921f3262afb2f3766f357", +- "6e007172a16a9c673e635d", +- "527c4b155e3708972293d1", +- "2797689917c95a9d4073ae", +- "69bb33c18017fddf18d091", +- "165ff53589519199fc1846", +- "171e59c89024b148534f1b", +- "23c82ae839bf5380a55acf", +- "455c9131bfa1c33274be37", +- "4bacbc68650c41520d312c", +- "1c35e13f8ffb7c470fa61c", +- "6b4728ee168cd23e2fe47c", +- "22e321253c3e0fb875c4df", +- "6077a88144957827c07205", +- "4309c1c59a581af63d922d", +- "1b1ca5d6c688c4cf99448d", +- "31a504d1dcc251075e4436", +- "223160cdd1bfa322ca3e6c", +- "3601174a7dc823bf4dc3a6", +- "6da3828f2d4926651f7a27", +- "7de4927696bdd6d3b718", +- "7bb4f9d707b4ee3a20e779", +- "343dad4f059acb87d3b0e2", +- "4e501beb4617be0f02deb4", +- "3943e926fbe3d426004ea9", +- "4b35e35e82bffb49d0d830", +- "6520599b30ba3568ad0f09", +- "2a48d89ce122dfa7deba2f", +- "19b666810d736e639b51f2", +- "1ccd174e9aa4e58e7414bc", +- "475e84f70334cc0bc8292", +- "393fe0be8f011593a7e1ef", +- "17276a59aa9630c1141c17", +- "7d0578a8908ba294259bd", +- "4a9e2e5d8ad0e2e82aa7de", +- "63e0dbdfb13b4fbb46f00c", +- "310e395e429c4494a5f850", +- "7cc0116bd0bc164835ee72", +- "634478b621f7f0a455c48c", +- "397f144a181805e1a097c9", +- "53016aa1427381b9f28ea5", +- "76c2f0ba37187112ee4d4d", +- "2bee268df09cc40864a917", +- "7851b3168b92e5daed021f", +- "149e6a0b6c6543ae895e07", +- "1dd1b432dc809fe4c879b3", +- "2ad2546b270547fc24541b", +- "2015aa6fc7e48fa3bc5ab5", +- "38596ed050f14596adc07f", +- "1d2b9ca2f44294070d4e86", +- "3778fd3a46ffde4755b6ce", +- "74bb588b5553c2b2d4ac78", +- "3d1155c4a53835d991a0f", +- "35865b2ca16d3453781f41", +- "6ba1300374acd487b23577", +- "3f68fa1a9ab7772758d0ba", +- "30a3461d63ca9807464dd6", +- "552aca5af025ea1e84aadb", +- "32aafc640e8c99bda8faa7", +- "2fb170a11f1aecdf586d25", +- "751e9eb348bc8239d6e118", +- "7fc2bcc524b4326eb8303d", +- "1cc2526113f2bae9b540c1", +- "6a437e22c95fc6c6a4449d", +- "df261ad3b5157a525bb81", +- "690aa96130f8c533d77ce4", +- "2f58f2df794a35875efc99", +- "19772e34181f57b670bf9", +- "60617400353c1eb8e8832b", +- "7136b3dd116ed121aab68", +- "4c95bed884bd87ec1d5e70", +- "68fa3ecc3845db5d523ad9", +- "4818e9ef0ea7625cfc3d0", +- "27ec8c6636679988dd1267", +- "57d88b5e0b434eb1a0dc08", +- "47a1f466100bf70dd5689", +- "55afbc51e7c2cc748942ac", +- "75066462fdbbc7301e209b", +- "72b5d8f8e65cb7509a93d8", +- "38d9d05f9463a537f470b2", +- "2f39a2788d5c2a24e16acc", +- "5f4e7c70ff55ff2f888f05", +- "735cfad9acf49090fb7037", +- "6a716dae106b9aeff2133e", +- "1c90fea5f39d8ac4dfc2a3", +- "3a8c5a9525f5d62cea294d", +- "498104aa12355244a9b0d6", +- "414e761d40341e7f97c304", +- "16d5205447831696c5d6a0", +- "3cb5a124ce563c3967dbc3", +- "899b1ac6f72ffff8aedfc", +- "34eea7a66e8ff3dcc8988e", +- "5f80095f2580ec4cf13b51", +- "4d7566cd294f75be6620f3", +- "506d84c9f4d4bc400fdd25", +- "5a8a9b5c659b71e837ea18", +- "c16d15fea9d61c8df5121", +- "3a7a488015e75feec809f8", +- "6fe27c77d57e2feb8cbcbf", +- "452231c3bcde7b7b5b0af8", +- "760f3656c1130b21d369d9", +- "39a0c4e1da321f1bc126f4", +- "3315173915ca23d8c1b814", +- "1cec8c96472b84936bbc22", +- "3c70a3f0e9c5b206031a33", +- "7cec29d14a0eefb222bde7", +- "760df490123f6613b0a970", +- "5bf795c6d548a19b6ac340", +- "5569560418e73ff9db709" +-}; ++static const char* RootsInv[] = { "1", ++ "280f08134d28252bd0b713", ++ "559bf101b9cff724b929cd", ++ "3a8965cf80aa6c4410dfab", ++ "45440750f90776251263b4", ++ "12e92ef014e8d7fbb8d23e", ++ "240e2e38e41f3b6530a267", ++ "69412d8563ffa7e83b0ef0", ++ "3288681f4d08858009187c", ++ "47ba42dd06a62256ee8c8b", ++ "67a8cdbece1aca4e55ba72", ++ "1cca04897dbffe7f26f2ec", ++ "2fdd94b55dd5fb9a3915f5", ++ "3b228f46cdc0e8a979b45e", ++ "5e842bbb537167f75451a7", ++ "13637e15b786797995ba49", ++ "47d847bd96fbfc9c221fd4", ++ "1badf1b7dc0b73e0bf8b67", ++ "2703e4a7969073dd381cbd", ++ "3eaa7351a72b065707e47a", ++ "476ef278c257202dd01711", ++ "2148939cfe2757b6666fc2", ++ "4494bc9e65c8cf2a6ea51d", ++ "20d4366552d0d83219fa0d", ++ "47a080b7584194b936f712", ++ "482af287c71050fd03632a", ++ "19a439abdf3f4f5eb63683", ++ "426541c137d269fd2e2296", ++ "1cb2dabf0298f57d15e65c", ++ "1e92415029559dc3ed8283", ++ "568fd03e0a80223cd1669a", ++ "5a6df4a369ed81627d4fa3", ++ "457dc9644e5b25ae6c4291", ++ "de9896eb70f1668b87fc", ++ "4e27f64f8732105513ad9b", ++ "590056c647987959065bd", ++ "171757e72adb6abd8f440b", ++ "67e11e83cb547515b53701", ++ "bd499ce82d93c07477fc", ++ "10c81c57aed768b3285598", ++ "3a7ecceb35e2e9a438dbd5", ++ "1b5226354071022a104a86", ++ "3956e2767e97b7703253b0", ++ "1960b3a13c6cb6acb7f489", ++ "61c87048ea8325590bc5b1", ++ "46323a1998a54f7e0819f6", ++ "630270f2ed4331deaf63f0", ++ "153884834dca9aae7d5d2d", ++ "39d71478d3005e797c6913", ++ "5c1544633a0bf7939343d0", ++ "3bac7e0675e0a9967ff7da", ++ "409fc384bef4b3d255371f", ++ "39baaf1f520d96bfc8c1df", ++ "4d7940ea6bfaa7b282a985", ++ "4a9b685698a7674338b188", ++ "70d95d23dca53184d30b4b", ++ "51fc2c3f86b8fc46a7a221", ++ "4f5e7f770a4d50c69c4028", ++ "17e8af02e79e7f8d2cdf99", ++ "160134aa459258ff8f6285", ++ "5d6bf6a59488555bf1342a", ++ "75471e22b2d84fd2fe01b9", ++ "1778273a04ac508e342b", ++ "6152765b747658a14d5829", ++ "6f2f55effdb76df46b548a", ++ "3552a76787de4570d42693", ++ "239e94f2e5843a6e20f1bb", ++ "5b4dd88e0cfc108bdc7320", ++ "7c1256dceb40e2f63ca4f9", ++ "16d114b00964bdc8e2e82a", ++ "36b7f85db80800549459bd", ++ "5ca9b2680bb84ff6e98b33", ++ "7fd47e391981aa515116c7", ++ "39965be2b1bbb3ed832fdd", ++ "1efc90353d647b1a3dfd54", ++ "59daf69acb0d30ef2fc5db", ++ "4f34769ad379d64a27233e", ++ "1f91eb155829f1481d6da7", ++ "688ea19369341f6943063f", ++ "3d57e0a1ef4abcae8719be", ++ "127b65c61b8c8f1b9456ee", ++ "1ee9410958604d03f20f1f", ++ "4e175c68ed04c585f606f8", ++ "aeeaf98aedc83e6ae6cc5", ++ "61b85bccf0f4316c2cec04", ++ "768cbd11024387469f6ee1", ++ "74e01ea265377cb713e57a", ++ "5695db84b4c92a3d6677b2", ++ "7510db776aba775075e549", ++ "4ae24f235a28b7f71492ce", ++ "5a20607ce9679fb1f266e5", ++ "9e1bd1e36f73d0f69f697", ++ "218c9ea39a51618b1ce10e", ++ "3cab0ae1036c6d43311ae4", ++ "4082d11934cd3944191e6d", ++ "46b0509f9638e9030f5895", ++ "2e274c1905f505ef9d43c1", ++ "2555442bf058722bf0120c", ++ "4d29703647563e84d6ac7f", ++ "10db0037fd5f7d8c49aee6", ++ "3ad7e93e4ab55d402a33ea", ++ "6bd3a60ce037d04a7d822c", ++ "dcc0bec90c531be4924ef", ++ "53e73a626a5de69e43d0e0", ++ "1472017c713a1063411e0", ++ "666ea50157a2d8307a0ef8", ++ "31ee9d29cb2f2a7eeddbc0", ++ "3c1c9492a56c8c78536095", ++ "56a6cdbd81ef505320e706", ++ "25d3735a734b777dd960b8", ++ "1dd4abfd6c4ed8a3ad6bbb", ++ "ac0f86afb7bbca8d57c4f", ++ "43d235cd54423fd6135def", ++ "4053f687fd270a04d092a9", ++ "197461e90c6b70a7dda46d", ++ "65f71d8c8e62cbeef07daf", ++ "70b50a59ebc270bb237505", ++ "2b5280596202f4b3ee0814", ++ "1a30afeb54dea502f0310a", ++ "33c3a8fe7d6e90cd610695", ++ "517123f4920304dc75317a", ++ "46afa6e418c9bd4065cd9d", ++ "2a68ad26b94fd25b4509aa", ++ "2ab0a302ecc453de7fdbe4", ++ "43e02a2659ddc4d3204fd7", ++ "7fcb3af03a778d48d5ac9b", ++ "40734a14dd653457e54b74", ++ "55152f253ffb05575c981d", ++ "6bb593df2f572a23254ed6", ++ "210441f8cc9b531f88fd3a", ++ "c79d219ef793e02a9f989", ++ "752129c2d07a536bf3bb8", ++ "2e9fc43379988881a1b064", ++ "db07432bf40360e3df399", ++ "2e9650e328b679ea03af31", ++ "249469414e604f245a56ca", ++ "34c572dd024d37c54c5648", ++ "411a5d336f1cca7988f319", ++ "4ca98168d36f8ab3815a02", ++ "63f8378a4c563212109ee4", ++ "7c4aa256f5265e9d49e8ab", ++ "4c622bd5bd26bcbd487c68", ++ "185c0df44a167fc9bfe948", ++ "7b4912ce2f8ea6ad90baf0", ++ "4b90d5d4f791e4cafea283", ++ "639eb30656278296f2b3e0", ++ "21d9c50ac15f9a1fc38df4", ++ "797e5770501b190fa5f6f1", ++ "6be705331dd40db5a995b0", ++ "79a8e47a4d897cf6b712f", ++ "32f17d420cb00b34cd9fc3", ++ "3d1dbd13d46aa7f5e4c42", ++ "2b036df33feda1ac5edb68", ++ "2969569df7efe8c61bb461", ++ "1c94ea576c3cfe00e40a0c", ++ "36a98de095d312e040c903", ++ "2e78ee01fc4dbe304eaea1", ++ "51edf68dda1a87c4b3af7e", ++ "cbf28251298433a3abc70", ++ "73f8a019ddb59d3f06f049", ++ "341181b7d4d6f4e2cf9643", ++ "17040e8c8be515e4ea36e", ++ "25e016000255df0b5c8153", ++ "272821f07dab57e4aaf0a7", ++ "4786c255855f792a20f869", ++ "79ea859ae0d9bf58c8e071", ++ "592a4efec7cf89e527fdb", ++ "398cbdee468f0759c375a1", ++ "4e4622894612a0772ab9f8", ++ "3939cec4c6eb132c9146a8", ++ "41b1881d9704918a051695", ++ "b2c65762784255bbebc75", ++ "97bac956d2b65a51260e7", ++ "edea2902a199d26d75bdd", ++ "5b6485b2f7f41f0abf3544", ++ "6415a8a79aa0ebffb6a24d", ++ "ba3b72d702ce311cc02a", ++ "67ed429f48df076df817f4", ++ "58dbbd6f088b5ff881356c", ++ "2a9957bb174e3a8d1169ef", ++ "5298718820a8e285437a64", ++ "71dbc0d71fbcfcf1245bc2", ++ "495ccc90a936edcdb3b175", ++ "6862becb8f668738ac092f", ++ "5f1584cca489de9bdcd65b", ++ "7f873bc8523c4931739324", ++ "282425a374dcf57904fcaa", ++ "7b233911df67c0ffe75298", ++ "28da7bd48db9e867715c64", ++ "14e34536d861554652fc3d", ++ "643b1783eeff5d2d9d100e", ++ "528f06b90d6ea98654eb1b", ++ "6c02da94ff6269ebf8b68", ++ "7116294960ec1370cfa192", ++ "34b380f57ddac800a53234", ++ "3746df2dcaeb2f941850af", ++ "520cfdeb5b65ce3df47f12", ++ "33bbdb9fd9d9e6cda126be", ++ "52a44d4aac2b12a44786a4", ++ "17e032019f0dc1c4277c0b", ++ "3069cb41e51edac9ec2b3f", ++ "653694fe66c257988cd02a", ++ "332ea59945a5d0e73f7dc5", ++ "47d7208165498ac04fc240", ++ "5f8e36ec1202b0292d5945", ++ "196185d708583cfba757f7", ++ "44dd12bd0d7f960d6bd7f6", ++ "235ae37d20b21074f27732", ++ "4d10e4408b3b6761aa225", ++ "3f14484539a427ea73a1b8", ++ "35b964532350abcbf76d9f", ++ "7e5eb2a4ef3434465acdeb", ++ "1a04ba76b7855a5e9c289a", ++ "57caf75d12ec817c6cddfa", ++ "fb87766da12e75782ca77", ++ "76272e758d9f83ceea908b", ++ "15e2aab3b7b69272b3c155", ++ "26b5c49d8c4e12d4b3d157", ++ "18347f5ec924cf4631f292", ++ "2ef94456619d9728490c1d", ++ "1000ca68b2a0f4790d5b97", ++ "208b7d3e85a97a99407a38", ++ "745cc1be634380e90bc82", ++ "60b46e71f1f2b8376d5d29", ++ "2f305b730466b54d50855e", ++ "61b023abdf63ddd6300036", ++ "3bcee7bc9a5ca7219edfaa", ++ "785211217f5fa1bf82b193", ++ "765c653014c5e4b3dc3865", ++ "52d5ea798306c9e21853b2", ++ "402466331777b126e4d8e2", ++ "7fd2ed81931942f0ef8d50", ++ "6edb305f1f8f30902439c9", ++ "1a484afbb93898190d8d03", ++ "40f2e74e1048db76b72516", ++ "b03e402e64c3436818402", ++ "4b0f09e29272f9d49c6266", ++ "59f29456bbb20b47aa046f", ++ "308a1daa2779a84d4db8ac", ++ "43c088f2eb74b96d25a4a8", ++ "614a9023303ed4dd2cdfb9", ++ "437e569a7451bd9bbbce87", ++ "7c38756fdad7c18ef7576", ++ "cdd3df5aba4c7ba52b4cd", ++ "2d2efb8be305a05b685aa3", ++ "1aba34eed15b418d4b7f0a", ++ "2432bbe72c83689ef74c85", ++ "4b2a621bcd3f244dbd1aa6", ++ "38a68ae5efe6ac22d3f278", ++ "3e1ecaa8d0631877bfedb9", ++ "67afcc19d0bb557a608666", ++ "fb85baef473def8948133", ++ "47efed21b3657d0618e28f", ++ "6e988e80d2c29dc7542de4", ++ "525362bcc006730db95180", ++ "30e3bf91dbc04d50a032bf", ++ "17a50483229662a578fdf3", ++ "3395f092181af53bb73f3e", ++ "260f0ab9a00e1e941e404f", ++ "26b516b52794658e68ab5a", ++ "76dda8edbfa5a4265a1a74", ++ "49af3dd263ef8ddc7b0303", ++ "4956d4cfa3dee8e23259eb", ++ "245cbb0117ba8963db7929", ++ "41327dfa41486f6b995572", ++ "207b51e97aba651825b40f", ++ "1d5fe04c71a377f6784338", ++ "43d0ab106641bd01d72cd4", ++ "7dea2305f898b6d88f6821", ++ "7c9cfb41c0f888d000fc52", ++ "6b849a1f17d635cf0a773f", ++ "3195d14bda042e7057d34f", ++ "52253824741dd177a674a9", ++ "6387ce1a213d98335598c0", ++ "50c4c9d0b48bd147d875cd", ++ "2afa4dd2f2245b7525fdf6", ++ "7add5048bc0984c36294e1", ++ "77e2377901111b6ba92316", ++ "83b4a6c139b7fda28fc0b", ++ "30f7be09c5f39b5532dcd3", ++ "132d2eb133a0383d464ad2", ++ "47d814d93ff8dca3c1398b", ++ "37bd7e26cf4711cd149911", ++ "5a081e53f2beac49d1a3e5", ++ "59ff3fb267f4dcf86fd4df", ++ "146dc1fd204e259d148dfd", ++ "578a6c67a3dea7609537e0", ++ "7376e75fa605889898fa7a", ++ "9dfe0a1feefabb0c62643", ++ "788f47c4aa1ecb9b01c1a7", ++ "3ed51ed7c85d68db84d78a", ++ "23270a061497f9098a49ee", ++ "3153805f294e973c493b1e", ++ "22d68d4ed1af18d8658de4", ++ "2ae83fe35c42b256590f54", ++ "6e1573decbd31bd14c0615", ++ "3ec0da959b014a91e3d171", ++ "7d60cbfdcc63ced7661d40", ++ "2e1479f3781e1a48fc49de", ++ "49639d01a55025d5b2f6ef", ++ "7d98b2bd2e9168b6d2e72f", ++ "14efaca65e59726b81dbf0", ++ "2d816960b0911019df6133", ++ "10b3ac9e35f753e3c9deb", ++ "40c514f5e20e67263ea899", ++ "6ad236039c2c3e149bcca2", ++ "8ab595a01941ab4070b39", ++ "5dd15f8501fbd308a231a2", ++ "6f79151ea6cbf1bbe85f5d", ++ "13fc0f6b201b7368c44178", ++ "601f96473a856041a89ff8", ++ "67adab05fa921650ed942f", ++ "4fe741cddc07d380fb6143", ++ "375ec3fc3fce6eb8e8ee9d", ++ "416b4cd1af257e44ad03fe", ++ "7b2f70ff56626a3003c33d", ++ "39c91d6ca89a6fa52b3be6", ++ "34363c8e2f82b5fdad8c66", ++ "77c405c1030a468f5abe34", ++ "67437e976a93329c5b9760", ++ "499ab94c7bb40ba492d85c", ++ "49c59a03a60b57e7bac289", ++ "210cf16be9c62f7408e63d", ++ "7a2990f262218cc62c32dd", ++ "4c2a57eb3ff167fa077ee2", ++ "23343ed75a8de5a22fac16", ++ "567dff5f6f64aa1697fa0f", ++ "fc59307a819ae8b7a3f67", ++ "2b8d9b2da99a690e7c44a7", ++ "9f4b0dce97935ef1d9158", ++ "365c9be3e9c7dcc814388a", ++ "4cada2a5056e025832015c", ++ "33fd72210da605d38ab799", ++ "28a2b96944f1b1210e6bbb", ++ "125d9103db1d2a83e13f71", ++ "3e1e43759c2fbd4596b36a", ++ "20db18e6c822f683f97989", ++ "f46157d09593fd6ceaef5", ++ "c75433d8b0423b552102a", ++ "5aaca79690a162240db985", ++ "1160b80ff627f607bda927", ++ "5839527a17db25de563064", ++ "7b9587337c3feffe6974d6", ++ "147d7e964c45ec443a24fc", ++ "40a3f5ad2d4a9b33e2f67f", ++ "1cf9608a937eea1a0bb3af", ++ "2a8bb0c8c3747adf31dc91", ++ "3c3d137503578a98196d6d", ++ "1cab579a1f775fb778d900", ++ "72e9a5baa06d4af7c9f9da", ++ "dad2db631732b0506f6b1", ++ "686f17e02f2d49c0e2e48", ++ "21eb89d73161656b740b6c", ++ "488aa158d747df0f5cd422", ++ "67b1ce8dfe00f53da9491b", ++ "687346ea28caf1c87376ab", ++ "254a37a2b407cabbf8069f", ++ "61d42c0be51a3d664c8df2", ++ "dd0623ecc7bb862ebbbac", ++ "54aeb8675aac1a423a7140", ++ "2e76f32ec68bf11c44acc8", ++ "a2c3a3cc1a5dfdc5a02b7", ++ "6a25d7d313e7a656aee548", ++ "78022742d8c1b58e95d935", ++ "46ea2e85d6ca1966d1ada4", ++ "7530bbdc505d301ed9040", ++ "30ebf17f92538a33a005c5", ++ "4839ff83b5f2ddc41b61ee", ++ "6517d2ae1b7ba4107ba2ed", ++ "1a5f34cedfae0cde5ea0a4", ++ "3d55ef23d8c9f8419ff28f", ++ "41d953d4dc4746ec83a1f0", ++ "4f4128c0856b216db55c75", ++ "af0b8a8f75ec961c833db", ++ "1e5217185f433bf1233d59", ++ "5846b0049ea6f32f4b2762", ++ "40e1957b3947c90dc23e89", ++ "5c6cf60aae0cfc30048ec1", ++ "5ee2324ad6594548cd275b", ++ "7969c90c819c5b0080834", ++ "6afc9a3033b5fed5a0c3ee", ++ "586e1bd3806f5472b98045", ++ "6afe8bc3bb8509aff3c666", ++ "5dbb4f6414155050573b80", ++ "493f40656c80193590d2f4", ++ "3e61864fd19f85bd211f70", ++ "3ff0891da2c6d0cb8ab6f0", ++ "245f14c58fc2f1bd38bf6d", ++ "5334ba131913654474693a", ++ "3b8be315926a14f8200fe4", ++ "54c37f5e810a7c49e7a02d", ++ "3c015f30d95c1da9c47adc", ++ "26580ddf1efe9fe3eae4e0", ++ "5b68ba6c572a6576af79a8", ++ "6b11c6506832a5a8571e85", ++ "37f81f265c72ca7279eb3c", ++ "79b27c762372e476f703f7", ++ "102e8f3d54ced5e10227ed", ++ "173b57e939be4a4efef880", ++ "5b18e3d2fe16a9d973b934", ++ "4413cfa8b5666fc0af877a", ++ "54b4dc744541c38f937102", ++ "30ffdb4a4aa7f26e29fcc9", ++ "1b931cd6241fc4f484ed23", ++ "7a45d57fdc1a44af5791fe", ++ "66ac85711d7e32d731c773", ++ "6f55491282e49ce5634ba6", ++ "17ef22a6ba1fe32d3ef7c0", ++ "153d48f10507702bdbbfbd", ++ "755b7f3a3389c861fb2d23", ++ "1bacdadb366134c3d1a5c0", ++ "4de1c0244f476f355a3a91", ++ "2b04a0e7492ffe108c1c00", ++ "49b08f20244bc64879adcb", ++ "76201a82e565cd9ac092ed", ++ "69699a76b55d4ca99064a0", ++ "6d83e6632fcdd8cf940ffe", ++ "705cc0331aa0195cd9f6ec", ++ "59b1b4d92c6ee6432bf67c", ++ "26c3f6eae80009e6946697", ++ "825e4a5dedb493626e7ba", ++ "4d1a97d405c026a8a5aed6", ++ "d08254f4d2d5ca1a5b877", ++ "7bca9525e525d6ded2c76f", ++ "755d342969e9fcde9fd595", ++ "7438dcc1d87bfc73ab26", ++ "5d77b3e7e323ddd35a71a5", ++ "dfc33dec9862e861d43cc", ++ "75b3fbba0880cedfe12ea", ++ "2746a28b14b19ab8d24145", ++ "795824804b82c5e751df2b", ++ "1c6bd00355516b7177a93d", ++ "75d1f80628c3a1c1082c91", ++ "1998245099906d42a62588", ++ "7ba683eab937665ca29978", ++ "203c3b480852a2154fd642", ++ "1ee8fffd33bf6223d36b95", ++ "c92faa8d02b107a1b5d50", ++ "65a7ac7cbfcc2f6c41c2ac", ++ "7450197e181adf8c4f92cf", ++ "636079478bd1eb493d0866", ++ "47792007d733892284fb9b", ++ "44678fb0d784f11b21a657", ++ "27e147bc2366e607ad99bd", ++ "168c6919206ac6ace0f625", ++ "1c9f92bdf4717c6880a9ba", ++ "3c4dc48e3cdfd4ce2eefe9", ++ "6b79ef63bb66f1362d8de", ++ "5efd2121bfee3a30184816", ++ "5ca7f66678a73081bd34e5", ++ "5cc79f5d12d2a991f4ebd0", ++ "4fadec3b4cf5617426ac33", ++ "af86674d8a1c364331ef3", ++ "1b0ff68c5f14ee84b37e7f", ++ "6be91a7f057434bdea3953", ++ "498cac7e3100df5899cd16", ++ "3a0a69f5624f959d85e411", ++ "779b65c66a52eeb45328d2", ++ "48b5f18a43890f525b850c", ++ "1a9a55461554e908c4fbf0", ++ "230c19482c2fdfccb6b94", ++ "1a364185d640ba1a6ed583", ++ "1c72fdd679cfcd10e369be", ++ "56853e4d2e614e1924d27a", ++ "10cc655b268878a4e8e081", ++ "3c71a5e6f6b431bc524a53", ++ "7b274f32f2cbfe03031cb0", ++ "64adff5211c520e76cfa93", ++ "621edd8ea6ff7136526540", ++ "7f8ad9957e40808881a192", ++ "76c881f1a372f21e829095", ++ "5027d58d8950e307548d14", ++ "122225a7053b175027361a", ++ "627a4795d0c0df1d84d13a", ++ "4a5333a5e1c04b8bdfa257", ++ "4555d38c19f123cccb6fb4", ++ "bf09d6ff46adc21d04951", ++ "bfe2f259223ccddac13b3", ++ "4167a3ca5253556f128ea6", ++ "1d3c95c9d8462d4c467220", ++ "48e1272ba911cad7536a1", ++ "59b759ca3a67e4725b5f84", ++ "53cc3acdd810a96c3160cb", ++ "6abf077f6636ceee313734", ++ "226c7c98f219b40ea94b66", ++ "54dcbbc689dad12df77730", ++ "5abf04c6f95d64b6c414", ++ "50774e378282fd09459eb4", ++ "66895605da5092de3d2b87", ++ "3bb5af245e5d40c6fc15e3", ++ "6e388c53aaae7d287eebd5", ++ "446d6309025414bad0aee1", ++ "6a40f14b7a50eeca571bae", ++ "6d925493d403647cc0a7ba", ++ "73f933fe401d564be0efd3", ++ "15aba357d612d87099180d", ++ "5c20428f433fbf0c9ab374", ++ "4871087f3b2cd3c0f24c3e", ++ "4eea383bfa391bcb14540", ++ "658769c97f8b8945ac2878", ++ "4a05e03567ac78048832e8", ++ "5e4b991cdcf27f65105596", ++ "32e5746a212d6238682c00", ++ "26436c96779bbae9c15fae", ++ "290cc13b5edc05d863546", ++ "69714524521e343bc3692d", ++ "3ecd876c819b78567f7fa4", ++ "2abf897aba93d347d6e2db", ++ "62f83959d672cbfe7201a", ++ "1a54e98271fd5720e1bc63", ++ "2029341ddfdbd9f668612", ++ "572930c1df7ba238dfc9cd", ++ "1b71574f7c567d707d0e82", ++ "509b53b07e607cbcf6e79b", ++ "682583fe078ff76c962922", ++ "2f0c8ecc959b7521936666", ++ "621bfd4a39ee713781e554", ++ "3712172b56577089f4c773", ++ "208fb7a4ffec7d8d1e5be6", ++ "1a5e08fda45015af7feba5", ++ "172bc617da9e1aa348e114", ++ "427af6fbf5578c6104b255", ++ "522de20b2431d6ac8f42fb", ++ "6ee2946ba009641ad73037", ++ "73e027017f2dbdbc204a16", ++ "3d88de9f1c15bfd7b6363b", ++ "36c8b1aaf274cca356ae2f", ++ "e050d10f9ab1681fbdc06", ++ "3cd72e80ffad615f09526a", ++ "2b913687a118d5d595277b", ++ "22af1fffca9aa4b2ba234a", ++ "7b4ac8e7f9ffbf17f0627f", ++ "57d57f4721fb6be3b38e99", ++ "c98c97ab7b4b0cb756894", ++ "2248d63b93978222916f1b", ++ "53528c9bfa6f5405d66497", ++ "5e45b3a532e82a603df12b", ++ "6799fa1f9cffb381bd6c8c", ++ "5097857cdd82d2df144dda", ++ "4f540ba10fdacad19fee6f", ++ "15891c14bba25257cb14ef", ++ "eb947683c26db8dac2f36", ++ "6b497ffe240d0867d5d7ef", ++ "2beed154412bd52cf1c83c", ++ "39824b01dda7b8ada90cc2", ++ "5afcdfdab7a5b6864efc6d", ++ "743eb61998341a5e892884", ++ "745ca85c76435eb7ba81ad", ++ "4b223517b6c7cd85cb43d1", ++ "51e8f647af3880d2b77ccd", ++ "6a24f8897d3040e8fb1da8", ++ "57f40a819546afc89fc2ce", ++ "6b0dc0d5521d21af0ccaf4", ++ "282f326b1fcbfb463ba836", ++ "4d7d33eaba361883277544", ++ "298af75c2d584b01ccc6a6", ++ "692752e677cdaba7d636c2", ++ "277575523998439f834d3", ++ "1aee70e483c99574480349", ++ "18991d6f38c445ab4b38f1", ++ "5552617d9eaca45155f490", ++ "3459971422155f9703c78c", ++ "40678fa2d309cb9417f68f", ++ "2be59650bf9aa57c249937", ++ "5ea38165e28694c8629ccb", ++ "3e6265ca213c1a0be64512", ++ "69c96f5702ae4eecc6f341", ++ "62e9a332653e1b103db5cf", ++ "62870c281778214067b40e", ++ "14bde3f9984cc98dc83f60", ++ "5338be8d9f87d3f2e46b2e", ++ "5e7785eebda5c8e2f0247b", ++ "24183bf26908368eb41547", ++ "51f9e6d75a3c5264312643", ++ "4c67268f528ba7e8c34a0", ++ "708324dd5e787ea3d43a21", ++ "75b09479e265b9f0ac9a5b", ++ "7972b4774882051f2d85a4", ++ "31be6678e513813e0e676c", ++ "170a54e825e33a2265d3cb", ++ "66fecdf77d13ff6c0b25a4", ++ "923121ae3af782c934df4", ++ "473c4bff7362fbbd2049ff", ++ "61249154ca21ee2b75deb1", ++ "23ac86fba80f09945d51d2", ++ "19b52abcac8b60d5349efc", ++ "3a9c7a7d5782f84fd4620f", ++ "674fde01f6057423c31a9a", ++ "5533d7d78826353c79c73e", ++ "42e88e9f66659afa2a393", ++ "18e83fe885c9bab518bb97", ++ "1ccb03c008f2e822848880", ++ "3665e544d5ec7ed8868a1b", ++ "6b25a8073bc36b2af4c2b1", ++ "7b5ec7e3346c3cb243b356", ++ "34b484cdb4cebe6aff839", ++ "260d3af59b4f3d5c208bbf", ++ "3d946cf498fbed2d965f70", ++ "4755035ba4d9924118903c", ++ "4a29c3e62c947a4a1e99b9", ++ "4edfb060e1dacbd449d726", ++ "29f1e17550354ceae49f99", ++ "247f391e5a3b234cf19ccc", ++ "7e2be12d72782db9e725dd", ++ "47d8e4eb9811f9d409ea40", ++ "5488a723f6ba5cf9800543", ++ "304cc216ed2272d07c7f80", ++ "3292c0c9fda6887e4ad161", ++ "24af65fef90e2f99e03cae", ++ "2c250894e17e7f4b0dd", ++ "77a73ba77b4ed622a17e87", ++ "f36396be6cc745bba9473", ++ "683a5c6214b92efde4aafb", ++ "55247bc5a72b8d3e89234b", ++ "6747e95b215a546a339b7", ++ "178fa57d907fddb0fe3cca", ++ "748df460f8594e0bf1ab20", ++ "3b409dc537f82b36a0b80a", ++ "69150cde40be119caa92bb", ++ "48ef84f7c351ecdc951b2d", ++ "4e162f9f85bd081abd7380", ++ "32dc0a137f654afa8bd8fc", ++ "6f59efef27dbd92df6f652", ++ "645d789e2ca881eb3474c9", ++ "73a88b6c78ebe25a0f02da", ++ "3501255a6a3473cf6ac042", ++ "4026f1042b0f5b1e940a78", ++ "364b7fe165d59b5d916e2f", ++ "daa197fa1e9b3068f7333", ++ "1d51d9201dd8c5066bb7d1", ++ "1e7a055357b6580f4a7b9", ++ "6f33938b3b060336c57082", ++ "6ad4c1af807487676eed8c", ++ "6a5c41dd17f1f090be79f9", ++ "2b1a4dba7447b02833bcc5", ++ "1a939b8af79d6b9d1e57e0", ++ "339fe9b069fdcbe6f3e985", ++ "55e838d685f75c7c6b5f20", ++ "38102211c805f10960d5ba", ++ "6f9024d8cdd8d69ef10bf7", ++ "2db5ff229cb2d0a85b8393", ++ "7e1946c78347049b735318", ++ "5a2d6c9f89fb24cf28d1b3", ++ "7d5f8fcc1cf99dc3131c84", ++ "68719eec758c692aaaddb3", ++ "a5582fe7b241700d09fbc", ++ "3de183e6b991f7b8085160", ++ "cd47f8baa501aac7b0989", ++ "658a9098281c199cd165fd", ++ "476085adcac943f7253ad3", ++ "45f39b8c67c74dfb911f44", ++ "3cb90317e0fd78744bd72b", ++ "509c14f0517edd55968bc1", ++ "7a6cf71a247a9aa2ad1f3d", ++ "594ab65a623ca11a1d847f", ++ "32765eba5563b5336b4375", ++ "e4ce3641fd893553aeebb", ++ "e73b5b515611f25e496d1", ++ "ddd508394009eefde3ac7", ++ "b4aa58f86a462da2ed07", ++ "4d562b2b0bde307c0edc87", ++ "2c30e99c7b2606982311b7", ++ "3a997ef0ad242391b526f9", ++ "4f754c5d3b280b20bc95d0", ++ "375f02bea7dda994d93044", ++ "5bd335a49bc5a06867e5e1", ++ "63d746c096cfab5f984c70", ++ "25d324d633986f4baae0fd", ++ "2175a06a641d5e8ad33646", ++ "403c1a7f2d528ab5d343b9", ++ "1429ba4cc3fbeac84cae7b", ++ "4fe62d365b58ffaa0d2201", ++ "6bd057cf4845772f81f71e", ++ "38dd92596a9fd54920876d", ++ "ffbb4d4d7cd961d36be9b", ++ "3910da787142c54f4f9b2f", ++ "2a843c02b5e59799422e65", ++ "4f459e6fecc9cadb8e977", ++ "374bc74be1e4381a79910f", ++ "4656a2b830782828314373", ++ "583e484be506b8efea96b4", ++ "36d97c131b997ecd7866ef", ++ "40066cef89d0c82982356c", ++ "3301553132b8af815a8ed7", ++ "475c6525a253fe4a455211", ++ "7215cad82f761314bbdd1e", ++ "784f7b46f80b03fd06242c", ++ "2fc0729bbc7485664f21f9", ++ "62658893411360a21b6bfa", ++ "775ff949792463791cf8ab", ++ "6bbcfc26c4e8fa7b836095", ++ "14a9e816ead24aab2e6645", ++ "6467af1a0f07013b2e9849", ++ "5f019291ccdeabcd687ce5", ++ "2311c97b29ff503887b251", ++ "623f56668cc8a093bdba7e", ++ "3b890cc2ea1882c16138ef", ++ "6e0d3cb0378f9f523dd7ca", ++ "e50ab5db695f894b26597", ++ "500de5789e46431a14b08d", ++ "74a3895c1173d1100e060", ++ "28c70cf1a34bf4b12fc1a1", ++ "260202888a368af1bf27f0", ++ "49f6551bb5a630f7f3a91", ++ "35984ab233bfbbdc2149d0", ++ "7715808f58e52b93fbd9f4", ++ "7a35b4347e2b2fcfef4e8a", ++ "696a995b7f1bd2337f9c55", ++ "765220bfddbe009c12884", ++ "6c4e919619ba3e8fcc083f", ++ "6908cd3a0537e6d9de224b", ++ "8cecd81b395199379b860", ++ "73475afc8917dfb47ca158", ++ "671133a56bfab71842e1aa", ++ "4356f96a535f02cd557790", ++ "d73559f9e34900d6994e0", ++ "4299b7c55998b524a2963e", ++ "6df756715e22975feac139", ++ "2e795b59317cae4c039946", ++ "638a87cbb628cc2744b5a", ++ "2d0786ef10819221e8e925", ++ "285121b3579e1afaecea17", ++ "f0daaf67c2422477284d4", ++ "df5585842155fda65c5ad", ++ "41824effd56ee95a25ffcf", ++ "5a2e3e7ac883c32720fb5f", ++ "786bd6b0d956c71e3d0c41", ++ "2dd9e647cd7caac396218d", ++ "32267a0d010a3ac60d956b", ++ "3bd14b5c954fd788df3e2f", ++ "55d4eceed6862d8b7edf73", ++ "32bc07a00fc1c32e790cff", ++ "e16e90086dfb42533696c", ++ "58f251e3a335055f8d1702", ++ "45d0bbd0c4c565d517f4d9", ++ "47cb5e48534f0fa269ac37", ++ "23591be47ead61c7626094", ++ "4e9b8b836aefbcc76074a3", ++ "7499dfe49d22092ecbaacd", ++ "422c99318e0e012bdf3cdb", ++ "6dbec10ac45803905232cc", ++ "5f091c9040f8e8b4af8c6a", ++ "49dd9e128368a6e8f31565", ++ "631d5fa433132c920e949d", ++ "4a728ba1f43b41e3c8ba7b", ++ "5de44a501f899626f11ecb", ++ "1db2b63fb5b72bd2913b9b", ++ "75c3040748861ea4157368", ++ "5714f7d7bb3f12d88adae1", ++ "3382f247e6cbcf48a8be0c", ++ "436134e757c46fe077e8fd", ++ "ca5fc0de7c8f0742fa11a", ++ "324b0e59fd313b7b066991", ++ "fca82540d3cb37cfe38de", ++ "71310c65e10b4b2e1f3924", ++ "53034f778656513538ce93", ++ "6e8a28f3d3f87aa2548dbc", ++ "792ab4b2a318b2229df59", ++ "700ac125ecd365c309339c", ++ "d7315bcace04536b59c5c", ++ "5f9fe5fab5062ae9d40550", ++ "7ed8ee73ca5507f25bd5aa", ++ "6247c20f5e97453bb71b09", ++ "463e980411d809a1713383", ++ "546f06ab10360a76005c9e", ++ "1c0a01fb60b92af636be29", ++ "a5385b7f7d2a505f37187", ++ "296401a6101dec9b48a81a", ++ "38aece2fe0c1923c569603", ++ "e966e5d5e80ac9dc377a2", ++ "7eaf3d6220ab7c049341fb", ++ "1a01c5dd382ca52c0f8a1a", ++ "68ab0ae55863c4f8044101", ++ "75b29426909e9c8294f365", ++ "39fc8d30c95dd0494e9be3", ++ "3c234bbaf5da9465f9498e", ++ "7ef05035c2a08e050870e7", ++ "7e880bc1729d1783a14627", ++ "3df3e3ff8b5241f9f120b6", ++ "61c60fa253a8977e213d6c", ++ "dcb3217133998c35879b7", ++ "19e87845fee8ee9d86794a", ++ "1b8c24041b5c09c2ff1c0f", ++ "1d4d18f2bee14ee417596c", ++ "5197b486ae5dad9284702a", ++ "7a4b513ca25dc5d887768d", ++ "2e1d98165a5897b1482cbe", ++ "494c96ddeebc9c314fa5db", ++ "29785bd232aa4bcde009aa", ++ "42d71e3ed0639f1b07231a", ++ "1439532a6d3fdff49361fa", ++ "8c59c1948361c413eed8f", ++ "2c9401cd53725f84e2c421", ++ "5eb9037bc76a6930985737", ++ "6d5d0573b2f9596b50b73b", ++ "36121cc69943c0f23f8a85", ++ "308787b80145ee403c389d", ++ "74d978e8d6a9ce6def9aa3", ++ "34242d89a6cc1d4e30fa9e", ++ "6106124e06a73207e84629", ++ "1174d8cdaeecfc5b7908d0", ++ "49f7df71bb684bf5a54c61", ++ "53b453f5f30f900af808e3", ++ "7b4210ea990dbb2b80bb4", ++ "232c5e33740871b389c8ba", ++ "3e748cccf5c4b2e587b8b2", ++ "2078bac214b712936de507", ++ "426ece55a7fd1d858414a0", ++ "1eac63084c7797618dd9f7", ++ "59fdecdacfa91d60fd391e", ++ "589758587c26455b22331e", ++ "19e1cce82f85eff6f6b24", ++ "16d83b4ed79a537102c236", ++ "4ad2dfbccfebf4c881dcf6", ++ "1851d531ca021ad6f2b572", ++ "1c85ed9416af845bb8e82", ++ "5cf912fba9a563060d7b3f", ++ "14c7f40a28e01adc5ae1b4", ++ "15131878551adae4b04c53", ++ "ddf6be61ce9c04533277", ++ "48938572f05f540b474485", ++ "465d9407cc9bc6456e974d", ++ "1df3eb49ffac499fc5f3b6", ++ "7e698a24ee9aa726fc4b0b", ++ "53e99cd5ced120123b808f", ++ "66ba97928f262067fec230", ++ "1d1b1bb20ae40ee8d35505", ++ "22cd6c35ab2195c56794f9", ++ "1ef2f8aa8266e26254215a", ++ "14da7875e13efd461f7c10", ++ "22d6cba0f681e23fc64382", ++ "682b3c7ed60ad7c985a3a", ++ "244d1131736a5aea351d17", ++ "3ae16fb3fb77d48c6adcc3", ++ "3253e31b47819fbcec75b4", ++ "507a6d1fd108a63234b38f", ++ "3e2cbdf24bd5900348312", ++ "34f2e009d684c876c246fb", ++ "bb247081da09643c00d36", ++ "32a426cd7460f9e5c5e7", ++ "48082cdc2a40ccd11ae434", ++ "1d616376b444140f9acd68", ++ "72bd80f062eb130b42b044", ++ "e1e55a565534c74a109fc", ++ "49e01d719bf13fd52369ee", ++ "2ae496e8d9399061460619", ++ "7adc118469443d4f7084b2", ++ "7ad19421f012d132850842", ++ "45b5b538c44c73f3bf515f", ++ "5f8307f0589178f70f7238", ++ "54018c8917549d050c00a8", ++ "4700bc9de4804ec44122f", ++ "d922a909e3b3afea5fe08", ++ "46ea38e0c4bb849b39baee", ++ "7b87e87e1438c6126ab1cc", ++ "499667b1e22348ac584789", ++ "137f8e05276cc8f9180095", ++ "5accf03c1a20af1120832d", ++ "4e94399e1765146189df5b", ++ "55fca6cb45a0501d1c50ba", ++ "2ea5fa6c2e19e6ee7add96", ++ "d8e9fae4ec5d3e7913712", ++ "767f863c9bfc5fd6540f44", ++ "477273c36a749543489547", ++ "4265efdcec74f163498291", ++ "43f53558dbb8a25ad757e", ++ "7b5d99de82bacb33af7ee8", ++ "1d4515e4768ff5c6b4178f", ++ "2057d9029cad07c3d344a3", ++ "e419f0eced24d03400fbc", ++ "2e30617b0abeb387001867", ++ "603f9b3bc6733094104e23", ++ "fa6bb9b4b92165346e0ff", ++ "321ccac2ccfd73a0b28c6d", ++ "6af9f591969edf6d33a899", ++ "5ebda7b44a30093e22fee3", ++ "150cbeb75257f8eed7903", ++ "1b0dfe5bf791bf4d645e64", ++ "5286bfcb1951cdb460fbe5", ++ "29ca62a9234f915c5c9715", ++ "3629587577ea6cd990a3d3", ++ "4d3d6fd7781e8ff3322226", ++ "7377f9449fdfa779330064", ++ "7f3f1310b0770a6a8ab4e6", ++ "74f8ea2aa01f3e122e9ec6", ++ "74aed20fd8f19001dab562", ++ "7a9c1df7aec04dc00e3584", ++ "2b3dba5edc89810815d1ce", ++ "217c2392122f9868740137", ++ "43ac29ece073be2a30ce86", ++ "4b6b8f4e6118573075d4ce", ++ "3cd3f5ea5623ce969c863a", ++ "421de31b9083741c4d4c48", ++ "1960ca77285b35812422e2", ++ "7d40cdfed339cab397652f", ++ "51a001a64a22c7bc0db3ea", ++ "1fe4c7d7da3eaeaae25e65", ++ "720179be8f54eb5c778be", ++ "1144f2116d6e426f3addec", ++ "10ad00e38092458e73fe4f", ++ "72e90ac5d748fbd2d7aadd", ++ "18250945b23b28bdd1208a", ++ "dee72e6d522c55b461f4b", ++ "1e31c413e16722caeb814", ++ "5ccfa76193ddbc64186a30", ++ "5eb2b60c1d97e4dcdb09d3", ++ "7f31009d8b384ea51f9235", ++ "7118c95246463e79fab7c6", ++ "2af1b36e871a2152d87ea3", ++ "1ae4174a64ea29d65c88b7", ++ "1aa4bb2c56ddce8ebceb39", ++ "65773487e5415b58fb205a", ++ "5adfc7a0a78f6657a5960", ++ "3d5e0686efab87e5e7c266", ++ "6552488fb7e68b138c5691", ++ "69cb489051468dc8b7a10d", ++ "2885d88c14361dbedb4fb1", ++ "17f8a55fef5d58503cdf89", ++ "71a2dd2f4561ce6b25cc84", ++ "173ef6d2228315e7fc8577", ++ "6095ebe0914ab346aaab52", ++ "1246f9f5df870b21bcb1e6", ++ "5e53c14166e301e45a1c84", ++ "3a1984f88834905315728d", ++ "4678975ad8ef4ef63ed234", ++ "139a5be9fe5d74b7b324f6", ++ "4057d3883ee10c31d0c5f9", ++ "5de657154513d33b2dbb32", ++ "7da4d79cdf3d83f0763c79", ++ "7399c1866bdfc2ee9d0ba4", ++ "48cdee08fb7cd0c828eec2", ++ "4c099f907df9db8a25350c", ++ "851fa3652b44e57d9190b", ++ "d0d6f30615b8f231bece9", ++ "5f305f39404231a1ce6591", ++ "47b5376a6bf9ae1b5420d0", ++ "55925c1c09bda33b3d0e7c", ++ "4aa62ab8f33741774c11af", ++ "cebc8496358956c6ed352", ++ "4e0f2086acba831702db59", ++ "2103ca88adecbfdd3370", ++ "5b917d89029b0850efbfd7", ++ "619fb115b590487fbaece5", ++ "709f8b4e1e81f78ecdd5bb", ++ "5c6ce5b29bafc437eda5ce", ++ "1c6a5fca595a1ff62b0a7b", ++ "5c246c8d9baad4092bd7a9", ++ "2f1ba6fd01e5cf713f7991", ++ "3d17d279ec6a81f53cd4f8", ++ "42af59edeafb6c79b9d208", ++ "7e0f7a6620c31d72d9d568", ++ "68d1c5df4d9653be9c8e7b", ++ "79db0961906e2d46b0b349", ++ "4c4fa3875e78671bc1d2bc", ++ "22a17bb1e02873c944cbe3", ++ "25e4a83dfc2f633765d96b", ++ "8a4219421d2f55bef801a", ++ "341ee0e329f6ab9da76c4a", ++ "28eaec99940a1b1f563841", ++ "4f1b7b04b31a6d85748c8e", ++ "1152ee1f6c91b44b1faa20", ++ "6b4aa7c57cecc522b32c99", ++ "49e219e4b19fa82e3cdd8d", ++ "5bc9b4c686de112404ccc3", ++ "40d9ddb7d82d86fe4dc6d7", ++ "6b85f2803d97e818e2e527", ++ "321405882a2a0c05f7907b", ++ "60749c3a015660029dacb9", ++ "26240f3e8816b599bb01c6", ++ "1a91a4ef4625f7ae911f1d", ++ "18704740809cbd3a91bcc8", ++ "532d2ff2bd9d0ca8b344ee", ++ "18488f368798b8734164ca", ++ "7453e07405f19cfba93c17", ++ "3cfc7a65b66e9f8c6f8cbd", ++ "4dde9b7ed5a96934e4dd51", ++ "7afeb7314079bb05948a57", ++ "2f4c8ebd42ef359c5ac79b", ++ "2579cde0e8d37e04167a12", ++ "368d20177281b04fd8018f", ++ "4553e500c491eb2ced6e1a", ++ "12a8a0e9fe6ba5c3656149", ++ "13d6f0fac0c0b9cd891715", ++ "cfbfcb607ba616c016fef", ++ "522bb592e89a78b316244d", ++ "2db6d4b5b7a928883df97f", ++ "928d2a95f60dac2e280f3", ++ "15b79d2a607e674b1df02c", ++ "711d3de6506cffb89d82c0", ++ "1fab75ef67bec61a68a277", ++ "3dc7ec06146d405216b267", ++ "15c08724b1daf7a590d087", ++ "75c2ce5e2535ac7878196c", ++ "63dbff9398c6d2cafd1418", ++ "245003f901ae0a356365b5", ++ "10b57d68a8cfe14ef3ca7c", ++ "5fdc8856cd703470a1e5a4", ++ "1af9124bffaade4351e990", ++ "5f72010436c71470f190d9", ++ "50755ca653aac70b84b12a", ++ "14c9d693e42997dbc96df3", ++ "7a93c6e177d746f5eb503", ++ "28d70ec040ec983aded5c7", ++ "124c113e25b1a8153a830d", ++ "2df0f496cddcc699504250", ++ "5dab9e18ce0b8340db40a2", ++ "6a410e486ad693817f9d31", ++ "5e82dce0d15b40d73e81bd", ++ "4e1b51392bd1ad38a51d00", ++ "69efc15f2bab10979940b4", ++ "4bb8f4e111d078e3c54590", ++ "22e8d9bc34a96264dd4caa", ++ "3a7c703f2642b17eba0c69", ++ "2df2bed0dd9ba405c8c5ce", ++ "222dacddb6e77241cadac8", ++ "4c996629390ea0954eeb1f", ++ "37c7b0fc4e875134c29246", ++ "4a78cbf6bef93b38948e09", ++ "6c8fa526a6bdbce9f7b832", ++ "7633f58adb014bb5585678", ++ "509ea21b16907067d06b82", ++ "30a8e1972ee45f3e0613d5", ++ "63839ba9cca448dd7fecff", ++ "290fe0ae5a419909be4e2b", ++ "35dbe95730bed0669969ad", ++ "2a6c238cf5c57a2939882f", ++ "f9d7db7493258ceea1a37", ++ "36ded179138f0e4cdf1ee7", ++ "4996f8a3f7c2c5fac02813", ++ "39bbee3cab035e7fc68b3", ++ "741dd990ea20591fd9b5ff", ++ "16eeff7e87d3caf8e58a92", ++ "2c8f1060dc661c38044a5b", ++ "3d886ee05f1bcf69fa4f70", ++ "392d9ae31bf22e0236e198", ++ "1a7c7fe62effcf2d1a2cb5", ++ "65172c59adde7fa1aa62e", ++ "389d1e8a26db35e20882fb", ++ "7dd9082b6f5562b8d6ba91", ++ "18c5643eccf2173f575420", ++ "757f2101d664083b2fe8c9", ++ "66e9cba0e526f30b7b9b8f", ++ "6c33a3a058504d48c17efb", ++ "1a908fcb6be810a9e1e92a", ++ "2df246fe147cf6a7d9ed5f", ++ "3dac1d8f9e9cf46cc42204", ++ "3cfed079405fd41004c118", ++ "7aeadbfb750a598afce6ac", ++ "485bb888b6979f8f201fb8", ++ "460858d1e253129bf64e5b", ++ "3567cd9077f5bb1d3115a3", ++ "28b06a5b8a2319d5d78e37", ++ "5c3df551863d0055925c95", ++ "260985f3992a168bc7fb3b", ++ "5a00aa930e50101d3ad458", ++ "3e41b8ea3309221756df7b", ++ "216b9b04319fd8da8a6d3b", ++ "24a843ed6770d822f92be9", ++ "60e3811062f0661e25f626", ++ "656a55d45a93fac53881ab", ++ "10f7a570b959918609b06f", ++ "d755ece5c8fed1e833d4b", ++ "5eb96063b604b2d052b457", ++ "182ed4a29e8be479e40c89", ++ "55e542cd768eaa4ab7eb43", ++ "4a1404c02a58e6862d11f5", ++ "4366b19aa12542a30c1749", ++ "74a0eb9dfa780e171aa5bc", ++ "7b34f38b9d16f0d70ddae4", ++ "1f75d643fbc4ab52296f51", ++ "1cc8bac063e7f4722cc83d", ++ "1f1cae187cb4e7e2d75ff5", ++ "6acdbbcb1d87bb33b845b0", ++ "5a67c62d60522486e9cab9", ++ "66727c69de089e222307ae", ++ "7dde8d7ccd2cebd1d4b943", ++ "3732911ea3b78b2cc54de2", ++ "69b04bfb64dc28afc90f3", ++ "49a34db8369186ccd3e18b", ++ "3087f959a9893769198248", ++ "766ac65aedf40f90341249", ++ "3c8b578aed4234d875a143", ++ "7248daa035ed0c83c2d007", ++ "35d310b1c9f92e46c5dccd", ++ "747c7a13b706fb28e46c47", ++ "e2d9cdfcde324e23eda21", ++ "607776583fcde0ad8e4c87", ++ "2133efe27b28c873f101f", ++ "6ad95985d0ab8e8d823145", ++ "35d6d7bb2855d9adfbf650", ++ "7a123babe2e7abafbaf8e7", ++ "3b0cb59bddc94e18233703", ++ "77815256a969cddb479be9", ++ "9c6c4ea9b05d327c6b7f3", ++ "55137101093be9fb51857e", ++ "59bb325b9748e94acb6630", ++ "328bf9a8c78ea2ca3388be", ++ "6ee757629a9b68ac7e690f", ++ "59efda7d6a6d8e6aaaba46", ++ "6ce70c288bc2711b1b024f", ++ "4ed7cbd3e32dee7a40c626", ++ "a9753c820825d73c04548", ++ "741d91860d83d000328e76", ++ "59aa03a25735023ef97395", ++ "1cc96ab6764758e9cff09d", ++ "50e22c6cf5d6b70def807b", ++ "76f42929010d1ca7619b42", ++ "18a6b71998f6f84fd5d814", ++ "5fda42ececb40f359e4f0b", ++ "2f62056d547ebf7995c6e6", ++ "23966403e567312c7a8379", ++ "6b7e91fb5948662e3961e3", ++ "1e6874a8b307092ad6e72b", ++ "31dfcfe645b46b329ee2a1", ++ "209910d1159692421526c", ++ "3c4374002a4b05edbee285", ++ "6df855d5b158377d521892", ++ "4169ab1c6bf3f0abec6c34", ++ "359b331d03b9cc2451c1f8", ++ "3c7a2b6b58424eab86f3b4", ++ "7242e44696c19a3a1910b7", ++ "2a7311c640e7cf0ecc141", ++ "7933956672bf2e4535ee34", ++ "455927f484bb8820a2ccf7", ++ "551ec7c1ae7ed078f940c0", ++ "6ef800332004d6cda26cdc", ++ "7630fa097aa2bf97cef6b9", ++ "490db50fd1ace7e8ec15ae", ++ "32f5fb93813b0abef00c9a", ++ "44e6ec408ba05ad98e759", ++ "568f3917922fe83ad3e225", ++ "273beeddd87cbae01c207f", ++ "1a8ed7cad7bcfca4620120", ++ "6c362e17e2173449bde86a", ++ "191da9b869e973d2fdfea7", ++ "64666abc6a9a2f6a1c7575", ++ "3c31433d0db703e03c294d", ++ "1e74e23fb34c50dc055d0", ++ "59652c3042e742dab07904", ++ "50e46147373113c54d73c2", ++ "776ff8d5492c149f7acf17", ++ "318d2300370d914ed1483a", ++ "e24946eda2a54a4c98b6e", ++ "28434971e0ad86e87340b6", ++ "b7602abf832a9540b03b8", ++ "3a2bc2968347afc3827c67", ++ "5fde1fcd656f65c682e01e", ++ "113149ff5647e02c5d8e8c", ++ "329c1979af2fa92b25335f", ++ "7de8764ca6a43c99d6a50f", ++ "7e68cfb951ae556b15fa1", ++ "5cac3c06df31850ad70694", ++ "357eab1d6b7f6618503b3c", ++ "4e66ba0bc1058a3931042b", ++ "65f33a2872e25c8a682f06", ++ "a5d62acbaf68c52001a4b", ++ "18f39bb607de6b1ad183e4", ++ "16870479234b3337ddc8c9", ++ "7093b250c7b04c2c6d567c", ++ "3820d1fc1eab75e925dc43", ++ "49ddb3e956e6fd8d65e1ed", ++ "7544304d1b3c2594fef689", ++ "60483a9742002ed4918cd1", ++ "809a8bacccc204134381c", ++ "177aa9fd51aa698c4f5d25", ++ "2848634cb8eba43423c432", ++ "2bd0c39ecff8d002f3a3f7", ++ "2bc7683658e815b0850ae", ++ "56d7ace10d6e046f35bc1e", ++ "1cf7470aa8bed908f93c32", ++ "44885049137a26d9ff4438", ++ "46436019c4b35e76ea4182", ++ "6b4ed91c3f4f0b25252206", ++ "1cb50b0700a11348f864c6", ++ "26c603e605263eb37ee858", ++ "734cae170e5d7d8758c509", ++ "3e00e41664141664f70d8e", ++ "4d36c683652009a273c69c", ++ "61e21b9a255226ab8a9c03", ++ "66db9685c97e1039f97191", ++ "41ebedf12db1451af99b12", ++ "5640578c9a2f674c097c8a", ++ "37526cf6c350fc29ecf559", ++ "6e93c69a7627e1f9832a61", ++ "3aaf5736ed929c1ed0ab93", ++ "42cda11218a2f5a8d7bd1f", ++ "ea04fd9db78a21c39b6a5", ++ "53e3092b891267552e8471", ++ "3e13e95a38da382cdac574", ++ "7d59312cf551555c728152", ++ "57b341376c8eeb5e957326", ++ "2fb62f0a2e9435830411", ++ "6131db76263e902f303f6e", ++ "5e7e83070de3b07a4bc87", ++ "54765bab6ab2b394d9dee1", ++ "3b4ae8aa403abef29b052b", ++ "4e1bc7c2f29a2f520bcf7d", ++ "50bb1918112bad3e57d523", ++ "3979e2b3d54a21e7e8c1cf", ++ "4f3fe475424626758ebe24", ++ "26c45bee1cb7e300fef593", ++ "20866732367b425f7e5ad1", ++ "4779c6f70cb71f00e32d17", ++ "24dc2302a4b77b85525bd", ++ "f339d2f5ca33347ae8d13", ++ "2e178e1cc4f997792ce1aa", ++ "54728697bad28cd0bcc9f", ++ "13413811d8a8e6bc2e6cf8", ++ "1a3337bb0bc288bf44447e", ++ "526d1eb936d1a3dec6eeb3", ++ "7df75741d3ccafb28da8e", ++ "6476d594392ef9fc9a3df1", ++ "645cf2dd2735f1cbf53f1a", ++ "780a2a5411b159d83dcb95", ++ "562d8222a0b94f5af3137c", ++ "e859d26ac6c854731c10d", ++ "3908eb827c8209b96bc643", ++ "61619bfea73d2a10c7a7e9", ++ "cf2bf44fe6c433cc00c9", ++ "17b5a764867bc2f176278", ++ "667b77d58f7f6b14e19bc3", ++ "14c79375686a30f4c21ea1", ++ "57d421e876be8c87768c1a", ++ "a49f38b3c0b7ca1fc5c10", ++ "1998c4f90bb8b5465b7b1e", ++ "974b1ea8fc3d4665ea11a", ++ "4382f99dff4951a775fb77", ++ "66b03ec137e6361ddf6317", ++ "43f99aac41b05d58c624b4", ++ "4efe7cc856d9eef4fda470", ++ "35f48b300d21989b05560", ++ "79ef58660a06bbc22f0cce", ++ "5623f1c8e0d5c15938b2a1", ++ "740e3fa0e998e741eb97cb", ++ "4f6148f444b84dfe82ecb2", ++ "34ce2df12c5e0970f682d1", ++ "5fe5a0fcee7c061cf49e8d", ++ "127dbd62073fb0c17b4217", ++ "31b2ef6b5163160bdce290", ++ "7f9a1f8e557617163d5e82", ++ "3c5262912ab7e82ffd49c", ++ "4ad5e4985caa0c7ee63b9f", ++ "5267f1f68134d546ec646f", ++ "7f695021b246db24a5113a", ++ "11df54a696817409ff1164", ++ "5549ebaa872068aae68ac5", ++ "236e08f8411de38e44c3cd", ++ "1892726d56d4f8f92dde20", ++ "457d09be8a2a4c351b63ae", ++ "53339d5a01f3d2e9bc8755", ++ "ac5bf0492a63aa0bf597", ++ "714ed5cb0027168be15142", ++ "4cfaabac7104cbad2ed728", ++ "486fd3ea0158f33daf767d", ++ "61c0e0ff11a378274b395c", ++ "5e195ccf98c9a4e1967fe1", ++ "3eecfda3b4d92af2b7e5ae", ++ "62af499c078af038905758", ++ "38d987fd4b450ee5a69286", ++ "5f9563c7ca70d6e5061bfa", ++ "ad64cff4b4763a7fda09f", ++ "26554ee3e9bedb1a3a09fd", ++ "42c5d2d1082dd2375a4ef3", ++ "7e05b7c7d54cfa1fc7b525", ++ "118d29d91686683483dea8", ++ "2c56fdcda56f78dcda9b60", ++ "d92cf9efd7d12c62f0dfe", ++ "11b77783f411c457cf909e", ++ "2cd33d1f501e268643d591", ++ "1ebddbaa72ad1a2b1cdc49", ++ "73f4373aa0c46a1ae61409", ++ "64b1dd5abc6713a8f53d0c", ++ "3aef6b8ad8d4f116a27e4a", ++ "13f9a309c929439a91df6c", ++ "401a3ed45557939fa7eea", ++ "1d1aa15ce7c8c15f051ba9", ++ "398764fa3e177502af4d3b", ++ "48edf77c0fc298b0491c2a", ++ "1c5b7d2b84cbc7b29bf542", ++ "78873bb7282961108e63a", ++ "16ad879cfcd3e458301dc9", ++ "28b06d6b1f993702509e4a", ++ "45242101d43b276b34115c", ++ "783d012e8b928ea14eaad8", ++ "5afe15c1524eda9627e183", ++ "42b636bc4126dddf74cb00", ++ "5cd8f782abb8b60cbf36f8", ++ "1c5d10301fcf4a14c82adb", ++ "52d3cdd253b64a03c5885b", ++ "31416a7f09913059dc251d", ++ "46bafe88322c67f3b90507", ++ "4cb6253df884020966d27b", ++ "2948eda7d7c508918c3056", ++ "543222604f067afa3e7558", ++ "3ae99fca89d15abe091160", ++ "140aa7412f6488f5404826", ++ "16b6721ea95f55ef631d25", ++ "133606f2fed41ffd77b999", ++ "4d075c933e4b93da3a33d9", ++ "4ed1311eae64f9e834ee7b", ++ "f920b02af1e3bd673512e", ++ "312518f9c1ce1e690c003d", ++ "44bd0de2094b8b3759356", ++ "3d40b56764f7765513d13", ++ "6b5da25417070642e0ba4c", ++ "6bd995ef31bcfd22d52d9f", ++ "3eedab106a435ef32b9e48", ++ "534c1a3b25194e8cd66e6c", ++ "28a37e042abf70a7cb137d", ++ "76fbf6732402bc76e061d1", ++ "3b66491ccee4801a4e3673", ++ "5ef7fbdbf498c8684625f6", ++ "3305f9d7ac9bc35ded571d", ++ "6aaafc0107575bd9b70723", ++ "5eb217461cfa46d5694397", ++ "7f5140ee63b60e0a33058a", ++ "3fe61d12a0b09791925ccd", ++ "591749051e47ee7b49cf82", ++ "33440d7d3472a4b6e2f627", ++ "4dedb1ba2a6a4abde67337", ++ "30485371efc19b50bbafe6", ++ "3566f7f67e026f0278dfd5", ++ "201e678f30ea96fd17615f", ++ "4a2580e03d81912089d88d", ++ "68e88d3bc4e8d390ae4b13", ++ "46986d0da7a2c17dd1dc22", ++ "174fdf0bcfc8d0f4e77e83", ++ "7a75be28b1e93e4e0c9342", ++ "11081f4b8fb8f0a9abf772", ++ "3245bbf080c6731fee74dc", ++ "57bf13241507b812b9a904", ++ "50c915d40aeb9e4ec78789", ++ "530f4c391aa2b0938eb272", ++ "4e0326164785519414d07e", ++ "389d9fa841750626db108d", ++ "5eec1e56c0a2d0e34dfc8a", ++ "3e8986648fb4053520276a", ++ "2db6e61499c9393946b57f", ++ "1b2e283bc4ff40366c744f", ++ "95d86ded4a7b26a1ad331", ++ "4818fb8f958698b6e9c9d9", ++ "21e39ab39cd96423900120", ++ "27476789fbe89ef5fe00c0", ++ "1b67e56d8c8f6656eac86d", ++ "28e33efab89fb4f64d6498", ++ "18eb41f414dd28e8ff3a1b", ++ "4a648c611ef0b3b0e318e0", ++ "3ab4982748b8f986192588", ++ "1eacd91eb3938b38f0210f", ++ "5227913634dbd4b19ffe95", ++ "1d5b0385650d2d81754f72", ++ "7351e32ddd53c7465f65e8", ++ "202d04fcffa7e3a0ae0585", ++ "6b77b6d06b93487730de2b", ++ "2f635c018151dfffc38ed7", ++ "7d83ba89b9f89b55497937", ++ "d1c5eeefb8bb620c573fa", ++ "322d1e939066766f918e43", ++ "3ea29dc49c06d64c187862", ++ "7f64ec3ee1d6fd7b5f9352", ++ "749ebfb4005c94ed288c4", ++ "6f3d0d822d1a27088df8e4", ++ "17b1690a9c9f4fba9154e2", ++ "142aa17e315b2096d3470c", ++ "5778dc2f1465daeafbf88f", ++ "3135a042ca5b8873367081", ++ "26f3f960b2ba725c83b706", ++ "156e3560db5a642c108333", ++ "3adf2b6aaf40f5dcdffdf2", ++ "4ecbf2559411992397d1ba", ++ "5e3402a24a307a945167f7", ++ "553a48facee35f17214327", ++ "57c6f0c9d94e02524b4029", ++ "44867f919f39bbc1ac8a53", ++ "7b1e254e6050240b36eede", ++ "7fb445fb34908201d41b44", ++ "5a49a0430b2145ead2e9a5", ++ "22d9fd1638450186756413", ++ "60a177acbb4aeba955e6a6", ++ "23a7a59b35972768b71627", ++ "ea9789ae096da5bedc410", ++ "38419b7c213432cd42f4bd", ++ "4024c6847ce50a93fefd10", ++ "1f15e66f6c5b160801ec4b", ++ "26fb73843bff3e4d17aa10", ++ "212d386743b2c2069ec4b7", ++ "59377c70bed9cccb346cff", ++ "5a80f23e82161bfd2caa8a", ++ "21532161ecdbdaac15b68a", ++ "5cd8f904c6a0e1c85597c4", ++ "2ad8c773fcdf92009db9b6", ++ "1df80784a603cde2e8573c", ++ "41127c781a5dd07b6ea357", ++ "6152b40d63a55e1ef6e750", ++ "3161bea37fcc040c6f6494", ++ "112bfdedc3401ff20ffcf6", ++ "6a3afde1cc784aefb925c8", ++ "47a38df2df7f516ac35f8d", ++ "6dafdbef06e817ec42991d", ++ "72059eace3671c76d67005", ++ "a209dce8856336ebd97f2", ++ "695d060b1aceccfdfa96c2", ++ "17445a9a60b0dfca9df354", ++ "249f5358017ada6567b747", ++ "b7347a4820635a5852b61", ++ "2bb74459adcd7029c9c35f", ++ "3684bf3ee3a2b8635ca0e1", ++ "600de685f1a4c2f4a236d9", ++ "68ae7d3832d31bce57eaf3", ++ "7a75b868e9fb50140bd203", ++ "1105d3c71c59dedcb33f", ++ "6234ffe0f938a25ce0f5a8", ++ "41858e467a21a3938d60aa", ++ "7332b41a9fe9dfbe59f71f", ++ "313ef612f2fd65f39c2e3e", ++ "49ce8855b52dfbb878b2d3", ++ "46b1961304e45b428bd48", ++ "1740e5e9a57a4e80eed5c8", ++ "7f035a794c44a6a57abf00", ++ "6eb090e9b1df79f4d2226", ++ "7f26a6c99362d1126b6773", ++ "14e47840962745e9f2bba8", ++ "28670ba592cd5a2625df3d", ++ "5c00c9ce80be32396ca075", ++ "4cc8bba01b6788222eb375", ++ "581f2a492a4fe468c3971b", ++ "6aacfa3617f47dce14015a", ++ "3988842f76572373c3459b", ++ "3146d29fae3f74014572cf", ++ "27216bcb23514df00030b1", ++ "36baace22f2d7a2014dd1e", ++ "20b11d38582bb81886466a", ++ "5aa25b718982092494e872", ++ "3f0eb0b9bdbbe37f40dc5f", ++ "5c4dc3dd9138eb7169302d", ++ "503bee64726b7b32815f44", ++ "7175ce67c0c74c440327c2", ++ "3fc3680285719ed4f7e7fe", ++ "7fc9fec9506aa1a0661240", ++ "122e1cf4ba920fb923d0e1", ++ "5570385cc742f16a21edc9", ++ "2a8b319bb90a064d3cc523", ++ "797bc83e9789b064b51c92", ++ "124aa58a7e2a882689ba12", ++ "5ee825c795f457b727b9e8", ++ "475c02da59260b083fa105", ++ "5f427b13d8351db71dc75e", ++ "7dca64fefd065e0893d874", ++ "88658ceb2447416239af", ++ "75ea3318a1054593eca8e6", ++ "21b1555bb331b89f928e6d", ++ "7e558ced95c8a49312174c", ++ "71f02d980dd943488cbefc", ++ "23e36a6e12831353ac1afd", ++ "1073f10b92dd8a202017b2", ++ "a0ac3885d2cb22aeb977f", ++ "2ac1793993d045ec4ea0ab", ++ "4e33cc0d26d44c2394c8d2", ++ "5430c091f416778afc3f3e", ++ "55f3bd5a345801aa67f91c", ++ "18bd8096de042467441c8c", ++ "1dfe68dd4d69d0d5368782", ++ "a69b0e544c08336c9606b", ++ "405224a222d42397ca18d2", ++ "5ca40898d5d325e557e04e", ++ "73e9dbd2873c27040a215d", ++ "56efa25eac0d5f675af6b6", ++ "460f5f98b19a4d353358fb", ++ "28593d93a1a2159e16cc13", ++ "1eae59f579b122f18b84d1", ++ "7f29a05b16052f06eff50a", ++ "2ac52045b3b592dfbeeaaa", ++ "6003c83a8ae5ae42a0956a", ++ "3af2323baa99fc6ef534e0", ++ "b3a488e23273b8e74aa2e", ++ "dde95ff1403621e1e9c39", ++ "8b93e9e7ea54df6ea61e0", ++ "382238b03129ae3a8cb2e2", ++ "7be85a588e4f01b973f9a4", ++ "3428c448a20f463714e16e", ++ "46c829e7e1980bc26c13f9", ++ "20573b178651610a410e89", ++ "16c1a9b3bcba979d2fb250", ++ "46bc67034da17d5b7c72cf", ++ "abe7e5169767e92b8517c", ++ "10a7cb0c646bfbfaf6b1db", ++ "3e27d166777ab6af4a4b75", ++ "560bc3397e1eecda48e8d6", ++ "153d46a7ad0d4c7b81a83d", ++ "7b625b197eb76a08b19ecf", ++ "58ab9a24dbad2ee2c0942", ++ "6b463071583d5d51119c18", ++ "58d985a1111ffbdece42a", ++ "772853e9593804a23d0c9f", ++ "3566ae3cffa53b48308a5c", ++ "3253a13971cf24cc306f4e", ++ "161741a6fabf2be3cb74a", ++ "72492bafc7adaedde393c7", ++ "4d17bed73f2032142b03a3", ++ "43ad0b393a7c2a4d667efc", ++ "5bdacc4f0e9a9f3c5eb7f", ++ "3fc330d82c00c3c98129ad", ++ "2287f22a43e09d12b5fed1", ++ "113203b24e05e4ff03bfc7", ++ "386903ad1ff043a2a203ff", ++ "6efc437814b1b1a8db77d5", ++ "60d1cb028fdf2f7506480f", ++ "5c08c8490ead830327cfc3", ++ "56d1b28a25e58905b948d1", ++ "6473a7fe7461369e02b551", ++ "43240f690e895ee2ce6199", ++ "217e1d11ab05e37175e942", ++ "115af287df30e3b9382159", ++ "3d01c0ebec513aebdf049d", ++ "3b607643718a1436cbf93f", ++ "392447173660d27311fc56", ++ "7fcabd5ff8d8321877d09d", ++ "773e49f5dd28ab9abcc4f3", ++ "333e4709f384c49fba280e", ++ "1a5a69890d5f080ad27aee", ++ "142700479fca005e365a5", ++ "16c859dc1504abc8bebb3e", ++ "8e1dc29eaa3429a93416f", ++ "3d2c4d19f97ec14b7f9a20", ++ "b80a7edd7c5745e63c50d", ++ "7eacc570a117e3d2c4ad3b", ++ "5a4b0bdbb9a3eba57ecafc", ++ "2bbb60823308802716b002", ++ "60de98af5b2e9794ccddda", ++ "43f106dd9b706c7cbad455", ++ "247aa73439f114a2bae1f5", ++ "404518992cad409d30e138", ++ "483592c4cf34d97823b087", ++ "303e55cf5d940fa1eb0863", ++ "27cf1a1e36d6b6fbf673f1", ++ "753e3ffd723c55ffaa57eb", ++ "527df835ccce3d0d8dc6be", ++ "501c73bb8897e8a9b644da", ++ "2c748923f66e9b836e2956", ++ "252a9565fc2ed88c83afe5", ++ "53ee027a60ac6b8703b4c4", ++ "11e3b65e520ccb94e0f28b", ++ "1d82fef6b5daac184a21bb", ++ "34f1c6d5946b4f8e9c34f2", ++ "78c36b7a1a1ac86080796c", ++ "3c2561b4603673cde220ff", ++ "347e522bb35549d788adad", ++ "c5eb765e74f7ea6040509", ++ "6b91d4c08bfb155d85a09d", ++ "1d345a329131e03407a9ae", ++ "7656e2bcd13769bc7d3690", ++ "18af2f7c66ebae2215b225", ++ "5c0b858603efe861d8e554", ++ "3a948a48ee72242647aeee", ++ "5eb549dbd9b640a1018c4c", ++ "39395b9f947ccce230cc1d", ++ "2983f80020a9f6532ba834", ++ "599c6bd84b32b97e000cad", ++ "494a8aca14d077b143ca10", ++ "5514a9f97c736ef89e2558", ++ "22a2f494120b7469421488", ++ "6bbfc916f60c65ff6069ae", ++ "988dfd270fa06d78d9fba", ++ "65e3000fa520e5bd8bfdc3", ++ "d79412155f3d978866277", ++ "540f6a5d04324cc6ed1398", ++ "5193e0be567990b2818200", ++ "5527257327c4eade309a67", ++ "6a6ceb53a9e08bce60e22f", ++ "3bc0b4b12c4e0d37097319", ++ "6446d75a31a4956c235943", ++ "70089a05ca7765b8ef62a5", ++ "78050a04d755b7008433fa", ++ "4cf40ea87be0baab3f0a23", ++ "421f5a540df5b7ba309bc8", ++ "22aca8e5833c97719ebb51", ++ "595eaf076defb81f21236", ++ "324340f1f7ccc9eff05524", ++ "490df281db25788739ca0c", ++ "7cdb727ae2bfeeed50af45", ++ "8fdbca74c18894d421e52", ++ "266efd2e0daff29e309d38", ++ "2d3baa252f4d982bd2ad11", ++ "26246e8fdf408dac8fd2a5", ++ "4dae59d140c542483e12a9", ++ "7e37627adf10efb14adf13", ++ "7059a8ae14b27b87ae7942", ++ "5d0b6fe03f574db311d01d", ++ "4450b05b160d8c53288cd5", ++ "5628eeca86bc4f505da4a8", ++ "59d6c2db6f995cfebbccc9", ++ "32c247d46291051243da8b", ++ "29ecceda91e2de99bded7a", ++ "697bd2294052d067eed5b", ++ "35d846be55b3952e278ab9", ++ "3846b043ea9479616ae948", ++ "460dae8d89d7708b43a1c7", ++ "6ecd91e762474ea500bb02", ++ "78386c3f2bea1d92b0136f", ++ "5d36dd2a4f038c91a8e525", ++ "2567685d25fd668a9a024e", ++ "484fed0412b66b4ad6689b", ++ "11e987960e92f0cfe9e7d", ++ "48457eaf5bfbcca641689", ++ "5e89ffa159d58051edf13c", ++ "ad8ecaa59795b2101aeb", ++ "4cd6b5c75a375bce549db5", ++ "17a8f2f3a036b54c467b7b", ++ "456d747923e7fcbd260fae", ++ "38b2a18fa105ae1a1e82c8", ++ "36b718d293f968b4388def", ++ "6d15e33dfd91b0adf65ea8", ++ "6a47915604a062b94c626c", ++ "63f2b709d7c6ba1ce60255", ++ "73da067d52334a718631ff", ++ "68c11de19f57751aa11e9b", ++ "1b50ac3c3f5269c1d7aa40", ++ "51f56cb5201bdd22f49e70", ++ "245ff16a71eb8c45257fd0", ++ "7dcfee63c4d594e4583601", ++ "604b2e853911ce83225aba", ++ "5bb6095d45a0253a5e3e2d", ++ "14b7709b903167ca33c0bd", ++ "6e6871265fe9883143d121", ++ "453649c203cf983e439d84", ++ "5819cdbf42afd2334f96", ++ "3450478bbaf1db9aae9e0e", ++ "35a56ed2078e145e9b5d42", ++ "15e468fec0387d9dcde2e9", ++ "1f098e306099d97f37bcee", ++ "108be849403d8b9e0adadd", ++ "432bf33542ea8f8c0e1cab", ++ "1fe772e91ad75a2d2792c4", ++ "2aaf602c5ad427702561f0", ++ "66c37766a09f2454161188", ++ "7c91adf751ba7b800072a4", ++ "587965194057ffad1ed72d", ++ "6b189bed3e1ee805a7089f", ++ "656e0aaff42e8f100df7e1", ++ "50d8060a4c81ac0d9dcc9a", ++ "3b142ae3f666b5a458fd6", ++ "11216382d02fa8a680f2c", ++ "640821dda0f544b159e25f", ++ "60ad8426c5228781a660d2", ++ "50b259ce6ef7786ad19380", ++ "617907260cf1e3612508c0", ++ "2020839307f0a0b2a66465", ++ "6c9aa8a230f91d4e6f84c2", ++ "479f0a9b95b8f0e630df10", ++ "74e8524ea4276a1585abc9", ++ "1832f7608c30377f8a27c1", ++ "468227ba06af62fa70d6b", ++ "46ae03b83630be869f3f67", ++ "1c429a8aad032b85e815c6", ++ "784a6ea72c75433fa2c1c0", ++ "521255c27009b10aeef14", ++ "6de250d6d96fba0a4a2df6", ++ "1a38abc6055dcfc6f54cd3", ++ "459fc4d70a1a8040309b48", ++ "5206d5cc4cf74b102b511e", ++ "1621052353e1bb38663f44", ++ "6869e474162fccd5e6ce8a", ++ "265a6fe3ade48b79bb704f", ++ "1683c065332572cac40e7f", ++ "40fe888eb50954f82f8f41", ++ "5ccb3321bf79805e3743ec", ++ "6904f88af6eea4b3f91bbf", ++ "a70e6c0e6da7b5bd943d0", ++ "7b7c35dbf0dd6b94d050c5", ++ "4ee9fe013ba8fc6ac8d470", ++ "1825a2f6c03df8e89a424f", ++ "6495ff035413be2b53c45f", ++ "745f8230228fe0e913a537", ++ "57ca180b4c6f8c3a63ae46", ++ "5963fe850d852bb19cdfe3", ++ "430a7ef273c75f6860a9e2", ++ "28c8b8ba9341ac37c38695", ++ "88d1f466f33239ebbee3e", ++ "7bfb517a9a7064f7f0b9cf", ++ "222ad5a5eecaf564928d05", ++ "31f4e6b45c1cedb6d4c94", ++ "9d0d5139d46e4d9db3662", ++ "46ea372cc256b25d8bedb8", ++ "1177a186084a0188e6b25c", ++ "79973f898e87ee6433e53e", ++ "17f90d7760ace90b4281fa", ++ "4d06acabc42f8f6c6561a2", ++ "297ac6d1d91b19c8ceb3ad", ++ "76930d75187c32e1c0855c", ++ "ef9f73cc5ae815a32ca63", ++ "3ca5432d73f30360d5e251", ++ "2eb29dd03203d9dedca2ed", ++ "3f719d970328ab86444133", ++ "671a35180c429ed6cd73d6", ++ "1a5a3601f9e5c757413d21", ++ "1207f0afa9b17ee1e3a14c", ++ "64c773513b07ac7be226c5", ++ "645491f7754448588100c4", ++ "6803ba4d96f3cea5b5b619", ++ "3e8f3fee79b0aa7d3158c9", ++ "7c4c5a07ab45db64032f8c", ++ "471e19dff79f0bf8dd75e4", ++ "736e4111350ab36a2be4ca", ++ "70eda2a92c3f3d551052fc", ++ "4be7ae42a1b71df0fdbed2", ++ "38e1136120c0a50e7c1942", ++ "34de10a25d48bbec6bc310", ++ "45fae251151688f6948ec3", ++ "a5803d95905530efe4cbc", ++ "29c81a2bbc75ee65e40fbe", ++ "5d0e736ad9b0e048c53cb9", ++ "62a6ac9d0c5e4b3890d61a", ++ "16587b1213183c74388d6a", ++ "30455197024dac28f22ad9", ++ "5c96c4bf9c30f05dfa52bf", ++ "2e14fbc2ca9b056ee6a0e6", ++ "544e247e73028cc23b1f51", ++ "7569e0846a7c92c5b07e91", ++ "2e37e64613e6e49f75ff6b", ++ "75393667821938c0e5a628", ++ "2db4889991fd96d5a3dbfa", ++ "6b628f924b031ff396258b", ++ "5c721c1e9f943f1e44c526", ++ "4845e19f6384ed5724d8ce", ++ "451cf4e4a6ce149cfc4095", ++ "69cf5ded5037b0fc848b28", ++ "2144bb26c3488be851e3b2", ++ "2582d22d55dfd72b2d70bf", ++ "67fe64c68be6372b30260", ++ "b5ea9188a76cbd4490c2c", ++ "2f9195fa1721a36e6f5198", ++ "371b6d93bf32954a1ed005", ++ "2d248bd8de364598100d1", ++ "3476974a3a56c244bcd4ac", ++ "7d10d41f081cc53194454d", ++ "9ae11d1f0b2cb73496a44", ++ "3c11b4ca34c3237b362a26", ++ "3b62b01334bf25d1f5d560", ++ "4a9dee0a96c91e7cd6d7ca", ++ "2d8ba9bb83d8b7dc77cc32", ++ "394242cd2ce4d5c927b1f7", ++ "13ef893fe161bb05038778", ++ "210aaed4cc7b55edc4255b", ++ "72bad07fa5d3ca19811efa", ++ "1856ece5542adaa42b18cf", ++ "2f775dce855cb22a4ce4b4", ++ "1b3d8a50e5425c7a4550f6", ++ "3fd38eb64df431878b817e", ++ "1f372d16a7c783f301d859", ++ "2e99bf2a9cfd14eb01e4dc", ++ "739d86f4db437bd59681d0", ++ "91782b2d8bf1ec8b6e4db", ++ "13089f86ddae7614e1f733", ++ "4374fb07e1eb1efc714a7f", ++ "34026c0467a5bb1302960d", ++ "1316737cef6e8d73f98c46", ++ "308b1811fe8c7d6801df6e", ++ "3b6333c6dc16d5f4351c47", ++ "30151eaad7aef0e79d5e07", ++ "6d5ce69503f658697314d0", ++ "13022f601d429947abd201", ++ "278331e342f211746f0d9f", ++ "44fd7c4168c2a61413dbd2", ++ "77747c8e4550378570ec0d", ++ "31934713e4ff1d0d7cc583", ++ "5ca455ab52339850752f94", ++ "cc47e7e925da6c91fe510", ++ "18932d3a50056ecbd4c0", ++ "594820c775fd57d86cf9af", ++ "4ad8d4214e4fe01b143d8", ++ "179c67b2886cbf8a80171f", ++ "60e1157dceceaecc3a16c9", ++ "507a197204651599300f85", ++ "1da6208947854d10119a62", ++ "2fd395d2076e94e7f79f79", ++ "3326fb026bfe153a5a80e5", ++ "214b26c5cc4d2d1d455254", ++ "2a5beeac5cc34b9b70fc5c", ++ "73037907fb5b7e20bf7973", ++ "622155e1a7c16eb9e6f098", ++ "47eef469d5e96dff3b60f7", ++ "31b42ccc858ccceae34d5", ++ "68c711e371efbf9b278db8", ++ "71e107fc4c98b40c6f7b53", ++ "2a2840d0a8db4a22fdfb53", ++ "557e56b5a5dcf30ae5f48", ++ "5451512089afcff74e1bd9", ++ "6a44a264bb1144d86619f3", ++ "72316f1be6172c06994a4d", ++ "d5835b5723a9063a2dd80", ++ "232ce65586f95692d89383", ++ "2a8c9eedadb6f6d58c06cf", ++ "f5eef843bd404a6869b17", ++ "720851fb976798365a6829", ++ "6e8b7f0e9607e44c1f9f65", ++ "3860366ed3637eead94b8d", ++ "30d33e090854573dfd98f5", ++ "682291bfd680e2cd8f9d70", ++ "7c1fdd60de643e750fa1d", ++ "774b9d1f08bb74ab682979", ++ "7b5f04e933b2e4204cdc65", ++ "2c36a4d87847724f9fdecf", ++ "2c941d4c1c7d68ef593ae6", ++ "4576a87293566d06f5b643", ++ "86148c3559c855d7a4785", ++ "2d0a5221661bafe1bae3a0", ++ "4eabe0db8ac5d733acae29", ++ "1dff7b3a25d6efec89d4f1", ++ "93ecdd9b52d588b62ae9d", ++ "4a5c54b88c3afab5d73bb4", ++ "50873f081856faa7b0c6c0", ++ "7a4c62248fb05a7ec5f894", ++ "6297ed8d827bde2f27c592", ++ "4f88d842683a24f7a78b4e", ++ "6543f2ea86c39aa319b565", ++ "1711e7c4ddf7dd725f454a", ++ "6e925cc1e63747fc8301d9", ++ "428c02c3c8bb1613aad2fd", ++ "1b12fc1c7d3ee5cd24b30d", ++ "38618fda51c023d44b41df", ++ "75ecb6eacac31eec1c8d24", ++ "363495385d4023abd7fffb", ++ "52a170878e73d2b9a73398", ++ "40afd831d872bbb5ba2dbe", ++ "6a2bde70b440f36a3a69b8", ++ "6cdde5dc50cfba13ab15cc", ++ "6102d4b92b578db1756028", ++ "1d72e71f6a57243468bc42", ++ "4f100cd2b63ef0cdac7165", ++ "56441a020eb196f9ab47f5", ++ "520d75e4874b90e95d0ac6", ++ "4ad5b5ec9142810d730c91", ++ "6369f366be6b5ec99ddddf", ++ "4ae3a5f46681ba13e649ed", ++ "33e094a7802d99ab1d9620", ++ "58ca4d190a0f756173e746", ++ "4afa034c14d96f077cc41e", ++ "3277a60ca85c986d50dee2", ++ "61df6c089b8a0a75da0288", ++ "3a9ec75af3c8e86b8c1b73", ++ "7ca8eb46f6df31902607b1", ++ "7a283d5e2ed98485e2d260", ++ "78ab001943d18ada1f6d03", ++ "56f539741375576aac816a", ++ "75fa74ccac539d6f2e079d", ++ "7108a03a28803eb91e8a0a", ++ "3756665d23e5dc56d35905", ++ "da96dc29f77c98efd9a65", ++ "54ec1fbecc620b2a62de33", ++ "2e564f6ba5f6f74e33f2dd", ++ "86aa65ac1949dd8af6918", ++ "605ccf0922a0c35f768933", ++ "4348b708829c7eddd56237", ++ "19d3eafc75447dbc2ce4d", ++ "764156f5d90616c8c45669", ++ "51e2ff830fcf99b4147ec", ++ "2d30342ea20393b89b038b", ++ "6745627963b760ee39ad1a", ++ "76c344db7c98c1b1fa25d1", ++ "5b872486f12a68a939069d", ++ "274cbe37d4fe65732936f", ++ "27b48290f4bc222f54681d", ++ "1f7e1880120c76703199fa", ++ "2bf0a5cc2a5150523d2e64", ++ "2d3b2e3d52eac5c09743f7", ++ "46b7638024bbab6f336734", ++ "71f7ff7f6245492bf4ba4d", ++ "6ac96f98fa78ffb692afd9", ++ "1c63d031374620336f8c7a", ++ "5eb0e751f365585e4f3fd3", ++ "24716274d6f1761a2e503e", ++ "3b663e3e9013cab9326fc5", ++ "231a1fa6a52f8377b2ca86", ++ "464063c0e0f5e5eae1bad1", ++ "4f588ef825e26e596e160c", ++ "4adc76f7cd88044421953e", ++ "228eebf60c055615805405", ++ "3d32a6b665f10a829cfff8", ++ "ce584760ca84047b25a4f", ++ "982362cb3f64fc2535f18", ++ "2cbb69d06f0ba3051ce433", ++ "2fb2d651d1a5fde2dc4d89", ++ "116822d6715118a8643140", ++ "52e4d0f780530e040b8198", ++ "4d84d472f48a1f27cda4fd", ++ "23675569b6f74cecec658", ++ "7273cb20026d3e5dfa9567", ++ "5e5c9c54f1f75bcc98d1bd", ++ "37150fd6c06a98e84f0fb9", ++ "1cae4d5a0b88eed0b2d97e", ++ "5e6c438c53b4bfbeab6a4c", ++ "7ec0ec060d3788349445a5", ++ "394ca6d6650a3a703c8f0", ++ "76a4bcdffe1207b9c84c3", ++ "413062fa329dcbe3b8887d", ++ "137786296b1e5f466871bf", ++ "1bff1788b61c434292f278", ++ "67ae16da8f876a2c8dc80f", ++ "4f0b0a9e8338cbca398b3f", ++ "7fe713df2e65b878c1edc6", ++ "46dbd89f4ae0d06c0ab8e0", ++ "3ad2c2000ee1db409ffcab", ++ "235057c5ef06d64b0093a1", ++ "2b1199cb9ff7848ec581", ++ "16a7968fcf87b51aa207b", ++ "7593ab2f13aa524b76e104", ++ "569b68c3d77231282d1705", ++ "54f01285acb2da9689a386", ++ "7c50148337071a44808f27", ++ "157e5726ec48e98ea5652c", ++ "a0b14921f2ca115669309", ++ "540974d1b3361c5ccd3a2", ++ "30927374f464c892c53b50", ++ "5c0de6f6c164f44c52de84", ++ "25f3d9fd234440b97c9821", ++ "659ccea55ad34dab51a321", ++ "308d7af9cf09073e61779f", ++ "48dd5aa0d80d3fd4d31225", ++ "18d28f7c13bdb1a27fc315", ++ "37c639bab06813135e6962", ++ "716be1338eb9fa3160de8a", ++ "306cc735643548c81d480", ++ "15dc7895737fd27e2fc2d8", ++ "ff910ecf2ce1ed443b3a7", ++ "26e45399ef9d09b479c0d5", ++ "5a3548ae1dc271964cafb9", ++ "1e0b5aa4ebf1898b7232a8", ++ "65b1a43ebc40ff17757bfe", ++ "35ab264ca762acbf67e1de", ++ "67fe63e894b36bad057249", ++ "901282766f87bc24e50af", ++ "3f8ccc4c495c412c1876e1", ++ "2c958c952c5c886c2a60ad", ++ "21a95826890e5cccb8a83e", ++ "190017f50befaddece16d2", ++ "64f3d838badcddd9bfdd0e", ++ "7a7cdf214176b6d3191883", ++ "30436781bd712f316b4895", ++ "f5d2bac49777fc8f10242", ++ "66de0cd9d504d0c8a10caa", ++ "11ff8e8d5e956398c99ca4", ++ "2d83b4eaa1c8f768e56c30", ++ "58689766e836a562c78c53", ++ "1644cc3e7fe80220ef2f70", ++ "69a00aca76ae6e660be7bb", ++ "68e1a6376fdb4eb7b4b0e6", ++ "5c37d517c640ac7f62a532", ++ "3aa36ece405e3ccd9341ca", ++ "345343979af3beadfaced5", ++ "63ca1ec0700483b8f859e5", ++ "14b8d711e9732dc1d81b85", ++ "5d1cdedac3c1f047923b22", ++ "1f88577ebb6a87d8478dfc", ++ "3cf63e3a65a7e509ca6dd4", ++ "64e35a2939773b306ebb74", ++ "4e5afb2e233daef8a9bbcb", ++ "5dce9f322e405cdd3dc195", ++ "49fee8b58237dc40ba3c5b", ++ "125c7d70d2b6d99ae885da", ++ "7f821b6d896942293448e9", ++ "44b0628f84b11c5e71888", ++ "4bc252b0fa653478344f1f", ++ "31afe414b9e841f105214d", ++ "46bc16d9041c2bda07b158", ++ "34ca1ca17d4004b63727d1", ++ "1adfa664cf45ca975af0f8", ++ "55b727631edd20582945d2", ++ "6649997ef28c919c6cae0f", ++ "6332e8b1655b1a7193eb45", ++ "7b8a17b08fccb33f4b7d6f", ++ "46c01f4170feea6c601e12", ++ "68d895a65569cf3ef3e3ea", ++ "782fa87576f745d6c5a644", ++ "3561d1a2752f1d17dd5823", ++ "1c1f24204ec4b044c10ff5", ++ "4ef1c6a1bd63bb6b6207b1", ++ "33fee942f43e9b7d2118f", ++ "1cbb8749de080f5bb23b75", ++ "4680ebb5e7e7fa1e676838", ++ "2cfe955ebd8c7e4615715c", ++ "93d0f45c8e78eed19b2b4", ++ "5411d9720f633bf7a356ea", ++ "7ae4ce9746d1a251afde2", ++ "6b6195f4939abc517ea1fa", ++ "622e4bcd237f601b3f864e", ++ "552dab94d8fab803e3abe6", ++ "5fea5590381b705c4ba54c", ++ "47a6912faf0eba695a3f82", ++ "62d4635d0bbd6bf8fab17b", ++ "488702c5b90021b8b24933", ++ "b44a774aaac3d4d335389", ++ "7c2eeaa3b5ac7ca26ee5f2", ++ "4a79a4d35e92cbac8fe0c0", ++ "145ecffc8b532b7855ca8a", ++ "409705e5654888d8af2f47", ++ "4f5cb9e29c3567f8c1b22b", ++ "2ad535a50fda15e1835526", ++ "4d55039bf17366425f055a", ++ "504e8f5ee0e51320af92dc", ++ "ae1614cb7437dc6311ee9", ++ "3d433adb4bcd914fcfc4", ++ "633dad9eec0d451652bf40", ++ "15bc81dd36a0393963bb64", ++ "720d9e52c4aea85ae24480", ++ "16f5569ecf073acc30831d", ++ "50a70d2086b5ca78a90368", ++ "7e688d1cbe7e0a84a0f408", ++ "1f9e8bffcac3e1471f7cd6", ++ "78ec94c22ee912eded5499", ++ "336a41277b427813eaa191", ++ "1705c133c7ba24a2b5c528", ++ "7b7e71610f1589da383c31", ++ "58137399c99866772aed9a", ++ "282774a1f4bcb14e6723f9", ++ "7b85e0b99eff408f2aa978", ++ "2a5043ae183d338b7ebd55", ++ "af99b9d024438cfe9df66", ++ "d4a270719a348af6d6c29", ++ "47262fa06b9c5ac8138f4f", ++ "50c65d8772a3d5db269535", ++ "20b1838f00aa00d07f70fc", ++ "ca30526530b6f6f0c8fca", ++ "158e9251ef94651015ecc3", ++ "636f015a0c62753b283d5e", ++ "4573a56ada0a29d31dd6b4", ++ "367efb55edcaadbb5e4f2b", ++ "3eb189e2bfcbe180703cfd", ++ "692adfabb87ce969422961", ++ "434a5edb31a9c3c6a0243e", ++ "77664e53908d00007d1205", ++ "4b11585991700c233f6773", ++ "207ff6a0da7f13b316c4b0", ++ "328a9932d6b08a41a1df0e", ++ "2f927b360b2b43bff822dc", ++ "257564a39a648e17d015e9", ++ "73e92ea015629e3728aee0", ++ "4585b77fea18a0113ff609", ++ "101d83882a81d0147b4342", ++ "3addce3c43218484acf509", ++ "9f0c9a93eecf4de349628", ++ "465f3b1e25cde0e446d90d", ++ "4ceae8c6ea35dc274647ed", ++ "63137369b8d47b6c9c43df", ++ "438f5c0f163a4dfa04e5ce", ++ "313d62eb5f1104de5421a", ++ "9f20b6fedc099ec575691", ++ "24086a392ab75e649d3cc1", ++ "7aa96a9fbe718c006a48f8", ++ "8000000000000000080000", ++ "57f0f7ecb2d7dad43748ee", ++ "2a640efe463008db4ed634", ++ "45769a307f5593bbf72056", ++ "3abbf8af06f889daf59c4d", ++ "6d16d10feb1728044f2dc3", ++ "5bf1d1c71be0c49ad75d9a", ++ "16bed27a9c005817ccf111", ++ "4d7797e0b2f77a7ffee785", ++ "3845bd22f959dda9197376", ++ "1857324131e535b1b2458f", ++ "6335fb7682400180e10d15", ++ "50226b4aa22a0465ceea0c", ++ "44dd70b9323f17568e4ba3", ++ "217bd444ac8e9808b3ae5a", ++ "6c9c81ea487986867245b8", ++ "3827b84269040363e5e02d", ++ "64520e4823f48c1f48749a", ++ "58fc1b58696f8c22cfe344", ++ "41558cae58d4f9a9001b87", ++ "38910d873da8dfd237e8f0", ++ "5eb76c6301d8a849a1903f", ++ "3b6b43619a3730d5995ae4", ++ "5f2bc99aad2f27cdee05f4", ++ "385f7f48a7be6b46d108ef", ++ "37d50d7838efaf03049cd7", ++ "665bc65420c0b0a151c97e", ++ "3d9abe3ec82d9602d9dd6b", ++ "634d2540fd670a82f219a5", ++ "616dbeafd6aa623c1a7d7e", ++ "29702fc1f57fddc3369967", ++ "25920b5c96127e9d8ab05e", ++ "3a82369bb1a4da519bbd70", ++ "7f216769148f0e997c7805", ++ "31d809b078cdefaaf45266", ++ "7a6ffa939b86786a779a44", ++ "68e8a818d524954278bbf6", ++ "181ee17c34ab8aea52c900", ++ "7f42b66317d26c3f938805", ++ "6f37e3a85128974cdfaa69", ++ "45813314ca1d165bcf242c", ++ "64add9cabf8efdd5f7b57b", ++ "46a91d898168488fd5ac51", ++ "669f4c5ec3934953500b78", ++ "1e378fb7157cdaa6fc3a50", ++ "39cdc5e6675ab081ffe60b", ++ "1cfd8f0d12bcce21589c11", ++ "6ac77b7cb23565518aa2d4", ++ "4628eb872cffa1868b96ee", ++ "23eabb9cc5f4086c74bc31", ++ "445381f98a1f5669880827", ++ "3f603c7b410b4c2db2c8e2", ++ "464550e0adf269403f3e22", ++ "3286bf159405584d85567c", ++ "356497a9675898bccf4e79", ++ "f26a2dc235ace7b34f4b6", ++ "2e03d3c0794703b9605de0", ++ "30a18088f5b2af396bbfd9", ++ "681750fd18618072db2068", ++ "69fecb55ba6da700789d7c", ++ "2294095a6b77aaa416cbd7", ++ "ab8e1dd4d27b02d09fe48", ++ "7fe887d8c5fb53af79cbd6", ++ "1ead89a48b89a75ebaa7d8", ++ "10d0aa100248920b9cab77", ++ "4aad58987821ba8f33d96e", ++ "5c616b0d1a7bc591e70e46", ++ "24b22771f303ef742b8ce1", ++ "3eda92314bf1d09cb5b08", ++ "692eeb4ff69b42372517d7", ++ "494807a247f7ffab73a644", ++ "23564d97f447b0091e74ce", ++ "2b81c6e67e55aeb6e93a", ++ "4669a41d4e444c1284d024", ++ "61036fcac29b84e5ca02ad", ++ "2625096534f2cf10d83a26", ++ "30cb89652c8629b5e0dcc3", ++ "606e14eaa7d60eb7ea925a", ++ "17715e6c96cbe096c4f9c2", ++ "42a81f5e10b5435180e643", ++ "6d849a39e47370e473a913", ++ "6116bef6a79fb2fc15f0e2", ++ "31e8a39712fb3a7a11f909", ++ "7511506751237c1959933c", ++ "1e47a4330f0bce93db13fd", ++ "97342eefdbc78b9689120", ++ "b1fe15d9ac88348f41a87", ++ "296a247b4b36d5c2a1884f", ++ "aef2488954588af921ab8", ++ "351db0dca5d74808f36d33", ++ "25df9f831698604e15991c", ++ "761e42e1c908c2f09e096a", ++ "5e73615c65ae9e74eb1ef3", ++ "4354f51efc9392bcd6e51d", ++ "3f7d2ee6cb32c6bbeee194", ++ "394faf6069c716fcf8a76c", ++ "51d8b3e6fa0afa106abc40", ++ "5aaabbd40fa78dd417edf5", ++ "32d68fc9b8a9c17b315382", ++ "6f24ffc802a08273be511b", ++ "452816c1b54aa2bfddcc17", ++ "142c59f31fc82fb58a7dd5", ++ "7233f4136f3ace41bedb12", ++ "2c18c59d95a21961c42f21", ++ "7eb8dfe838ec5ef9d3ee21", ++ "19915afea85d27cf8df109", ++ "4e1162d634d0d5811a2441", ++ "43e36b6d5a937387b49f6c", ++ "295932427e10aface718fb", ++ "5a2c8ca58cb488822e9f49", ++ "622b540293b1275c5a9446", ++ "753f0795048443573283b2", ++ "3c2dca32abbdc029f4a212", ++ "3fac097802d8f5fb376d58", ++ "668b9e16f3948f582a5b94", ++ "1a08e273719d3411178252", ++ "f4af5a6143d8f44e48afc", ++ "54ad7fa69dfd0b4c19f7ed", ++ "65cf5014ab215afd17cef7", ++ "4c3c570182916f32a6f96c", ++ "2e8edc0b6dfcfb2392ce87", ++ "3950591be73642bfa23264", ++ "559752d946b02da4c2f657", ++ "554f5cfd133bac2188241d", ++ "3c1fd5d9a6223b2ce7b02a", ++ "34c50fc58872b7325366", ++ "3f8cb5eb229acba822b48d", ++ "2aead0dac004faa8ab67e4", ++ "144a6c20d0a8d5dce2b12b", ++ "5efbbe073364ace07f02c7", ++ "73862de61086c1fd5e0678", ++ "78aded63d2f85ac948c449", ++ "51603bcc8667777e664f9d", ++ "724f8bcd40bfc9f1ca0c68", ++ "5169af1cd74986160450d0", ++ "5b6b96beb19fb0dbada937", ++ "4b3a8d22fdb2c83abba9b9", ++ "3ee5a2cc90e335867f0ce8", ++ "33567e972c90754c86a5ff", ++ "1c07c875b3a9cdedf7611d", ++ "3b55da90ad9a162be1756", ++ "339dd42a42d94342bf8399", ++ "67a3f20bb5e980364816b9", ++ "4b6ed31d0715952774511", ++ "346f2a2b086e1b35095d7e", ++ "1c614cf9a9d87d69154c21", ++ "5e263af53ea065e044720d", ++ "681a88fafe4e6f0620910", ++ "1418facce22bf24a5e6a51", ++ "786571b85b2768309c8ed2", ++ "4d0e82bdf34ff4cb3a603e", ++ "7c2e242ec2b95580a9b3bf", ++ "54fc920cc0125e53a92499", ++ "5696a96208101739ec4ba0", ++ "636b15a893c301ff23f5f5", ++ "4956721f6a2ced1fc736fe", ++ "518711fe03b241cfb95160", ++ "2e12097225e5783b545083", ++ "7340d7daed67bcc5cd4391", ++ "c075fe6224a62c1010fb8", ++ "4bee7e482b290b1d3869be", ++ "7e8fbf173741aea1b95c93", ++ "5a1fe9fffdaa20f4ab7eae", ++ "58d7de0f8254a81b5d0f5a", ++ "38793daa7aa086d5e70798", ++ "6157a651f2640a73f1f90", ++ "7a6d5b1013830761b58026", ++ "46734211b970f8a6448a60", ++ "31b9dd76b9ed5f88dd4609", ++ "46c6313b3914ecd376b959", ++ "3e4e77e268fb6e7602e96c", ++ "74d39a89d87bdaa449438c", ++ "7684536a92d49a5af59f1a", ++ "71215d6fd5e662d930a424", ++ "249b7a4d080be0f548cabd", ++ "1bea5758655f1400515db4", ++ "7f45c48d28fd31ceeb3fd7", ++ "1812bd60b720f8920fe80d", ++ "27244290f774a00786ca95", ++ "5566a844e8b1c572f69612", ++ "2d678e77df571d7ac4859d", ++ "e243f28e043030ee3a43f", ++ "36a3336f56c91232544e8c", ++ "179d4134709978c75bf6d2", ++ "20ea7b335b7621642b29a6", ++ "78c437adc3b6ce946cdd", ++ "57dbda5c8b230a87030357", ++ "4dcc6ee20983f0020ad69", ++ "5725842b7246179896a39d", ++ "6b1cbac9279eaab9b503c4", ++ "1bc4e87c1100a2d26aeff3", ++ "2d70f946f2915679b314e6", ++ "793fd256b009d961487499", ++ "ee9d6b69f13ec8f385e6f", ++ "4b4c7f0a822537ff62cdcd", ++ "48b920d23514d06befaf52", ++ "2df30214a49a31c21380ef", ++ "4c4424602626193266d943", ++ "2d5bb2b553d4ed5bc0795d", ++ "681fcdfe60f23e3be083f6", ++ "4f9634be1ae125361bd4c2", ++ "1ac96b01993da8677b2fd7", ++ "4cd15a66ba5a2f18c8823c", ++ "3828df7e9ab6753fb83dc1", ++ "2071c913edfd4fd6daa6bc", ++ "669e7a28f7a7c30460a80a", ++ "3b22ed42f28069f29c280b", ++ "5ca51c82df4def8b1588cf", ++ "7b2ef1bbf74c4989ed5ddc", ++ "40ebb7bac65bd815945e49", ++ "4a469bacdcaf5434109262", ++ "1a14d5b10cbcbb9ad3216", ++ "65fb4589487aa5a16bd767", ++ "283508a2ed137e839b2207", ++ "7047889925ed18a885358a", ++ "9d8d18a72607c311d6f76", ++ "6a1d554c48496d8d543eac", ++ "594a3b6273b1ed2b542eaa", ++ "67cb80a136db30b9d60d6f", ++ "5106bba99e6268d7bef3e4", ++ "6fff35974d5f0b86faa46a", ++ "5f7482c17a568566c785c9", ++ "78ba33e419cbc7f177437f", ++ "1f4b918e0e0d47c89aa2d8", ++ "50cfa48cfb994ab2b77aa3", ++ "1e4fdc54209c2229d7ffcb", ++ "4431184365a358de692057", ++ "7adeede80a05e40854e6e", ++ "9a39acfeb3a1b4c2bc79c", ++ "2d2a15867cf9361defac4f", ++ "3fdb99cce8884ed923271f", ++ "2d127e6ce6bd0f1872b1", ++ "1124cfa0e070cf6fe3c638", ++ "65b7b50446c767e6fa72fe", ++ "3f0d18b1efb7248950daeb", ++ "74fc1bfd19b3cbc9867bff", ++ "34f0f61d6d8d062b6b9d9b", ++ "260d6ba9444df4b85dfb92", ++ "4f75e255d88657b2ba4755", ++ "3c3f770d148b4692e25b59", ++ "1eb56fdccfc12b22db2048", ++ "3c81a9658bae42644c317a", ++ "783c78a9025283e7188a8b", ++ "7322c20a545b3845b54b34", ++ "52d104741cfa5fa49fa55e", ++ "6545cb112ea4be72bc80f7", ++ "5bcd4418d37c976110b37c", ++ "34d59de432c0dbb24ae55b", ++ "4759751a101953dd340d89", ++ "41e135572f9ce788481248", ++ "185033e62f44aa85a7799b", ++ "7047a4510b8c2107737ece", ++ "381012de4c9a82f9ef1d72", ++ "1167717f2d3d6238b3d21d", ++ "2dac9d433ff98cf24eae81", ++ "4f1c406e243fb2af67cd42", ++ "685afb7cdd699d5a8f020e", ++ "4c6a0f6de7e50ac450c0c3", ++ "59f0f5465ff1e16be9bfb2", ++ "594ae94ad86b9a719f54a7", ++ "9225712405a5bd9ade58d", ++ "3650c22d9c1072238cfcfe", ++ "36a92b305c21171dd5a616", ++ "5ba344fee845769c2c86d8", ++ "3ecd8205beb790946eaa8f", ++ "5f84ae1685459ae7e24bf2", ++ "62a01fb38e5c88098fbcc9", ++ "3c2f54ef99be42fe30d32d", ++ "215dcfa076749277897e0", ++ "36304be3f0777300703af", ++ "147b65e0e829ca30fd88c2", ++ "4e6a2eb425fbd18fb02cb2", ++ "2ddac7db8be22e88618b58", ++ "1c7831e5dec267ccb26741", ++ "2f3b362f4b742eb82f8a34", ++ "5505b22d0ddba48ae2020b", ++ "522afb743f67b3ca56b20", ++ "81dc886feeee4945edceb", ++ "77c4b593ec648025df03f6", ++ "4f0841f63a0c64aad5232e", ++ "6cd2d14ecc5fc7c2c1b52f", ++ "3827eb26c007235c46c676", ++ "484281d930b8ee32f366f0", ++ "25f7e1ac0d4153b6365c1c", ++ "2600c04d980b2307982b22", ++ "6b923e02dfb1da62f37204", ++ "287593985c21589f72c821", ++ "c8918a059fa77676f0587", ++ "76201f5e0110544f41d9be", ++ "770b83b55e13465063e5a", ++ "412ae12837a29724832877", ++ "5cd8f5f9eb6806f67db613", ++ "4eac7fa0d6b168c3bec4e3", ++ "5d2972b12e50e727a2721d", ++ "5517c01ca3bd4da9aef0ad", ++ "11ea8c21342ce42ebbf9ec", ++ "413f256a64feb56e242e90", ++ "29f3402339c3128a1e2c1", ++ "51eb860c87e1e5b70bb623", ++ "369c62fe5aafda2a550912", ++ "2674d42d16e97493518d2", ++ "6b105359a1a68d94862411", ++ "527e969f4f6eefe6289ece", ++ "7ef4c5361ca08ac1cb6216", ++ "3f3aeb0a1df198d9c95768", ++ "152dc9fc63d3c1eb6c335f", ++ "7754a6a5fe6be54c00f4c8", ++ "222ea07afe042cf765ce5f", ++ "1086eae159340e441fa0a4", ++ "6c03f094dfe48c9743be89", ++ "1fe069b8c57a9fbe5f6009", ++ "185254fa056de9af1a6bd2", ++ "3018be3223f82c7f0c9ebe", ++ "48a13c03c03191471f1164", ++ "3e94b32e50da81bb5afc03", ++ "4d08f00a99d95d0043cc4", ++ "4636e2935765905adcc41b", ++ "4bc9c371d07d4a025a739b", ++ "83bfa3efcf5b970ad41cd", ++ "18bc8168956ccd63ac68a1", ++ "366546b3844bf45b7527a5", ++ "363a65fc59f4a8184d3d78", ++ "5ef30e941639d08bff19c4", ++ "5d66f0d9dde7339dbcd24", ++ "33d5a814c00e980600811f", ++ "5ccbc128a5721a5dd853eb", ++ "298200a0909b55e97005f2", ++ "703a6cf857e651748dc09a", ++ "547264d2566596f18bbb5a", ++ "760b4f231686ca10ea6ea9", ++ "49a3641c16382337f3c777", ++ "33525d5afa91fda7d5fea5", ++ "4c028ddef259fa2c7d4868", ++ "575d4696bb0e4edef99446", ++ "6da26efc24e2d57c26c090", ++ "41e1bc8a63d042ba714c97", ++ "5f24e71937dd097c0e8678", ++ "70b9ea82f6a6c02939510c", ++ "738abcc274fbdc4ab5efd7", ++ "255358696f5e9ddbfa467c", ++ "6e9f47f009d809f84a56da", ++ "27c6ad85e824da21b1cf9d", ++ "46a78cc83c010019e8b2b", ++ "6b828169b3ba13bbcddb05", ++ "3f5c0a52d2b564cc250982", ++ "63069f756c8115e5fc4c52", ++ "55744f373c8b8520d62370", ++ "43c2ec8afca87567ee9294", ++ "6354a865e088a0488f2701", ++ "d165a455f92b5083e0627", ++ "7252d249ce8cd4fb010950", ++ "79790e81fd0d2b63f9d1b9", ++ "5e147628ce9e9a9493f495", ++ "37755ea728b820f0ab2bdf", ++ "184e317201ff0ac25eb6e6", ++ "178cb915d7350e37948956", ++ "5ab5c85d4bf835440ff962", ++ "1e2bd3f41ae5c299bb720f", ++ "722f9dc13384479d1c4455", ++ "2b514798a553e5bdcd8ec1", ++ "51890cd139740ee3c35339", ++ "75d3c5c33e5a2023adfd4a", ++ "15da282cec1859a9591ab9", ++ "7fdd8bd273e4a717226cc", ++ "3915d17a2935e69936525d", ++ "78acf4423afa2cfe1a6fc1", ++ "4f140e806dac75cc67fa3c", ++ "37c6007c4a0d223bec9e13", ++ "1ae82d51e4845bef8c5d14", ++ "65a0cb312051f321a95f5d", ++ "42aa10dc273607be680d72", ++ "3e26ac2b23b8b913845e11", ++ "30bed73f7a94de9252a38c", ++ "750f475708a1369e3fcc26", ++ "61ade8e7a0bcc40ee4c2a8", ++ "27b94ffb61590cd0bcd89f", ++ "3f1e6a84c6b836f245c178", ++ "239309f551f303d0037140", ++ "211dcdb529a6bab73ad8a6", ++ "7869636f37e63a4ffff7cd", ++ "150365cfcc4a012a673c13", ++ "2791e42c7f90ab8d4e7fbc", ++ "1501743c447af65014399b", ++ "2244b09bebeaafafb0c481", ++ "36c0bf9a937fe6ca772d0d", ++ "419e79b02e607a42e6e091", ++ "400f76e25d392f347d4911", ++ "5ba0eb3a703d0e42cf4094", ++ "2ccb45ece6ec9abb9396c7", ++ "44741cea6d95eb07e7f01d", ++ "2b3c80a17ef583b6205fd4", ++ "43fea0cf26a3e256438525", ++ "59a7f220e101601c1d1b21", ++ "24974593a8d59a89588659", ++ "14ee39af97cd5a57b0e17c", ++ "4807e0d9a38d358d8e14c5", ++ "64d8389dc8d1b8910fc0a", ++ "6fd170c2ab312a1f05d814", ++ "68c4a816c641b5b1090781", ++ "24e71c2d01e956269446cd", ++ "3bec30574a99903f587887", ++ "2b4b238bbabe3c70748eff", ++ "4f0024b5b5580d91de0338", ++ "646ce329dbe03b0b8312de", ++ "5ba2a8023e5bb50b06e03", ++ "19537a8ee281cd28d6388e", ++ "10aab6ed7d1b631aa4b45b", ++ "6810dd5945e01cd2c90841", ++ "6ac2b70efaf88fd42c4044", ++ "aa480c5cc76379e0cd2de", ++ "64532524c99ecb3c365a41", ++ "321e3fdbb0b890caadc570", ++ "54fb5f18b6d001ef7be401", ++ "364f70dfdbb439b78e5236", ++ "9dfe57d1a9a3265476d14", ++ "169665894aa2b356779b61", ++ "127c199cd032273073f003", ++ "fa33fcce55fe6a32e0915", ++ "264e4b26d39119bcdc0985", ++ "593c091517fff61973996a", ++ "77da1b5a2124b6c9e11847", ++ "32e5682bfa3fd95762512b", ++ "72f7dab0b2d2a35e62478a", ++ "4356ada1ada2921353892", ++ "aa2cbd696160321682a6c", ++ "7f8bc7233e2784039454db", ++ "22884c181cdc222cad8e5c", ++ "7203cc213679d179eabc35", ++ "78a4c0445f77f31209ed17", ++ "58b95d74eb4e654735bebc", ++ "6a7db7fb47d3a18b620d6", ++ "63942ffcaaae948e9056c4", ++ "a2e07f9d73c5e3effd370", ++ "6667dbaf666f92bd61da79", ++ "4597c1546c899a3656689", ++ "5fc3c4b7f7ad5deab829bf", ++ "61170002cc409ddc34946c", ++ "736d05572fd4ef85eca2b1", ++ "1a5853834033d093c63d55", ++ "bafe681e7e52073b86d32", ++ "1c9f86b8742e14b6caf79b", ++ "3886dff828cc76dd830466", ++ "3b98704f287b0ee4e659aa", ++ "581eb843dc9919f85a6644", ++ "697396e6df9539532709dc", ++ "63606d420b8e8397875647", ++ "43b23b71c3202b31d91018", ++ "79486109c44990eca52723", ++ "2102dede4011c5cfefb7eb", ++ "235809998758cf7e4acb1c", ++ "233860a2ed2d566e131431", ++ "305213c4b30a9e8be153ce", ++ "7507998b275e3c9bd4e10e", ++ "64f00973a0eb117b548182", ++ "1416e580fa8bcb421dc6ae", ++ "36735381ceff20a76e32eb", ++ "45f5960a9db06a62821bf0", ++ "8649a3995ad114bb4d72f", ++ "374a0e75bc76f0adac7af5", ++ "6565aab9eaab16f7430411", ++ "7dcf3e6b7d3d02033c946d", ++ "65c9be7a29bf45e5992a7e", ++ "638d0229863032ef249643", ++ "297ac1b2d19eb1e6e32d87", ++ "6f339aa4d977875b1f1f80", ++ "438e5a19094bce43b5b5ae", ++ "4d8b0cd0d3401fd04e351", ++ "1b5200adee3adf189b056e", ++ "1de1227159008ec9b59ac1", ++ "75266a81bf7f77865e6f", ++ "9377e0e5c8d0de1856f6c", ++ "2fd82a7276af1cf8b372ed", ++ "6dddda58fac4e8afe0c9e7", ++ "1d85b86a2f3f20e2832ec7", ++ "35accc5a1e3fb474285daa", ++ "3aaa2c73e60edc333c904d", ++ "740f62900b9523de37b6b0", ++ "7401d0da6ddc33225bec4e", ++ "3e985c35adacaa90f5715b", ++ "62c36a3627b9d2b3c18de1", ++ "7b71ed8d456ee35292c960", ++ "2648a635c5981b8daca07d", ++ "2c33c53227ef5693d69f36", ++ "1540f88099c93111d6c8cd", ++ "5d9383670de64bf15eb49b", ++ "2b23443976252ed21088d1", ++ "7fa540fb3906a29b513bed", ++ "2f88b1c87d7d02f6c2614d", ++ "1976a9fa25af6d21cad47a", ++ "444a50dba1a2bf390bea1e", ++ "11c773ac555182d789142c", ++ "3b929cf6fdabeb45375120", ++ "15bf0eb485af1135b0e453", ++ "126dab6c2bfc9b83475847", ++ "c06cc01bfe2a9b427102e", ++ "6a545ca829ed278f6ee7f4", ++ "23dfbd70bcc040f36d4c8d", ++ "378ef780c4d32c3f15b3c3", ++ "7b115c7c405c6e4356bac1", ++ "1a789636807476ba5bd789", ++ "35fa1fca985387fb7fcd19", ++ "21b466e3230d809af7aa6b", ++ "4d1a8b95ded29dc79fd401", ++ "59bc93698864451646a053", ++ "7d6f33ec4a123fa281cabb", ++ "168ebadbade1cbc44496d4", ++ "413278937e6487a988805d", ++ "55407685456c2cb8311d26", ++ "79d07c6a6298d34020dfe7", ++ "65ab167d8e02a8df26439e", ++ "7dfd6cbe22024260a179ef", ++ "28d6cf3e20845dc7283634", ++ "648ea8b083a9828f8af17f", ++ "2f64ac4f819f8343111866", ++ "17da7c01f870089371d6df", ++ "50f371336a648ade74999b", ++ "1de402b5c6118ec8861aad", ++ "48ede8d4a9a88f7613388e", ++ "5f70485b00138272e9a41b", ++ "65a1f7025bafea5088145c", ++ "68d439e82561e55cbf1eed", ++ "3d8509040aa8739f034dac", ++ "2dd21df4dbce295378bd06", ++ "111d6b945ff69be530cfca", ++ "c1fd8fe80d24243e7b5eb", ++ "42772160e3ea402851c9c6", ++ "49374e550d8b335cb151d2", ++ "71faf2ef0654e97e0c23fb", ++ "4328d17f00529ea0fead97", ++ "546ec9785ee72a2a72d886", ++ "5d50e00035655b4d4ddcb7", ++ "4b53718060040e8179d82", ++ "282a80b8de04941c547168", ++ "73673685484b4f3492976d", ++ "5db729c46c687ddd7690e6", ++ "2cad73640590abfa319b6a", ++ "21ba4c5acd17d59fca0ed6", ++ "186605e063004c7e4a9375", ++ "2f687a83227d2d20f3b227", ++ "30abf45ef025352e681192", ++ "6a76e3eb445dada83ceb12", ++ "7146b897c3d924725bd0cb", ++ "14b68001dbf2f798322812", ++ "54112eabbed42ad31637c5", ++ "467db4fe225847525ef33f", ++ "25032025485a4979b90394", ++ "bc149e667cbe5a17ed77d", ++ "ba357a389bca1484d7e54", ++ "34ddcae84938327a3cbc30", ++ "2e1709b850c77f2d508334", ++ "15db077682cfbf170ce259", ++ "280bf57e6ab95037683d33", ++ "14f23f2aade2de50fb350d", ++ "57d0cd94e03404b9cc57cb", ++ "3282cc1545c9e77ce08abd", ++ "567508a3d2a7b4fe3b395b", ++ "16d8ad198832545831c93f", ++ "7d88a8aadc667bc60fcb2e", ++ "65118f1b7c366a8bbffcb8", ++ "6766e290c73bba54bcc710", ++ "2aad9e8261535baeb20b71", ++ "4ba668ebddeaa069043875", ++ "3f98705d2cf6346bf00972", ++ "541a69af40655a83e366ca", ++ "215c7e9a1d796b37a56336", ++ "419d9a35dec3e5f421baef", ++ "163690a8fd51b113410cc0", ++ "1d165ccd9ac1e4efca4a32", ++ "1d78f3d7e887debfa04bf3", ++ "6b421c0667b336723fc0a1", ++ "2cc7417260782c0d2394d3", ++ "21887a11425a371d17db86", ++ "5be7c40d96f7c97153eaba", ++ "2e061928a5c3ad9bd6d9be", ++ "7b398d970ad745817bcb61", ++ "f7cdb22a187815c33c5e0", ++ "a4f6b861d9a460f5b65a6", ++ "68d4b88b77dfae0da7a5d", ++ "4e4199871aec7ec1f99895", ++ "68f5ab17da1cc5dda22c36", ++ "1901320882ec0093fcda5d", ++ "76dcede51c5087d374b20d", ++ "38c3b4008c9d0442e7b602", ++ "1edb6eab35de11d4922150", ++ "5c53790457f0f66baaae2f", ++ "664ad54353749f2ad36105", ++ "45638582a87d07b0339df2", ++ "18b021fe09fa8bdc44e567", ++ "2acc282877d9cac38e38c3", ++ "7bd177160999a650655c6e", ++ "6717c0177a36454aef446a", ++ "6334fc3ff70d17dd837781", ++ "499a1abb2a1381278175e6", ++ "14da57f8c43c94d5133d50", ++ "4a1381ccb93c34dc44cab", ++ "7cb4b7b324b314195807c8", ++ "59f2c50a64b0c2a3e77442", ++ "426b930b670412d271a091", ++ "38aafca45b266dbeef6fc5", ++ "35d63c19d36b85b5e96648", ++ "31204f9f1e25342bbe28db", ++ "560e1e8aafcab315236068", ++ "5b80c6e1a5c4dcb3166335", ++ "1d41ed28d87d24620da24", ++ "38271b1467ee062bfe15c1", ++ "2b7758dc0945a30687fabe", ++ "4fb33de912dd8d2f8b8081", ++ "4d6d3f3602597781bd2ea0", ++ "5b509a0106f1d06627c353", ++ "7ffd3daf76b1e818134f24", ++ "858c45884b129dd66817a", ++ "70c9c69419338ba44d6b8e", ++ "17c5a39deb46d102235506", ++ "2adb843a58d472c17edcb6", ++ "798b816a4dea5ab964c64a", ++ "68705a826f80224f09c337", ++ "b720b9f07a6b1f41654e1", ++ "44bf623ac807d4c96747f7", ++ "16eaf321bf41ee635d6d46", ++ "37107b083cae132372e4d4", ++ "31e9d0607a42f7e54a8c81", ++ "4d23f5ec809ab5057c2705", ++ "10a61010d82426d21109af", ++ "1ba28761d3577e14d38b38", ++ "c57749387141da5f8fd27", ++ "4afedaa595cb8c309d3fbf", ++ "3fd90efbd4f0a4e173f589", ++ "49b4801e9a2a64a27691d2", ++ "7255e6805e164cf9788cce", ++ "62ae26dfe2273af99c4830", ++ "7e185faaca849a7f135848", ++ "10cc6c74c4f9fcc9428f7f", ++ "152b3e507f8b7898991275", ++ "15a3be22e80e0f6f498608", ++ "54e5b2458bb84fd7d4433c", ++ "656c647508629462e9a821", ++ "4c60164f9602341914167c", ++ "2a17c7297a08a3839ca0e1", ++ "47efddee37fa0ef6a72a47", ++ "106fdb273227296116f40a", ++ "524a00dd634d2f57ac7c6e", ++ "1e6b9387cb8fb6494ace9", ++ "25d293607604db30df2e4e", ++ "2a07033e306623cf4e37d", ++ "178e61138a7396d55d224e", ++ "75aa7d0184dbe8ff376045", ++ "421e7c19466e0847ffaea1", ++ "732b807455afe5538cf678", ++ "1a756f67d7e3e663369a04", ++ "389f7a523536bc08e2c52e", ++ "3a0c64739838b20476e0bd", ++ "4346fce81f02878bbc28d6", ++ "2f63eb0fae8122aa717440", ++ "59308e5db85655d5ae0c4", ++ "26b549a59dc35ee5ea7b82", ++ "4d89a145aa9c4acc9cbc8c", ++ "71b31c9be0276caacd1146", ++ "718c4a4aea9ee0da236930", ++ "7222af7c6bff611029c53a", ++ "7f4b55a70795b9d26512fa", ++ "32a9d4d4f421cf83f9237a", ++ "53cf166384d9f967e4ee4a", ++ "4566810f52dbdc6e52d908", ++ "308ab3a2c4d7f4df4b6a31", ++ "48a0fd415822566b2ecfbd", ++ "242cca5b643a5f97a01a20", ++ "1c28b93f693054a06fb391", ++ "5a2cdb29cc6790b45d1f04", ++ "5e8a5f959be2a17534c9bb", ++ "3fc3e580d2ad754a34bc48", ++ "6bd645b33c041537bb5186", ++ "3019d2c9a4a70055fade00", ++ "142fa830b7ba88d08608e3", ++ "47226da695602ab6e77894", ++ "70044b2b283269e2d14166", ++ "46ef25878ebd3ab0b864d2", ++ "557bc3fd4a1a6866c5d19c", ++ "7b0ba619013363524f168a", ++ "48b438b41e1bc7e58e6ef2", ++ "39a95d47cf87d7d7d6bc8e", ++ "27c1b7b41af947101d694d", ++ "492683ece46681328f9912", ++ "3ff99310762f37d685ca95", ++ "4cfeaacecd47507ead712a", ++ "38a39ada5dac01b5c2adf0", ++ "dea3527d089eceb4c22e3", ++ "7b084b907f4fc0301dbd5", ++ "503f8d64438b7a99b8de08", ++ "1d9a776cbeec9f5dec9407", ++ "8a006b686db9c86eb0756", ++ "144303d93b170584849f6c", ++ "6b5617e9152db554d999bc", ++ "1b9850e5f0f8fec4d967b8", ++ "20fe6d6e332154329f831c", ++ "5cee3684d600afc7804db0", ++ "1dc0a99973375f6c4a4583", ++ "4476f33d15e77d3ea6c712", ++ "11f2c34fc87060adca2837", ++ "71af54a2496a076b559a6a", ++ "2ff21a8761b9bce5f34f74", ++ "78b5c76a3ee8c2ef071fa1", ++ "5738f30e5cb40b4ed83e60", ++ "59fdfd7775c9750e48d811", ++ "7b609aae44a59cf088c570", ++ "4a67b54dcc404423e6b631", ++ "8ea7f70a71ad46c0c260d", ++ "5ca4bcb81d4d03018b177", ++ "169566a480e42dcc8863ac", ++ "789addf402241ff646d77d", ++ "13b16e69e645c1703bf7c2", ++ "16f732c5fac8192629ddb6", ++ "7731327e4c6ae66c8e47a1", ++ "cb8a50376e8204b8b5ea9", ++ "18eecc5a940548e7c51e57", ++ "3ca90695aca0fd32b28871", ++ "728caa6061cb6ff29e6b21", ++ "3d66483aa6674adb6569c3", ++ "1208a98ea1dd68a01d3ec8", ++ "5186a4a6ce8351b40466bb", ++ "79c75783449d733d93b4a7", ++ "52f87910ef7e6dde1f16dc", ++ "57aede4ca861e5051b15ea", ++ "70f2550983dbddb8957b2d", ++ "720aa7a7bdeaa025a23a54", ++ "3e7db1002a9116a5e20032", ++ "25d1c185377c3cd8e704a2", ++ "794294f26a938e1caf3c0", ++ "522619b83283553c71de74", ++ "4dd985f2fef5c539fa6a96", ++ "442eb4a36ab0287728c1d2", ++ "2a2b13112979d27489208e", ++ "4d43f85ff03e3cd18ef302", ++ "71e916ff79204bdad49695", ++ "270dae1c5ccafaa07ae8ff", ++ "3a2f442f3b3a9a2af00b28", ++ "3834a1b7acb0f05d9e53ca", ++ "5ca6e41b81529e38a59f6d", ++ "3164747c95104338a78b5e", ++ "b66201b62ddf6d13c5534", ++ "3dd366ce71f1fed428c326", ++ "12413ef53ba7fc6fb5cd35", ++ "20f6e36fbf07174b587397", ++ "362261ed7c97591714ea9c", ++ "1ce2a05bccecd36df96b64", ++ "358d745e0bc4be1c3f4586", ++ "221bb5afe07669d916e136", ++ "624d49c04a48d42d76c466", ++ "a3cfbf8b779e15bf28c99", ++ "28eb082844c0ed277d2520", ++ "4c7d0db8193430b75f41f5", ++ "3c9ecb18a83b901f901704", ++ "735a03f218370f8bd85ee7", ++ "4db4f1a602cec485019670", ++ "70357dabf2c34c8309c723", ++ "ecef39a1ef4b4d1e8c6dd", ++ "2cfcb08879a9aecacf316e", ++ "1175d70c2c07855db37245", ++ "786d54b4d5ce74ddde20a8", ++ "ff53eda132c9a3cfecc65", ++ "728cea43531fbac95263a5", ++ "20601a054af9d51633fab1", ++ "127118c35aaf80dac2a57", ++ "1db83df0a168bac450e4f8", ++ "39c167fbee27f65e96cc7e", ++ "2b90f954efc9f58a07a363", ++ "63f5fe049f46d509d141d8", ++ "75ac7a48082d5afa148e7a", ++ "569bfe59efe21364bf57e7", ++ "475131d01f3e6dc3b169fe", ++ "716991a2a17f536244885f", ++ "150c29ddf5483fb74be06", ++ "65fe3a22c7d35ad3f875e7", ++ "1754f51aa79c3b0803bf00", ++ "a4d6bd96f61637d730c9c", ++ "460372cf36a22fb6b9641e", ++ "43dcb4450a256b9a0eb673", ++ "10fafca3d5f71faff8f1a", ++ "177f43e8d62e87c66b9da", ++ "420c1c0074adbe0616df4b", ++ "1e39f05dac576881e6c295", ++ "7234cde8ecc6673caf864a", ++ "661787ba011711628186b7", ++ "6473dbfbe4a3f63d08e3f2", ++ "62b2e70d411eb11bf0a695", ++ "2e684b7951a2526d838fd7", ++ "5b4aec35da23a27808974", ++ "51e267e9a5a7684ebfd343", ++ "36b36922114363ceb85a26", ++ "5687a42dcd55b43227f657", ++ "3d28e1c12f9c60e500dce7", ++ "6bc6acd592c0200b749e07", ++ "773a63e6b7c9e3bec91272", ++ "536bfe32ac8da07b253be0", ++ "2146fc84389596cf6fa8ca", ++ "12a2fa8c4d06a694b748c6", ++ "49ede33966bc3f0dc8757c", ++ "4f787847feba11bfcbc764", ++ "b2687172956319218655e", ++ "4bdbd2765933e2b1d70563", ++ "1ef9edb1f958cdf81fb9d8", ++ "6e8b2732511303a48ef731", ++ "3608208e4497b40a62b3a0", ++ "2c4bac0a0cf06ff50ff71e", ++ "784bdef1566f244d4ff44d", ++ "5cd3a1cc8bf78e4c7e3747", ++ "418b73330a3b4d1a80474f", ++ "5f87453deb48ed6c9a1afa", ++ "3d9131aa5802e27a83eb61", ++ "61539cf7b388689e7a260a", ++ "260213253056e29f0ac6e3", ++ "2768a7a783d9baa4e5cce3", ++ "7e61e3317d07a1009894dd", ++ "6927c4b12865ac8f053dcb", ++ "352d204330140b3786230b", ++ "67ae2ace35fde529154a8f", ++ "7e37a126be9507ba4c717f", ++ "2306ed04565a9cf9fa84c2", ++ "6b380bf5d71fe523ad1e4d", ++ "6aece787aae5251b57b3ae", ++ "7f2209419e3163fbb4cd8a", ++ "376c7a8d0fa0abf4c0bb7c", ++ "39a26bf8336439ba9968b4", ++ "620c14b60053b660420c4b", ++ "19675db116558d90bb4f6", ++ "2c16632a312edfedcc7f72", ++ "1945686d70d9df98093dd1", ++ "62e4e44df51bf11734aafc", ++ "5d3293ca54de6a3aa06b08", ++ "610d07557d991d9db3dea7", ++ "6b25878a1ec102b9e883f1", ++ "5d29345f097e1dc041bc7f", ++ "797d4c38129f52836fa5c7", ++ "5bb2eece8c95a515d2e2ea", ++ "451e904c04882b739d233e", ++ "4dac1ce4b87e60431b8a4d", ++ "2f8592e02ef759cdd34c72", ++ "7c1d3420db42a6ffd37cef", ++ "4b0d1ff6297b378945b906", ++ "744db8f7e25f69bc47f2cb", ++ "7fcd5bd9328b9f06223a1a", ++ "37f7d323d5bf332eed1bcd", ++ "629e9c894bbbebf06d3299", ++ "d427f0f9d14ecf4c54fbd", ++ "71e1aa5a9aacb38b66f605", ++ "361fe28e640ec02ae49613", ++ "551b691726c66f9ec1f9e8", ++ "523ee7b96bbc2b0977b4f", ++ "52e6bde0fed2ecd82f7bf", ++ "3a4a4ac73bb38c0c48aea2", ++ "207cf80fa76e8708f88dc9", ++ "2bfe7376e8ab62fafbff59", ++ "7b8ff43621b7fb13c3edd2", ++ "726dd56f61c4c5016201f9", ++ "3915c71f3b447b64ce4513", ++ "4781781ebc739ed9d4e35", ++ "3669984e1ddcb753afb878", ++ "6c8071fad8933706efff6c", ++ "25330fc3e5df50eee77cd4", ++ "316bc661e89aeb9e7e20a6", ++ "2a035934ba5fafe2ebaf47", ++ "515a0593d1e619118d226b", ++ "72716051b13a2c1876c8ef", ++ "98079c36403a029b3f0bd", ++ "388d8c3c958b6abcbf6aba", ++ "3d9a1023138b0e9cbe7d70", ++ "7bc0acaa724475da5a8a83", ++ "4a266217d4534cc588119", ++ "62baea1b89700a3953e872", ++ "5fa826fd6352f83c34bb5e", ++ "71be60f1312db2fcc7f045", ++ "51cf9e84f5414c7907e79a", ++ "1fc064c4398ccf6bf7b1de", ++ "70594464b46de9acc11f02", ++ "4de3353d33028c5f557394", ++ "15060a6e69612092d45768", ++ "2142584bb5cff6c1e5011e", ++ "7eaf34148ada80711a86fe", ++ "64f201a4086e40b2a3a19d", ++ "2d794034e6ae324ba7041c", ++ "56359d56dcb06ea3ab68ec", ++ "49d6a78a88159326775c2e", ++ "32c2902887e1700cd5dddb", ++ "c8806bb60205886d4ff9d", ++ "c0ecef4f88f5957d4b1b", ++ "b0715d55fe0c1edd9613b", ++ "b512df0270e6ffe2d4a9f", ++ "563e208513fb23ff9ca7d", ++ "54c245a123767ef7f22e33", ++ "5e83dc6dedd0679793feca", ++ "3c53d6131f8c41d5d7317b", ++ "349470b19ee7a8cf922b33", ++ "432c0a15a9dc31696b79c7", ++ "3de21ce46f7c8be3bab3b9", ++ "669f3588d7a4ca7ee3dd1f", ++ "2bf32012cc6354c709ad2", ++ "2e5ffe59b5dd3843fa4c17", ++ "601b382825c1515525a19c", ++ "78dfe864170ab14a408743", ++ "6ebb0dee9291bd90cd2215", ++ "6f52ff1c7f6dba719401b2", ++ "d16f53a28b7042d305524", ++ "67daf6ba4dc4d74236df77", ++ "72118d192add3aa4c1e0b6", ++ "7e1ce3bec1e98dd35947ed", ++ "2330589e6c22439bef95d1", ++ "214d49f3e2681b232cf62e", ++ "ceff6274c7b15ae86dcc", ++ "ee736adb9b9c1860d483b", ++ "550e4c9178e5dead2f815e", ++ "651be8b59b15d629ab774a", ++ "655b44d3a92231714b14c8", ++ "1a88cb781abea4a70cdfa7", ++ "7a520385f587099a8da6a1", ++ "42a1f9791054781a203d9b", ++ "1aadb770481974ec7ba970", ++ "1634b76faeb97237505ef4", ++ "577a2773ebc9e2412cb050", ++ "68075aa010a2a7afcb2078", ++ "e5d22d0ba9e3194e2337d", ++ "68c1092ddd7cea180b7a8a", ++ "1f6a141f6eb54cb95d54af", ++ "6db9060a2078f4de4b4e1b", ++ "21ac3ebe991cfe1bade37d", ++ "45e67b0777cb6facf28d74", ++ "398768a52710b109c92dcd", ++ "6c65a41601a28b4854db0b", ++ "3fa82c77c11ef3ce373a08", ++ "2219a8eabaec2cc4da44cf", ++ "25b286320c27c0f91c388", ++ "c663e7994203d116af45d", ++ "373211f704832f37df113f", ++ "33f6606f82062475e2caf5", ++ "77ae05c9ad4bb1a82ee6f6", ++ "72f290cf9ea470dcec1318", ++ "20cfa0c6bfbdce5e399a70", ++ "384ac895940651e4b3df31", ++ "2a6da3e3f6425cc4caf185", ++ "3559d5470cc8be88bbee52", ++ "731437b69ca76a93992caf", ++ "31f0df7953457ce90524a8", ++ "7fdefc35775213402acc91", ++ "246e8276fd64f7af18402a", ++ "1e604eea4a6fb7804d131c", ++ "f6074b1e17e08713a2a46", ++ "23931a4d64503bc81a5a33", ++ "6395a035a6a5e009dcf586", ++ "23db937264552bf6dc2858", ++ "50e45902fe1a308ec88670", ++ "42e82d8613957e0acb2b09", ++ "3d50a612150493864e2df9", ++ "1f08599df3ce28d2e2a99", ++ "172e3a20b269ac416b7186", ++ "624f69e6f91d2b9574cb8", ++ "33b05c78a18798e4462d45", ++ "5d5e844e1fd78c36c3341e", ++ "5a1b57c203d09cc8a22696", ++ "775bde6bde2d0aa4187fe7", ++ "4be11f1cd60954626093b7", ++ "571513666bf5e4e0b1c7c0", ++ "30e484fb4ce5927a937373", ++ "6ead11e0936e4bb4e855e1", ++ "14b5583a83133add54d368", ++ "361de61b4e6057d1cb2274", ++ "24364b397921eedc03333e", ++ "3f26224827d27901ba392a", ++ "147a0d7fc26817e7251ada", ++ "4debfa77d5d5f3fa106f86", ++ "1f8b63c5fea99ffd6a5348", ++ "59dbf0c177e94a664cfe3b", ++ "656e5b10b9da085176e0e4", ++ "678fb8bf7f6342c5764339", ++ "2cd2d00d4262f35754bb13", ++ "67b770c97867478cc69b37", ++ "bac1f8bfa0e63045ec3ea", ++ "4303859a49916073987344", ++ "322164812a5696cb2322b0", ++ "50148cebf8644fa7375aa", ++ "50b37142bd10ca63ad3866", ++ "5a86321f172c81fbf185ef", ++ "4972dfe88d7e4fb02ffe72", ++ "3aac1aff3b6e14d31a91e7", ++ "6d575f1601945a3ca29eb8", ++ "6c290f053f3f46327ee8ec", ++ "73040349f8459e94069012", ++ "2dd44a6d1765874cf1dbb4", ++ "52492b4a4856d777ca0682", ++ "76d72d56a09f253d257f0e", ++ "6a4862d59f8198b4ea0fd5", ++ "ee2c219af9300476a7d41", ++ "60548a10984139e59f5d8a", ++ "423813f9eb92bfadf14d9a", ++ "6a3f78db4e25085a772f7a", ++ "a3d31a1daca53878fe695", ++ "1c24006c67392d350aebe9", ++ "5baffc06fe51f5caa49a4c", ++ "6f4a829757301eb1143585", ++ "202377a9328fcb8f661a5d", ++ "6506edb4005521bcb61671", ++ "208dfefbc938eb8f166f28", ++ "2f8aa359ac5538f4834ed7", ++ "6b36296c1bd668243e920e", ++ "7856c391e8828b90a94afe", ++ "5728f13fbf1367c5292a3a", ++ "6db3eec1da4e57eacd7cf4", ++ "520f0b6932233966b7bdb1", ++ "225461e731f47cbf2cbf5f", ++ "15bef1b795296c7e8862d0", ++ "217d231f2ea4bf28c97e44", ++ "31e4aec6d42e52c762e301", ++ "16103ea0d454ef686ebf4d", ++ "34470b1eee2f871c42ba71", ++ "5d172643cb569d9b2ab357", ++ "45838fc0d9bd4e814df398", ++ "520d412f22645bfa3f3a33", ++ "5dd2532249188dbe3d2539", ++ "336699d6c6f15f6ab914e2", ++ "48384f03b178aecb456dbb", ++ "358734094106c4c77371f8", ++ "13705ad9594243161047cf", ++ "9cc0a7524feb44aafa989", ++ "2f615de4e96f8f9837947f", ++ "4f571e68d11ba0c201ec2c", ++ "1c7c6456335bb722881302", ++ "56f01f51a5be66f649b1d6", ++ "4a2416a8cf412f996e9654", ++ "5593dc730a3a85d6ce77d2", ++ "70628248b6cda7311de5ca", ++ "49212e86ec70f1b328e11a", ++ "3669075c083d3a0547d7ee", ++ "7c64411c354fca180b974e", ++ "be2266f15dfa6e02e4a02", ++ "69110081782c350722756f", ++ "5370ef9f2399e3c803b5a6", ++ "4277911fa0e430960db091", ++ "46d2651ce40dd1fdd11e69", ++ "65838019d10030d2edd34c", ++ "79ae8d3a65221805ed59d3", ++ "4762e175d924ca1dff7d06", ++ "226f7d490aa9d47314570", ++ "673a9bc1330de8c0b0abe1", ++ "a80defe299bf7c4d81738", ++ "1916345f1ad90cf48c6472", ++ "13cc5c5fa7afb2b7468106", ++ "656f70349417ef562616d7", ++ "520db901eb8309582e12a2", ++ "4253e27061630b9343ddfd", ++ "43012f86bfa02bf0033ee9", ++ "51524048af5a6750b1955", ++ "37a4477749686070e7e049", ++ "39f7a72e1daced6411b1a6", ++ "4a98326f880a44e2d6ea5e", ++ "574f95a475dce62a3071ca", ++ "23c20aae79c2ffaa75a36c", ++ "59f67a0c66d5e9744004c6", ++ "25ff556cf1afefe2cd2ba9", ++ "41be4715ccf6dde8b12086", ++ "5e9464fbce6027257d92c6", ++ "5b57bc12988f27dd0ed418", ++ "1f1c7eef9d0f99e1e209db", ++ "1a95aa2ba56c053acf7e56", ++ "6f085a8f46a66e79fe4f92", ++ "728aa131a37012e184c2b6", ++ "21469f9c49fb4d2fb54baa", ++ "67d12b5d61741b8623f378", ++ "2a1abd32897155b55014be", ++ "35ebfb3fd5a71979daee0c", ++ "3c994e655edabd5cfbe8b8", ++ "b5f14620587f1e8ed5a45", ++ "4cb0c7462e90f28fa251d", ++ "608a29bc043b54adde90b0", ++ "6337453f9c180b8ddb37c4", ++ "60e351e7834b181d30a00c", ++ "15324434e27844cc4fba51", ++ "259839d29faddb791e3548", ++ "198d839621f761dde4f853", ++ "221728332d3142e3346be", ++ "48cd6ee15c4874d342b21f", ++ "7964fb4049b23d750b6f0e", ++ "365cb247c96e7933341e76", ++ "4f7806a65676c896ee7db9", ++ "99539a5120bf06fd3edb8", ++ "4374a87512bdcb27925ebe", ++ "db7255fca12f37c452ffa", ++ "4a2cef4e3606d1b9422334", ++ "b8385ec48f904d72393ba", ++ "71d26320321cdb1dc925e0", ++ "1f8889a7c0321f5279b37a", ++ "7decc101d84d7378c8efe2", ++ "1526a67a2f54717285cebc", ++ "4a292844d7aa26520c09b1", ++ "5edc4541d1854504d071a", ++ "44f34a642236b1e7e4c8fe", ++ "87eada956963224c06418", ++ "76393b1564fa2cd841480e", ++ "2aec8efef6c41604b67a83", ++ "2644cda468b716b53c99d1", ++ "4d74065738715d35d47743", ++ "1118a89d656497538996f2", ++ "26102582959271955d45bb", ++ "1318f3d7743d8ee4ecfdb2", ++ "3128342c1cd21185c739db", ++ "7568ac37df7da28c47bab9", ++ "be26e79f27c2fffd5718b", ++ "2655fc5da8cafdc10e8c6c", ++ "6336954989b8a716380f64", ++ "2f1dd3930a2948f2187f86", ++ "90bd6d6fef2e358a664bf", ++ "675948e6670907b03227ed", ++ "2025bd13134bf0ca69b0f6", ++ "509dfa92ab81408672391b", ++ "5c699bfc1a98ced38d7c88", ++ "14816e04a6b799d1ce9e1e", ++ "61978b574cf8f6d53118d6", ++ "4e203019ba4b94cd691d60", ++ "7df66ef2eea696dbe6ad95", ++ "43bc8bffd5b4fa12491d7c", ++ "1207aa2a4ea7c882b5e76f", ++ "3e9654e3940c0f541b93cd", ++ "4a64cce2fc4633dbb63e09", ++ "4385d494a7bdb154810c4d", ++ "dbd1bb9693e65c5eeef4a", ++ "7d58cee39bf1830f1b3ec0", ++ "6cc6a998d40d1bad211cd", ++ "3aa6d80b7b4477df65330a", ++ "2ae1383e51812f870ebf41", ++ "1107ffccdffb2932659325", ++ "9cf05f6855d4068390948", ++ "36f24af02e5318171bea53", ++ "4d0a046c7ec4f54117f367", ++ "7bb1913bf745fa526f18a8", ++ "2970c6e86dd017c5341ddc", ++ "58c411222783451febdf82", ++ "657128352843035ba5fee1", ++ "13c9d1e81de8cbb64a1797", ++ "66e2564796168c2d0a015a", ++ "1b9995439565d095eb8a8c", ++ "43cebcc2f248fc1fcbd6b4", ++ "7e18b1dc04cb3af247aa31", ++ "269ad3cfbd18bd255786fd", ++ "2f1b9eb8c8ceec3aba8c3f", ++ "890072ab6d3eb608d30ea", ++ "4e72dcffc8f26eb136b7c7", ++ "71db6b9125d5ab5b3e7493", ++ "57bcb68e1f52791794bf4b", ++ "7489fd5407cd56abfcfc49", ++ "45d43d697cb8503c85839a", ++ "2021e0329a909a39851fe3", ++ "6eceb600a9b81fd3aa7175", ++ "4d63e68650d056d4e2cca2", ++ "21789b3595bc366315af2", ++ "781973046ae51aa956a060", ++ "2353c3f920ce7af530f96d", ++ "4a8154e2948099e7b7c4c5", ++ "319945f43efa75c6d6fbd6", ++ "1a0cc5d78d1da3759fd0fb", ++ "75a29d53450973ae07e5b6", ++ "670c6449f82194e5367c1d", ++ "6978fb86dcb4ccc82a3738", ++ "f6c4daf384fb3d39aa985", ++ "47df2e03e1548a16e223be", ++ "36224c16a9190272a21e14", ++ "abbcfb2e4c3da6b090978", ++ "1fb7c568bdffd12b767330", ++ "77f657453333dfbed3c7e5", ++ "68855602ae559673b8a2dc", ++ "57b79cb347145bcbe43bcf", ++ "542f3c6130072ffd145c0a", ++ "7d43897c9a717ea4ffaf53", ++ "2928531ef291fb90d243e3", ++ "6308b8f5574126f70ec3cf", ++ "3b77afb6ec85d92608bbc9", ++ "39bc9fe63b4ca1891dbe7f", ++ "14b126e3c0b0f4dae2ddfb", ++ "634af4f8ff5eecb70f9b3b", ++ "5939fc19fad9c14c8917a9", ++ "cb351e8f1a28278af3af8", ++ "41ff1be99bebe99b10f273", ++ "32c9397c9adff65d943965", ++ "1e1de465daadd9547d63fe", ++ "1924697a3681efc60e8e70", ++ "3e14120ed24ebae50e64ef", ++ "29bfa87365d098b3fe8377", ++ "48ad93093caf03d61b0aa8", ++ "116c396589d81e0684d5a0", ++ "4550a8c9126d63e137546e", ++ "3d325eede75d0a573042e2", ++ "715fb02624875de3ce495c", ++ "2c1cf6d476ed98aad97b90", ++ "41ec16a5c725c7d32d3a8d", ++ "2a6ced30aaeaaa3957eaf", ++ "284cbec8937114a1728cdb", ++ "7fd049d0f5d16bca84fbf0", ++ "1ece2489d9c16fd0d7c093", ++ "7a1817cf8f21c4f863437a", ++ "2b89a454954d4c6b2e2120", ++ "44b51755bfc5410d6cfad6", ++ "31e4383d0d65d0adfc3084", ++ "2f44e6e7eed452c1b02ade", ++ "46861d4c2ab5de181f3e32", ++ "30c01b8abdb9d98a7941dd", ++ "593ba411e3481cff090a6e", ++ "5f7998cdc984bda089a530", ++ "38863908f348e0ff24d2ea", ++ "7db23dcfd5b48847b2da44", ++ "70cc62d0a35cccb85972ee", ++ "51e871e33b066886db1e57", ++ "7ab8d7968452d732fc3362", ++ "6cbec7ee27571943d99309", ++ "65ccc844f43d7740c3bb83", ++ "2d92e146c92e5c2141114e", ++ "78208a8be2c33504df2573", ++ "1b892a6bc6d106036dc210", ++ "1ba30d22d8ca0e3412c0e7", ++ "7f5d5abee4ea627ca346c", ++ "29d27ddd5f46b0a514ec85", ++ "717a62d953937ab8d63ef4", ++ "46f7147d837df6469c39be", ++ "1e9e640158c2d5ef405818", ++ "7f30d40bb0193bcc3bff38", ++ "7e84a589b79843d0f09d89", ++ "1984882a708094eb26643e", ++ "6b386c8a9795cf0b45e160", ++ "282bde17894173789173e7", ++ "75b60c74c3f4835e0ba3f1", ++ "66673b06f4474ab9ac84e3", ++ "768b4e15703c2b99a95ee7", ++ "3c7d066200b6ae5892048a", ++ "194fc13ec819c9e2289cea", ++ "3c066553be4fa2a741db4d", ++ "31018337a926110b0a5b91", ++ "7ca0b74cff2de67657aaa1", ++ "610a799f5f9443dd8f333", ++ "29dc0e371f2a3ea6cf4d60", ++ "bf1c05f166718be1c6836", ++ "309eb70bbb47b20185134f", ++ "4b31d20ed3a1f68f117d30", ++ "201a5f031183f9e3136174", ++ "6d82429df8c04f3e8cbdea", ++ "4e4d1094ae9ce9f42b1d71", ++ "65e071aa89e8e9caa17f", ++ "7c3ad9d6ed54817d082b65", ++ "352a1b67a355f38121c462", ++ "2d980e097ecb2ab91b9b92", ++ "96afde4db924db62eec7", ++ "6e20ab59697e8bf608ee9d", ++ "2ab6145578df975521753c", ++ "5c91f707bee21c71c33c34", ++ "676d8d92a92b0706da21e1", ++ "3a82f64175d5b3caec9c53", ++ "2ccc62a5fe0c2d164b78ac", ++ "7f53a40fb6d59c55fc0a6a", ++ "eb12a34ffd8e97426aebf", ++ "330554538efb3452d928d9", ++ "37902c15fea70cc2588984", ++ "1e3f1f00ee5c87d8bcc6a5", ++ "21e6a33067365b1e718020", ++ "4113025c4b26d50d501a53", ++ "1d50b663f8750fc777a8a9", ++ "47267802b4baf11a616d7b", ++ "206a9c38358f291b01e407", ++ "7529b300b4b89c580a5f62", ++ "59aab11c164124e5cdf604", ++ "3d3a2d2ef7d22dc8adb10e", ++ "1fa48382ab305e0404adc", ++ "6e72d626e97997cb842159", ++ "53a902325a9087232d64a1", ++ "726d30610282ed39d8f203", ++ "6e48887c0bee3ba8386f63", ++ "532cc2e0afe1d979c42a70", ++ "614224558d52e5d4eb23b8", ++ "c0bc8c55f3b95e521ebf8", ++ "1b4e22a54398ec5712c2f5", ++ "45109475272b0ee96581b7", ++ "6c065cf636d6bc65762095", ++ "7bfe5c12baaa86c60d8117", ++ "62e55ea318373ea102e458", ++ "46789b05c1e88afd58b2c6", ++ "37120883f03d674fbee3d7", ++ "63a482d47b34384d6c0abf", ++ "78778c448d7d69eeff19c7", ++ "69527863032c1ba7d7e238", ++ "574f9294e066c8fdb761b7", ++ "3adbdefe2bc4d894d3eea5", ++ "7c2fed1746d715eb95529", ++ "2501ea3eadb12569e01e7e", ++ "3d49c943bed92220933501", ++ "2327087d544749f348c909", ++ "63a2efcfe030b5eb3fd526", ++ "2d2c322dac49b5fc4277a6", ++ "4ebe9580f66ecfa62bdae4", ++ "39450177cdd3980c4efafa", ++ "3349dac2077bfdf6a12d86", ++ "56b71258283af76e7bcfab", ++ "2bcddd9fb0f98505c98aa9", ++ "45166035762ea541feeea1", ++ "6bf558bed09b770ac7b7db", ++ "69498de156a0aa10a4e2dc", ++ "6cc9f90d012be002904668", ++ "32f8a36cc1b46c25cdcc28", ++ "312ecee1519b0617d31186", ++ "706df4fd50e1c42994aed3", ++ "4edae7063e31e196fbffc4", ++ "7bb42f21df6b474c926cab", ++ "7c2bf4a989b0889ab6c2ee", ++ "14a25dabe8f8f9bd2745b5", ++ "14266a10ce4302dd32d262", ++ "411254ef95bca10cdc61b9", ++ "2cb3e5c4dae6b173319195", ++ "575c81fbd5408f583cec84", ++ "904098cdbfd4389279e30", ++ "4499b6e3311b7fe5b9c98e", ++ "210804240b673797c1da0b", ++ "4cfa062853643ca21aa8e4", ++ "155503fef8a8a42650f8de", ++ "214de8b9e305b92a9ebc6a", ++ "aebf119c49f1f5d4fa77", ++ "4019e2ed5f4f686e75a334", ++ "26e8b6fae1b81184be307f", ++ "4cbbf282cb8d5b492509da", ++ "32124e45d595b542218cca", ++ "4fb7ac8e103e64af4c501b", ++ "4a99080981fd90fd8f202c", ++ "5fe19870cf156902f09ea2", ++ "35da7f1fc27e6edf7e2774", ++ "171772c43b172c6f59b4ee", ++ "396792f2585d3e823623df", ++ "68b020f430372f0b20817e", ++ "58a41d74e16c1b1fb6cbf", ++ "6ef7e0b470470f565c088f", ++ "4dba440f7f398ce0198b25", ++ "2840ecdbeaf847ed4e56fd", ++ "2f36ea2bf51461b1407878", ++ "2cf0b3c6e55d4f6c794d8f", ++ "31fcd9e9b87aae6bf32f83", ++ "47626057be8af9d92cef74", ++ "2113e1a93f5d2f1cba0377", ++ "4176799b704bfacae7d897", ++ "524919eb6636c6c6c14a82", ++ "64d1d7c43b00bfc99b8bb2", ++ "76a279212b584d95ed2cd0", ++ "37e704706a7967491e3628", ++ "5e1c654c63269bdc77fee1", ++ "58b898760417610a09ff41", ++ "64981a92737099a91d3794", ++ "571cc10547604b09ba9b69", ++ "6714be0beb22d71708c5e6", ++ "359b739ee10f4c4f24e721", ++ "454b67d8b7470679eeda79", ++ "615326e14c6c74c717def2", ++ "2dd86ec9cb242b4e68016c", ++ "62a4fc7a9af2d27e92b08f", ++ "cae1cd222ac38b9a89a19", ++ "5fd2fb0300581c5f59fa7c", ++ "1488492f946cb788d721d6", ++ "509ca3fe7eae200044712a", ++ "27c4576460764aabe86ca", ++ "72e3a111047449df428c07", ++ "4dd2e16c6f9989907671be", ++ "415d623b63f929b3ef879f", ++ "9b13c11e290284a86caf", ++ "78b61404bffa36b135773d", ++ "10c2f27dd2e5d8f77a071d", ++ "684e96f56360b04576ab1f", ++ "6bd55e81cea4df6934b8f5", ++ "288723d0eb9a25150c0772", ++ "4eca5fbd35a4778cd18f80", ++ "590c069f4d458da38448fb", ++ "6a91ca9f24a59bd3f77cce", ++ "4520d49550bf0a2328020f", ++ "31340daa6bee66dc702e47", ++ "21cbfd5db5cf856bb6980a", ++ "2ac5b705311ca0e8e6bcda", ++ "28390f3626b1fdadbcbfd8", ++ "3b79806e60c6443e5b75ae", ++ "4e1dab19fafdbf4d11123", ++ "4bba04cb6f7dfe33e4bd", ++ "25b65fbcf4deba1535165c", ++ "5d2602e9c7bafe79929bee", ++ "1f5e885344b51456b2195b", ++ "5c585a64ca68d89750e9da", ++ "715687651f6925a41a3bf1", ++ "47be6483decbcd32c50b44", ++ "3fdb397b831af56c0902f1", ++ "60ea199093a4e9f80613b6", ++ "59048c7bc400c1b2f055f1", ++ "5ed2c798bc4d3df9693b4a", ++ "26c8838f41263334d39302", ++ "257f0dc17de9e402db5577", ++ "5eacde9e13242553f24977", ++ "232706fb395f1e37b2683d", ++ "5527388c03206dff6a464b", ++ "6207f87b59fc321d1fa8c5", ++ "3eed8387e5a22f84995caa", ++ "1ead4bf29c5aa1e11118b1", ++ "4e9e415c8033fbf3989b6d", ++ "6ed402123cbfe00df8030b", ++ "15c5021e3387b5104eda39", ++ "385c720d2080ae9544a074", ++ "12502410f917e813c566e4", ++ "dfa61531c98e389318ffc", ++ "75df623177a9cc914a680f", ++ "16a2f9f4e53133020d693f", ++ "68bba5659f4f20356a0cad", ++ "5b60aca7fe85259aa048ba", ++ "748cb85b7df9ca5a82d4a0", ++ "5448bba652328fd63e3ca2", ++ "497b40c11c5d479cab5f20", ++ "1ff2197a0e5b3d0b65c928", ++ "175182c7cd2ce431b0150e", ++ "58a47971604afebfc2dfe", ++ "7feefa2c38e3a6212b4cc2", ++ "1dcb001f06c75da3270a59", ++ "3e7a71b985de5c6c7a9f57", ++ "ccd4be560162041ae08e2", ++ "4ec109ed0d029a0c6bd1c3", ++ "363177aa4ad204478f4d2e", ++ "7b94e69ecfb1ba4bdf42b9", ++ "68bf1a165a85b17f192a39", ++ "fca586b3bb595a8d4101", ++ "7914f6f164e20860badddb", ++ "d959366c9d2eed9c988e", ++ "6b1b87bf69d8ba16154459", ++ "5798f45a6d32a5d9e220c4", ++ "23ff36317f41cdc69b5f8c", ++ "3337445fe49877ddd94c8c", ++ "27e0d5b6d5b01b974468e6", ++ "155305c9e80b8231f3fea7", ++ "46777bd089a8dc8c44ba66", ++ "4eb92d6051c08bfec28d32", ++ "58de9434dcaeb21007cf50", ++ "4945531dd0d285dff322e3", ++ "5f4ee2c7a7d447e781b997", ++ "255da48e767df6db73178f", ++ "40f14f4642441c80c723a2", ++ "23b23c226ec7148e9ecfd4", ++ "2fc4119b8d9484cd86a0bd", ++ "e8a31983f38b3bc04d83f", ++ "403c97fd7a8e612b101803", ++ "360136af955e5fa1edc1", ++ "6dd1e30b456df046e42f20", ++ "2a8fc7a338bd0e95e61238", ++ "5574ce6446f5f9b2cb3ade", ++ "68437c168764f9b52e36f", ++ "6db55a7581d577d97e45ef", ++ "2117da386a0ba848e04619", ++ "38a3fd25a6d9f4f7c85efc", ++ "20bd84ec27cae248ea38a3", ++ "2359b0102f9a1f774278d", ++ "7f779a7314dbb8bea5c652", ++ "a15cce75efaba6c1b571b", ++ "5e4eaaa44cce4760757194", ++ "1aa73126a375b6cf5e8b5", ++ "e0fd267f226bcb77b4105", ++ "5c1c9591ed7cecac5be504", ++ "6f8c0ef46d2275dfe7e84f", ++ "75f53c77a2d34dd51c6882", ++ "553e86c66c2fba13b95f56", ++ "31cc33f2d92bb3dc73372f", ++ "2bcf3f6e0be988750bc0c3", ++ "2a0c42a5cba7fe55a006e5", ++ "67427f6921fbdb98c3e375", ++ "62019722b2962f2ad1787f", ++ "75964f1abb3f7cc93e9f96", ++ "3faddb5ddd2bdc683de72f", ++ "235bf7672a2cda1ab01fb3", ++ "c16242d78c3d8fbfddea4", ++ "29105da153f2a098ad094b", ++ "39f0a0674e65b2cad4a706", ++ "57a6c26c5e5dea61f133ee", ++ "6151a60a864edd0e7c7b30", ++ "d65fa4e9fad0f9180af7", ++ "553adfba4c4a6d20491557", ++ "1ffc37c5751a51bd676a97", ++ "450dcdc45566039112cb21", ++ "74c5b771dcd8c4719355d3", ++ "72216a00ebfc9de1e963c8", ++ "7746c161815ab2091d9e21", ++ "47ddc74fced651c57b4d1f", ++ "417a5a771b0fe4694065d", ++ "4bd73bb75df0b9c8f31e93", ++ "3937d6181e67f43d9bec08", ++ "5fa8c4e879ae9ef5c6f178", ++ "693e564c43456862d84db1", ++ "394398fcb25e82a48b8d32", ++ "754181ae9689816d4fae85", ++ "6f5834f39b940405114e26", ++ "41d82e9988854950bdb48c", ++ "29f43cc681e11325bf172b", ++ "6ac2b95852f2b3848657c4", ++ "49da4e6814895f7566132", ++ "7a75465db2452d11dbf6bf", ++ "14b9cf8ea7c2a2aef663e9", ++ "7a7267a5eeee00421b1bd7", ++ "8d7ac16a6c7fb5dcaf362", ++ "4a9951c3005ac4b7d775a5", ++ "4dac5ec68e30db33d790b3", ++ "7e9e8be590540d41cb48b7", ++ "db6d45038525122246c3a", ++ "32e84128c0dfcdebdcfc5e", ++ "3c52f4c6c583d5b2a18105", ++ "7a42533b0f16560c421482", ++ "403ccf27d3ff3c3686d654", ++ "5d780dd5bc1f62ed520130", ++ "6ecdfc4db1fa1b0104403a", ++ "4796fc52e00fbc5d65fc02", ++ "1103bc87eb4e4e572c882c", ++ "1f2e34fd7020d08b01b7f2", ++ "23f737b6f1527cfce0303e", ++ "292e4d75da1a76fa4eb730", ++ "1b8c58018b9ec962054ab0", ++ "3cdbf096f176a11d399e68", ++ "5e81e2ee54fa1c8e9216bf", ++ "6ea50d7820cf1c46cfdea8", ++ "42fe3f1413aec51428fb64", ++ "449f89bc8e75ebc93c06c2", ++ "46dbb8e8c99f2d8cf603ab", ++ "3542a00727cde7902f64", ++ "8c1b60a22d754654b3b0e", ++ "4cc1b8f60c7b3b604dd7f3", ++ "65a59676f2a0f7f5358513", ++ "7ebd8ffb86035ffa249a5c", ++ "6937a623eafb54374944c3", ++ "771e23d6155cbd6574be92", ++ "42d3b2e606813eb48865e1", ++ "747f5812283a8ba1a43af4", ++ "1533a8f5ee81c2d4352c6", ++ "25b4f424465c145a893505", ++ "54449f7dccf77fd8f14fff", ++ "1f216750a4d1686b3b2227", ++ "3c0ef922648f93834d2bac", ++ "5b8558cbc60eeb5d4d1e0c", ++ "3fbae766d352bf62d71ec9", ++ "37ca6d3b30cb2687e44f7a", ++ "4fc1aa30a26bf05e1cf79e", ++ "5830e5e1c9294904118c10", ++ "ac1c0028dc3aa005da816", ++ "2d8207ca3331c2f27a3943", ++ "2fe38c447768175651bb27", ++ "538b76dc0991647c99d6ab", ++ "5ad56a9a03d1277384501c", ++ "2c11fd859f539479044b3d", ++ "6e1c49a1adf3346b270d76", ++ "627d01094a2553e7bdde46", ++ "4b0e392a6b94b0716bcb0f", ++ "73c9485e5e5379f878695", ++ "43da9e4b9fc98c3225df02", ++ "4b81add44caab6287f5254", ++ "73a1489a18b0815a03faf8", ++ "146e2b3f7404eaa2825f64", ++ "62cba5cd6ece1fcc005653", ++ "9a91d432ec896438ac971", ++ "6750d083991451ddf24ddc", ++ "23f47a79fc10179e2f1aad", ++ "456b75b7118ddbd9c05113", ++ "214ab6242649bf5f0673b5", ++ "46c6a4606b83331dd733e4", ++ "567c07ffdf5609acdc57cd", ++ "26639427b4cd468207f354", ++ "36b57535eb2f884ec435f1", ++ "2aeb5606838c910769daa9", ++ "5d5d0b6bedf48b96c5eb79", ++ "144036e909f39a00a79653", ++ "7677202d8f05f9287a6047", ++ "1a1cfff05adf1a427c023e", ++ "7286bedeaa0c2687819d8a", ++ "2bf095a2fbcdb3391aec69", ++ "2e6c1f41a9866f4d867e01", ++ "2ad8da8cd83b1521d7659a", ++ "159314ac561f7431a71dd2", ++ "443f4b4ed3b1f2c8fe8ce8", ++ "1bb928a5ce5b6a93e4a6be", ++ "ff765fa35889a47189d5c", ++ "7faf5fb28aa48ff83cc07", ++ "330bf157841f4554c8f5de", ++ "3de0a5abf20a4845d76439", ++ "5d53571a7cc3688e6944b0", ++ "7a6a150f8921047e15edcb", ++ "4dbcbf0e0833361017aadd", ++ "36f20d7e24da8778ce35f5", ++ "3248d851d401112b750bc", ++ "77024358b3e776b2c5e1af", ++ "599102d1f2500d61d762c9", ++ "52c455dad0b267d43552f0", ++ "59db917020bf7253782d5c", ++ "3251a62ebf3abdb7c9ed58", ++ "1c89d8520ef104ebd20ee", ++ "fa65751eb4d84785986bf", ++ "22f4901fc0a8b24cf62fe4", ++ "3baf4fa4e9f273acdf732c", ++ "29d711357943b0afaa5b59", ++ "26293d249066a3014c3338", ++ "4d3db82b9d6efaedc42576", ++ "561331256e1d21664a1287", ++ "796842dd6bfad2f98912a6", ++ "4a27b941aa4c6ad1e07548", ++ "47b94fbc156b869e9d16b9", ++ "39f2517276288f74c45e3a", ++ "11326e189db8b15b0744ff", ++ "7c793c0d415e26d57ec92", ++ "22c922d5b0fc736e5f1adc", ++ "5a9897a2da0299756dfdb3", ++ "37b012fbed4994b5319766", ++ "7ee167869f16d0f3096184", ++ "7b7ba8150a404335a3e978", ++ "2176005ea62a7fae1a0ec5", ++ "7f5271355a686a4df7e516", ++ "33294a38a5c8a431b3624c", ++ "68570d0c5fc94ab3c18486", ++ "3a928b86dc180342e1f053", ++ "474d5e705efa51e5e97d39", ++ "4948e72d6c06974bcf7212", ++ "12ea1cc2026e4f5211a159", ++ "15b86ea9fb5f9d46bb9d95", ++ "1c0d48f6283945e321fdac", ++ "c25f982adccb58e81ce02", ++ "173ee21e60a88ae566e166", ++ "64af53c3c0ad963e3055c1", ++ "2e0a934adfe422dd136191", ++ "5ba00e958e1473bae28031", ++ "230119c3b2a6b1bafca00", ++ "1fb4d17ac6ee317ce5a547", ++ "2449f6a2ba5fdac5a9c1d4", ++ "6b488f646fce9835d43f44", ++ "11978ed9a01677cec42ee0", ++ "3ac9b63dfc3067c1c4627d", ++ "7fa7e63240bd502dd4b06b", ++ "4bafb874450e24655961f3", ++ "4a5a912df871eba16ca2bf", ++ "6a1b97013fc782623a1d18", ++ "60f671cf9f662680d04313", ++ "6f7417b6bfc27461fd2524", ++ "3cd40ccabd157073f9e356", ++ "60188d16e528a5d2e06d3d", ++ "55509fd3a52bd88fe29e11", ++ "193c88995f60dbabf1ee79", ++ "36e5208ae458480078d5d", ++ "27869ae6bfa80052e928d4", ++ "14e76412c1e117fa60f762", ++ "1a91f5500bd170effa0820", ++ "2f27f9f5b37e53f26a3367", ++ "7c4ebd51c09994a5c2702b", ++ "7eede9c7d2fd05759ff0d5", ++ "1bf7de225f0abb4eae1da2", ++ "1f527bd93add787e619f2f", ++ "2f4da63191088795366c81", ++ "1e86f8d9f30e1c9ee2f741", ++ "5fdf7c6cf80f5f4d619b9c", ++ "1365575dcf06e2b1987b3f", ++ "3860f5646a470f19d720f1", ++ "b17adb15bd895ea825438", ++ "67cd089f73cfc8807dd840", ++ "7b97dd845f9509d060f296", ++ "3951fc47c9cf417968c09a", ++ "63bd657552fcd47a1fea3b", ++ "7b59158d38abcc0653e41", ++ "7adedaa3d8ff64ef5910ed", ++ "121daf29269045f5bdd20b", ++ "65c75439faa2303912b32e", ++ "3a603b28f5e57fbfd764b9", ++ "2df92a33b308b4efdcaee3", ++ "69defadcac1e44c7a1c0bd", ++ "17961b8be9d0332a213177", ++ "59a5901c521b74864c8fb2", ++ "697c3f9accda8d3543f182", ++ "3f0177714af6ab07d870c0", ++ "2334ccde40867fa1d0bc15", ++ "16fb077509115b4c0ee442", ++ "758f193f192584a42ebc31", ++ "483ca240f22946b37af3c", ++ "311601fec45703953f2b91", ++ "67da5d093fc207176dbdb2", ++ "1b6a00fcabec41d4b43ba2", ++ "ba07dcfdd701f16f45aca", ++ "2835e7f4b39073c5a451bb", ++ "269c017af27ad44e6b201e", ++ "3cf5810d8c38a097a7561f", ++ "573747456cbe53c844796c", ++ "7772e0b990ccdc614c11c3", ++ "404ae85658f9b08174632", ++ "5dd52a5a11350a9b7572fc", ++ "7ce0b194ba3e31249ab36d", ++ "762f2aec62b91b262cc99f", ++ "3915c8d33da94da27c1249", ++ "6e885e79f7b5fe77214da5", ++ "668c0767178119bd41ac3", ++ "6806f2889f5316f4c57e07", ++ "32f953543bd07093a29e5f", ++ "5685392e26e4e637394c54", ++ "96cf28ae783cd1e477aa5", ++ "710608c33a517ea5d5359e", ++ "435abcd28c0cfc9f321db0", ++ "514d622fcdfc26212b5d14", ++ "408e6268fcd75479c3bece", ++ "18e5cae7f3bd61293a8c2b", ++ "65a5c9fe061a38a8c6c2e0", ++ "6df80f50564e811e245eb5", ++ "1b388caec4f8538425d93c", ++ "1bab6e088abbb7a786ff3d", ++ "17fc45b2690c315a5249e8", ++ "4170c011864f5582d6a738", ++ "3b3a5f854ba249c04d075", ++ "38e1e6200860f4072a8a1d", ++ "c91beeecaf54c95dc1b37", ++ "f125d56d3c0c2aaf7ad05", ++ "341851bd5e48e20f0a412f", ++ "471eec9edf3f5af18be6bf", ++ "4b21ef5da2b744139c3cf1", ++ "3a051daeeae9770973713e", ++ "75a7fc26a6faacf109b345", ++ "5637e5d4438a119a23f043", ++ "22f18c95264f1fb742c348", ++ "1d595362f3a1b4c77729e7", ++ "69a784edece7c38bcf7297", ++ "4fbaae68fdb253d715d528", ++ "23693b4063cf0fa20dad42", ++ "51eb043d3564fa91215f1b", ++ "2bb1db818cfd733dcce0b0", ++ "a961f7b95836d3a578170", ++ "51c819b9ec191b60920096", ++ "ac6c9987de6c73f2259d9", ++ "524b77666e02692a642407", ++ "149d706db4fce00c71da76", ++ "238de3e1606bc0e1c33adb", ++ "37ba1e609c7b12a8e32733", ++ "3ae30b1b5931eb630bbf6c", ++ "1630a212afc84f038374d9", ++ "5ebb44d93cb77417b61c4f", ++ "5a7d2dd2aa2028d4da8f42", ++ "798019b397419c8d54fda1", ++ "74a156e77589342bbef3d5", ++ "506e6a05e8de5c9198ae69", ++ "48e4926c40cd6ab5e92ffc", ++ "7d2db742721c9ba686ff30", ++ "4b8968b5c5a93dbb4b2b55", ++ "2ef2be0f7e33ace73bab4", ++ "7651ee2e0f4d348cbe95bd", ++ "43ee4b35cb3cdc84d1d5db", ++ "449d4feccb40da2e122aa1", ++ "356211f56936e183312837", ++ "527456447c2748239033cf", ++ "46bdbd32d31b2a36e04e0a", ++ "6c1076c01e9e44fb047889", ++ "5ef5512b3384aa1243daa6", ++ "d452f805a2c35e686e107", ++ "67a9131aabd5255bdce732", ++ "5088a2317aa34dd5bb1b4d", ++ "64c275af1abda385c2af0b", ++ "402c7149b20bce787c7e83", ++ "60c8d2e958387c0d0627a8", ++ "516640d56302eb15061b25", ++ "c62790b24bc842a717e31", ++ "76e87d4d2740e137511b26", ++ "6cf76079225189eb2608ce", ++ "3c8b04f81e14e10396b582", ++ "4bfd93fb985a44ed0569f4", ++ "6ce98c831091728c0e73bb", ++ "4f74e7ee01738298062093", ++ "449ccc3923e92a0bd2e3ba", ++ "4feae15528510f186aa1fa", ++ "12a3196afc09a79694eb31", ++ "6cfdd09fe2bd66b85c2e00", ++ "587cce1cbd0dee8b98f262", ++ "3b0283be973d59ebf4242f", ++ "88b8371baafc87a9713f4", ++ "4e6cb8ec1b00e2f28b3a7e", ++ "235baa54adcc67af92d06d", ++ "733b81816da25936e81af1", ++ "7fe76cd2c5affa913c2b41", ++ "26b7df388a02a8279b0652", ++ "7b5272bdeb1b01fe56bc29", ++ "6863984d7793407587e8e2", ++ "1f1eea8231315133cde938", ++ "2f85e68dfb9aea66d7f07c", ++ "6259df76b87ab2eff6659f", ++ "502c6a2df8916b18106088", ++ "4cd904fd9401eac5ad7f1c", ++ "5eb4d93a33b2d2e2c2adad", ++ "55a41153a33cb4649703a5", ++ "cfc86f804a481df48868e", ++ "1ddeaa1e583e9146210f69", ++ "38110b962a169200cc9f0a", ++ "7ce4bd3337a7333159cb2c", ++ "1738ee1c8e104064e07249", ++ "e1ef803b3674bf39884ae", ++ "55d7bf2f5724b5dd0a04ae", ++ "7aa81a94a5a230cf59a0b9", ++ "2baeaedf76503008b9e428", ++ "15bb5d9b44eebb27a1e60e", ++ "dce90e419e8d3f96eb5b4", ++ "72a7ca4a8dc56f9c652281", ++ "5cd319aa7906a96d2f6c7e", ++ "557361125249092a7bf932", ++ "70a1107bc42bfb598164ea", ++ "df7ae04689867c9ad97d8", ++ "117480f169f81bb3e8609c", ++ "479fc9912c9c81152eb474", ++ "4f2cc1f6f7aba8c20a670c", ++ "17dd6e40297f1d32786291", ++ "783e0229f219bc18b705e4", ++ "8b462e0f7448b549fd688", ++ "4a0fb16cc4d1bdfbb239c", ++ "53c95b2787b88db0682132", ++ "536be2b3e3829710aec51b", ++ "3a89578d6ca992f91249be", ++ "779eb73caa637aa28db87c", ++ "52f5adde99e4501e4d1c61", ++ "31541f24753a28cc5b51d8", ++ "620084c5da2910137e2b10", ++ "76c132264ad2a774a55164", ++ "35a3ab4773c5054a30c44d", ++ "2f78c0f7e7a90558573941", ++ "5b39ddb704fa58142076d", ++ "1d6812727d8421d0e03a6f", ++ "307727bd97c5db086074b3", ++ "1abc0d15793c655cee4a9c", ++ "68ee183b2208228da8bab7", ++ "116da33e19c8b80384fe28", ++ "3d73fd3c3744e9ec5d2d04", ++ "64ed03e382c11a32e34cf4", ++ "479e7025ae3fdc2bbcbe22", ++ "a134915353ce113eb72dd", ++ "49cb6ac7a2bfdc54300006", ++ "2d5e8f78718c2d4660cc69", ++ "3f5027ce278d444a4dd243", ++ "15d4218f4bbf0c95cd9649", ++ "13221a23af3045ec5cea35", ++ "1efd2b46d4a8724e929fd9", ++ "628d18e095a8dbcb9f43bf", ++ "30eff32d49c10f325b8e9c", ++ "29bbe5fdf14e69065cb80c", ++ "2df28a1b78b46f16aaf53b", ++ "352a4a136ebd7ef294f370", ++ "1c960c994194a1366a2222", ++ "351c5a0b997e45ec21b614", ++ "4c1f6b587fd26654ea69e1", ++ "2735b2e6f5f08a9e9418bb", ++ "3505fcb3eb2690f88b3be3", ++ "4d8859f357a36792b7211f", ++ "1e2093f76475f58a2dfd79", ++ "456138a50c3717947be48e", ++ "35714b90920ce6fe1f850", ++ "5d7c2a1d1267b7a252da1", ++ "754ffe6bc2e7525e892fe", ++ "290ac68bec8aa8955b7e97", ++ "a058b3353ac6290d9f864", ++ "ef75fc5d77fc146e975f7", ++ "48a999a2dc1a23a934a6fc", ++ "7256923d608836710a659c", ++ "2b13e041339df4d5a521ce", ++ "51a9b0945a0908b1d40d24", ++ "779559a53e6b62275896e9", ++ "1fa330f6dd5f3ca09176ce", ++ "3cb748f77d638122329dca", ++ "7e62c15038abb8244531b4", ++ "9bea90a26f9e93743a998", ++ "7ae1d007cf030664c6b815", ++ "52cfcbd15dfc6c476cfc76", ++ "18ba9d869c489f11ce52e7", ++ "93cbb2483673e4e0dda30", ++ "2478db790ed59756cef964", ++ "7d8b341c82b019a8d56c92", ++ "584b7d6f0b43ddd0b397e4", ++ "6081e77fedf3898fd66607", ++ "540f5a33d5aeafadcad19d", ++ "52c4d1c2ad153a3f70bc0a", ++ "39489c7fdb445490d498cd", ++ "e0800809dbab6d41345b4", ++ "1536906705870049755028", ++ "639c2fcec8b9dfcc987387", ++ "214f18ae0c9aa7a1b8c02e", ++ "5b8e9d8b290e89e5d9afc3", ++ "4499c1c16fec3546d5903c", ++ "5ce5e0595ad07c8855357b", ++ "39bf9c3f1f0a1a15264530", ++ "30a77107da1d91a699e9f5", ++ "352389083277fbbbe66ac3", ++ "5d711409f3faa9ea87abfc", ++ "42cd59499a0ef57d6b0009", ++ "731a7b89f357bfb855a5b2", ++ "767dc9d34c09b03db4a0e9", ++ "5344962f90f45cfaeb1bce", ++ "504d29ae2e5a021d2bb278", ++ "6e97dd298eaee757a3cec1", ++ "2d1b2f087facf1fbfc7e69", ++ "327b2b8d0b75e0d83a5b04", ++ "7dc98aa964908b313939a9", ++ "d8c34dffd92c1a20d6a9a", ++ "21a363ab0e08a4336f2e44", ++ "48eaf0293f956717b8f048", ++ "6351b2a5f477112f552683", ++ "2193bc73ac4b40415c95b5", ++ "13f13f9f2c877cb73ba5c", ++ "7c6b359299af5c59043711", ++ "7895b432001edf846b7b3e", ++ "3ecf9d05cd62341c4f7784", ++ "6c8879d694e1a0b99f8e42", ++ "6400e87749e3bcbd750d89", ++ "1851e925707895d37a37f2", ++ "30f4f5617cc73435ce74c2", ++ "18ec20d19a478746123b", ++ "39242760b51f2f93fd4721", ++ "452d3dfff11e24bf680356", ++ "5cafa83a10f929b5076c60", ++ "7fd4ee663460087b793a80", ++ "7e958697030784ae5ddf86", ++ "a6c54d0ec55adb4911efd", ++ "2964973c288dced7dae8fc", ++ "2b0fed7a534d25697e5c7b", ++ "3afeb7cc8f8e5bb8770da", ++ "6a81a8d913b71671629ad5", ++ "75f4eb6de0d35eeaa16cf8", ++ "7abf68b2e4cc9e3a3b2c5f", ++ "4f6d8c8b0b9b376d42c4b1", ++ "23f219093e9b0bb3b5217d", ++ "5a0c2602dcbbbf468b67e0", ++ "1a63315aa52cb254b65ce0", ++ "4f72850630f6f8c1a68862", ++ "3722a55f27f2c02b34eddc", ++ "672d7083ec424e5d883cec", ++ "4839c6454f97ececa9969f", ++ "e941ecc714605cea72177", ++ "7cf9338ca9bcab73862b81", ++ "6a23876a8c802d81d83d29", ++ "7006ef130d31e12bc44c5a", ++ "591bac661062f64b8e3f2c", ++ "25cab751e23d8e69bb5048", ++ "61f4a55b140e767495cd59", ++ "1a4e5bc143bf00e8928403", ++ "4a54d9b3589d5340a01e23", ++ "18019c176b4c9453028db8", ++ "76fed7d89907843db9af52", ++ "407333b3b6a3bed3ef8920", ++ "536a736ad3a37793dd9f54", ++ "5e56a7d976f1a3334f57c3", ++ "66ffe80af410522139e92f", ++ "1b0c27c7452322264822f3", ++ "58320debe89492ceee77e", ++ "4fbc987e428ed0ce9cb76c", ++ "70a2d453b688803716fdbf", ++ "1921f3262afb2f3766f357", ++ "6e007172a16a9c673e635d", ++ "527c4b155e3708972293d1", ++ "2797689917c95a9d4073ae", ++ "69bb33c18017fddf18d091", ++ "165ff53589519199fc1846", ++ "171e59c89024b148534f1b", ++ "23c82ae839bf5380a55acf", ++ "455c9131bfa1c33274be37", ++ "4bacbc68650c41520d312c", ++ "1c35e13f8ffb7c470fa61c", ++ "6b4728ee168cd23e2fe47c", ++ "22e321253c3e0fb875c4df", ++ "6077a88144957827c07205", ++ "4309c1c59a581af63d922d", ++ "1b1ca5d6c688c4cf99448d", ++ "31a504d1dcc251075e4436", ++ "223160cdd1bfa322ca3e6c", ++ "3601174a7dc823bf4dc3a6", ++ "6da3828f2d4926651f7a27", ++ "7de4927696bdd6d3b718", ++ "7bb4f9d707b4ee3a20e779", ++ "343dad4f059acb87d3b0e2", ++ "4e501beb4617be0f02deb4", ++ "3943e926fbe3d426004ea9", ++ "4b35e35e82bffb49d0d830", ++ "6520599b30ba3568ad0f09", ++ "2a48d89ce122dfa7deba2f", ++ "19b666810d736e639b51f2", ++ "1ccd174e9aa4e58e7414bc", ++ "475e84f70334cc0bc8292", ++ "393fe0be8f011593a7e1ef", ++ "17276a59aa9630c1141c17", ++ "7d0578a8908ba294259bd", ++ "4a9e2e5d8ad0e2e82aa7de", ++ "63e0dbdfb13b4fbb46f00c", ++ "310e395e429c4494a5f850", ++ "7cc0116bd0bc164835ee72", ++ "634478b621f7f0a455c48c", ++ "397f144a181805e1a097c9", ++ "53016aa1427381b9f28ea5", ++ "76c2f0ba37187112ee4d4d", ++ "2bee268df09cc40864a917", ++ "7851b3168b92e5daed021f", ++ "149e6a0b6c6543ae895e07", ++ "1dd1b432dc809fe4c879b3", ++ "2ad2546b270547fc24541b", ++ "2015aa6fc7e48fa3bc5ab5", ++ "38596ed050f14596adc07f", ++ "1d2b9ca2f44294070d4e86", ++ "3778fd3a46ffde4755b6ce", ++ "74bb588b5553c2b2d4ac78", ++ "3d1155c4a53835d991a0f", ++ "35865b2ca16d3453781f41", ++ "6ba1300374acd487b23577", ++ "3f68fa1a9ab7772758d0ba", ++ "30a3461d63ca9807464dd6", ++ "552aca5af025ea1e84aadb", ++ "32aafc640e8c99bda8faa7", ++ "2fb170a11f1aecdf586d25", ++ "751e9eb348bc8239d6e118", ++ "7fc2bcc524b4326eb8303d", ++ "1cc2526113f2bae9b540c1", ++ "6a437e22c95fc6c6a4449d", ++ "df261ad3b5157a525bb81", ++ "690aa96130f8c533d77ce4", ++ "2f58f2df794a35875efc99", ++ "19772e34181f57b670bf9", ++ "60617400353c1eb8e8832b", ++ "7136b3dd116ed121aab68", ++ "4c95bed884bd87ec1d5e70", ++ "68fa3ecc3845db5d523ad9", ++ "4818e9ef0ea7625cfc3d0", ++ "27ec8c6636679988dd1267", ++ "57d88b5e0b434eb1a0dc08", ++ "47a1f466100bf70dd5689", ++ "55afbc51e7c2cc748942ac", ++ "75066462fdbbc7301e209b", ++ "72b5d8f8e65cb7509a93d8", ++ "38d9d05f9463a537f470b2", ++ "2f39a2788d5c2a24e16acc", ++ "5f4e7c70ff55ff2f888f05", ++ "735cfad9acf49090fb7037", ++ "6a716dae106b9aeff2133e", ++ "1c90fea5f39d8ac4dfc2a3", ++ "3a8c5a9525f5d62cea294d", ++ "498104aa12355244a9b0d6", ++ "414e761d40341e7f97c304", ++ "16d5205447831696c5d6a0", ++ "3cb5a124ce563c3967dbc3", ++ "899b1ac6f72ffff8aedfc", ++ "34eea7a66e8ff3dcc8988e", ++ "5f80095f2580ec4cf13b51", ++ "4d7566cd294f75be6620f3", ++ "506d84c9f4d4bc400fdd25", ++ "5a8a9b5c659b71e837ea18", ++ "c16d15fea9d61c8df5121", ++ "3a7a488015e75feec809f8", ++ "6fe27c77d57e2feb8cbcbf", ++ "452231c3bcde7b7b5b0af8", ++ "760f3656c1130b21d369d9", ++ "39a0c4e1da321f1bc126f4", ++ "3315173915ca23d8c1b814", ++ "1cec8c96472b84936bbc22", ++ "3c70a3f0e9c5b206031a33", ++ "7cec29d14a0eefb222bde7", ++ "760df490123f6613b0a970", ++ "5bf795c6d548a19b6ac340", ++ "5569560418e73ff9db709" }; + + #endif /* __PARAMS_H__ */ +- +diff --git a/third_party/prio/prio/poly.h b/third_party/prio/prio/poly.h +--- a/third_party/prio/prio/poly.h ++++ b/third_party/prio/prio/poly.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef _FFT__H +@@ -21,39 +21,36 @@ + * of two and must be no longer than the number of precomputed + * roots in the PrioConfig object passed in. + */ +-SECStatus poly_fft(MPArray points_out, const_MPArray points_in, +- const_PrioConfig cfg, bool invert); ++SECStatus poly_fft(MPArray points_out, const_MPArray points_in, ++ const_PrioConfig cfg, bool invert); + +-/* ++/* + * Get an array +- * (r^0, r^1, r^2, ... ) ++ * (r^0, r^1, r^2, ... ) + * where r is an n-th root of unity, for n a power of two + * less than cfg->n_roots. + * +- * Do NOT mp_clear() the mp_ints stored in roots_out. ++ * Do NOT mp_clear() the mp_ints stored in roots_out. + * These are owned by the PrioConfig object. + */ +-SECStatus poly_fft_get_roots (mp_int *roots_out, int n_points, +- const_PrioConfig cfg, bool invert); +- +- ++SECStatus poly_fft_get_roots(mp_int* roots_out, int n_points, ++ const_PrioConfig cfg, bool invert); + + /* + * Evaluate the polynomial specified by the coefficients + * at the point `eval_at` and return the result as `value`. + */ +-SECStatus poly_eval (mp_int *value, const_MPArray coeffs, +- const mp_int *eval_at, const_PrioConfig cfg); +- ++SECStatus poly_eval(mp_int* value, const_MPArray coeffs, const mp_int* eval_at, ++ const_PrioConfig cfg); + + /* +- * Interpolate the polynomial through the points ++ * Interpolate the polynomial through the points + * (x_1, y_1), ..., (x_N, y_N), + * where x_i is an N-th root of unity and the y_i values are +- * specified by `poly_points`. Evaluate the resulting polynomial ++ * specified by `poly_points`. Evaluate the resulting polynomial + * at the point `eval_at`. Return the result as `value`. + */ +-SECStatus poly_interp_evaluate (mp_int *value, const_MPArray poly_points, +- const mp_int *eval_at, const_PrioConfig cfg); ++SECStatus poly_interp_evaluate(mp_int* value, const_MPArray poly_points, ++ const mp_int* eval_at, const_PrioConfig cfg); + + #endif +diff --git a/third_party/prio/prio/poly.c b/third_party/prio/prio/poly.c +--- a/third_party/prio/prio/poly.c ++++ b/third_party/prio/prio/poly.c +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #include +@@ -16,109 +16,110 @@ + * A nice exposition of the recursive FFT/DFT algorithm we implement + * is in the book: + * +- * "Modern Computer Algebra" +- * by Von zur Gathen and Gerhard. ++ * "Modern Computer Algebra" ++ * by Von zur Gathen and Gerhard. + * Cambridge University Press, 2013. + * + * They present this algorithm as Algorithm 8.14. + */ + static SECStatus +-fft_recurse (mp_int *out, const mp_int *mod, int n, +- const mp_int *roots, const mp_int *ys, +- mp_int *tmp, mp_int *ySub, mp_int *rootsSub) ++fft_recurse(mp_int* out, const mp_int* mod, int n, const mp_int* roots, ++ const mp_int* ys, mp_int* tmp, mp_int* ySub, mp_int* rootsSub) + { + if (n == 1) { +- MP_CHECK (mp_copy (&ys[0], &out[0])); ++ MP_CHECK(mp_copy(&ys[0], &out[0])); + return SECSuccess; + } + +- // Recurse on the first half +- for (int i=0; i cfg->n_roots) ++ if (n_points > cfg->n_roots) + return SECFailure; +- const mp_int *roots_in = invert ? cfg->rootsInv->data : cfg->roots->data; ++ const mp_int* roots_in = invert ? cfg->rootsInv->data : cfg->roots->data; + const int step_size = cfg->n_roots / n_points; + +- for (int i=0; i < n_points; i++) { ++ for (int i = 0; i < n_points; i++) { + roots_out[i] = roots_in[i * step_size]; + } + +@@ -126,63 +127,62 @@ + } + + SECStatus +-poly_fft (MPArray points_out, const_MPArray points_in, +- const_PrioConfig cfg, bool invert) ++poly_fft(MPArray points_out, const_MPArray points_in, const_PrioConfig cfg, ++ bool invert) + { + SECStatus rv = SECSuccess; + const int n_points = points_in->len; + if (points_out->len != points_in->len) + return SECFailure; +- if (n_points > cfg->n_roots) ++ if (n_points > cfg->n_roots) + return SECFailure; +- if (cfg->n_roots % n_points != 0) ++ if (cfg->n_roots % n_points != 0) + return SECFailure; + + mp_int scaled_roots[n_points]; +- P_CHECK (poly_fft_get_roots (scaled_roots, n_points, cfg, invert)); ++ P_CHECK(poly_fft_get_roots(scaled_roots, n_points, cfg, invert)); + +- MP_CHECK (fft_interpolate_raw (points_out->data, points_in->data, n_points, +- scaled_roots, &cfg->modulus, invert)); ++ MP_CHECK(fft_interpolate_raw(points_out->data, points_in->data, n_points, ++ scaled_roots, &cfg->modulus, invert)); + + return SECSuccess; + } + +- +-SECStatus +-poly_eval (mp_int *value, const_MPArray coeffs, const mp_int *eval_at, +- const_PrioConfig cfg) +-{ ++SECStatus ++poly_eval(mp_int* value, const_MPArray coeffs, const mp_int* eval_at, ++ const_PrioConfig cfg) ++{ + SECStatus rv = SECSuccess; + const int n = coeffs->len; + + // Use Horner's method to evaluate the polynomial at the point + // `eval_at` +- mp_copy (&coeffs->data[n-1], value); +- for (int i=n-2; i >= 0; i--) { +- MP_CHECK (mp_mulmod (value, eval_at, &cfg->modulus, value)); +- MP_CHECK (mp_addmod (value, &coeffs->data[i], &cfg->modulus, value)); ++ mp_copy(&coeffs->data[n - 1], value); ++ for (int i = n - 2; i >= 0; i--) { ++ MP_CHECK(mp_mulmod(value, eval_at, &cfg->modulus, value)); ++ MP_CHECK(mp_addmod(value, &coeffs->data[i], &cfg->modulus, value)); + } + + return rv; + } + + SECStatus +-poly_interp_evaluate (mp_int *value, const_MPArray poly_points, +- const mp_int *eval_at, const_PrioConfig cfg) ++poly_interp_evaluate(mp_int* value, const_MPArray poly_points, ++ const mp_int* eval_at, const_PrioConfig cfg) + { + SECStatus rv; + MPArray coeffs = NULL; + const int N = poly_points->len; + mp_int roots[N]; +- +- P_CHECKA (coeffs = MPArray_new (N)); +- P_CHECKC (poly_fft_get_roots (roots, N, cfg, false)); ++ ++ P_CHECKA(coeffs = MPArray_new(N)); ++ P_CHECKC(poly_fft_get_roots(roots, N, cfg, false)); + + // Interpolate polynomial through roots of unity +- P_CHECKC (poly_fft (coeffs, poly_points, cfg, true)) +- P_CHECKC (poly_eval (value, coeffs, eval_at, cfg)); ++ P_CHECKC(poly_fft(coeffs, poly_points, cfg, true)) ++ P_CHECKC(poly_eval(value, coeffs, eval_at, cfg)); + + cleanup: +- MPArray_clear (coeffs); ++ MPArray_clear(coeffs); + return rv; + } +diff --git a/third_party/prio/prio/prg.h b/third_party/prio/prio/prg.h +--- a/third_party/prio/prio/prg.h ++++ b/third_party/prio/prio/prg.h +@@ -1,62 +1,60 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __PRG_H__ + #define __PRG_H__ + ++#include + #include +-#include + #include + + #include "config.h" + +-typedef struct prg *PRG; +-typedef const struct prg *const_PRG; ++typedef struct prg* PRG; ++typedef const struct prg* const_PRG; + +-/* ++/* + * Initialize or destroy a pseudo-random generator. + */ +-PRG PRG_new (const PrioPRGSeed key); +-void PRG_clear (PRG prg); ++PRG PRG_new(const PrioPRGSeed key); ++void PRG_clear(PRG prg); + +-/* ++/* + * Produce the next bytes of output from the PRG. + */ +-SECStatus PRG_get_bytes (PRG prg, unsigned char *bytes, size_t len); ++SECStatus PRG_get_bytes(PRG prg, unsigned char* bytes, size_t len); + + /* + * Use the PRG output to sample a big integer x in the range + * 0 <= x < max. + */ +-SECStatus PRG_get_int (PRG prg, mp_int *out, const mp_int *max); ++SECStatus PRG_get_int(PRG prg, mp_int* out, const mp_int* max); + + /* + * Use secret sharing to split the int src into two shares. + * Use PRG to generate the value `shareB`. + * The mp_ints must be initialized. + */ +-SECStatus PRG_share_int (PRG prg, mp_int *shareA, const mp_int *src, +- const_PrioConfig cfg); ++SECStatus PRG_share_int(PRG prg, mp_int* shareA, const mp_int* src, ++ const_PrioConfig cfg); + +-/* ++/* + * Set each item in the array to a pseudorandom value in the range + * [0, mod), where the values are generated using the PRG. + */ +-SECStatus PRG_get_array (PRG prg, MPArray arr, const mp_int *mod); ++SECStatus PRG_get_array(PRG prg, MPArray arr, const mp_int* mod); + +-/* ++/* + * Secret shares the array in `src` into `arrA` using randomness + * provided by `prgB`. The arrays `src` and `arrA` must be the same + * length. + */ +-SECStatus PRG_share_array (PRG prgB, MPArray arrA, +- const_MPArray src, const_PrioConfig cfg); +- ++SECStatus PRG_share_array(PRG prgB, MPArray arrA, const_MPArray src, ++ const_PrioConfig cfg); + + #endif /* __PRG_H__ */ +- +diff --git a/third_party/prio/prio/prg.c b/third_party/prio/prio/prg.c +--- a/third_party/prio/prio/prg.c ++++ b/third_party/prio/prio/prg.c +@@ -1,14 +1,14 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + ++#include + #include +-#include +-#include ++#include + #include + + #include "prg.h" +@@ -16,23 +16,25 @@ + #include "share.h" + #include "util.h" + +-struct prg { +- PK11SlotInfo *slot; +- PK11SymKey *key; +- PK11Context *ctx; ++struct prg ++{ ++ PK11SlotInfo* slot; ++ PK11SymKey* key; ++ PK11Context* ctx; + }; + +-SECStatus +-PrioPRGSeed_randomize (PrioPRGSeed *key) ++SECStatus ++PrioPRGSeed_randomize(PrioPRGSeed* key) + { +- return rand_bytes ((unsigned char *)key, PRG_SEED_LENGTH); ++ return rand_bytes((unsigned char*)key, PRG_SEED_LENGTH); + } + +-PRG +-PRG_new (const PrioPRGSeed key_in) ++PRG ++PRG_new(const PrioPRGSeed key_in) + { +- PRG prg = malloc (sizeof (struct prg)); +- if (!prg) return NULL; ++ PRG prg = malloc(sizeof(struct prg)); ++ if (!prg) ++ return NULL; + prg->slot = NULL; + prg->key = NULL; + prg->ctx = NULL; +@@ -40,106 +42,104 @@ + SECStatus rv = SECSuccess; + const CK_MECHANISM_TYPE cipher = CKM_AES_CTR; + +- P_CHECKA (prg->slot = PK11_GetInternalSlot ()); ++ P_CHECKA(prg->slot = PK11_GetInternalSlot()); + + // Create a mutable copy of the key. + PrioPRGSeed key_mut; +- memcpy (key_mut, key_in, PRG_SEED_LENGTH); ++ memcpy(key_mut, key_in, PRG_SEED_LENGTH); + +- SECItem keyItem = {siBuffer, key_mut, PRG_SEED_LENGTH}; ++ SECItem keyItem = { siBuffer, key_mut, PRG_SEED_LENGTH }; + + // The IV can be all zeros since we only encrypt once with + // each AES key. +- CK_AES_CTR_PARAMS param = {128, {}}; +- SECItem paramItem = {siBuffer, (void *)¶m, sizeof(CK_AES_CTR_PARAMS)}; ++ CK_AES_CTR_PARAMS param = { 128, {} }; ++ SECItem paramItem = { siBuffer, (void*)¶m, sizeof(CK_AES_CTR_PARAMS) }; + +- P_CHECKA (prg->key = PK11_ImportSymKey (prg->slot, cipher, PK11_OriginUnwrap, +- CKA_ENCRYPT, &keyItem, NULL)); ++ P_CHECKA(prg->key = PK11_ImportSymKey(prg->slot, cipher, PK11_OriginUnwrap, ++ CKA_ENCRYPT, &keyItem, NULL)); + +- P_CHECKA (prg->ctx = PK11_CreateContextBySymKey(cipher, CKA_ENCRYPT, +- prg->key, ¶mItem)); ++ P_CHECKA(prg->ctx = PK11_CreateContextBySymKey(cipher, CKA_ENCRYPT, prg->key, ++ ¶mItem)); + + cleanup: + if (rv != SECSuccess) { +- PRG_clear (prg); ++ PRG_clear(prg); + prg = NULL; + } + + return prg; + } + +- +-void +-PRG_clear (PRG prg) ++void ++PRG_clear(PRG prg) + { +- if (!prg) return; ++ if (!prg) ++ return; + + if (prg->key) +- PK11_FreeSymKey (prg->key); ++ PK11_FreeSymKey(prg->key); + if (prg->slot) +- PK11_FreeSlot (prg->slot); ++ PK11_FreeSlot(prg->slot); + if (prg->ctx) +- PK11_DestroyContext (prg->ctx, PR_TRUE); ++ PK11_DestroyContext(prg->ctx, PR_TRUE); + +- free (prg); ++ free(prg); + } + +-static SECStatus +-PRG_get_bytes_internal (void *prg_vp, unsigned char *bytes, size_t len) ++static SECStatus ++PRG_get_bytes_internal(void* prg_vp, unsigned char* bytes, size_t len) + { + PRG prg = (PRG)prg_vp; + + unsigned char in[len]; +- memset (in, 0, len); ++ memset(in, 0, len); + + int outlen; +- SECStatus rv = PK11_CipherOp (prg->ctx, bytes, &outlen, len, in, len); +- return (rv != SECSuccess || (size_t)outlen != len) ? SECFailure: SECSuccess; +-} +- +-SECStatus +-PRG_get_bytes (PRG prg, unsigned char *bytes, size_t len) +-{ +- return PRG_get_bytes_internal ((void *)prg, bytes, len); +-} +- +-SECStatus +-PRG_get_int (PRG prg, mp_int *out, const mp_int *max) +-{ +- return rand_int_rng (out, max, &PRG_get_bytes_internal, (void *)prg); ++ SECStatus rv = PK11_CipherOp(prg->ctx, bytes, &outlen, len, in, len); ++ return (rv != SECSuccess || (size_t)outlen != len) ? SECFailure : SECSuccess; + } + + SECStatus +-PRG_get_array (PRG prg, MPArray dst, const mp_int *mod) ++PRG_get_bytes(PRG prg, unsigned char* bytes, size_t len) ++{ ++ return PRG_get_bytes_internal((void*)prg, bytes, len); ++} ++ ++SECStatus ++PRG_get_int(PRG prg, mp_int* out, const mp_int* max) ++{ ++ return rand_int_rng(out, max, &PRG_get_bytes_internal, (void*)prg); ++} ++ ++SECStatus ++PRG_get_array(PRG prg, MPArray dst, const mp_int* mod) + { + SECStatus rv; +- for (int i=0; ilen; i++) { +- P_CHECK (PRG_get_int (prg, &dst->data[i], mod)); ++ for (int i = 0; i < dst->len; i++) { ++ P_CHECK(PRG_get_int(prg, &dst->data[i], mod)); + } + + return SECSuccess; + } + + SECStatus +-PRG_share_int (PRG prgB, mp_int *shareA, const mp_int *src, const_PrioConfig cfg) ++PRG_share_int(PRG prgB, mp_int* shareA, const mp_int* src, const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; + mp_int tmp; +- MP_DIGITS (&tmp) = NULL; ++ MP_DIGITS(&tmp) = NULL; + +- MP_CHECKC (mp_init (&tmp)); +- P_CHECKC (PRG_get_int (prgB, &tmp, &cfg->modulus)); +- MP_CHECKC (mp_submod (src, &tmp, &cfg->modulus, shareA)); ++ MP_CHECKC(mp_init(&tmp)); ++ P_CHECKC(PRG_get_int(prgB, &tmp, &cfg->modulus)); ++ MP_CHECKC(mp_submod(src, &tmp, &cfg->modulus, shareA)); + + cleanup: +- mp_clear (&tmp); ++ mp_clear(&tmp); + return rv; + } + +- +-SECStatus +-PRG_share_array (PRG prgB, MPArray arrA, +- const_MPArray src, const_PrioConfig cfg) ++SECStatus ++PRG_share_array(PRG prgB, MPArray arrA, const_MPArray src, const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; + if (arrA->len != src->len) +@@ -147,10 +147,9 @@ + + const int len = src->len; + +- for (int i=0; i < len; i++) { +- P_CHECK(PRG_share_int (prgB, &arrA->data[i], &src->data[i], cfg)); ++ for (int i = 0; i < len; i++) { ++ P_CHECK(PRG_share_int(prgB, &arrA->data[i], &src->data[i], cfg)); + } + + return rv; +- + } +diff --git a/third_party/prio/prio/rand.h b/third_party/prio/prio/rand.h +--- a/third_party/prio/prio/rand.h ++++ b/third_party/prio/prio/rand.h +@@ -1,43 +1,44 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __RAND_H__ + #define __RAND_H__ + + #include +-#include ++#include + #include + + /* + * Typedef for function pointer. A function pointer of type RandBytesFunc + * points to a function that fills the buffer `out` of with `len` random bytes. + */ +-typedef SECStatus (*RandBytesFunc) (void *user_data, unsigned char *out, size_t len); ++typedef SECStatus (*RandBytesFunc)(void* user_data, unsigned char* out, ++ size_t len); + +-/* ++/* + * Initialize or cleanup the global random number generator + * state that NSS uses. + */ +-SECStatus rand_init (void); +-void rand_clear (void); ++SECStatus rand_init(void); ++void rand_clear(void); + +-/* ++/* + * Generate the specified number of random bytes using the + * NSS random number generator. +- */ +-SECStatus rand_bytes (unsigned char *out, size_t n_bytes); ++ */ ++SECStatus rand_bytes(unsigned char* out, size_t n_bytes); + + /* + * Generate a random number x such that + * 0 <= x < max + * using the NSS random number generator. + */ +-SECStatus rand_int (mp_int *out, const mp_int *max); ++SECStatus rand_int(mp_int* out, const mp_int* max); + + /* + * Generate a random number x such that +@@ -47,8 +48,7 @@ + * The pointer user_data is passed to RandBytesFung `rng` as a first + * argument. + */ +-SECStatus rand_int_rng (mp_int *out, const mp_int *max, +- RandBytesFunc rng, void *user_data); ++SECStatus rand_int_rng(mp_int* out, const mp_int* max, RandBytesFunc rng, ++ void* user_data); + + #endif /* __RAND_H__ */ +- +diff --git a/third_party/prio/prio/rand.c b/third_party/prio/prio/rand.c +--- a/third_party/prio/prio/rand.c ++++ b/third_party/prio/prio/rand.c +@@ -1,16 +1,16 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #include + #include +-#include +-#include +-#include ++#include ++#include ++#include + + #include "debug.h" + #include "rand.h" +@@ -18,44 +18,41 @@ + + #define CHUNK_SIZE 8192 + +-static NSSInitContext *prioGlobalContext = NULL; ++static NSSInitContext* prioGlobalContext = NULL; + + SECStatus +-rand_init (void) ++rand_init(void) + { +- if (prioGlobalContext) ++ if (prioGlobalContext) + return SECSuccess; + +- prioGlobalContext = NSS_InitContext ("", "", "", "", NULL, +- NSS_INIT_READONLY | +- NSS_INIT_NOCERTDB | +- NSS_INIT_NOMODDB | +- NSS_INIT_FORCEOPEN | +- NSS_INIT_NOROOTINIT); ++ prioGlobalContext = ++ NSS_InitContext("", "", "", "", NULL, ++ NSS_INIT_READONLY | NSS_INIT_NOCERTDB | NSS_INIT_NOMODDB | ++ NSS_INIT_FORCEOPEN | NSS_INIT_NOROOTINIT); + + return (prioGlobalContext != NULL) ? SECSuccess : SECFailure; + } + +-static SECStatus +-rand_bytes_internal (void *user_data, unsigned char *out, size_t n_bytes) ++static SECStatus ++rand_bytes_internal(void* user_data, unsigned char* out, size_t n_bytes) + { + // No pointer should ever be passed in. + if (user_data != NULL) + return SECFailure; +- if (!NSS_IsInitialized ()) { +- PRIO_DEBUG ("NSS not initialized. Call rand_init() first."); ++ if (!NSS_IsInitialized()) { ++ PRIO_DEBUG("NSS not initialized. Call rand_init() first."); + return SECFailure; + } + + SECStatus rv = SECFailure; + + int to_go = n_bytes; +- unsigned char *cp = out; ++ unsigned char* cp = out; + while (to_go) { +- int to_gen = MIN (CHUNK_SIZE, to_go); +- if ((rv = PK11_GenerateRandom (cp, to_gen)) != SECSuccess) +- { +- PRIO_DEBUG ("Error calling PK11_GenerateRandom"); ++ int to_gen = MIN(CHUNK_SIZE, to_go); ++ if ((rv = PK11_GenerateRandom(cp, to_gen)) != SECSuccess) { ++ PRIO_DEBUG("Error calling PK11_GenerateRandom"); + return SECFailure; + } + +@@ -66,67 +63,67 @@ + return rv; + } + +-SECStatus +-rand_bytes (unsigned char *out, size_t n_bytes) ++SECStatus ++rand_bytes(unsigned char* out, size_t n_bytes) + { +- return rand_bytes_internal (NULL, out, n_bytes); ++ return rand_bytes_internal(NULL, out, n_bytes); + } + + SECStatus +-rand_int (mp_int *out, const mp_int *max) ++rand_int(mp_int* out, const mp_int* max) + { +- return rand_int_rng (out, max, &rand_bytes_internal, NULL); ++ return rand_int_rng(out, max, &rand_bytes_internal, NULL); + } + + SECStatus +-rand_int_rng (mp_int *out, const mp_int *max, +- RandBytesFunc rng_func, void *user_data) ++rand_int_rng(mp_int* out, const mp_int* max, RandBytesFunc rng_func, ++ void* user_data) + { + SECStatus rv = SECSuccess; + + // Ensure max value is > 0 +- if (mp_cmp_z (max) == 0) ++ if (mp_cmp_z(max) == 0) + return SECFailure; + + // Compute max-1, which tells us the largest + // value we will ever need to generate. +- MP_CHECK (mp_sub_d (max, 1, out)); ++ MP_CHECK(mp_sub_d(max, 1, out)); + +- const int nbytes = mp_unsigned_octet_size (out); ++ const int nbytes = mp_unsigned_octet_size(out); + +- // Figure out how many MSBs we need to get in the +- // most-significant byte. ++ // Figure out how many MSBs we need to get in the ++ // most-significant byte. + unsigned char max_bytes[nbytes]; +- MP_CHECK (mp_to_fixlen_octets (out, max_bytes, nbytes)); +- const unsigned char mask = msb_mask (max_bytes[0]); ++ MP_CHECK(mp_to_fixlen_octets(out, max_bytes, nbytes)); ++ const unsigned char mask = msb_mask(max_bytes[0]); + + // Buffer to store the pseudo-random bytes + unsigned char buf[nbytes]; + + do { + // Use rejection sampling to find a value strictly less than max. +- P_CHECK (rng_func (user_data, buf, nbytes)); ++ P_CHECK(rng_func(user_data, buf, nbytes)); + + // Mask off high-order bits that we will never need. +- P_CHECK (rng_func (user_data, &buf[0], 1)); +- if (mask) buf[0] &= mask; ++ P_CHECK(rng_func(user_data, &buf[0], 1)); ++ if (mask) ++ buf[0] &= mask; + +- MP_CHECK (mp_read_unsigned_octets (out, buf, nbytes)); +- } while (mp_cmp (out, max) != -1); ++ MP_CHECK(mp_read_unsigned_octets(out, buf, nbytes)); ++ } while (mp_cmp(out, max) != -1); + + return 0; + } + + void +-rand_clear (void) ++rand_clear(void) + { + if (prioGlobalContext) { +- NSS_ShutdownContext (prioGlobalContext); ++ NSS_ShutdownContext(prioGlobalContext); + #ifdef DO_PR_CLEANUP +- PR_Cleanup (); +-#endif ++ PR_Cleanup(); ++#endif + } + + prioGlobalContext = NULL; + } +- +diff --git a/third_party/prio/prio/serial.h b/third_party/prio/prio/serial.h +--- a/third_party/prio/prio/serial.h ++++ b/third_party/prio/prio/serial.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __SERIAL_H__ +@@ -11,11 +11,11 @@ + + #include + +-SECStatus serial_write_packet_client (msgpack_packer *pk, const_PrioPacketClient p, +- const_PrioConfig cfg); ++SECStatus serial_write_packet_client(msgpack_packer* pk, ++ const_PrioPacketClient p, ++ const_PrioConfig cfg); + +-SECStatus serial_read_packet_client (msgpack_unpacker *upk, PrioPacketClient p, +- const_PrioConfig cfg); ++SECStatus serial_read_packet_client(msgpack_unpacker* upk, PrioPacketClient p, ++ const_PrioConfig cfg); + + #endif /* __SERIAL_H__ */ +- +diff --git a/third_party/prio/prio/serial.c b/third_party/prio/prio/serial.c +--- a/third_party/prio/prio/serial.c ++++ b/third_party/prio/prio/serial.c +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #include +@@ -17,277 +17,277 @@ + + #define MSGPACK_OK 0 + +-static SECStatus +-serial_write_mp_int (msgpack_packer *pk, const mp_int *n) ++static SECStatus ++serial_write_mp_int(msgpack_packer* pk, const mp_int* n) + { + SECStatus rv = SECSuccess; +- unsigned int n_size = mp_unsigned_octet_size (n); ++ unsigned int n_size = mp_unsigned_octet_size(n); + + unsigned char data[n_size]; +- MP_CHECK (mp_to_fixlen_octets (n, data, n_size)); ++ MP_CHECK(mp_to_fixlen_octets(n, data, n_size)); + +- P_CHECK (msgpack_pack_str (pk, n_size)); +- P_CHECK (msgpack_pack_str_body (pk, data, n_size)); ++ P_CHECK(msgpack_pack_str(pk, n_size)); ++ P_CHECK(msgpack_pack_str_body(pk, data, n_size)); + return rv; + } + + static SECStatus +-object_to_mp_int (msgpack_object *obj, mp_int *n, const mp_int *max) ++object_to_mp_int(msgpack_object* obj, mp_int* n, const mp_int* max) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (obj != NULL); +- P_CHECKCB (obj->type == MSGPACK_OBJECT_STR); +- P_CHECKCB (n != NULL); ++ P_CHECKCB(obj != NULL); ++ P_CHECKCB(obj->type == MSGPACK_OBJECT_STR); ++ P_CHECKCB(n != NULL); + + msgpack_object_str s = obj->via.str; +- P_CHECKCB (s.ptr != NULL); +- MP_CHECKC (mp_read_unsigned_octets (n, (unsigned char *)s.ptr, s.size)); ++ P_CHECKCB(s.ptr != NULL); ++ MP_CHECKC(mp_read_unsigned_octets(n, (unsigned char*)s.ptr, s.size)); + +- P_CHECKCB (mp_cmp_z (n) >= 0); +- P_CHECKCB (mp_cmp (n, max) < 0); ++ P_CHECKCB(mp_cmp_z(n) >= 0); ++ P_CHECKCB(mp_cmp(n, max) < 0); + + cleanup: + return rv; + } + +-static SECStatus +-serial_read_mp_int (msgpack_unpacker *upk, mp_int *n, const mp_int *max) ++static SECStatus ++serial_read_mp_int(msgpack_unpacker* upk, mp_int* n, const mp_int* max) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (n != NULL); +- P_CHECKCB (max != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(n != NULL); ++ P_CHECKCB(max != NULL); + + msgpack_unpacked res; +- msgpack_unpacked_init (&res); +- UP_CHECK (msgpack_unpacker_next (upk, &res)) ++ msgpack_unpacked_init(&res); ++ UP_CHECK(msgpack_unpacker_next(upk, &res)) + + msgpack_object obj = res.data; +- P_CHECKC (object_to_mp_int (&obj, n, max)); ++ P_CHECKC(object_to_mp_int(&obj, n, max)); + + cleanup: +- msgpack_unpacked_destroy (&res); ++ msgpack_unpacked_destroy(&res); + + return rv; + } + +-static SECStatus +-serial_read_int (msgpack_unpacker *upk, int *n) ++static SECStatus ++serial_read_int(msgpack_unpacker* upk, int* n) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (n != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(n != NULL); + + msgpack_unpacked res; +- msgpack_unpacked_init (&res); +- UP_CHECK (msgpack_unpacker_next (upk, &res)) ++ msgpack_unpacked_init(&res); ++ UP_CHECK(msgpack_unpacker_next(upk, &res)) + + msgpack_object obj = res.data; +- P_CHECKCB (obj.type == MSGPACK_OBJECT_POSITIVE_INTEGER); ++ P_CHECKCB(obj.type == MSGPACK_OBJECT_POSITIVE_INTEGER); + + *n = obj.via.i64; + + cleanup: +- msgpack_unpacked_destroy (&res); ++ msgpack_unpacked_destroy(&res); + + return rv; + } + +-static SECStatus +-serial_write_mp_array (msgpack_packer *pk, const_MPArray arr) ++static SECStatus ++serial_write_mp_array(msgpack_packer* pk, const_MPArray arr) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (arr != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(arr != NULL); + +- P_CHECK (msgpack_pack_array (pk, arr->len)); ++ P_CHECK(msgpack_pack_array(pk, arr->len)); + for (int i = 0; i < arr->len; i++) { +- P_CHECK (serial_write_mp_int (pk, &arr->data[i])); ++ P_CHECK(serial_write_mp_int(pk, &arr->data[i])); + } + + cleanup: + return rv; + } + +-static SECStatus +-serial_read_mp_array (msgpack_unpacker *upk, MPArray arr, size_t len, const mp_int +- *max) ++static SECStatus ++serial_read_mp_array(msgpack_unpacker* upk, MPArray arr, size_t len, ++ const mp_int* max) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (arr != NULL); +- P_CHECKCB (max != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(arr != NULL); ++ P_CHECKCB(max != NULL); + + msgpack_unpacked res; +- msgpack_unpacked_init (&res); +- UP_CHECK (msgpack_unpacker_next (upk, &res)) ++ msgpack_unpacked_init(&res); ++ UP_CHECK(msgpack_unpacker_next(upk, &res)) + + msgpack_object obj = res.data; +- P_CHECKCB (obj.type == MSGPACK_OBJECT_ARRAY); ++ P_CHECKCB(obj.type == MSGPACK_OBJECT_ARRAY); + + msgpack_object_array objarr = obj.via.array; +- P_CHECKCB (objarr.size == len); ++ P_CHECKCB(objarr.size == len); + +- P_CHECKC (MPArray_resize (arr, len)); +- for (unsigned int i=0; idata[i], max)); ++ P_CHECKC(MPArray_resize(arr, len)); ++ for (unsigned int i = 0; i < len; i++) { ++ P_CHECKC(object_to_mp_int(&objarr.ptr[i], &arr->data[i], max)); + } + + cleanup: +- msgpack_unpacked_destroy (&res); ++ msgpack_unpacked_destroy(&res); + + return rv; + } + +- +-static SECStatus +-serial_write_beaver_triple (msgpack_packer *pk, const_BeaverTriple t) ++static SECStatus ++serial_write_beaver_triple(msgpack_packer* pk, const_BeaverTriple t) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (t != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(t != NULL); + +- P_CHECK (serial_write_mp_int (pk, &t->a)); +- P_CHECK (serial_write_mp_int (pk, &t->b)); +- P_CHECK (serial_write_mp_int (pk, &t->c)); ++ P_CHECK(serial_write_mp_int(pk, &t->a)); ++ P_CHECK(serial_write_mp_int(pk, &t->b)); ++ P_CHECK(serial_write_mp_int(pk, &t->c)); + + cleanup: + return rv; + } + +-static SECStatus +-serial_read_beaver_triple (msgpack_unpacker *pk, BeaverTriple t, const mp_int *max) ++static SECStatus ++serial_read_beaver_triple(msgpack_unpacker* pk, BeaverTriple t, ++ const mp_int* max) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (t != NULL); +- P_CHECKCB (max != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(t != NULL); ++ P_CHECKCB(max != NULL); + +- P_CHECK (serial_read_mp_int (pk, &t->a, max)); +- P_CHECK (serial_read_mp_int (pk, &t->b, max)); +- P_CHECK (serial_read_mp_int (pk, &t->c, max)); ++ P_CHECK(serial_read_mp_int(pk, &t->a, max)); ++ P_CHECK(serial_read_mp_int(pk, &t->b, max)); ++ P_CHECK(serial_read_mp_int(pk, &t->c, max)); + + cleanup: + return rv; + } + +-static SECStatus +-serial_write_server_a_data (msgpack_packer *pk, const struct server_a_data *A) ++static SECStatus ++serial_write_server_a_data(msgpack_packer* pk, const struct server_a_data* A) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (A != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(A != NULL); + +- P_CHECK (serial_write_mp_array (pk, A->data_shares)); +- P_CHECK (serial_write_mp_array (pk, A->h_points)); ++ P_CHECK(serial_write_mp_array(pk, A->data_shares)); ++ P_CHECK(serial_write_mp_array(pk, A->h_points)); + cleanup: + return rv; + } + +-static SECStatus +-serial_read_server_a_data (msgpack_unpacker *upk, struct server_a_data *A, +- const_PrioConfig cfg) ++static SECStatus ++serial_read_server_a_data(msgpack_unpacker* upk, struct server_a_data* A, ++ const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (A != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(A != NULL); + +- P_CHECK (serial_read_mp_array (upk, A->data_shares, cfg->num_data_fields, +- &cfg->modulus)); +- P_CHECK (serial_read_mp_array (upk, A->h_points, PrioConfig_hPoints (cfg), +- &cfg->modulus)); ++ P_CHECK(serial_read_mp_array(upk, A->data_shares, cfg->num_data_fields, ++ &cfg->modulus)); ++ P_CHECK(serial_read_mp_array(upk, A->h_points, PrioConfig_hPoints(cfg), ++ &cfg->modulus)); + + cleanup: + return rv; + } + +-static SECStatus +-serial_write_prg_seed (msgpack_packer *pk, const PrioPRGSeed *seed) ++static SECStatus ++serial_write_prg_seed(msgpack_packer* pk, const PrioPRGSeed* seed) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (seed != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(seed != NULL); + +- P_CHECK (msgpack_pack_str (pk, PRG_SEED_LENGTH)); +- P_CHECK (msgpack_pack_str_body (pk, seed, PRG_SEED_LENGTH)); ++ P_CHECK(msgpack_pack_str(pk, PRG_SEED_LENGTH)); ++ P_CHECK(msgpack_pack_str_body(pk, seed, PRG_SEED_LENGTH)); + + cleanup: + return rv; + } + +-static SECStatus +-serial_read_prg_seed (msgpack_unpacker *upk, PrioPRGSeed *seed) ++static SECStatus ++serial_read_prg_seed(msgpack_unpacker* upk, PrioPRGSeed* seed) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (seed != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(seed != NULL); + + msgpack_unpacked res; +- msgpack_unpacked_init (&res); +- UP_CHECK (msgpack_unpacker_next (upk, &res)) ++ msgpack_unpacked_init(&res); ++ UP_CHECK(msgpack_unpacker_next(upk, &res)) + + msgpack_object obj = res.data; +- P_CHECKCB (obj.type == MSGPACK_OBJECT_STR); ++ P_CHECKCB(obj.type == MSGPACK_OBJECT_STR); + + msgpack_object_str s = obj.via.str; +- P_CHECKCB (s.size == PRG_SEED_LENGTH); +- memcpy (seed, s.ptr, PRG_SEED_LENGTH); ++ P_CHECKCB(s.size == PRG_SEED_LENGTH); ++ memcpy(seed, s.ptr, PRG_SEED_LENGTH); + + cleanup: +- msgpack_unpacked_destroy (&res); ++ msgpack_unpacked_destroy(&res); + + return rv; + } + +-static SECStatus +-serial_write_server_b_data (msgpack_packer *pk, const struct server_b_data *B) ++static SECStatus ++serial_write_server_b_data(msgpack_packer* pk, const struct server_b_data* B) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (B != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(B != NULL); + +- rv = serial_write_prg_seed (pk, &B->seed); ++ rv = serial_write_prg_seed(pk, &B->seed); + cleanup: + return rv; + } + +-static SECStatus +-serial_read_server_b_data (msgpack_unpacker *upk, struct server_b_data *B) ++static SECStatus ++serial_read_server_b_data(msgpack_unpacker* upk, struct server_b_data* B) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (B != NULL); +- +- rv =serial_read_prg_seed (upk, &B->seed); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(B != NULL); ++ ++ rv = serial_read_prg_seed(upk, &B->seed); + cleanup: + return rv; + } + +-SECStatus +-serial_write_packet_client (msgpack_packer *pk, const_PrioPacketClient p, +- const_PrioConfig cfg) ++SECStatus ++serial_write_packet_client(msgpack_packer* pk, const_PrioPacketClient p, ++ const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (p != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(p != NULL); + +- P_CHECK (msgpack_pack_str (pk, cfg->batch_id_len)); +- P_CHECK (msgpack_pack_str_body (pk, cfg->batch_id, cfg->batch_id_len)); ++ P_CHECK(msgpack_pack_str(pk, cfg->batch_id_len)); ++ P_CHECK(msgpack_pack_str_body(pk, cfg->batch_id, cfg->batch_id_len)); + +- P_CHECK (serial_write_beaver_triple (pk, p->triple)); ++ P_CHECK(serial_write_beaver_triple(pk, p->triple)); + +- P_CHECK (serial_write_mp_int (pk, &p->f0_share)); +- P_CHECK (serial_write_mp_int (pk, &p->g0_share)); +- P_CHECK (serial_write_mp_int (pk, &p->h0_share)); ++ P_CHECK(serial_write_mp_int(pk, &p->f0_share)); ++ P_CHECK(serial_write_mp_int(pk, &p->g0_share)); ++ P_CHECK(serial_write_mp_int(pk, &p->h0_share)); + +- P_CHECK (msgpack_pack_int (pk, p->for_server)); ++ P_CHECK(msgpack_pack_int(pk, p->for_server)); + + switch (p->for_server) { + case PRIO_SERVER_A: +- P_CHECK (serial_write_server_a_data (pk, &p->shares.A)); ++ P_CHECK(serial_write_server_a_data(pk, &p->shares.A)); + break; + case PRIO_SERVER_B: +- P_CHECK (serial_write_server_b_data (pk, &p->shares.B)); ++ P_CHECK(serial_write_server_b_data(pk, &p->shares.B)); + break; + default: + return SECFailure; +@@ -297,146 +297,144 @@ + return rv; + } + +-SECStatus +-serial_read_server_id (msgpack_unpacker *upk, PrioServerId *s) ++SECStatus ++serial_read_server_id(msgpack_unpacker* upk, PrioServerId* s) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (s != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(s != NULL); + + int serv; +- P_CHECK (serial_read_int (upk, &serv)); +- P_CHECKCB (serv == PRIO_SERVER_A || serv == PRIO_SERVER_B); ++ P_CHECK(serial_read_int(upk, &serv)); ++ P_CHECKCB(serv == PRIO_SERVER_A || serv == PRIO_SERVER_B); + *s = serv; + + cleanup: + return rv; + } + +-SECStatus +-serial_read_packet_client (msgpack_unpacker *upk, PrioPacketClient p, +- const_PrioConfig cfg) ++SECStatus ++serial_read_packet_client(msgpack_unpacker* upk, PrioPacketClient p, ++ const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (p != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(p != NULL); + msgpack_unpacked res; +- msgpack_unpacked_init (&res); +- UP_CHECK (msgpack_unpacker_next (upk, &res)) ++ msgpack_unpacked_init(&res); ++ UP_CHECK(msgpack_unpacker_next(upk, &res)) + + msgpack_object obj = res.data; +- P_CHECKCB (obj.type == MSGPACK_OBJECT_STR); ++ P_CHECKCB(obj.type == MSGPACK_OBJECT_STR); + + msgpack_object_str s = obj.via.str; +- P_CHECKCB (s.size == cfg->batch_id_len); +- P_CHECKCB (!memcmp (s.ptr, (char *)cfg->batch_id, cfg->batch_id_len)); ++ P_CHECKCB(s.size == cfg->batch_id_len); ++ P_CHECKCB(!memcmp(s.ptr, (char*)cfg->batch_id, cfg->batch_id_len)); + +- P_CHECK (serial_read_beaver_triple (upk, p->triple, &cfg->modulus)); ++ P_CHECK(serial_read_beaver_triple(upk, p->triple, &cfg->modulus)); + +- P_CHECK (serial_read_mp_int (upk, &p->f0_share, &cfg->modulus)); +- P_CHECK (serial_read_mp_int (upk, &p->g0_share, &cfg->modulus)); +- P_CHECK (serial_read_mp_int (upk, &p->h0_share, &cfg->modulus)); ++ P_CHECK(serial_read_mp_int(upk, &p->f0_share, &cfg->modulus)); ++ P_CHECK(serial_read_mp_int(upk, &p->g0_share, &cfg->modulus)); ++ P_CHECK(serial_read_mp_int(upk, &p->h0_share, &cfg->modulus)); + +- P_CHECK (serial_read_server_id (upk, &p->for_server)); ++ P_CHECK(serial_read_server_id(upk, &p->for_server)); + + switch (p->for_server) { + case PRIO_SERVER_A: +- P_CHECK (serial_read_server_a_data (upk, &p->shares.A, cfg)); ++ P_CHECK(serial_read_server_a_data(upk, &p->shares.A, cfg)); + break; + case PRIO_SERVER_B: +- P_CHECK (serial_read_server_b_data (upk, &p->shares.B)); ++ P_CHECK(serial_read_server_b_data(upk, &p->shares.B)); + break; + default: + return SECFailure; + } + + cleanup: +- msgpack_unpacked_destroy (&res); ++ msgpack_unpacked_destroy(&res); + return rv; + } + +- +-SECStatus +-PrioPacketVerify1_write (const_PrioPacketVerify1 p, msgpack_packer *pk) ++SECStatus ++PrioPacketVerify1_write(const_PrioPacketVerify1 p, msgpack_packer* pk) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (p != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(p != NULL); + +- P_CHECK (serial_write_mp_int (pk, &p->share_d)); +- P_CHECK (serial_write_mp_int (pk, &p->share_e)); ++ P_CHECK(serial_write_mp_int(pk, &p->share_d)); ++ P_CHECK(serial_write_mp_int(pk, &p->share_e)); + + cleanup: + return rv; + } + +-SECStatus +-PrioPacketVerify1_read (PrioPacketVerify1 p, msgpack_unpacker *upk, +- const_PrioConfig cfg) ++SECStatus ++PrioPacketVerify1_read(PrioPacketVerify1 p, msgpack_unpacker* upk, ++ const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (p != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(p != NULL); + +- P_CHECK (serial_read_mp_int (upk, &p->share_d, &cfg->modulus)); +- P_CHECK (serial_read_mp_int (upk, &p->share_e, &cfg->modulus)); ++ P_CHECK(serial_read_mp_int(upk, &p->share_d, &cfg->modulus)); ++ P_CHECK(serial_read_mp_int(upk, &p->share_e, &cfg->modulus)); + + cleanup: + return rv; + } + +-SECStatus +-PrioPacketVerify2_write (const_PrioPacketVerify2 p, msgpack_packer *pk) ++SECStatus ++PrioPacketVerify2_write(const_PrioPacketVerify2 p, msgpack_packer* pk) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (pk != NULL); +- P_CHECKCB (p != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECKCB(p != NULL); + +- P_CHECK (serial_write_mp_int (pk, &p->share_out)); ++ P_CHECK(serial_write_mp_int(pk, &p->share_out)); + + cleanup: + return rv; + } + +-SECStatus +-PrioPacketVerify2_read (PrioPacketVerify2 p, msgpack_unpacker *upk, +- const_PrioConfig cfg) ++SECStatus ++PrioPacketVerify2_read(PrioPacketVerify2 p, msgpack_unpacker* upk, ++ const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (upk != NULL); +- P_CHECKCB (p != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECKCB(p != NULL); + +- P_CHECK (serial_read_mp_int (upk, &p->share_out, &cfg->modulus)); ++ P_CHECK(serial_read_mp_int(upk, &p->share_out, &cfg->modulus)); + + cleanup: + return rv; + } + +-SECStatus +-PrioTotalShare_write (const_PrioTotalShare t, msgpack_packer *pk) ++SECStatus ++PrioTotalShare_write(const_PrioTotalShare t, msgpack_packer* pk) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (t != NULL); +- P_CHECKCB (pk != NULL); +- P_CHECK (msgpack_pack_int (pk, t->idx)); +- P_CHECK (serial_write_mp_array (pk, t->data_shares)); ++ P_CHECKCB(t != NULL); ++ P_CHECKCB(pk != NULL); ++ P_CHECK(msgpack_pack_int(pk, t->idx)); ++ P_CHECK(serial_write_mp_array(pk, t->data_shares)); + + cleanup: + return rv; + } + +-SECStatus +-PrioTotalShare_read (PrioTotalShare t, msgpack_unpacker *upk, +- const_PrioConfig cfg) ++SECStatus ++PrioTotalShare_read(PrioTotalShare t, msgpack_unpacker* upk, ++ const_PrioConfig cfg) + { + SECStatus rv = SECSuccess; +- P_CHECKCB (t != NULL); +- P_CHECKCB (upk != NULL); +- P_CHECK (serial_read_server_id (upk, &t->idx)); +- P_CHECK (serial_read_mp_array (upk, t->data_shares, cfg->num_data_fields, +- &cfg->modulus)); ++ P_CHECKCB(t != NULL); ++ P_CHECKCB(upk != NULL); ++ P_CHECK(serial_read_server_id(upk, &t->idx)); ++ P_CHECK(serial_read_mp_array(upk, t->data_shares, cfg->num_data_fields, ++ &cfg->modulus)); + + cleanup: + return rv; + } +- +diff --git a/third_party/prio/prio/server.h b/third_party/prio/prio/server.h +--- a/third_party/prio/prio/server.h ++++ b/third_party/prio/prio/server.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __SERVER_H__ +@@ -13,12 +13,14 @@ + #include "prg.h" + #include "share.h" + +-struct prio_total_share { ++struct prio_total_share ++{ + PrioServerId idx; + MPArray data_shares; + }; + +-struct prio_server { ++struct prio_server ++{ + const_PrioConfig cfg; + PrioServerId idx; + +@@ -34,7 +36,8 @@ + PRG prg; + }; + +-struct prio_verifier { ++struct prio_verifier ++{ + PrioServer s; + + PrioPacketClient clientp; +@@ -47,14 +50,15 @@ + mp_int share_out; + }; + +-struct prio_packet_verify1 { ++struct prio_packet_verify1 ++{ + mp_int share_d; + mp_int share_e; + }; + +-struct prio_packet_verify2 { ++struct prio_packet_verify2 ++{ + mp_int share_out; + }; + + #endif /* __SERVER_H__ */ +- +diff --git a/third_party/prio/prio/server.c b/third_party/prio/prio/server.c +--- a/third_party/prio/prio/server.c ++++ b/third_party/prio/prio/server.c +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #include +@@ -12,49 +12,51 @@ + #include + + #include "client.h" +-#include "prg.h" ++#include "mparray.h" + #include "poly.h" +-#include "mparray.h" ++#include "prg.h" + #include "server.h" + #include "util.h" + +-PrioServer +-PrioServer_new (const_PrioConfig cfg, PrioServerId server_idx, +- PrivateKey server_priv, const PrioPRGSeed seed) ++PrioServer ++PrioServer_new(const_PrioConfig cfg, PrioServerId server_idx, ++ PrivateKey server_priv, const PrioPRGSeed seed) + { + SECStatus rv = SECSuccess; +- PrioServer s = malloc (sizeof (*s)); +- if (!s) return NULL; ++ PrioServer s = malloc(sizeof(*s)); ++ if (!s) ++ return NULL; + s->cfg = cfg; + s->idx = server_idx; + s->priv_key = server_priv; + s->data_shares = NULL; + s->prg = NULL; +- +- P_CHECKA (s->data_shares = MPArray_new (s->cfg->num_data_fields)); +- P_CHECKA (s->prg = PRG_new (seed)); ++ ++ P_CHECKA(s->data_shares = MPArray_new(s->cfg->num_data_fields)); ++ P_CHECKA(s->prg = PRG_new(seed)); + + cleanup: + if (rv != SECSuccess) { +- PrioServer_clear (s); ++ PrioServer_clear(s); + return NULL; + } + + return s; + } + +-void +-PrioServer_clear (PrioServer s) ++void ++PrioServer_clear(PrioServer s) + { +- if (!s) return; ++ if (!s) ++ return; + +- PRG_clear (s->prg); +- MPArray_clear (s->data_shares); ++ PRG_clear(s->prg); ++ MPArray_clear(s->data_shares); + free(s); + } + + SECStatus +-PrioServer_aggregate (PrioServer s, PrioVerifier v) ++PrioServer_aggregate(PrioServer s, PrioVerifier v) + { + MPArray arr = NULL; + switch (s->idx) { +@@ -69,48 +71,49 @@ + return SECFailure; + } + +- return MPArray_addmod (s->data_shares, arr, &s->cfg->modulus); ++ return MPArray_addmod(s->data_shares, arr, &s->cfg->modulus); + } + +-PrioTotalShare +-PrioTotalShare_new (void) ++PrioTotalShare ++PrioTotalShare_new(void) + { +- PrioTotalShare t = malloc (sizeof (*t)); +- if (!t) return NULL; ++ PrioTotalShare t = malloc(sizeof(*t)); ++ if (!t) ++ return NULL; + +- t->data_shares = MPArray_new (0); ++ t->data_shares = MPArray_new(0); + if (!t->data_shares) { +- free (t); ++ free(t); + return NULL; + } + + return t; + } + +-void +-PrioTotalShare_clear (PrioTotalShare t) ++void ++PrioTotalShare_clear(PrioTotalShare t) + { +- if (!t) return; +- MPArray_clear (t->data_shares); +- free (t); ++ if (!t) ++ return; ++ MPArray_clear(t->data_shares); ++ free(t); + } + + SECStatus +-PrioTotalShare_set_data (PrioTotalShare t, const_PrioServer s) ++PrioTotalShare_set_data(PrioTotalShare t, const_PrioServer s) + { + t->idx = s->idx; + SECStatus rv = SECSuccess; +- +- P_CHECK (MPArray_resize (t->data_shares, s->data_shares->len)); +- P_CHECK (MPArray_copy (t->data_shares, s->data_shares)); ++ ++ P_CHECK(MPArray_resize(t->data_shares, s->data_shares->len)); ++ P_CHECK(MPArray_copy(t->data_shares, s->data_shares)); + + return rv; + } + + SECStatus +-PrioTotalShare_final (const_PrioConfig cfg, +- unsigned long *output, +- const_PrioTotalShare tA, const_PrioTotalShare tB) ++PrioTotalShare_final(const_PrioConfig cfg, unsigned long* output, ++ const_PrioTotalShare tA, const_PrioTotalShare tB) + { + if (tA->data_shares->len != cfg->num_data_fields) + return SECFailure; +@@ -122,24 +125,24 @@ + SECStatus rv = SECSuccess; + + mp_int tmp; +- MP_DIGITS (&tmp) = NULL; +- MP_CHECKC (mp_init (&tmp)); ++ MP_DIGITS(&tmp) = NULL; ++ MP_CHECKC(mp_init(&tmp)); + +- for (int i=0; inum_data_fields; i++) { +- MP_CHECKC (mp_addmod(&tA->data_shares->data[i], &tB->data_shares->data[i], +- &cfg->modulus, &tmp)); ++ for (int i = 0; i < cfg->num_data_fields; i++) { ++ MP_CHECKC(mp_addmod(&tA->data_shares->data[i], &tB->data_shares->data[i], ++ &cfg->modulus, &tmp)); + + output[i] = tmp.dp[0]; + } + + cleanup: +- mp_clear (&tmp); ++ mp_clear(&tmp); + return rv; + } + +- +-inline static mp_int * +-get_data_share (const_PrioVerifier v, int i) { ++inline static mp_int* ++get_data_share(const_PrioVerifier v, int i) ++{ + switch (v->s->idx) { + case PRIO_SERVER_A: + return &v->clientp->shares.A.data_shares->data[i]; +@@ -150,8 +153,9 @@ + return NULL; + } + +-inline static mp_int * +-get_h_share (const_PrioVerifier v, int i) { ++inline static mp_int* ++get_h_share(const_PrioVerifier v, int i) ++{ + switch (v->s->idx) { + case PRIO_SERVER_A: + return &v->clientp->shares.A.h_points->data[i]; +@@ -168,118 +172,122 @@ + * by the shared secret. Store the evaluations in the verifier object. + */ + static SECStatus +-compute_shares (PrioVerifier v, const_PrioPacketClient p) ++compute_shares(PrioVerifier v, const_PrioPacketClient p) + { + SECStatus rv; + const int n = v->s->cfg->num_data_fields + 1; +- const int N = next_power_of_two (n); ++ const int N = next_power_of_two(n); + mp_int eval_at; +- MP_DIGITS (&eval_at) = NULL; ++ MP_DIGITS(&eval_at) = NULL; + + MPArray points_f = NULL; + MPArray points_g = NULL; + MPArray points_h = NULL; + +- MP_CHECKC (mp_init (&eval_at)); +- P_CHECKA (points_f = MPArray_new (N)); +- P_CHECKA (points_g = MPArray_new (N)); +- P_CHECKA (points_h = MPArray_new (2*N)); ++ MP_CHECKC(mp_init(&eval_at)); ++ P_CHECKA(points_f = MPArray_new(N)); ++ P_CHECKA(points_g = MPArray_new(N)); ++ P_CHECKA(points_h = MPArray_new(2 * N)); + + // Use PRG to generate random point +- MP_CHECKC (PRG_get_int (v->s->prg, &eval_at, &v->s->cfg->modulus)); +- +- // Reduce value into the field we're using. This ++ MP_CHECKC(PRG_get_int(v->s->prg, &eval_at, &v->s->cfg->modulus)); ++ ++ // Reduce value into the field we're using. This + // doesn't yield exactly a uniformly random point, + // but for values this large, it will be close + // enough. +- MP_CHECKC (mp_mod (&eval_at, &v->s->cfg->modulus, &eval_at)); ++ MP_CHECKC(mp_mod(&eval_at, &v->s->cfg->modulus, &eval_at)); + + // Client sends us the values of f(0) and g(0) +- MP_CHECKC (mp_copy(&p->f0_share, &points_f->data[0])); +- MP_CHECKC (mp_copy(&p->g0_share, &points_g->data[0])); +- MP_CHECKC (mp_copy(&p->h0_share, &points_h->data[0])); ++ MP_CHECKC(mp_copy(&p->f0_share, &points_f->data[0])); ++ MP_CHECKC(mp_copy(&p->g0_share, &points_g->data[0])); ++ MP_CHECKC(mp_copy(&p->h0_share, &points_h->data[0])); + +- for (int i=1; idata[i])); ++ const mp_int* data_i_minus_1 = get_data_share(v, i - 1); ++ MP_CHECKC(mp_copy(data_i_minus_1, &points_f->data[i])); + + // [g](i) = i-th data share minus 1 + // Only need to shift the share for 0-th server +- MP_CHECKC (mp_copy(&points_f->data[i], &points_g->data[i])); ++ MP_CHECKC(mp_copy(&points_f->data[i], &points_g->data[i])); + if (!v->s->idx) { +- MP_CHECKC (mp_sub_d(&points_g->data[i], 1, &points_g->data[i])); +- MP_CHECKC (mp_mod(&points_g->data[i], &v->s->cfg->modulus, &points_g->data[i])); ++ MP_CHECKC(mp_sub_d(&points_g->data[i], 1, &points_g->data[i])); ++ MP_CHECKC( ++ mp_mod(&points_g->data[i], &v->s->cfg->modulus, &points_g->data[i])); + } + } + + int j = 0; +- for (int i=1; i<2*N; i+=2) { +- const mp_int *h_point_j = get_h_share (v, j++); +- MP_CHECKC (mp_copy(h_point_j, &points_h->data[i])); ++ for (int i = 1; i < 2 * N; i += 2) { ++ const mp_int* h_point_j = get_h_share(v, j++); ++ MP_CHECKC(mp_copy(h_point_j, &points_h->data[i])); + } + +- P_CHECKC (poly_interp_evaluate (&v->share_fR, points_f, &eval_at, v->s->cfg)); +- P_CHECKC (poly_interp_evaluate (&v->share_gR, points_g, &eval_at, v->s->cfg)); +- P_CHECKC (poly_interp_evaluate (&v->share_hR, points_h, &eval_at, v->s->cfg)); ++ P_CHECKC(poly_interp_evaluate(&v->share_fR, points_f, &eval_at, v->s->cfg)); ++ P_CHECKC(poly_interp_evaluate(&v->share_gR, points_g, &eval_at, v->s->cfg)); ++ P_CHECKC(poly_interp_evaluate(&v->share_hR, points_h, &eval_at, v->s->cfg)); + + cleanup: +- MPArray_clear (points_f); +- MPArray_clear (points_g); +- MPArray_clear (points_h); +- mp_clear (&eval_at); ++ MPArray_clear(points_f); ++ MPArray_clear(points_g); ++ MPArray_clear(points_h); ++ mp_clear(&eval_at); + return rv; + } + +-PrioVerifier PrioVerifier_new (PrioServer s) ++PrioVerifier ++PrioVerifier_new(PrioServer s) + { + SECStatus rv = SECSuccess; +- PrioVerifier v = malloc (sizeof *v); +- if (!v) return NULL; ++ PrioVerifier v = malloc(sizeof *v); ++ if (!v) ++ return NULL; + + v->s = s; + v->clientp = NULL; + v->data_sharesB = NULL; + v->h_pointsB = NULL; + +- MP_DIGITS (&v->share_fR) = NULL; +- MP_DIGITS (&v->share_gR) = NULL; +- MP_DIGITS (&v->share_hR) = NULL; ++ MP_DIGITS(&v->share_fR) = NULL; ++ MP_DIGITS(&v->share_gR) = NULL; ++ MP_DIGITS(&v->share_hR) = NULL; + +- MP_CHECKC (mp_init (&v->share_fR)); +- MP_CHECKC (mp_init (&v->share_gR)); +- MP_CHECKC (mp_init (&v->share_hR)); ++ MP_CHECKC(mp_init(&v->share_fR)); ++ MP_CHECKC(mp_init(&v->share_gR)); ++ MP_CHECKC(mp_init(&v->share_hR)); + +- P_CHECKA (v->clientp = PrioPacketClient_new (s->cfg, s->idx)); ++ P_CHECKA(v->clientp = PrioPacketClient_new(s->cfg, s->idx)); + +- const int N = next_power_of_two (s->cfg->num_data_fields + 1); ++ const int N = next_power_of_two(s->cfg->num_data_fields + 1); + if (v->s->idx == PRIO_SERVER_B) { +- P_CHECKA (v->data_sharesB = MPArray_new (v->s->cfg->num_data_fields)); +- P_CHECKA (v->h_pointsB = MPArray_new (N)); ++ P_CHECKA(v->data_sharesB = MPArray_new(v->s->cfg->num_data_fields)); ++ P_CHECKA(v->h_pointsB = MPArray_new(N)); + } + + cleanup: + if (rv != SECSuccess) { +- PrioVerifier_clear (v); ++ PrioVerifier_clear(v); + return NULL; + } + + return v; + } + +-SECStatus +-PrioVerifier_set_data (PrioVerifier v, unsigned char *data, unsigned int data_len) ++SECStatus ++PrioVerifier_set_data(PrioVerifier v, unsigned char* data, ++ unsigned int data_len) + { + SECStatus rv = SECSuccess; + PRG prgB = NULL; +- P_CHECKC (PrioPacketClient_decrypt (v->clientp, v->s->cfg, +- v->s->priv_key, data, data_len)); ++ P_CHECKC(PrioPacketClient_decrypt(v->clientp, v->s->cfg, v->s->priv_key, data, ++ data_len)); + + PrioPacketClient p = v->clientp; + if (p->for_server != v->s->idx) + return SECFailure; + +- const int N = next_power_of_two (v->s->cfg->num_data_fields + 1); ++ const int N = next_power_of_two(v->s->cfg->num_data_fields + 1); + if (v->s->idx == PRIO_SERVER_A) { + // Check that packet has the correct number of data fields + if (p->shares.A.data_shares->len != v->s->cfg->num_data_fields) +@@ -289,70 +297,73 @@ + } + + if (v->s->idx == PRIO_SERVER_B) { +- P_CHECKA (prgB = PRG_new (v->clientp->shares.B.seed)); +- P_CHECKC (PRG_get_array (prgB, v->data_sharesB, &v->s->cfg->modulus)); +- P_CHECKC (PRG_get_array (prgB, v->h_pointsB, &v->s->cfg->modulus)); ++ P_CHECKA(prgB = PRG_new(v->clientp->shares.B.seed)); ++ P_CHECKC(PRG_get_array(prgB, v->data_sharesB, &v->s->cfg->modulus)); ++ P_CHECKC(PRG_get_array(prgB, v->h_pointsB, &v->s->cfg->modulus)); + } + + // TODO: This can be done much faster by using the combined +- // interpolate-and-evaluate optimization described in the ++ // interpolate-and-evaluate optimization described in the + // Prio paper. + // + // Compute share of f(r), g(r), h(r) +- P_CHECKC (compute_shares (v, p)); ++ P_CHECKC(compute_shares(v, p)); + + cleanup: + +- PRG_clear (prgB); ++ PRG_clear(prgB); + return rv; + } + +- +-void PrioVerifier_clear (PrioVerifier v) ++void ++PrioVerifier_clear(PrioVerifier v) + { +- if (v == NULL) return; +- PrioPacketClient_clear (v->clientp); +- MPArray_clear (v->data_sharesB); +- MPArray_clear (v->h_pointsB); +- mp_clear (&v->share_fR); +- mp_clear (&v->share_gR); +- mp_clear (&v->share_hR); +- free (v); ++ if (v == NULL) ++ return; ++ PrioPacketClient_clear(v->clientp); ++ MPArray_clear(v->data_sharesB); ++ MPArray_clear(v->h_pointsB); ++ mp_clear(&v->share_fR); ++ mp_clear(&v->share_gR); ++ mp_clear(&v->share_hR); ++ free(v); + } + +-PrioPacketVerify1 +-PrioPacketVerify1_new (void) ++PrioPacketVerify1 ++PrioPacketVerify1_new(void) + { + SECStatus rv = SECSuccess; +- PrioPacketVerify1 p = malloc (sizeof *p); +- if (!p) return NULL; ++ PrioPacketVerify1 p = malloc(sizeof *p); ++ if (!p) ++ return NULL; + +- MP_DIGITS (&p->share_d) = NULL; +- MP_DIGITS (&p->share_e) = NULL; ++ MP_DIGITS(&p->share_d) = NULL; ++ MP_DIGITS(&p->share_e) = NULL; + +- MP_CHECKC (mp_init (&p->share_d)); +- MP_CHECKC (mp_init (&p->share_e)); ++ MP_CHECKC(mp_init(&p->share_d)); ++ MP_CHECKC(mp_init(&p->share_e)); + + cleanup: + if (rv != SECSuccess) { +- PrioPacketVerify1_clear (p); ++ PrioPacketVerify1_clear(p); + return NULL; + } + + return p; + } + +-void +-PrioPacketVerify1_clear (PrioPacketVerify1 p) ++void ++PrioPacketVerify1_clear(PrioPacketVerify1 p) + { +- if (!p) return; +- mp_clear (&p->share_d); +- mp_clear (&p->share_e); +- free (p); ++ if (!p) ++ return; ++ mp_clear(&p->share_d); ++ mp_clear(&p->share_e); ++ free(p); + } + + SECStatus +-PrioPacketVerify1_set_data (PrioPacketVerify1 p1, const_PrioVerifier v) ++PrioPacketVerify1_set_data(PrioPacketVerify1 p1, const_PrioVerifier v) + { + // See the Prio paper for details on how this works. + // Appendix C descrives the MPC protocol used here. +@@ -361,121 +372,121 @@ + + // Compute corrections. + // [d] = [f(r)] - [a] +- MP_CHECK (mp_sub (&v->share_fR, &v->clientp->triple->a, &p1->share_d)); +- MP_CHECK (mp_mod (&p1->share_d, &v->s->cfg->modulus, &p1->share_d)); ++ MP_CHECK(mp_sub(&v->share_fR, &v->clientp->triple->a, &p1->share_d)); ++ MP_CHECK(mp_mod(&p1->share_d, &v->s->cfg->modulus, &p1->share_d)); + + // [e] = [g(r)] - [b] +- MP_CHECK (mp_sub (&v->share_gR, &v->clientp->triple->b, &p1->share_e)); +- MP_CHECK (mp_mod (&p1->share_e, &v->s->cfg->modulus, &p1->share_e)); ++ MP_CHECK(mp_sub(&v->share_gR, &v->clientp->triple->b, &p1->share_e)); ++ MP_CHECK(mp_mod(&p1->share_e, &v->s->cfg->modulus, &p1->share_e)); + + return rv; + } + +-PrioPacketVerify2 +-PrioPacketVerify2_new (void) ++PrioPacketVerify2 ++PrioPacketVerify2_new(void) + { + SECStatus rv = SECSuccess; +- PrioPacketVerify2 p = malloc (sizeof *p); +- if (!p) return NULL; ++ PrioPacketVerify2 p = malloc(sizeof *p); ++ if (!p) ++ return NULL; + +- MP_DIGITS (&p->share_out) = NULL; +- MP_CHECKC (mp_init (&p->share_out)); ++ MP_DIGITS(&p->share_out) = NULL; ++ MP_CHECKC(mp_init(&p->share_out)); + + cleanup: + if (rv != SECSuccess) { +- PrioPacketVerify2_clear (p); ++ PrioPacketVerify2_clear(p); + return NULL; + } + return p; + } + +-void +-PrioPacketVerify2_clear (PrioPacketVerify2 p) ++void ++PrioPacketVerify2_clear(PrioPacketVerify2 p) + { +- if (!p) return; +- mp_clear (&p->share_out); +- free (p); ++ if (!p) ++ return; ++ mp_clear(&p->share_out); ++ free(p); + } + + SECStatus +-PrioPacketVerify2_set_data (PrioPacketVerify2 p2, const_PrioVerifier v, +- const_PrioPacketVerify1 p1A, const_PrioPacketVerify1 p1B) ++PrioPacketVerify2_set_data(PrioPacketVerify2 p2, const_PrioVerifier v, ++ const_PrioPacketVerify1 p1A, ++ const_PrioPacketVerify1 p1B) + { + SECStatus rv = SECSuccess; + + mp_int d, e, tmp; +- MP_DIGITS (&d) = NULL; +- MP_DIGITS (&e) = NULL; +- MP_DIGITS (&tmp) = NULL; ++ MP_DIGITS(&d) = NULL; ++ MP_DIGITS(&e) = NULL; ++ MP_DIGITS(&tmp) = NULL; + +- MP_CHECKC (mp_init (&d)); +- MP_CHECKC (mp_init (&e)); +- MP_CHECKC (mp_init (&tmp)); ++ MP_CHECKC(mp_init(&d)); ++ MP_CHECKC(mp_init(&e)); ++ MP_CHECKC(mp_init(&tmp)); + +- const mp_int *mod = &v->s->cfg->modulus; ++ const mp_int* mod = &v->s->cfg->modulus; + + // Compute share of f(r)*g(r) + // [f(r)*g(r)] = [d*e/2] + d[b] + e[a] + [c] +- +- // Compute d +- MP_CHECKC (mp_addmod (&p1A->share_d, &p1B->share_d, mod, &d)); ++ ++ // Compute d ++ MP_CHECKC(mp_addmod(&p1A->share_d, &p1B->share_d, mod, &d)); + // Compute e +- MP_CHECKC (mp_addmod (&p1A->share_e, &p1B->share_e, mod, &e)); ++ MP_CHECKC(mp_addmod(&p1A->share_e, &p1B->share_e, mod, &e)); + + // Compute d*e +- MP_CHECKC (mp_mulmod (&d, &e, mod, &p2->share_out)); ++ MP_CHECKC(mp_mulmod(&d, &e, mod, &p2->share_out)); + // out = d*e/2 +- MP_CHECKC (mp_mulmod (&p2->share_out, &v->s->cfg->inv2, +- mod, &p2->share_out)); ++ MP_CHECKC(mp_mulmod(&p2->share_out, &v->s->cfg->inv2, mod, &p2->share_out)); + +- // Compute d[b] +- MP_CHECKC (mp_mulmod (&d, &v->clientp->triple->b, mod, &tmp)); +- // out = d*e/2 + d[b] +- MP_CHECKC (mp_addmod (&p2->share_out, &tmp, mod, &p2->share_out)); ++ // Compute d[b] ++ MP_CHECKC(mp_mulmod(&d, &v->clientp->triple->b, mod, &tmp)); ++ // out = d*e/2 + d[b] ++ MP_CHECKC(mp_addmod(&p2->share_out, &tmp, mod, &p2->share_out)); + +- // Compute e[a] +- MP_CHECKC (mp_mulmod (&e, &v->clientp->triple->a, mod, &tmp)); ++ // Compute e[a] ++ MP_CHECKC(mp_mulmod(&e, &v->clientp->triple->a, mod, &tmp)); + // out = d*e/2 + d[b] + e[a] +- MP_CHECKC (mp_addmod (&p2->share_out, &tmp, mod, &p2->share_out)); ++ MP_CHECKC(mp_addmod(&p2->share_out, &tmp, mod, &p2->share_out)); + + // out = d*e/2 + d[b] + e[a] + [c] +- MP_CHECKC (mp_addmod (&p2->share_out, &v->clientp->triple->c, mod, &p2->share_out)); ++ MP_CHECKC( ++ mp_addmod(&p2->share_out, &v->clientp->triple->c, mod, &p2->share_out)); + + // We want to compute f(r)*g(r) - h(r), + // so subtract off [h(r)]: + // out = d*e/2 + d[b] + e[a] + [c] - [h(r)] +- MP_CHECKC (mp_sub (&p2->share_out, &v->share_hR, &p2->share_out)); +- MP_CHECKC (mp_mod (&p2->share_out, mod, &p2->share_out)); ++ MP_CHECKC(mp_sub(&p2->share_out, &v->share_hR, &p2->share_out)); ++ MP_CHECKC(mp_mod(&p2->share_out, mod, &p2->share_out)); + + cleanup: +- mp_clear (&d); +- mp_clear (&e); +- mp_clear (&tmp); ++ mp_clear(&d); ++ mp_clear(&e); ++ mp_clear(&tmp); + return rv; + } + +-int +-PrioVerifier_isValid (const_PrioVerifier v, +- const_PrioPacketVerify2 pA, const_PrioPacketVerify2 pB) ++int ++PrioVerifier_isValid(const_PrioVerifier v, const_PrioPacketVerify2 pA, ++ const_PrioPacketVerify2 pB) + { + SECStatus rv = SECSuccess; + mp_int res; +- MP_DIGITS (&res) = NULL; +- MP_CHECKC (mp_init (&res)); ++ MP_DIGITS(&res) = NULL; ++ MP_CHECKC(mp_init(&res)); + +- // Add up the shares of the output wire value and ++ // Add up the shares of the output wire value and + // ensure that the sum is equal to zero, which indicates + // that + // f(r) * g(r) == h(r). +- MP_CHECKC (mp_addmod (&pA->share_out, &pB->share_out, +- &v->s->cfg->modulus, &res)); ++ MP_CHECKC( ++ mp_addmod(&pA->share_out, &pB->share_out, &v->s->cfg->modulus, &res)); + +- rv = (mp_cmp_d (&res, 0) == 0) ? SECSuccess : SECFailure; ++ rv = (mp_cmp_d(&res, 0) == 0) ? SECSuccess : SECFailure; + + cleanup: +- mp_clear (&res); ++ mp_clear(&res); + return rv; + } +- +- +- +diff --git a/third_party/prio/prio/share.h b/third_party/prio/prio/share.h +--- a/third_party/prio/prio/share.h ++++ b/third_party/prio/prio/share.h +@@ -1,12 +1,11 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +- + #ifndef __SHARE_H__ + #define __SHARE_H__ + +@@ -14,23 +13,22 @@ + + #include "config.h" + +-struct beaver_triple { ++struct beaver_triple ++{ + mp_int a; + mp_int b; + mp_int c; + }; + +-typedef struct beaver_triple *BeaverTriple; +-typedef const struct beaver_triple *const_BeaverTriple; +- ++typedef struct beaver_triple* BeaverTriple; ++typedef const struct beaver_triple* const_BeaverTriple; + + /* + * Use secret sharing to split the int src into two shares. + * The mp_ints must be initialized. + */ +-SECStatus share_int (const_PrioConfig cfg, const mp_int *src, +- mp_int *shareA, mp_int *shareB); +- ++SECStatus share_int(const_PrioConfig cfg, const mp_int* src, mp_int* shareA, ++ mp_int* shareB); + + /* + * Prio uses Beaver triples to implement one step of the +@@ -38,14 +36,12 @@ + * a sharing of random values a, b, c such that + * a * b = c + */ +-BeaverTriple BeaverTriple_new (void); +-void BeaverTriple_clear (BeaverTriple t); ++BeaverTriple BeaverTriple_new(void); ++void BeaverTriple_clear(BeaverTriple t); + +-SECStatus BeaverTriple_set_rand (const_PrioConfig cfg, +- BeaverTriple triple_a, +- BeaverTriple triple_b); ++SECStatus BeaverTriple_set_rand(const_PrioConfig cfg, BeaverTriple triple_a, ++ BeaverTriple triple_b); + +-bool BeaverTriple_areEqual (const_BeaverTriple t1, const_BeaverTriple t2); ++bool BeaverTriple_areEqual(const_BeaverTriple t1, const_BeaverTriple t2); + + #endif /* __SHARE_H__ */ +- +diff --git a/third_party/prio/prio/share.c b/third_party/prio/prio/share.c +--- a/third_party/prio/prio/share.c ++++ b/third_party/prio/prio/share.c +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #include +@@ -12,86 +12,85 @@ + #include "share.h" + #include "util.h" + +- + SECStatus +-share_int (const struct prio_config *cfg, const mp_int *src, +- mp_int *shareA, mp_int *shareB) ++share_int(const struct prio_config* cfg, const mp_int* src, mp_int* shareA, ++ mp_int* shareB) + { + SECStatus rv; +- P_CHECK (rand_int (shareA, &cfg->modulus)); +- MP_CHECK (mp_submod (src, shareA, &cfg->modulus, shareB)); ++ P_CHECK(rand_int(shareA, &cfg->modulus)); ++ MP_CHECK(mp_submod(src, shareA, &cfg->modulus, shareB)); + + return rv; + } + + BeaverTriple +-BeaverTriple_new (void) ++BeaverTriple_new(void) + { +- BeaverTriple triple = malloc (sizeof *triple); ++ BeaverTriple triple = malloc(sizeof *triple); + if (!triple) + return NULL; + +- MP_DIGITS (&triple->a) = NULL; +- MP_DIGITS (&triple->b) = NULL; +- MP_DIGITS (&triple->c) = NULL; ++ MP_DIGITS(&triple->a) = NULL; ++ MP_DIGITS(&triple->b) = NULL; ++ MP_DIGITS(&triple->c) = NULL; + + SECStatus rv = SECSuccess; +- MP_CHECKC (mp_init (&triple->a)); +- MP_CHECKC (mp_init (&triple->b)); +- MP_CHECKC (mp_init (&triple->c)); ++ MP_CHECKC(mp_init(&triple->a)); ++ MP_CHECKC(mp_init(&triple->b)); ++ MP_CHECKC(mp_init(&triple->c)); + + cleanup: + if (rv != SECSuccess) { +- BeaverTriple_clear (triple); ++ BeaverTriple_clear(triple); + return NULL; + } + return triple; + } + +- + void +-BeaverTriple_clear (BeaverTriple triple) ++BeaverTriple_clear(BeaverTriple triple) + { +- if (!triple) return; +- mp_clear (&triple->a); +- mp_clear (&triple->b); +- mp_clear (&triple->c); +- free (triple); ++ if (!triple) ++ return; ++ mp_clear(&triple->a); ++ mp_clear(&triple->b); ++ mp_clear(&triple->c); ++ free(triple); + } + + SECStatus +-BeaverTriple_set_rand (const struct prio_config *cfg, +- struct beaver_triple *triple_1, +- struct beaver_triple *triple_2) ++BeaverTriple_set_rand(const struct prio_config* cfg, ++ struct beaver_triple* triple_1, ++ struct beaver_triple* triple_2) + { + SECStatus rv = SECSuccess; + + // TODO: Can shorten this code using share_int() + + // We need that +- // (a1 + a2)(b1 + b2) = c1 + c2 (mod p) +- P_CHECK (rand_int (&triple_1->a, &cfg->modulus)); +- P_CHECK (rand_int (&triple_1->b, &cfg->modulus)); +- P_CHECK (rand_int (&triple_2->a, &cfg->modulus)); +- P_CHECK (rand_int (&triple_2->b, &cfg->modulus)); ++ // (a1 + a2)(b1 + b2) = c1 + c2 (mod p) ++ P_CHECK(rand_int(&triple_1->a, &cfg->modulus)); ++ P_CHECK(rand_int(&triple_1->b, &cfg->modulus)); ++ P_CHECK(rand_int(&triple_2->a, &cfg->modulus)); ++ P_CHECK(rand_int(&triple_2->b, &cfg->modulus)); + + // We are trying to be a little clever here to avoid the use of temp + // variables. + + // c1 = a1 + a2 +- MP_CHECK (mp_addmod (&triple_1->a, &triple_2->a, &cfg->modulus, &triple_1->c)); ++ MP_CHECK(mp_addmod(&triple_1->a, &triple_2->a, &cfg->modulus, &triple_1->c)); + + // c2 = b1 + b2 +- MP_CHECK (mp_addmod (&triple_1->b, &triple_2->b, &cfg->modulus, &triple_2->c)); ++ MP_CHECK(mp_addmod(&triple_1->b, &triple_2->b, &cfg->modulus, &triple_2->c)); + + // c1 = c1 * c2 = (a1 + a2) (b1 + b2) +- MP_CHECK (mp_mulmod (&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); ++ MP_CHECK(mp_mulmod(&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); + + // Set c2 to random blinding value +- MP_CHECK (rand_int (&triple_2->c, &cfg->modulus)); ++ MP_CHECK(rand_int(&triple_2->c, &cfg->modulus)); + + // c1 = c1 - c2 +- MP_CHECK (mp_submod (&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); ++ MP_CHECK(mp_submod(&triple_1->c, &triple_2->c, &cfg->modulus, &triple_1->c)); + + // Now we should have random tuples satisfying: + // (a1 + a2) (b1 + b2) = c1 + c2 +@@ -99,10 +98,9 @@ + return rv; + } + +-bool +-BeaverTriple_areEqual (const_BeaverTriple t1, const_BeaverTriple t2) ++bool ++BeaverTriple_areEqual(const_BeaverTriple t1, const_BeaverTriple t2) + { +- return (mp_cmp (&t1->a, &t2->a) == 0 && +- mp_cmp (&t1->b, &t2->b) == 0 && +- mp_cmp (&t1->c, &t2->c) == 0); ++ return (mp_cmp(&t1->a, &t2->a) == 0 && mp_cmp(&t1->b, &t2->b) == 0 && ++ mp_cmp(&t1->c, &t2->c) == 0); + } +diff --git a/third_party/prio/prio/util.h b/third_party/prio/prio/util.h +--- a/third_party/prio/prio/util.h ++++ b/third_party/prio/prio/util.h +@@ -1,9 +1,9 @@ + /* + * Copyright (c) 2018, Henry Corrigan-Gibbs +- * ++ * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + #ifndef __UTIL_H__ +@@ -16,80 +16,88 @@ + #define MIN(a, b) ((a) < (b) ? (a) : (b)) + + // Check a Prio error code and return failure if the call fails. +-#define P_CHECK(s) \ +- do { \ +- if((rv = (s)) != SECSuccess) \ +- return rv; \ +- } while(0); ++#define P_CHECK(s) \ ++ do { \ ++ if ((rv = (s)) != SECSuccess) \ ++ return rv; \ ++ } while (0); + + // Check an allocation that should not return NULL. If the allocation returns +-// NULL, set the return value and jump to the cleanup label to free memory. +-#define P_CHECKA(s) \ +- do { \ +- if((s) == NULL) {\ +- rv = SECFailure;\ +- goto cleanup;\ +- }\ +- } while(0); ++// NULL, set the return value and jump to the cleanup label to free memory. ++#define P_CHECKA(s) \ ++ do { \ ++ if ((s) == NULL) { \ ++ rv = SECFailure; \ ++ goto cleanup; \ ++ } \ ++ } while (0); + + // Check a Prio library call that should return SECSuccess. If it doesn't, + // jump to the cleanup label. +-#define P_CHECKC(s) \ +- do { \ +- if((rv = (s)) != SECSuccess) { \ +- goto cleanup; \ +- }\ +- } while(0); ++#define P_CHECKC(s) \ ++ do { \ ++ if ((rv = (s)) != SECSuccess) { \ ++ goto cleanup; \ ++ } \ ++ } while (0); + + // Check a boolean that should be true. If it not, + // jump to the cleanup label. +-#define P_CHECKCB(s) \ +- do { \ +- if(!(s)) { \ +- rv = SECFailure; \ +- goto cleanup; \ +- }\ +- } while(0); ++#define P_CHECKCB(s) \ ++ do { \ ++ if (!(s)) { \ ++ rv = SECFailure; \ ++ goto cleanup; \ ++ } \ ++ } while (0); + + // Check an MPI library call and return failure if it fails. +-#define MP_CHECK(s) do { if((s) != MP_OKAY) return SECFailure; } while(0); ++#define MP_CHECK(s) \ ++ do { \ ++ if ((s) != MP_OKAY) \ ++ return SECFailure; \ ++ } while (0); + + // Check a msgpack object unpacked correctly +-#define UP_CHECK(s) do { int r = (s); if(r != MSGPACK_UNPACK_SUCCESS &&\ +- r != MSGPACK_UNPACK_EXTRA_BYTES) \ +- return SECFailure; } while(0); ++#define UP_CHECK(s) \ ++ do { \ ++ int r = (s); \ ++ if (r != MSGPACK_UNPACK_SUCCESS && r != MSGPACK_UNPACK_EXTRA_BYTES) \ ++ return SECFailure; \ ++ } while (0); + + // Check an MPI library call. If it fails, set the return code and jump + // to the cleanup label. +-#define MP_CHECKC(s) \ +- do { \ +- if((s) != MP_OKAY) { \ +- rv = SECFailure; \ +- goto cleanup; \ +- }\ +- } while(0); ++#define MP_CHECKC(s) \ ++ do { \ ++ if ((s) != MP_OKAY) { \ ++ rv = SECFailure; \ ++ goto cleanup; \ ++ } \ ++ } while (0); + + static inline int +-next_power_of_two (int val) ++next_power_of_two(int val) + { + int i = val; + int out = 0; +- for ( ; i > 0; i >>= 1) { ++ for (; i > 0; i >>= 1) { + out++; + } + + int pow = 1 << out; +- return (pow > 1 && pow/2 == val) ? val : pow; +-} ++ return (pow > 1 && pow / 2 == val) ? val : pow; ++} + +-/* ++/* + * Return a mask that masks out all of the zero bits + */ + static inline unsigned char +-msb_mask (unsigned char val) ++msb_mask(unsigned char val) + { + unsigned char mask; +- for (mask = 0x00; (val & mask) != val; mask = (mask << 1) + 1); ++ for (mask = 0x00; (val & mask) != val; mask = (mask << 1) + 1) ++ ; + return mask; + } + +@@ -99,4 +107,3 @@ + #define UNUSED(x) (void)(x) + + #endif /* __UTIL_H__ */ +- +diff --git a/third_party/prio/ptest/MUTEST_LICENSE b/third_party/prio/ptest/MUTEST_LICENSE +deleted file mode 100644 +--- a/third_party/prio/ptest/MUTEST_LICENSE ++++ /dev/null +@@ -1,30 +0,0 @@ +-I don't like licenses, because I don't like having to worry about all this +-legal stuff just for a simple piece of software I don't really mind anyone +-using. But I also believe that it's important that people share and give back; +-so I'm placing this work under the following license. +- +- +-BOLA - Buena Onda License Agreement (v1.0) +------------------------------------------- +- +-This work is provided 'as-is', without any express or implied warranty. In no +-event will the authors be held liable for any damages arising from the use of +-this work. +- +-To all effects and purposes, this work is to be considered Public Domain. +- +- +-However, if you want to be "Buena onda", you should: +- +-1. Not take credit for it, and give proper recognition to the authors. +-2. Share your modifications, so everybody benefits from them. +-4. Do something nice for the authors. +-5. Help someone who needs it: sign up for some volunteer work or help your +- neighbour paint the house. +-6. Don't waste. Anything, but specially energy that comes from natural +- non-renewable resources. Extra points if you discover or invent something +- to replace them. +-7. Be tolerant. Everything that's good in nature comes from cooperation. +- +-The order is important, and the further you go the more "Buena onda" you are. +-Make the world a better place: be "Buena onda". +diff --git a/third_party/prio/ptest/SConscript b/third_party/prio/ptest/SConscript +deleted file mode 100644 +--- a/third_party/prio/ptest/SConscript ++++ /dev/null +@@ -1,44 +0,0 @@ +-import sys +- +-Import('env') +- +-prio_env = env.Clone() +- +-test_srcs = [ +- "mutest.c", +- "client_test.c", +- "example_test.c", +- "encrypt_test.c", +- "fft_test.c", +- "mpi_test.c", +- "prg_test.c", +- "rand_test.c", +- "serial_test.c", +- "server_test.c", +- "share_test.c", +-] +- +-libs = [ +- "nss3", +- "mpi", +- "mprio", +- "msgpackc" +-] +- +-# Run the mutest script to generate the test harness code +-bld = Builder(action = 'ptest/mkmutest ptest/mutest.h $SOURCES | $CC -c -xc -o $TARGET -') +-prio_env.Append(BUILDERS = {'MkMutest' : bld}) +- +-prio_env.Append(LIBS = libs) +- +-# Enable mpi print +-prio_env.Append(CFLAGS = ['-DMP_IOFUNC']) +- +-# Copy the mutest scripts to the build dir +-prio_env.Install("mkmutest") +-prio_env.Install("mutest.h") +- +-test_objs = prio_env.Object(test_srcs) +-test_main = prio_env.MkMutest(test_objs) +-prio_env.Program("ptest", [test_main] + test_objs) +- +diff --git a/third_party/prio/ptest/client_test.c b/third_party/prio/ptest/client_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/client_test.c ++++ /dev/null +@@ -1,160 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +- +-#include "prio/client.h" +-#include "prio/server.h" +-#include "prio/util.h" +-#include "mutest.h" +- +-void +-mu_test_client__new (void) +-{ +- SECStatus rv = SECSuccess; +- PrioConfig cfg = NULL; +- PrioPacketClient pA = NULL; +- PrioPacketClient pB = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest(23)); +- P_CHECKA (pA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); +- P_CHECKA (pB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); +- +- { +- const int ndata = PrioConfig_numDataFields (cfg); +- bool data_items[ndata]; +- +- for (int i=0; i < ndata; i++) { +- // Arbitrary data +- data_items[i] = (i % 3 == 1) || (i % 5 == 3); +- } +- +- P_CHECKC (PrioPacketClient_set_data (cfg, data_items, pA, pB)); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- +- PrioPacketClient_clear (pA); +- PrioPacketClient_clear (pB); +- PrioConfig_clear (cfg); +-} +- +-void +-test_client_agg (int nclients) +-{ +- SECStatus rv = SECSuccess; +- PublicKey pkA = NULL; +- PublicKey pkB = NULL; +- PrivateKey skA = NULL; +- PrivateKey skB = NULL; +- PrioConfig cfg = NULL; +- PrioServer sA = NULL; +- PrioServer sB = NULL; +- PrioTotalShare tA = NULL; +- PrioTotalShare tB = NULL; +- PrioVerifier vA = NULL; +- PrioVerifier vB = NULL; +- unsigned char *for_a = NULL; +- unsigned char *for_b = NULL; +- const unsigned char *batch_id = (unsigned char *)"test_batch"; +- unsigned int batch_id_len = strlen ((char *)batch_id); +- +- PrioPRGSeed seed; +- P_CHECKC (PrioPRGSeed_randomize (&seed)); +- +- P_CHECKC (Keypair_new (&skA, &pkA)); +- P_CHECKC (Keypair_new (&skB, &pkB)); +- P_CHECKA (cfg = PrioConfig_new (133, pkA, pkB, batch_id, batch_id_len)); +- P_CHECKA (sA = PrioServer_new (cfg, 0, skA, seed)); +- P_CHECKA (sB = PrioServer_new (cfg, 1, skB, seed)); +- P_CHECKA (tA = PrioTotalShare_new ()); +- P_CHECKA (tB = PrioTotalShare_new ()); +- P_CHECKA (vA = PrioVerifier_new (sA)); +- P_CHECKA (vB = PrioVerifier_new (sB)); +- +- const int ndata = PrioConfig_numDataFields (cfg); +- +- { +- bool data_items[ndata]; +- for (int i=0; i < ndata; i++) { +- // Arbitrary data +- data_items[i] = (i % 3 == 1) || (i % 5 == 3); +- } +- +- for (int i=0; i < nclients; i++) { +- unsigned int aLen, bLen; +- P_CHECKC (PrioClient_encode (cfg, data_items, &for_a, &aLen, +- &for_b, &bLen)); +- +- P_CHECKC (PrioVerifier_set_data (vA, for_a, aLen)); +- P_CHECKC (PrioVerifier_set_data (vB, for_b, bLen)); +- +- mu_check (PrioServer_aggregate (sA, vA) == SECSuccess); +- mu_check (PrioServer_aggregate (sB, vB) == SECSuccess); +- +- free (for_a); +- free (for_b); +- +- for_a = NULL; +- for_b = NULL; +- } +- +- mu_check (PrioTotalShare_set_data (tA, sA) == SECSuccess); +- mu_check (PrioTotalShare_set_data (tB, sB) == SECSuccess); +- +- unsigned long output[ndata]; +- mu_check (PrioTotalShare_final (cfg, output, tA, tB) == SECSuccess); +- for (int i=0; i < ndata; i++) { +- unsigned long v = ((i % 3 == 1) || (i % 5 == 3)); +- mu_check (output[i] == v*nclients); +- } +- } +- +- //rv = SECFailure; +- //goto cleanup; +- +-cleanup: +- mu_check (rv == SECSuccess); +- if (for_a) free (for_a); +- if (for_b) free (for_b); +- +- PublicKey_clear (pkA); +- PublicKey_clear (pkB); +- PrivateKey_clear (skA); +- PrivateKey_clear (skB); +- +- PrioVerifier_clear (vA); +- PrioVerifier_clear (vB); +- +- PrioTotalShare_clear (tA); +- PrioTotalShare_clear (tB); +- +- PrioServer_clear (sA); +- PrioServer_clear (sB); +- PrioConfig_clear (cfg); +-} +- +-void +-mu_test_client__agg_1 (void) +-{ +- test_client_agg (1); +-} +- +-void +-mu_test_client__agg_2 (void) +-{ +- test_client_agg (2); +-} +- +-void +-mu_test_client__agg_10 (void) +-{ +- test_client_agg (10); +-} +- +diff --git a/third_party/prio/ptest/encrypt_test.c b/third_party/prio/ptest/encrypt_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/encrypt_test.c ++++ /dev/null +@@ -1,228 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +-#include +-#include +-#include +-#include +-#include +- +-#include "mutest.h" +-#include "prio/encrypt.h" +-#include "prio/rand.h" +-#include "prio/util.h" +- +- +-void +-mu_test_keygen (void) +-{ +- SECStatus rv = SECSuccess; +- PublicKey pubkey = NULL; +- PrivateKey pvtkey = NULL; +- +- P_CHECKC (Keypair_new (&pvtkey, &pubkey)); +- mu_check (SECKEY_PublicKeyStrength (pubkey) == 32); +- +-cleanup: +- mu_check (rv == SECSuccess); +- PublicKey_clear (pubkey); +- PrivateKey_clear (pvtkey); +- return; +-} +- +-void +-test_encrypt_once (int bad, unsigned int inlen) +-{ +- SECStatus rv = SECSuccess; +- PublicKey pubkey = NULL; +- PrivateKey pvtkey = NULL; +- PublicKey pubkey2 = NULL; +- PrivateKey pvtkey2 = NULL; +- +- unsigned char *bytes_in = NULL; +- unsigned char *bytes_enc = NULL; +- unsigned char *bytes_dec = NULL; +- +- unsigned int enclen; +- P_CHECKC (PublicKey_encryptSize (inlen, &enclen)); +- unsigned int declen = enclen; +- +- P_CHECKA (bytes_in = malloc (inlen)); +- P_CHECKA (bytes_enc = malloc (enclen)); +- P_CHECKA (bytes_dec= malloc (enclen)); +- P_CHECKC (rand_bytes (bytes_in, inlen)); +- +- memset (bytes_dec, 0, declen); +- +- unsigned int encryptedBytes; +- P_CHECKC (Keypair_new (&pvtkey, &pubkey)); +- P_CHECKC (Keypair_new (&pvtkey2, &pubkey2)); +- P_CHECKC (PublicKey_encrypt (pubkey, bytes_enc, +- &encryptedBytes, enclen, +- bytes_in, inlen)); +- mu_check (encryptedBytes == enclen); +- +- if (bad == 1) +- enclen = 30; +- +- if (bad == 2) { +- bytes_enc[4] = 6; +- bytes_enc[5] = 0; +- } +- +- if (bad == 3) { +- bytes_enc[40] = 6; +- bytes_enc[41] = 0; +- } +- +- unsigned int decryptedBytes; +- PrivateKey key_to_use = (bad == 4) ? pvtkey2 : pvtkey; +- P_CHECKC (PrivateKey_decrypt (key_to_use, bytes_dec, &decryptedBytes, declen, +- bytes_enc, enclen)); +- mu_check (decryptedBytes == inlen); +- mu_check (!strncmp ((char *)bytes_in, (char *)bytes_dec, inlen)); +- +-cleanup: +- mu_check (bad ? (rv == SECFailure) : (rv == SECSuccess)); +- if (bytes_in) free (bytes_in); +- if (bytes_enc) free (bytes_enc); +- if (bytes_dec) free (bytes_dec); +- +- PublicKey_clear (pubkey); +- PrivateKey_clear (pvtkey); +- PublicKey_clear (pubkey2); +- PrivateKey_clear (pvtkey2); +- return; +-} +- +-void +-mu_test_encrypt_good (void) +-{ +- test_encrypt_once (0, 100); +-} +- +-void +-mu_test_encrypt_good_long (void) +-{ +- test_encrypt_once (0, 1000000); +-} +- +-void +-mu_test_encrypt_too_short (void) +-{ +- test_encrypt_once (1, 87); +-} +- +-void +-mu_test_encrypt_garbage (void) +-{ +- test_encrypt_once (2, 10023); +-} +- +-void +-mu_test_encrypt_garbage2 (void) +-{ +- test_encrypt_once (3, 8123); +-} +- +-void +-mu_test_decrypt_wrong_key (void) +-{ +- test_encrypt_once (4, 81230); +-} +- +-void +-mu_test_export (void) +-{ +- SECStatus rv = SECSuccess; +- PublicKey pubkey = NULL; +- +- unsigned char raw_bytes[CURVE25519_KEY_LEN]; +- unsigned char raw_bytes2[CURVE25519_KEY_LEN]; +- for (int i=0; i< CURVE25519_KEY_LEN; i++) { +- raw_bytes[i] = (3*i+7) % 0xFF; +- } +- +- P_CHECKC (PublicKey_import (&pubkey, raw_bytes, CURVE25519_KEY_LEN)); +- P_CHECKC (PublicKey_export (pubkey, raw_bytes2)); +- +- for (int i=0; i< CURVE25519_KEY_LEN; i++) { +- mu_check (raw_bytes[i] == raw_bytes2[i]); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- PublicKey_clear (pubkey); +- return; +-} +- +-void +-mu_test_export_hex (void) +-{ +- SECStatus rv = SECSuccess; +- PublicKey pubkey = NULL; +- +- const unsigned char hex_bytes[2*CURVE25519_KEY_LEN] = \ +- "102030405060708090A0B0C0D0E0F00000FFEEDDCCBBAA998877665544332211"; +- const unsigned char hex_bytesl[2*CURVE25519_KEY_LEN] = \ +- "102030405060708090a0B0C0D0E0F00000FfeEddcCbBaa998877665544332211"; +- +- const unsigned char raw_bytes_should[CURVE25519_KEY_LEN] = { +- 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, +- 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, 0x00, +- 0x00, 0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA, 0x99, +- 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }; +- unsigned char raw_bytes[CURVE25519_KEY_LEN]; +- unsigned char hex_bytes2[2*CURVE25519_KEY_LEN+1]; +- +- // Make sure that invalid lengths are rejected. +- mu_check (PublicKey_import_hex (&pubkey, hex_bytes, +- 2*CURVE25519_KEY_LEN-1) == SECFailure); +- mu_check (PublicKey_import_hex (&pubkey, hex_bytes, +- 2*CURVE25519_KEY_LEN+1) == SECFailure); +- +- // Import a key in upper-case hex +- P_CHECKC (PublicKey_import_hex (&pubkey, hex_bytes, 2*CURVE25519_KEY_LEN)); +- P_CHECKC (PublicKey_export (pubkey, raw_bytes)); +- PublicKey_clear (pubkey); +- pubkey = NULL; +- +- for (int i=0; i +-#include "mutest.h" +- +- +- +-void +-mu_test_example (void) +-{ +- mu_check (1); +-} +- +- +- +diff --git a/third_party/prio/ptest/fft_test.c b/third_party/prio/ptest/fft_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/fft_test.c ++++ /dev/null +@@ -1,170 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +-#include +-#include +- +-#include "mutest.h" +-#include "prio/config.h" +-#include "prio/mparray.h" +-#include "prio/poly.h" +-#include "prio/util.h" +- +-void +-mu_test__fft_one (void) +-{ +- SECStatus rv = SECSuccess; +- PrioConfig cfg = NULL; +- MPArray points_in = NULL; +- MPArray points_out = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest (123)); +- P_CHECKA (points_in = MPArray_new (1)); +- P_CHECKA (points_out = MPArray_new (1)); +- +- mp_set (&points_in->data[0], 3); +- mu_check (poly_fft (points_out, points_in, cfg, false) == SECSuccess); +- +- mu_check (mp_cmp_d(&points_in->data[0], 3) == 0); +- mu_check (mp_cmp_d(&points_out->data[0], 3) == 0); +- +-cleanup: +- mu_check (rv == SECSuccess); +- MPArray_clear (points_in); +- MPArray_clear (points_out); +- +- PrioConfig_clear (cfg); +-} +- +-void +-mu_test__fft_roots (void) +-{ +- SECStatus rv = SECSuccess; +- PrioConfig cfg = NULL; +- mp_int tmp; +- MP_DIGITS (&tmp) = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest (90)); +- MP_CHECKC (mp_init (&tmp)); +- +- mp_int roots[4]; +- poly_fft_get_roots (roots, 4, cfg, false); +- +- for (int i=0; i<4; i++) { +- mp_exptmod_d(&roots[i], 4, &cfg->modulus, &tmp); +- mu_check (mp_cmp_d( &tmp, 1) == 0); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&tmp); +- PrioConfig_clear (cfg); +-} +- +-void +-mu_test__fft_simple (void) +-{ +- SECStatus rv = SECSuccess; +- const int nPoints = 4; +- +- PrioConfig cfg = NULL; +- MPArray points_in = NULL; +- MPArray points_out = NULL; +- +- mp_int should_be, tmp; +- mp_int roots[nPoints]; +- MP_DIGITS (&should_be) = NULL; +- MP_DIGITS (&tmp) = NULL; +- for (int i=0; idata[0], 3); +- mp_set (&points_in->data[1], 8); +- mp_set (&points_in->data[2], 7); +- mp_set (&points_in->data[3], 9); +- mu_check (poly_fft (points_out, points_in, cfg, false) == SECSuccess); +- +- for (int i=0; imodulus, &tmp) == MP_OKAY); +- mu_check (mp_mulmod(&tmp, &points_in->data[j], &cfg->modulus, &tmp) == MP_OKAY); +- mu_check (mp_addmod(&should_be, &tmp, &cfg->modulus, &should_be) == MP_OKAY); +- } +- +- /* +- puts("Should be:"); +- mp_print(&should_be, stdout); +- puts(""); +- mp_print(&points_out[i], stdout); +- puts(""); +- */ +- mu_check (mp_cmp (&should_be, &points_out->data[i]) == 0); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&tmp); +- mp_clear (&should_be); +- MPArray_clear (points_in); +- MPArray_clear (points_out); +- PrioConfig_clear (cfg); +-} +- +-void +-mu_test__fft_invert (void) +-{ +- SECStatus rv = SECSuccess; +- const int nPoints = 8; +- +- PrioConfig cfg = NULL; +- MPArray points_in = NULL; +- MPArray points_out = NULL; +- MPArray points_out2 = NULL; +- mp_int roots[nPoints]; +- +- P_CHECKA (cfg = PrioConfig_newTest (91)); +- P_CHECKA (points_in = MPArray_new (nPoints)); +- P_CHECKA (points_out = MPArray_new (nPoints)); +- P_CHECKA (points_out2 = MPArray_new (nPoints)); +- +- poly_fft_get_roots (roots, nPoints, cfg, false); +- +- mp_set (&points_in->data[0], 3); +- mp_set (&points_in->data[1], 8); +- mp_set (&points_in->data[2], 7); +- mp_set (&points_in->data[3], 9); +- mp_set (&points_in->data[4], 123); +- mp_set (&points_in->data[5], 123123987); +- mp_set (&points_in->data[6], 2); +- mp_set (&points_in->data[7], 0); +- mu_check (poly_fft(points_out, points_in, cfg, false) == SECSuccess); +- mu_check (poly_fft(points_out2, points_out, cfg, true) == SECSuccess); +- +- for (int i=0; idata[i], &points_in->data[i]) == 0); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- +- MPArray_clear (points_in); +- MPArray_clear (points_out); +- MPArray_clear (points_out2); +- PrioConfig_clear (cfg); +-} +diff --git a/third_party/prio/ptest/mkmutest b/third_party/prio/ptest/mkmutest +deleted file mode 100755 +--- a/third_party/prio/ptest/mkmutest ++++ /dev/null +@@ -1,65 +0,0 @@ +-#!/usr/bin/env bash +-# +-# This file is part of mutest, a simple micro unit testing framework for C. +-# +-# mutest was written by Leandro Lucarella and is released +-# under the BOLA license, please see the LICENSE file or visit: +-# http://blitiri.com.ar/p/bola/ +-# +-# This is a simple script to generate a C file that runs all the test suites +-# present in .o files passed as arguments. +-# +-# Please, read the README file for more details. +-# +- +- +-# the trick here is getting all the test cases present in an object file using +-# nm. All the tests must take and return void, start with "mutest_" and, of +-# course, should not be static, which leads to a small limitation: all test +-# cases must have unique names, even across test suites. +- +-# the first argument should be mutest.h +-if [ -z "$1" ] +-then +- echo "Too few arguments" >&2 +- echo "Usage: $0 mutest_h_location [object files...]" >&2 +- exit 1 +-fi +-mutest_h="$1" +-shift +-echo "#include \"$mutest_h\"" +-echo "void mu_run_suites() {" +-echo +-for file in "$@" +-do +- pr_file=`echo "$file" | sed 's/\"/\\\\\"/g'` +- suite=`basename "$file" .o | sed 's/\"/\\\\\"/g'` +-#symbols=`nm "$file" | egrep '^[[:xdigit:]]{8} T mu_\w+$' | cut -c12-` +- symbols=`nm "$file" | egrep ' T _mu_\w+$' | cut -c21-` +- symbols+=`nm "$file" | egrep ' T mu_\w+$' | cut -c20-` +- tests=`echo "$symbols" | egrep '^mu_test'` +- inits=`echo "$symbols" | egrep '^mu_init'` +- terms=`echo "$symbols" | egrep '^mu_term'` +- echo -e '\tdo {' +- echo -e '\t\tmutest_suite_name = "'"$suite"'";' +- echo -e '\t\tmu_print(MU_SUITE, "\\nRunning suite '"'$suite'"'\\n");' +- for init in $inits +- do +- echo -e "\\t\\tmu_run_init($init);" +- done +- for testcase in $tests +- do +- echo -e "\t\tmu_run_case($testcase);" +- done +- for term in $terms +- do +- echo -e "\t\tmu_run_term($term);" +- done +- echo -e "\t\tif (mutest_suite_failed) ++mutest_failed_suites;" +- echo -e "\t\telse ++mutest_passed_suites;" +- echo -e "\t\tmutest_suite_failed = 0;" +- echo -e '\t} while (0);' +- echo +-done +-echo "}" +- +diff --git a/third_party/prio/ptest/mpi_test.c b/third_party/prio/ptest/mpi_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/mpi_test.c ++++ /dev/null +@@ -1,38 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +- +-#include "mutest.h" +- +- +-void +-mu_test_mpi__add (void) +-{ +- mp_int a; +- mp_int b; +- mp_int c; +- +- mu_check (mp_init (&a) == MP_OKAY); +- mu_check (mp_init (&b) == MP_OKAY); +- mu_check (mp_init (&c) == MP_OKAY); +- +- mp_set (&a, 10); +- mp_set (&b, 7); +- mp_add (&a, &b, &c); +- +- mp_set (&a, 17); +- mu_check (mp_cmp (&a, &c) == 0); +- +- mp_clear (&a); +- mp_clear (&b); +- mp_clear (&c); +-} +- +- +- +diff --git a/third_party/prio/ptest/mutest.h b/third_party/prio/ptest/mutest.h +deleted file mode 100644 +--- a/third_party/prio/ptest/mutest.h ++++ /dev/null +@@ -1,248 +0,0 @@ +-/* +- * This file is part of mutest, a simple micro unit testing framework for C. +- * +- * mutest was written by Leandro Lucarella and is released +- * under the BOLA license, please see the LICENSE file or visit: +- * http://blitiri.com.ar/p/bola/ +- * +- * This header file should be included in the source files that will make up +- * a test suite. It's used for both C and Python implementation, but when +- * using the Python implementation you should define the MUTEST_PY macro. +- * If you implement your mu_run_suites() function yourself, you probably will +- * need to include this header too (see mkmutest). +- * +- * Please, read the README file for more details. +- */ +- +-#include /* fprintf() */ +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-/* verbosity level (each level shows all the previous levels too) */ +-enum { +- MU_QUIET = 0, /* be completely quiet */ +- MU_ERROR, /* shows errors only */ +- MU_SUMMARY, /* shows a summary */ +- MU_SUITE, /* shows test suites progress */ +- MU_CASE, /* shows test cases progress */ +- MU_CHECK /* shows the current running check */ +-}; +- +-/* print a message according to the verbosity level */ +-#define mu_print(level, ...) \ +- do { \ +- if (mutest_verbose_level >= level) { \ +- if (mutest_verbose_level == MU_ERROR) \ +- fprintf(stderr, __VA_ARGS__); \ +- else \ +- fprintf(stdout, __VA_ARGS__); \ +- } \ +- } while (0) +- +-/* print an error message */ +-#define mu_printerr(name, action) \ +- mu_print(MU_ERROR, __FILE__ ":%d: " name " failed, "\ +- action " test case\n", __LINE__); +- +-/* modify the internal state so a failure gets counted */ +-#define mutest_count_err ++mutest_failed_checks; mutest_case_failed = 1; +- +-/* modify the internal state so a success gets counted */ +-#define mutest_count_suc ++mutest_passed_checks; +- +-#ifdef __cplusplus +- +-#include +- +-/* print an error message triggered by a C++ exception */ +-#define mu_printex(name, action, ex) \ +- mu_print(MU_ERROR, __FILE__ ":%d: " name " failed, " \ +- "exception thrown (%s), " action \ +- " test case\n", __LINE__, ex); +- +-#define mutest_try try { +-#define mutest_catch(name, action, final) \ +- } catch (const std::exception& e) { \ +- mutest_count_err \ +- mu_printex(name, action, e.what()); \ +- final; \ +- } catch (...) { \ +- mutest_count_err \ +- mu_printex(name, action, "[unknown]"); \ +- final; \ +- } +- +-#else /* !__cplusplus */ +- +-#define mutest_try +-#define mutest_catch(name, action, exp) +- +-#endif /* __cplusplus */ +- +-/* check that an expression evaluates to true, continue if the check fails */ +-#define mu_check_base(exp, name, action, final) \ +- do { \ +- mu_print(MU_CHECK, "\t\t* Checking " name "(" #exp ")...\n"); \ +- mutest_try \ +- if (exp) mutest_count_suc \ +- else { \ +- mutest_count_err \ +- mu_printerr(name "(" #exp ")", action); \ +- final; \ +- } \ +- mutest_catch(name, action, final) \ +- } while (0) +- +-/* check that an expression evaluates to true, continue if the check fails */ +-#define mu_check(exp) mu_check_base(exp, "mu_check", "resuming", continue) +- +-/* +- * ensure that an expression evaluates to true, abort the current test +- * case if the check fails +- */ +-#define mu_ensure(exp) mu_check_base(exp, "mu_ensure", "aborting", return) +- +-#ifdef __cplusplus +- +-#define mu_echeck_base(ex, exp, name, action, final) \ +- do { \ +- mu_print(MU_CHECK, "\t\t* Checking " name "(" #ex ", " #exp \ +- ")...\n"); \ +- try { \ +- exp; \ +- mutest_count_err \ +- mu_printerr(name "(" #ex ", " #exp ")", \ +- "no exception thrown, " action); \ +- final; \ +- } catch (const ex& e) { \ +- mutest_count_suc \ +- } catch (const std::exception& e) { \ +- mutest_count_err \ +- mu_printex(name "(" #ex ", " #exp ")", action, \ +- e.what()); \ +- final; \ +- } catch (...) { \ +- mutest_count_err \ +- mu_printex(name "(" #ex ", " #exp ")", action, \ +- "[unknown]"); \ +- final; \ +- } \ +- } while (0) +- +-/* +- * check that an expression throws a particular exception, continue if the +- * check fails +- */ +-#define mu_echeck(ex, exp) \ +- mu_echeck_base(ex, exp, "mu_echeck", "resuming", continue) +- +-/* +- * ensure that an expression throws a particular exception, abort the current +- * test case if the check fails +- */ +-#define mu_eensure(ex, exp) \ +- mu_echeck_base(ex, exp, "mu_eensure", "aborting", return) +- +-#endif /* __cplusplus */ +- +-#ifndef MUTEST_PY /* we are using the C implementation */ +- +-/* +- * this function implements the test suites execution, you should generate +- * a module with this function using mkmutest, or take a look to that script +- * if you want to implement your own customized version */ +-void mu_run_suites(); +- +-/* macro for running a single initialization function */ +-#ifndef mu_run_init +-#define mu_run_init(name) \ +- { \ +- int name(); \ +- int r; \ +- mu_print(MU_CASE, "\t+ Executing initialization function " \ +- "'" #name "'...\n"); \ +- if ((r = name())) { \ +- mu_print(MU_ERROR, "%s:" #name ": initialization " \ +- "function failed (returned %d), " \ +- "skipping test suite...\n", \ +- mutest_suite_name, r); \ +- ++mutest_skipped_suites; \ +- break; \ +- } \ +- } do { } while (0) +-#endif /* mu_run_init */ +- +-/* macro for running a single test case */ +-#ifndef mu_run_case +-#define mu_run_case(name) \ +- do { \ +- mu_print(MU_CASE, "\t* Executing test case '" #name "'...\n");\ +- mutest_case_name = #name; \ +- void name(); \ +- name(); \ +- if (mutest_case_failed) { \ +- ++mutest_failed_cases; \ +- mutest_suite_failed = 1; \ +- } else ++mutest_passed_cases; \ +- mutest_case_failed = 0; \ +- } while (0) +-#endif /* mu_run_case */ +- +-/* macro for running a single termination function */ +-#ifndef mu_run_term +-#define mu_run_term(name) \ +- do { \ +- mu_print(MU_CASE, "\t- Executing termination function '" \ +- #name "'...\n"); \ +- void name(); \ +- name(); \ +- } while (0) +-#endif /* mu_run_term */ +- +-/* +- * mutest exported variables for internal use, do not use directly unless you +- * know what you're doing. +- */ +-extern const char* mutest_suite_name; +-extern int mutest_failed_suites; +-extern int mutest_passed_suites; +-extern int mutest_skipped_suites; +-extern int mutest_suite_failed; +-/* test cases */ +-extern const char* mutest_case_name; +-extern int mutest_failed_cases; +-extern int mutest_passed_cases; +-extern int mutest_case_failed; +-/* checks */ +-extern int mutest_failed_checks; +-extern int mutest_passed_checks; +-/* verbosity */ +-extern int mutest_verbose_level; +- +-#else /* MUTEST_PY is defined, using the Python implementation */ +- +-/* this increments when the "API" changes, it's just for sanity check */ +-int mutest_api_version = 1; +- +-int mutest_case_failed; /* unused, for C implementation compatibility */ +- +-int mutest_passed_checks; +-int mutest_failed_checks; +-void mutest_reset_counters() { +- mutest_passed_checks = 0; +- mutest_failed_checks = 0; +-} +- +-int mutest_verbose_level = MU_ERROR; +-void mutest_set_verbose_level(int val) { +- mutest_verbose_level = val; +-} +- +-#endif /* MUTEST_PY */ +- +-#ifdef __cplusplus +-} +-#endif +- +diff --git a/third_party/prio/ptest/mutest.c b/third_party/prio/ptest/mutest.c +deleted file mode 100644 +--- a/third_party/prio/ptest/mutest.c ++++ /dev/null +@@ -1,94 +0,0 @@ +-/* +- * This file is part of mutest, a simple micro unit testing framework for C. +- * +- * mutest was written by Leandro Lucarella and is released +- * under the BOLA license, please see the LICENSE file or visit: +- * http://blitiri.com.ar/p/bola/ +- * +- * This is the main program, it runs all the test suites and shows the +- * results. The main work (of running the test suite) is done by the (usually) +- * synthesized mu_run_suites() function, which can be generated using the +- * mkmutest script (or written manually). +- * +- * Please, read the README file for more details. +- */ +- +-#include +-#include /* printf(), fprintf() */ +-#include /* strncmp() */ +- +-#include "mutest.h" /* MU_* constants, mu_print() */ +- +-/* +- * note that all global variables are public because they need to be accessed +- * from other modules, like the test suites or the module implementing +- * mu_run_suites() +- */ +- +-/* globals for managing test suites */ +-const char* mutest_suite_name; +-int mutest_failed_suites; +-int mutest_passed_suites; +-int mutest_skipped_suites; +-int mutest_suite_failed; +- +- +-/* globals for managing test cases */ +-const char* mutest_case_name; +-int mutest_failed_cases; +-int mutest_passed_cases; +-int mutest_case_failed; +- +- +-/* globals for managing checks */ +-int mutest_failed_checks; +-int mutest_passed_checks; +- +- +-/* verbosity level, see mutest.h */ +-int mutest_verbose_level = 1; /* exported for use in test suites */ +- +- +- +-/* +- * only -v is supported right now, both "-v -v" and "-vv" are accepted for +- * increasing the verbosity by 2. +- */ +-void parse_args(__attribute__((unused)) int argc, char* argv[]) { +- while (*++argv) { +- if (strncmp(*argv, "-v", 2) == 0) { +- ++mutest_verbose_level; +- char* c = (*argv) + 1; +- while (*++c) { +- if (*c != 'v') +- break; +- ++mutest_verbose_level; +- } +- } +- } +-} +- +- +-int main(int argc, char* argv[]) { +- +- Prio_init (); +- parse_args(argc, argv); +- +- mu_run_suites(); +- +- Prio_clear (); +- +- mu_print(MU_SUMMARY, "\n" +- "Tests done:\n" +- "\t%d test suite(s) passed, %d failed, %d skipped.\n" +- "\t%d test case(s) passed, %d failed.\n" +- "\t%d check(s) passed, %d failed.\n" +- "\n", +- mutest_passed_suites, mutest_failed_suites, +- mutest_skipped_suites, +- mutest_passed_cases, mutest_failed_cases, +- mutest_passed_checks, mutest_failed_checks); +- +- return (mutest_failed_suites + mutest_skipped_suites) ? 1 : 0; +-} +- +diff --git a/third_party/prio/ptest/prg_test.c b/third_party/prio/ptest/prg_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/prg_test.c ++++ /dev/null +@@ -1,345 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +- +-#include "mutest.h" +-#include "prio/prg.h" +-#include "prio/util.h" +- +-void +-mu_test__prg_simple (void) +-{ +- SECStatus rv = SECSuccess; +- PrioPRGSeed key; +- PRG prg = NULL; +- +- P_CHECKC (PrioPRGSeed_randomize (&key)); +- P_CHECKA (prg = PRG_new (key)); +- +-cleanup: +- mu_check (rv == SECSuccess); +- PRG_clear (prg); +-} +- +-void +-mu_test__prg_repeat (void) +-{ +- SECStatus rv = SECSuccess; +- const int buflen = 10000; +- unsigned char buf1[buflen]; +- unsigned char buf2[buflen]; +- +- PrioPRGSeed key; +- PRG prg1 = NULL; +- PRG prg2 = NULL; +- +- buf1[3] = 'a'; +- buf2[3] = 'b'; +- +- P_CHECKC (PrioPRGSeed_randomize (&key)); +- P_CHECKA (prg1 = PRG_new (key)); +- P_CHECKA (prg2 = PRG_new (key)); +- +- P_CHECKC (PRG_get_bytes (prg1, buf1, buflen)); +- P_CHECKC (PRG_get_bytes (prg2, buf2, buflen)); +- +- bool all_zero = true; +- for (int i=0; i -1); +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&max); +- mp_clear (&out); +- PRG_clear (prg); +-} +- +-void +-mu_test_prg__multiple_of_8 (void) +-{ +- test_prg_once (256); +- test_prg_once (256*256); +-} +- +- +-void +-mu_test_prg__near_multiple_of_8 (void) +-{ +- test_prg_once (256+1); +- test_prg_once (256*256+1); +-} +- +-void +-mu_test_prg__odd (void) +-{ +- test_prg_once (39); +- test_prg_once (123); +- test_prg_once (993123); +-} +- +-void +-mu_test_prg__large (void) +-{ +- test_prg_once (1231239933); +-} +- +-void +-mu_test_prg__bit(void) +-{ +- test_prg_once (1); +- for (int i = 0; i < 100; i++) +- test_prg_once (2); +-} +- +-void +-test_prg_distribution (int limit) +-{ +- int bins[limit]; +- SECStatus rv = SECSuccess; +- PrioPRGSeed key; +- mp_int max; +- mp_int out; +- PRG prg = NULL; +- +- MP_DIGITS (&max) = NULL; +- MP_DIGITS (&out) = NULL; +- +- P_CHECKC (PrioPRGSeed_randomize (&key)); +- P_CHECKA (prg = PRG_new (key)); +- +- MP_CHECKC (mp_init (&max)); +- MP_CHECKC (mp_init (&out)); +- +- mp_set (&max, limit); +- +- for (int i = 0; i < limit; i++) { +- bins[i] = 0; +- } +- +- for (int i = 0; i < limit*limit; i++) { +- P_CHECKC (PRG_get_int (prg, &out, &max)); +- mu_check (mp_cmp_d (&out, limit) == -1); +- mu_check (mp_cmp_z (&out) > -1); +- +- unsigned char ival[2] = {0x00, 0x00}; +- MP_CHECKC (mp_to_fixlen_octets (&out, ival, 2)); +- if (ival[1] + 256*ival[0] < limit) { +- bins[ival[1] + 256*ival[0]] += 1; +- } else { +- mu_check (false); +- } +- } +- +- for (int i = 0; i < limit; i++) { +- mu_check (bins[i] > limit/2); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&max); +- mp_clear (&out); +- PRG_clear (prg); +-} +- +- +-void +-mu_test__prg_distribution123 (void) +-{ +- test_prg_distribution(123); +-} +- +-void +-mu_test__prg_distribution257 (void) +-{ +- test_prg_distribution(257); +-} +- +-void +-mu_test__prg_distribution259 (void) +-{ +- test_prg_distribution(259); +-} +- +-void +-test_prg_distribution_large (mp_int *max) +-{ +- const int limit = 16; +- int bins[limit]; +- SECStatus rv = SECSuccess; +- PrioPRGSeed key; +- mp_int out; +- PRG prg = NULL; +- +- MP_DIGITS (&out) = NULL; +- +- P_CHECKC (PrioPRGSeed_randomize (&key)); +- P_CHECKA (prg = PRG_new (key)); +- +- MP_CHECKC (mp_init (&out)); +- +- for (int i = 0; i < limit; i++) { +- bins[i] = 0; +- } +- +- for (int i = 0; i < 100*limit*limit; i++) { +- MP_CHECKC (PRG_get_int (prg, &out, max)); +- mu_check (mp_cmp (&out, max) == -1); +- mu_check (mp_cmp_z (&out) > -1); +- +- unsigned long res; +- MP_CHECKC (mp_mod_d (&out, limit, &res)); +- bins[res] += 1; +- } +- +- for (int i = 0; i < limit; i++) { +- mu_check (bins[i] > limit/2); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&out); +- PRG_clear (prg); +-} +- +-void +-mu_test__prg_distribution_large (void) +-{ +- SECStatus rv = SECSuccess; +- mp_int max; +- MP_DIGITS (&max) = NULL; +- MP_CHECKC (mp_init (&max)); +- +- char bytes[] = "FF1230985198451798EDC8123"; +- MP_CHECKC (mp_read_radix (&max, bytes, 16)); +- test_prg_distribution_large (&max); +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&max); +-} +- +- +-void +-mu_test__prg_share_arr (void) +-{ +- SECStatus rv = SECSuccess; +- PrioConfig cfg = NULL; +- MPArray arr = NULL; +- MPArray arr_share = NULL; +- PRG prg = NULL; +- PrioPRGSeed seed; +- +- P_CHECKA (cfg = PrioConfig_newTest (72)); +- P_CHECKC (PrioPRGSeed_randomize (&seed)); +- P_CHECKA (arr = MPArray_new (10)); +- P_CHECKA (arr_share = MPArray_new (10)); +- P_CHECKA (prg = PRG_new (seed)); +- +- for (int i=0; i<10; i++) { +- mp_set (&arr->data[i], i); +- } +- +- P_CHECKC (PRG_share_array (prg, arr_share, arr, cfg)); +- +- // Reset PRG +- PRG_clear (prg); +- P_CHECKA (prg = PRG_new (seed)); +- +- // Read pseudorandom values into arr +- P_CHECKC (PRG_get_array (prg, arr, &cfg->modulus)); +- +- +- for (int i=0; i<10; i++) { +- MP_CHECKC (mp_addmod (&arr->data[i], &arr_share->data[i], +- &cfg->modulus, &arr->data[i])); +- mu_check (mp_cmp_d (&arr->data[i], i) == 0); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- +- PRG_clear (prg); +- MPArray_clear (arr); +- MPArray_clear (arr_share); +- PrioConfig_clear (cfg); +-} +diff --git a/third_party/prio/ptest/rand_test.c b/third_party/prio/ptest/rand_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/rand_test.c ++++ /dev/null +@@ -1,194 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +- +-#include "mutest.h" +-#include "prio/rand.h" +-#include "prio/util.h" +- +-void +-mu_test__util_msb_mast (void) +-{ +- mu_check (msb_mask (0x01) == 0x01); +- mu_check (msb_mask (0x02) == 0x03); +- mu_check (msb_mask (0x0C) == 0x0F); +- mu_check (msb_mask (0x1C) == 0x1F); +- mu_check (msb_mask (0xFF) == 0xFF); +-} +- +-void +-test_rand_once (int limit) +-{ +- mp_int max; +- mp_int out; +- +- mu_check (mp_init (&max) == MP_OKAY); +- mu_check (mp_init (&out) == MP_OKAY); +- +- mp_set (&max, limit); +- +- mu_check (rand_int (&out, &max) == MP_OKAY); +- mu_check (mp_cmp_d (&out, limit) == -1); +- mu_check (mp_cmp_z (&out) > -1); +- +- mp_clear (&max); +- mp_clear (&out); +-} +- +-void +-mu_test_rand__multiple_of_8 (void) +-{ +- test_rand_once (256); +- test_rand_once (256*256); +-} +- +- +-void +-mu_test_rand__near_multiple_of_8 (void) +-{ +- test_rand_once (256+1); +- test_rand_once (256*256+1); +-} +- +-void +-mu_test_rand__odd (void) +-{ +- test_rand_once (39); +- test_rand_once (123); +- test_rand_once (993123); +-} +- +-void +-mu_test_rand__large (void) +-{ +- test_rand_once (1231239933); +-} +- +-void +-mu_test_rand__bit(void) +-{ +- test_rand_once (1); +- for (int i = 0; i < 100; i++) +- test_rand_once (2); +-} +- +-void +-test_rand_distribution (int limit) +-{ +- SECStatus rv = SECSuccess; +- int bins[limit]; +- +- mp_int max; +- mp_int out; +- +- MP_DIGITS (&max) = NULL; +- MP_DIGITS (&out) = NULL; +- +- MP_CHECKC (mp_init (&max)); +- MP_CHECKC (mp_init (&out)); +- +- mp_set (&max, limit); +- +- for (int i = 0; i < limit; i++) { +- bins[i] = 0; +- } +- +- for (int i = 0; i < limit*limit; i++) { +- mu_check (rand_int (&out, &max) == MP_OKAY); +- mu_check (mp_cmp_d (&out, limit) == -1); +- mu_check (mp_cmp_z (&out) > -1); +- +- unsigned char ival[2] = {0x00, 0x00}; +- MP_CHECKC (mp_to_fixlen_octets (&out, ival, 2)); +- if (ival[1] + 256*ival[0] < limit) { +- bins[ival[1] + 256*ival[0]] += 1; +- } else { +- mu_check (false); +- } +- } +- +- for (int i = 0; i < limit; i++) { +- mu_check (bins[i] > limit/2); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&max); +- mp_clear (&out); +-} +- +- +-void +-mu_test__rand_distribution123 (void) +-{ +- test_rand_distribution(123); +-} +- +-void +-mu_test__rand_distribution257 (void) +-{ +- test_rand_distribution(257); +-} +- +-void +-mu_test__rand_distribution259 (void) +-{ +- test_rand_distribution(259); +-} +- +-void +-test_rand_distribution_large (mp_int *max) +-{ +- SECStatus rv = SECSuccess; +- int limit = 16; +- int bins[limit]; +- +- mp_int out; +- MP_DIGITS (&out) = NULL; +- MP_CHECKC (mp_init (&out)); +- +- for (int i = 0; i < limit; i++) { +- bins[i] = 0; +- } +- +- for (int i = 0; i < 100*limit*limit; i++) { +- MP_CHECKC (rand_int (&out, max)); +- mu_check (mp_cmp (&out, max) == -1); +- mu_check (mp_cmp_z (&out) > -1); +- +- unsigned long res; +- MP_CHECKC (mp_mod_d (&out, limit, &res)); +- bins[res] += 1; +- } +- +- for (int i = 0; i < limit; i++) { +- mu_check (bins[i] > limit/2); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&out); +-} +- +-void +-mu_test__rand_distribution_large (void) +-{ +- SECStatus rv = SECSuccess; +- mp_int max; +- MP_DIGITS (&max) = NULL; +- MP_CHECKC (mp_init (&max)); +- +- char bytes[] = "FF1230985198451798EDC8123"; +- MP_CHECKC (mp_read_radix (&max, bytes, 16)); +- test_rand_distribution_large (&max); +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&max); +-} +diff --git a/third_party/prio/ptest/serial_test.c b/third_party/prio/ptest/serial_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/serial_test.c ++++ /dev/null +@@ -1,319 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +-#include +-#include +- +-#include "mutest.h" +-#include "prio/client.h" +-#include "prio/config.h" +-#include "prio/serial.h" +-#include "prio/server.h" +-#include "prio/util.h" +- +-SECStatus +-gen_client_packets (const_PrioConfig cfg, PrioPacketClient pA, PrioPacketClient pB) +-{ +- SECStatus rv = SECSuccess; +- +- const int ndata = cfg->num_data_fields; +- bool data_items[ndata]; +- +- for (int i=0; i < ndata; i++) { +- data_items[i] = (i % 3 == 1) || (i % 5 == 3); +- } +- +- P_CHECKC (PrioPacketClient_set_data (cfg, data_items, pA, pB)); +- +-cleanup: +- return rv; +-} +- +- +-void serial_client (int bad) +-{ +- SECStatus rv = SECSuccess; +- PrioConfig cfg = NULL; +- PrioConfig cfg2 = NULL; +- PrioPacketClient pA = NULL; +- PrioPacketClient pB = NULL; +- PrioPacketClient qA = NULL; +- PrioPacketClient qB = NULL; +- +- const unsigned char *batch_id1 = (unsigned char *)"my_test_prio_batch1"; +- const unsigned char *batch_id2 = (unsigned char *)"my_test_prio_batch2"; +- const unsigned int batch_id_len = strlen ((char *)batch_id1); +- +- msgpack_sbuffer sbufA, sbufB; +- msgpack_packer pkA, pkB; +- msgpack_unpacker upkA, upkB; +- +- msgpack_sbuffer_init (&sbufA); +- msgpack_packer_init (&pkA, &sbufA, msgpack_sbuffer_write); +- +- msgpack_sbuffer_init (&sbufB); +- msgpack_packer_init (&pkB, &sbufB, msgpack_sbuffer_write); +- +- P_CHECKA (cfg = PrioConfig_new (100, NULL, NULL, batch_id1, batch_id_len)); +- P_CHECKA (cfg2 = PrioConfig_new (100, NULL, NULL, batch_id2, batch_id_len)); +- P_CHECKA (pA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); +- P_CHECKA (pB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); +- P_CHECKA (qA = PrioPacketClient_new (cfg, PRIO_SERVER_A)); +- P_CHECKA (qB = PrioPacketClient_new (cfg, PRIO_SERVER_B)); +- +- P_CHECKC (gen_client_packets (cfg, pA, pB)); +- +- P_CHECKC (serial_write_packet_client (&pkA, pA, cfg)); +- P_CHECKC (serial_write_packet_client (&pkB, pB, cfg)); +- +- if (bad == 1) { +- sbufA.size = 1; +- } +- +- if (bad == 2) { +- memset (sbufA.data, 0, sbufA.size); +- } +- +- const int size_a = sbufA.size; +- const int size_b = sbufB.size; +- +- P_CHECKCB (msgpack_unpacker_init (&upkA, 0)); +- P_CHECKCB (msgpack_unpacker_init (&upkB, 0)); +- +- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upkA, size_a)); +- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upkB, size_b)); +- +- memcpy (msgpack_unpacker_buffer (&upkA), sbufA.data, size_a); +- memcpy (msgpack_unpacker_buffer (&upkB), sbufB.data, size_b); +- +- msgpack_unpacker_buffer_consumed (&upkA, size_a); +- msgpack_unpacker_buffer_consumed (&upkB, size_b); +- +- P_CHECKC (serial_read_packet_client (&upkA, qA, cfg)); +- P_CHECKC (serial_read_packet_client (&upkB, qB, (bad == 3) ? cfg2 : cfg)); +- +- if (!bad) { +- mu_check (PrioPacketClient_areEqual (pA, qA)); +- mu_check (PrioPacketClient_areEqual (pB, qB)); +- mu_check (!PrioPacketClient_areEqual (pB, qA)); +- mu_check (!PrioPacketClient_areEqual (pA, qB)); +- } +- +-cleanup: +- PrioPacketClient_clear (pA); +- PrioPacketClient_clear (pB); +- PrioPacketClient_clear (qA); +- PrioPacketClient_clear (qB); +- PrioConfig_clear (cfg); +- PrioConfig_clear (cfg2); +- msgpack_sbuffer_destroy (&sbufA); +- msgpack_sbuffer_destroy (&sbufB); +- msgpack_unpacker_destroy (&upkA); +- msgpack_unpacker_destroy (&upkB); +- mu_check (bad ? rv == SECFailure : rv == SECSuccess); +-} +- +- +-void mu_test__serial_client (void) +-{ +- serial_client (0); +-} +- +-void mu_test__serial_client_bad1 (void) +-{ +- serial_client (1); +-} +- +-void mu_test__serial_client_bad2 (void) +-{ +- serial_client (2); +-} +- +-void mu_test__serial_client_bad3 (void) +-{ +- serial_client (3); +-} +- +-void test_verify1 (int bad) +-{ +- SECStatus rv = SECSuccess; +- PrioPacketVerify1 v1 = NULL; +- PrioPacketVerify1 v2 = NULL; +- PrioConfig cfg = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest (1)); +- P_CHECKA (v1 = PrioPacketVerify1_new()); +- P_CHECKA (v2 = PrioPacketVerify1_new()); +- mp_set (&v1->share_d, 4); +- mp_set (&v1->share_e, 10); +- +- msgpack_sbuffer sbuf; +- msgpack_packer pk; +- msgpack_unpacker upk; +- +- msgpack_sbuffer_init (&sbuf); +- msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write); +- +- P_CHECKC (PrioPacketVerify1_write (v1, &pk)); +- +- if (bad == 1) { +- mp_set (&cfg->modulus, 6); +- } +- +- P_CHECKCB (msgpack_unpacker_init (&upk, 0)); +- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upk, sbuf.size)); +- memcpy (msgpack_unpacker_buffer (&upk), sbuf.data, sbuf.size); +- msgpack_unpacker_buffer_consumed (&upk, sbuf.size); +- +- P_CHECKC (PrioPacketVerify1_read (v2, &upk, cfg)); +- +- mu_check (!mp_cmp (&v1->share_d, &v2->share_d)); +- mu_check (!mp_cmp (&v1->share_e, &v2->share_e)); +- mu_check (!mp_cmp_d (&v2->share_d, 4)); +- mu_check (!mp_cmp_d (&v2->share_e, 10)); +- +-cleanup: +- mu_check (bad ? rv == SECFailure : rv == SECSuccess); +- PrioConfig_clear (cfg); +- PrioPacketVerify1_clear (v1); +- PrioPacketVerify1_clear (v2); +- msgpack_unpacker_destroy (&upk); +- msgpack_sbuffer_destroy (&sbuf); +-} +- +-void mu_test_verify1_good (void) +-{ +- test_verify1 (0); +-} +- +-void mu_test_verify1_bad (void) +-{ +- test_verify1 (1); +-} +- +-void test_verify2 (int bad) +-{ +- SECStatus rv = SECSuccess; +- PrioPacketVerify2 v1 = NULL; +- PrioPacketVerify2 v2 = NULL; +- PrioConfig cfg = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest (1)); +- P_CHECKA (v1 = PrioPacketVerify2_new()); +- P_CHECKA (v2 = PrioPacketVerify2_new()); +- mp_set (&v1->share_out, 4); +- +- msgpack_sbuffer sbuf; +- msgpack_packer pk; +- msgpack_unpacker upk; +- +- msgpack_sbuffer_init (&sbuf); +- msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write); +- +- P_CHECKC (PrioPacketVerify2_write (v1, &pk)); +- +- if (bad == 1) { +- mp_set (&cfg->modulus, 4); +- } +- +- P_CHECKCB (msgpack_unpacker_init (&upk, 0)); +- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upk, sbuf.size)); +- memcpy (msgpack_unpacker_buffer (&upk), sbuf.data, sbuf.size); +- msgpack_unpacker_buffer_consumed (&upk, sbuf.size); +- +- P_CHECKC (PrioPacketVerify2_read (v2, &upk, cfg)); +- +- mu_check (!mp_cmp (&v1->share_out, &v2->share_out)); +- mu_check (!mp_cmp_d (&v2->share_out, 4)); +- +-cleanup: +- mu_check (bad ? rv == SECFailure : rv == SECSuccess); +- PrioConfig_clear (cfg); +- PrioPacketVerify2_clear (v1); +- PrioPacketVerify2_clear (v2); +- msgpack_unpacker_destroy (&upk); +- msgpack_sbuffer_destroy (&sbuf); +-} +- +-void mu_test_verify2_good (void) +-{ +- test_verify2 (0); +-} +- +-void mu_test_verify2_bad (void) +-{ +- test_verify2 (1); +-} +- +- +-void test_total_share (int bad) +-{ +- SECStatus rv = SECSuccess; +- PrioTotalShare t1 = NULL; +- PrioTotalShare t2 = NULL; +- PrioConfig cfg = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest ((bad == 2 ? 4 : 3))); +- P_CHECKA (t1 = PrioTotalShare_new ()); +- P_CHECKA (t2 = PrioTotalShare_new ()); +- +- t1->idx = PRIO_SERVER_A; +- P_CHECKC (MPArray_resize (t1->data_shares, 3)); +- +- mp_set (&t1->data_shares->data[0], 10); +- mp_set (&t1->data_shares->data[1], 20); +- mp_set (&t1->data_shares->data[2], 30); +- +- msgpack_sbuffer sbuf; +- msgpack_packer pk; +- msgpack_unpacker upk; +- +- msgpack_sbuffer_init (&sbuf); +- msgpack_packer_init (&pk, &sbuf, msgpack_sbuffer_write); +- +- P_CHECKC (PrioTotalShare_write (t1, &pk)); +- +- if (bad == 1) { +- mp_set (&cfg->modulus, 4); +- } +- +- P_CHECKCB (msgpack_unpacker_init (&upk, 0)); +- P_CHECKCB (msgpack_unpacker_reserve_buffer (&upk, sbuf.size)); +- memcpy (msgpack_unpacker_buffer (&upk), sbuf.data, sbuf.size); +- msgpack_unpacker_buffer_consumed (&upk, sbuf.size); +- +- P_CHECKC (PrioTotalShare_read (t2, &upk, cfg)); +- +- mu_check (t1->idx == t2->idx); +- mu_check (MPArray_areEqual (t1->data_shares, t2->data_shares)); +- +-cleanup: +- mu_check (bad ? rv == SECFailure : rv == SECSuccess); +- PrioConfig_clear (cfg); +- PrioTotalShare_clear (t1); +- PrioTotalShare_clear (t2); +- msgpack_unpacker_destroy (&upk); +- msgpack_sbuffer_destroy (&sbuf); +-} +- +-void mu_test_total_good (void) +-{ +- test_total_share (0); +-} +- +-void mu_test_total_bad1 (void) +-{ +- test_total_share (1); +-} +- +-void mu_test_total_bad2 (void) +-{ +- test_total_share (2); +-} +- +diff --git a/third_party/prio/ptest/server_test.c b/third_party/prio/ptest/server_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/server_test.c ++++ /dev/null +@@ -1,298 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +-#include +- +-#include "mutest.h" +-#include "prio/client.h" +-#include "prio/server.h" +-#include "prio/server.c" +- +-void mu_test__eval_poly (void) +-{ +- SECStatus rv = SECSuccess; +- PrioConfig cfg = NULL; +- MPArray coeffs = NULL; +- mp_int eval_at, out; +- +- MP_DIGITS (&eval_at) = NULL; +- MP_DIGITS (&out) = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest (54)); +- P_CHECKA (coeffs = MPArray_new (3)); +- +- mp_set (&coeffs->data[0], 2); +- mp_set (&coeffs->data[1], 8); +- mp_set (&coeffs->data[2], 3); +- +- MP_CHECKC (mp_init (&eval_at)); +- MP_CHECKC (mp_init (&out)); +- mp_set (&eval_at, 7); +- +- const int val = 3*7*7 + 8*7 + 2; +- mu_check (poly_eval (&out, coeffs, &eval_at, cfg) == SECSuccess); +- mu_check (mp_cmp_d (&out, val) == 0); +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&out); +- mp_clear (&eval_at); +- MPArray_clear (coeffs); +- PrioConfig_clear (cfg); +-} +- +-void +-mu_test__verify_new (void) +-{ +- SECStatus rv = SECSuccess; +- PublicKey pkA = NULL; +- PublicKey pkB = NULL; +- PrivateKey skA = NULL; +- PrivateKey skB = NULL; +- PrioConfig cfg = NULL; +- PrioServer sA = NULL; +- PrioServer sB = NULL; +- PrioVerifier vA = NULL; +- PrioVerifier vB = NULL; +- unsigned char *for_a = NULL; +- unsigned char *for_b = NULL; +- +- mp_int fR, gR, hR; +- MP_DIGITS (&fR) = NULL; +- MP_DIGITS (&gR) = NULL; +- MP_DIGITS (&hR) = NULL; +- +- PrioPRGSeed seed; +- P_CHECKC (PrioPRGSeed_randomize (&seed)); +- +- P_CHECKC (Keypair_new (&skA, &pkA)); +- P_CHECKC (Keypair_new (&skB, &pkB)); +- P_CHECKA (cfg = PrioConfig_new (214, pkA, pkB, +- (unsigned char *)"testbatch", 9)); +- +- const int ndata = PrioConfig_numDataFields (cfg); +- { +- bool data_items[ndata]; +- for (int i=0; i < ndata; i++) { +- // Arbitrary data +- data_items[i] = (i % 3 == 1) || (i % 5 == 3); +- } +- +- P_CHECKA (sA = PrioServer_new (cfg, 0, skA, seed)); +- P_CHECKA (sB = PrioServer_new (cfg, 1, skB, seed)); +- +- unsigned int aLen, bLen; +- P_CHECKC (PrioClient_encode (cfg, data_items, &for_a, &aLen, &for_b, &bLen)); +- +- MP_CHECKC (mp_init (&fR)); +- MP_CHECKC (mp_init (&gR)); +- MP_CHECKC (mp_init (&hR)); +- +- P_CHECKA (vA = PrioVerifier_new (sA)); +- P_CHECKA (vB = PrioVerifier_new (sB)); +- P_CHECKC (PrioVerifier_set_data (vA, for_a, aLen)); +- P_CHECKC (PrioVerifier_set_data (vB, for_b, bLen)); +- +- PrioPacketClient pA = vA->clientp; +- PrioPacketClient pB = vB->clientp; +- MP_CHECKC (mp_addmod (&pA->f0_share, &pB->f0_share, &cfg->modulus, &fR)); +- MP_CHECKC (mp_addmod (&pA->g0_share, &pB->g0_share, &cfg->modulus, &gR)); +- MP_CHECKC (mp_addmod (&pA->h0_share, &pB->h0_share, &cfg->modulus, &hR)); +- +- MP_CHECKC (mp_mulmod (&fR, &gR, &cfg->modulus, &fR)); +- mu_check (mp_cmp (&fR, &hR) == 0); +- +- +- MP_CHECKC (mp_addmod (&vA->share_fR, &vB->share_fR, &cfg->modulus, &fR)); +- MP_CHECKC (mp_addmod (&vA->share_gR, &vB->share_gR, &cfg->modulus, &gR)); +- MP_CHECKC (mp_addmod (&vA->share_hR, &vB->share_hR, &cfg->modulus, &hR)); +- +- MP_CHECKC (mp_mulmod (&fR, &gR, &cfg->modulus, &fR)); +- +- //puts ("fR"); +- //mp_print (&fR, stdout); +- //puts ("hR"); +- //mp_print (&hR, stdout); +- mu_check (mp_cmp (&fR, &hR) == 0); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- +- if (for_a) free (for_a); +- if (for_b) free (for_b); +- +- mp_clear (&fR); +- mp_clear (&gR); +- mp_clear (&hR); +- +- PrioVerifier_clear (vA); +- PrioVerifier_clear (vB); +- +- PrioServer_clear (sA); +- PrioServer_clear (sB); +- PrioConfig_clear (cfg); +- +- PublicKey_clear (pkA); +- PublicKey_clear (pkB); +- PrivateKey_clear (skA); +- PrivateKey_clear (skB); +- +-} +- +-void +-verify_full (int tweak) +-{ +- SECStatus rv = SECSuccess; +- PublicKey pkA = NULL; +- PublicKey pkB = NULL; +- PrivateKey skA = NULL; +- PrivateKey skB = NULL; +- PrioConfig cfg = NULL; +- PrioServer sA = NULL; +- PrioServer sB = NULL; +- PrioVerifier vA = NULL; +- PrioVerifier vB = NULL; +- PrioPacketVerify1 p1A = NULL; +- PrioPacketVerify1 p1B = NULL; +- PrioPacketVerify2 p2A = NULL; +- PrioPacketVerify2 p2B = NULL; +- unsigned char *for_a = NULL; +- unsigned char *for_b = NULL; +- +- mp_int fR, gR, hR; +- MP_DIGITS (&fR) = NULL; +- MP_DIGITS (&gR) = NULL; +- MP_DIGITS (&hR) = NULL; +- +- PrioPRGSeed seed; +- P_CHECKC (PrioPRGSeed_randomize (&seed)); +- +- P_CHECKC (Keypair_new (&skA, &pkA)); +- P_CHECKC (Keypair_new (&skB, &pkB)); +- P_CHECKA (cfg = PrioConfig_new (47, pkA, pkB, (unsigned char *)"test4", 5)); +- +- const int ndata = PrioConfig_numDataFields (cfg); +- { +- bool data_items[ndata]; +- for (int i=0; i < ndata; i++) { +- // Arbitrary data +- data_items[i] = (i % 3 == 1) || (i % 5 == 3); +- } +- +- P_CHECKA (sA = PrioServer_new (cfg, 0, skA, seed)); +- P_CHECKA (sB = PrioServer_new (cfg, 1, skB, seed)); +- +- unsigned int aLen, bLen; +- P_CHECKC (PrioClient_encode (cfg, data_items, &for_a, &aLen, &for_b, &bLen)); +- +- if (tweak == 5) { +- for_a[3] = 3; +- for_a[4] = 4; +- } +- +- P_CHECKA (vA = PrioVerifier_new (sA)); +- P_CHECKA (vB = PrioVerifier_new (sB)); +- P_CHECKC (PrioVerifier_set_data (vA, for_a, aLen)); +- P_CHECKC (PrioVerifier_set_data (vB, for_b, bLen)); +- +- if (tweak == 3) { +- mp_add_d (&vA->share_fR, 1, &vA->share_fR); +- } +- +- if (tweak == 4) { +- mp_add_d (&vB->share_gR, 1, &vB->share_gR); +- } +- +- P_CHECKA (p1A = PrioPacketVerify1_new ()); +- P_CHECKA (p1B = PrioPacketVerify1_new ()); +- +- P_CHECKC (PrioPacketVerify1_set_data (p1A, vA)); +- P_CHECKC (PrioPacketVerify1_set_data (p1B, vB)); +- +- if (tweak == 1) { +- mp_add_d (&p1B->share_d, 1, &p1B->share_d); +- } +- +- P_CHECKA (p2A = PrioPacketVerify2_new ()); +- P_CHECKA (p2B = PrioPacketVerify2_new ()); +- P_CHECKC (PrioPacketVerify2_set_data (p2A, vA, p1A, p1B)); +- P_CHECKC (PrioPacketVerify2_set_data (p2B, vB, p1A, p1B)); +- +- if (tweak == 2) { +- mp_add_d (&p2A->share_out, 1, &p2B->share_out); +- } +- +- int shouldBe = tweak ? SECFailure : SECSuccess; +- mu_check (PrioVerifier_isValid (vA, p2A, p2B) == shouldBe); +- mu_check (PrioVerifier_isValid (vB, p2A, p2B) == shouldBe); +- } +- +-cleanup: +- if (!tweak) { +- mu_check (rv == SECSuccess); +- } +- +- if (for_a) free (for_a); +- if (for_b) free (for_b); +- +- PrioPacketVerify2_clear (p2A); +- PrioPacketVerify2_clear (p2B); +- +- PrioPacketVerify1_clear (p1A); +- PrioPacketVerify1_clear (p1B); +- +- PrioVerifier_clear (vA); +- PrioVerifier_clear (vB); +- +- PrioServer_clear (sA); +- PrioServer_clear (sB); +- PrioConfig_clear (cfg); +- +- PublicKey_clear (pkA); +- PublicKey_clear (pkB); +- PrivateKey_clear (skA); +- PrivateKey_clear (skB); +-} +- +-void +-mu_test__verify_full_good (void) +-{ +- verify_full (0); +-} +- +-void +-mu_test__verify_full_bad1 (void) +-{ +- verify_full (1); +-} +- +-void +-mu_test__verify_full_bad2 (void) +-{ +- verify_full (2); +-} +- +-void +-mu_test__verify_full_bad3 (void) +-{ +- verify_full (3); +-} +- +-void +-mu_test__verify_full_bad4 (void) +-{ +- verify_full (4); +-} +- +-void +-mu_test__verify_full_bad5 (void) +-{ +- verify_full (5); +-} +diff --git a/third_party/prio/ptest/share_test.c b/third_party/prio/ptest/share_test.c +deleted file mode 100644 +--- a/third_party/prio/ptest/share_test.c ++++ /dev/null +@@ -1,91 +0,0 @@ +-/* +- * Copyright (c) 2018, Henry Corrigan-Gibbs +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include +-#include +- +-#include "prio/client.h" +-#include "prio/config.h" +-#include "prio/mparray.h" +-#include "prio/share.h" +-#include "prio/util.h" +-#include "mutest.h" +- +-void +-mu_test_share (void) +-{ +- SECStatus rv = SECSuccess; +- PrioConfig cfg = NULL; +- mp_int a, b, c; +- BeaverTriple t1 = NULL, t2 = NULL; +- +- MP_DIGITS (&a) = NULL; +- MP_DIGITS (&b) = NULL; +- MP_DIGITS (&c) = NULL; +- +- P_CHECKA (cfg = PrioConfig_newTest (93)); +- P_CHECKA (t1 = BeaverTriple_new ()); +- P_CHECKA (t2 = BeaverTriple_new ()); +- +- mu_check (BeaverTriple_set_rand (cfg, t1, t2) == SECSuccess); +- +- MP_CHECKC (mp_init (&a)); +- MP_CHECKC (mp_init (&b)); +- MP_CHECKC (mp_init (&c)); +- +- mu_check (mp_addmod (&t1->a, &t2->a, &cfg->modulus, &a) == MP_OKAY); +- mu_check (mp_addmod (&t1->b, &t2->b, &cfg->modulus, &b) == MP_OKAY); +- mu_check (mp_addmod (&t1->c, &t2->c, &cfg->modulus, &c) == MP_OKAY); +- mu_check (mp_mulmod (&a, &b, &cfg->modulus, &a) == MP_OKAY); +- mu_check (mp_cmp (&a, &c) == 0); +- +-cleanup: +- mu_check (rv == SECSuccess); +- mp_clear (&a); +- mp_clear (&b); +- mp_clear (&c); +- +- PrioConfig_clear (cfg); +- BeaverTriple_clear (t1); +- BeaverTriple_clear (t2); +-} +- +-void +-mu_test_arr (void) +-{ +- SECStatus rv = SECSuccess; +- MPArray arr = NULL; +- MPArray arr2 = NULL; +- P_CHECKA (arr = MPArray_new (10)); +- P_CHECKA (arr2 = MPArray_new (7)); +- +- for (int i=0; i<10; i++) { +- mp_set (&arr->data[i], i); +- } +- +- P_CHECKC (MPArray_resize (arr, 15)); +- for (int i=10; i<15; i++) { +- mu_check (mp_cmp_d (&arr->data[i], 0) == 0); +- mp_set (&arr->data[i], i); +- } +- +- P_CHECKC (MPArray_resize (arr, 7)); +- for (int i=10; i<7; i++) { +- mu_check (mp_cmp_d (&arr->data[i], i) == 0); +- } +- +- P_CHECKC (MPArray_copy (arr2, arr)); +- for (int i=10; i<7; i++) { +- mu_check (mp_cmp (&arr->data[i], &arr2->data[i]) == 0); +- } +- +-cleanup: +- mu_check (rv == SECSuccess); +- MPArray_clear (arr); +- MPArray_clear (arr2); +-} +diff --git a/third_party/prio/update.sh b/third_party/prio/update.sh +--- a/third_party/prio/update.sh ++++ b/third_party/prio/update.sh +@@ -1,20 +1,18 @@ + #!/bin/sh + +-# Script to update the mozilla in-tree copy of the Prio library. +-# Run this within the /third_party/prio directory of the source tree. ++# Script to update the mozilla in-tree copy of the libprio library. ++# Run this within the /third_party/libprio directory of the source tree. + + MY_TEMP_DIR=`mktemp -d -t libprio_update.XXXXXX` || exit 1 + +-VERSION=1.0 +- +-git clone https://github.com/mozilla/libprio ${MY_TEMP_DIR}/libprio +-git -C ${MY_TEMP_DIR}/libprio checkout ${VERSION} ++COMMIT="488da2d729d73f18ed45add59edd18b257e1ceaa" + +-COMMIT=$(git -C ${MY_TEMP_DIR}/libprio rev-parse HEAD) +-perl -p -i -e "s/(\d+\.)(\d+\.)(\d+)/${VERSION}/" README-mozilla; +-perl -p -i -e "s/\[commit [0-9a-f]{40}\]/[commit ${COMMIT}]/" README-mozilla; ++git clone -n https://github.com/mozilla/libprio ${MY_TEMP_DIR}/libprio ++git -C ${MY_TEMP_DIR}/libprio checkout ${COMMIT} + +-FILES="LICENSE README.md SConstruct browser-test include pclient prio ptest" ++FILES="include prio" ++VERSION=$(git -C ${MY_TEMP_DIR}/libprio describe --tags) ++perl -p -i -e "s/Current version: \S+ \[commit [0-9a-f]{40}\]/Current version: ${VERSION} [commit ${COMMIT}]/" README-mozilla + + for f in $FILES; do + rm -rf $f +@@ -24,9 +22,9 @@ + rm -rf ${MY_TEMP_DIR} + + hg revert -r . moz.build +-hg addremove ++hg addremove . + + echo "###" +-echo "### Updated Prio to $COMMIT." ++echo "### Updated libprio to $COMMIT." + echo "### Remember to verify and commit the changes to source control!" + echo "###" + diff -r d8601c72c87b -r 9f49c406dc11 mozilla-cubeb-noreturn.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mozilla-cubeb-noreturn.patch Sat Nov 10 15:07:31 2018 +0100 @@ -0,0 +1,18 @@ +# HG changeset patch +# User Wolfgang Rosenauer +# Parent a9d61a2614b01b1e0ca37d00a6b11b2571868f86 + +diff --git a/media/libcubeb/src/cubeb_utils.cpp b/media/libcubeb/src/cubeb_utils.cpp +--- a/media/libcubeb/src/cubeb_utils.cpp ++++ b/media/libcubeb/src/cubeb_utils.cpp +@@ -15,9 +15,10 @@ size_t cubeb_sample_size(cubeb_sample_fo + return sizeof(int16_t); + case CUBEB_SAMPLE_FLOAT32LE: + case CUBEB_SAMPLE_FLOAT32BE: + return sizeof(float); + default: + // should never happen as all cases are handled above. + assert(false); + } ++ return 0; + } diff -r d8601c72c87b -r 9f49c406dc11 series --- a/series Thu Nov 08 17:56:27 2018 +0100 +++ b/series Sat Nov 10 15:07:31 2018 +0100 @@ -8,6 +8,8 @@ mozilla-aarch64-startup-crash.patch mozilla-bmo256180.patch mozilla-bmo1463035.patch +mozilla-bmo1491289.patch +mozilla-cubeb-noreturn.patch # Firefox patches firefox-kde.patch